couchbase-jruby-client 0.2.2-java → 1.0.4-java

Sign up to get free protection for your applications and to get access to all the features.
Files changed (87) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +103 -0
  3. data/.ruby-version +1 -1
  4. data/Rakefile +13 -2
  5. data/couchbase-jruby-client.gemspec +7 -6
  6. data/lib/couchbase/bucket.rb +11 -338
  7. data/lib/couchbase/cluster.rb +10 -88
  8. data/lib/couchbase/configuration.rb +39 -0
  9. data/lib/couchbase/design_doc.rb +18 -73
  10. data/lib/couchbase/document.rb +34 -0
  11. data/lib/couchbase/error.rb +0 -35
  12. data/lib/couchbase/operations.rb +60 -40
  13. data/lib/couchbase/version.rb +1 -1
  14. data/lib/couchbase/view.rb +55 -345
  15. data/lib/couchbase.rb +37 -141
  16. data/lib/jars/couchbase-core-io-1.1.4.jar +0 -0
  17. data/lib/jars/couchbase-java-client-2.1.4.jar +0 -0
  18. data/lib/jars/rxjava-1.0.8.jar +0 -0
  19. data/lib/jars/rxjruby-0.0.1.jar +0 -0
  20. data/test/{test_cas.rb → helper.rb} +15 -10
  21. data/test/test_bucket.rb +14 -228
  22. data/test/test_cluster.rb +1 -29
  23. data/test/test_configuration.rb +51 -0
  24. data/test/test_couchbase.rb +28 -28
  25. data/test/test_design_doc.rb +29 -0
  26. data/test/test_document.rb +51 -0
  27. data/test/test_operations.rb +49 -0
  28. data/test/test_view.rb +62 -116
  29. metadata +43 -125
  30. data/lib/couchbase/async/callback.rb +0 -38
  31. data/lib/couchbase/async/queue.rb +0 -26
  32. data/lib/couchbase/async.rb +0 -32
  33. data/lib/couchbase/constants.rb +0 -29
  34. data/lib/couchbase/operations/arithmetic.rb +0 -290
  35. data/lib/couchbase/operations/delete.rb +0 -115
  36. data/lib/couchbase/operations/design_docs.rb +0 -99
  37. data/lib/couchbase/operations/fetch.rb +0 -33
  38. data/lib/couchbase/operations/get.rb +0 -303
  39. data/lib/couchbase/operations/stats.rb +0 -42
  40. data/lib/couchbase/operations/store.rb +0 -463
  41. data/lib/couchbase/operations/touch.rb +0 -140
  42. data/lib/couchbase/operations/unlock.rb +0 -209
  43. data/lib/couchbase/operations/utils.rb +0 -68
  44. data/lib/couchbase/query.rb +0 -76
  45. data/lib/couchbase/result.rb +0 -60
  46. data/lib/couchbase/transcoder.rb +0 -81
  47. data/lib/couchbase/utils.rb +0 -62
  48. data/lib/couchbase/view_row.rb +0 -227
  49. data/lib/jars/commons-codec-1.5.jar +0 -0
  50. data/lib/jars/couchbase-client-1.3.2-javadoc.jar +0 -0
  51. data/lib/jars/couchbase-client-1.3.2-sources.jar +0 -0
  52. data/lib/jars/couchbase-client-1.3.2.jar +0 -0
  53. data/lib/jars/httpcore-4.3.1.jar +0 -0
  54. data/lib/jars/httpcore-nio-4.3.1.jar +0 -0
  55. data/lib/jars/jettison-1.1.jar +0 -0
  56. data/lib/jars/netty-3.5.5.Final.jar +0 -0
  57. data/lib/jars/spymemcached-2.10.5-javadoc.jar +0 -0
  58. data/lib/jars/spymemcached-2.10.5-sources.jar +0 -0
  59. data/lib/jars/spymemcached-2.10.5.jar +0 -0
  60. data/tasks/benchmark.rake +0 -6
  61. data/tasks/test.rake +0 -36
  62. data/tasks/util.rake +0 -21
  63. data/test/mock.rb +0 -85
  64. data/test/profile/.gitignore +0 -1
  65. data/test/profile/.jrubyrc +0 -722
  66. data/test/profile/Gemfile +0 -7
  67. data/test/profile/benchmark.rb +0 -177
  68. data/test/profile/profile.rb +0 -59
  69. data/test/setup.rb +0 -74
  70. data/test/test_arithmetic.rb +0 -155
  71. data/test/test_async.rb +0 -24
  72. data/test/test_couchbase_rails_cache_store.rb +0 -341
  73. data/test/test_delete.rb +0 -139
  74. data/test/test_design_docs.rb +0 -67
  75. data/test/test_errors.rb +0 -74
  76. data/test/test_fetch.rb +0 -71
  77. data/test/test_format.rb +0 -142
  78. data/test/test_get.rb +0 -363
  79. data/test/test_query.rb +0 -23
  80. data/test/test_result.rb +0 -15
  81. data/test/test_stats.rb +0 -44
  82. data/test/test_store.rb +0 -203
  83. data/test/test_touch.rb +0 -90
  84. data/test/test_unlock.rb +0 -89
  85. data/test/test_utils.rb +0 -67
  86. data/test/test_version.rb +0 -28
  87. data/test/test_view_row.rb +0 -74
@@ -1,303 +0,0 @@
1
- # Author:: Mike Evans <mike@urlgonomics.com>
2
- # Copyright:: 2013 Urlgonomics LLC.
3
- # License:: Apache License, Version 2.0
4
- #
5
- # Licensed under the Apache License, Version 2.0 (the "License");
6
- # you may not use this file except in compliance with the License.
7
- # You may obtain a copy of the License at
8
- #
9
- # http://www.apache.org/licenses/LICENSE-2.0
10
- #
11
- # Unless required by applicable law or agreed to in writing, software
12
- # distributed under the License is distributed on an "AS IS" BASIS,
13
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- # See the License for the specific language governing permissions and
15
- # limitations under the License.
16
- #
17
-
18
- module Couchbase::Operations
19
- module Get
20
-
21
- # Obtain an object stored in Couchbase by given key.
22
- #
23
- # @since 1.0.0
24
- #
25
- # @see http://couchbase.com/docs/couchbase-manual-2.0/couchbase-architecture-apis-memcached-protocol-additions.html#couchbase-architecture-apis-memcached-protocol-additions-getl
26
- #
27
- # @overload get(*keys, options = {})
28
- # @param keys [String, Symbol, Array] One or several keys to fetch
29
- # @param options [Hash] Options for operation.
30
- # @option options [true, false] :extended (false) If set to +true+, the
31
- # operation will return a tuple +[value, flags, cas]+, otherwise (by
32
- # default) it returns just the value.
33
- # @option options [Fixnum] :ttl (self.default_ttl) Expiry time for key.
34
- # Values larger than 30*24*60*60 seconds (30 days) are interpreted as
35
- # absolute times (from the epoch).
36
- # @option options [true, false] :quiet (self.quiet) If set to +true+, the
37
- # operation won't raise error for missing key, it will return +nil+.
38
- # Otherwise it will raise error in synchronous mode. In asynchronous
39
- # mode this option ignored.
40
- # @option options [Symbol] :format (nil) Explicitly choose the decoder
41
- # for this key (+:plain+, +:document+, +:marshal+). See
42
- # {Bucket#default_format}.
43
- # @option options [Fixnum, Boolean] :lock Lock the keys for time span.
44
- # If this parameter is +true+ the key(s) will be locked for default
45
- # timeout. Also you can use number to setup your own timeout in
46
- # seconds. If it will be lower that zero or exceed the maximum, the
47
- # server will use default value. You can determine actual default and
48
- # maximum values calling {Bucket#stats} without arguments and
49
- # inspecting keys "ep_getl_default_timeout" and "ep_getl_max_timeout"
50
- # correspondingly. See overloaded hash syntax to specify custom timeout
51
- # per each key.
52
- # @option options [true, false] :assemble_hash (false) Assemble Hash for
53
- # results. Hash assembled automatically if +:extended+ option is true
54
- # or in case of "get and touch" multimple keys.
55
- # @option options [true, false] :replica (false) Read key from replica
56
- # node. Options +:ttl+ and +:lock+ are not compatible with +:replica+.
57
- #
58
- # @yieldparam ret [Result] the result of operation in asynchronous mode
59
- # (valid attributes: +error+, +operation+, +key+, +value+, +flags+,
60
- # +cas+).
61
- #
62
- # @return [Object, Array, Hash] the value(s) (or tuples in extended mode)
63
- # associated with the key.
64
- #
65
- # @raise [Couchbase::Error::NotFound] if the key is missing in the
66
- # bucket.
67
- #
68
- # @raise [Couchbase::Error::Connect] if connection closed (see {Bucket#reconnect})
69
- #
70
- # @raise [ArgumentError] when passing the block in synchronous mode
71
- #
72
- # @example Get single value in quiet mode (the default)
73
- # c.get("foo") #=> the associated value or nil
74
- #
75
- # @example Use alternative hash-like syntax
76
- # c["foo"] #=> the associated value or nil
77
- #
78
- # @example Get single value in verbose mode
79
- # c.get("missing-foo", :quiet => false) #=> raises Couchbase::NotFound
80
- # c.get("missing-foo", :quiet => true) #=> returns nil
81
- #
82
- # @example Get and touch single value. The key won't be accessible after 10 seconds
83
- # c.get("foo", :ttl => 10)
84
- #
85
- # @example Extended get
86
- # val, flags, cas = c.get("foo", :extended => true)
87
- #
88
- # @example Get multiple keys
89
- # c.get("foo", "bar", "baz") #=> [val1, val2, val3]
90
- #
91
- # @example Get multiple keys with assembing result into the Hash
92
- # c.get("foo", "bar", "baz", :assemble_hash => true)
93
- # #=> {"foo" => val1, "bar" => val2, "baz" => val3}
94
- #
95
- # @example Extended get multiple keys
96
- # c.get("foo", "bar", :extended => true)
97
- # #=> {"foo" => [val1, flags1, cas1], "bar" => [val2, flags2, cas2]}
98
- #
99
- # @example Asynchronous get
100
- # c.run do
101
- # c.get("foo", "bar", "baz") do |res|
102
- # ret.operation #=> :get
103
- # ret.success? #=> true
104
- # ret.key #=> "foo", "bar" or "baz" in separate calls
105
- # ret.value
106
- # ret.flags
107
- # ret.cas
108
- # end
109
- # end
110
- #
111
- # @example Get and lock key using default timeout
112
- # c.get("foo", :lock => true)
113
- #
114
- # @example Determine lock timeout parameters
115
- # c.stats.values_at("ep_getl_default_timeout", "ep_getl_max_timeout")
116
- # #=> [{"127.0.0.1:11210"=>"15"}, {"127.0.0.1:11210"=>"30"}]
117
- #
118
- # @example Get and lock key using custom timeout
119
- # c.get("foo", :lock => 3)
120
- #
121
- # @example Get and lock multiple keys using custom timeout
122
- # c.get("foo", "bar", :lock => 3)
123
- #
124
- # @overload get(keys, options = {})
125
- # When the method receive hash map, it will behave like it receive list
126
- # of keys (+keys.keys+), but also touch each key setting expiry time to
127
- # the corresponding value. But unlike usual get this command always
128
- # return hash map +{key => value}+ or +{key => [value, flags, cas]}+.
129
- #
130
- # @param keys [Hash] Map key-ttl
131
- # @param options [Hash] Options for operation. (see options definition
132
- # above)
133
- #
134
- # @return [Hash] the values (or tuples in extended mode) associated with
135
- # the keys.
136
- #
137
- # @example Get and touch multiple keys
138
- # c.get("foo" => 10, "bar" => 20) #=> {"foo" => val1, "bar" => val2}
139
- #
140
- # @example Extended get and touch multiple keys
141
- # c.get({"foo" => 10, "bar" => 20}, :extended => true)
142
- # #=> {"foo" => [val1, flags1, cas1], "bar" => [val2, flags2, cas2]}
143
- #
144
- # @example Get and lock multiple keys for chosen period in seconds
145
- # c.get("foo" => 10, "bar" => 20, :lock => true)
146
- # #=> {"foo" => val1, "bar" => val2}
147
- #
148
- def get(*args, &block)
149
- key, options = expand_get_args(args)
150
- get_key(key, options)
151
- end
152
-
153
- def [](key, options = {})
154
- get(key, options)
155
- end
156
-
157
- def get_bulk(keys, options)
158
- keys = keys.map { |key| validate_key(key) }
159
- results = if options[:extended]
160
- get_bulk_extended(keys, options)
161
- else
162
- client_get_bulk(keys)
163
- end
164
-
165
- not_found_error(results.size != keys.size, options)
166
-
167
- if options[:assemble_hash] || options[:extended]
168
- results
169
- else
170
- ordered_multi_values(keys, results)
171
- end
172
- end
173
-
174
- def async_get(key, &block)
175
- fail ArgumentError, 'Must pass a block to #async_get' unless block_given?
176
-
177
- case key
178
- when String, Symbol
179
- key = validate_key(key)
180
- meta = { op: :get, key: key }
181
- future = client.asyncGet(key)
182
- when Array
183
- keys = key.map { |key| validate_key(key) }
184
- meta = { op: :get }
185
- future = client.asyncGetBulk(keys)
186
- when Hash
187
- # async_get_and_touch(key, options, &block)
188
- end
189
- register_future(future, meta, &block)
190
- end
191
-
192
- private
193
-
194
- def get_key(key, options)
195
- case key
196
- when String, Symbol
197
- get_single(key, options)
198
- when Array
199
- get_bulk(key, options)
200
- when Hash
201
- get_and_touch(key, options)
202
- end
203
- end
204
-
205
- def expand_get_args(args)
206
- options = extract_options_hash(args)
207
- key = args.size == 1 ? args.first : args
208
-
209
- [validate_key(key), options]
210
- end
211
-
212
- def get_single(key, options)
213
- if options[:lock]
214
- client_get_and_lock(key, options)
215
- elsif options[:extended]
216
- get_extended(key, options)
217
- else
218
- value = if options.key?(:ttl)
219
- client_get_and_touch(key, options[:ttl])
220
- elsif options[:format]
221
- client.get(key, transcoders[options[:format]])
222
- else
223
- client.get(key)
224
- end
225
-
226
- not_found_error(value.nil?, options)
227
- value.nil? ? nil : value
228
- end
229
- rescue Java::JavaLang::RuntimeException
230
- get_single(key, options.merge(format: :plain))
231
- end
232
-
233
- def get_extended(key, options = {})
234
- if options.key?(:lock)
235
- client_get_and_lock(key, options[:lock])
236
- end
237
- extended = client_get_extended(key)
238
- not_found_error(extended.nil?, options)
239
- extended
240
- end
241
-
242
- def get_and_touch(key, options = {})
243
- if key.size > 1
244
- get_bulk_and_touch(key, options)
245
- else
246
- key, ttl = key.first
247
- value = client_get_and_touch(key, ttl)
248
- not_found_error(value.nil?)
249
- { key => value }
250
- end
251
- end
252
-
253
- def get_bulk_and_touch(keys, options = {})
254
- options.merge!(assemble_hash: true)
255
- results = get_bulk(keys.keys, options)
256
- touch(keys)
257
- results.to_hash
258
- end
259
-
260
- def get_bulk_extended(keys, options = {})
261
- {}.tap do |results|
262
- keys.each do |key|
263
- result = get_extended(key, options)
264
- results[key] = result unless result.nil?
265
- end
266
- end
267
- end
268
-
269
- def ordered_multi_values(keys, results)
270
- keys.map { |key| results[key] }
271
- end
272
-
273
- def client_get_and_touch(key, ttl)
274
- client.getAndTouch(key, ttl).getValue
275
- end
276
-
277
- def client_get_and_lock(key, options)
278
- lock = options[:lock] == true ? 30 : options[:lock]
279
- cas = client.getAndLock(key, lock)
280
- if options[:extended]
281
- [cas.getValue, nil, cas.getCas]
282
- else
283
- cas.getValue
284
- end
285
- end
286
-
287
- def client_get_extended(key)
288
- cas_value = client.gets(key)
289
-
290
- if cas_value.nil?
291
- nil
292
- else
293
- [cas_value.getValue, nil, cas_value.getCas]
294
- end
295
- end
296
-
297
- def client_get_bulk(keys)
298
- client.getBulk(keys)
299
- rescue java.lang.ClassCastException
300
- raise TypeError.new
301
- end
302
- end
303
- end
@@ -1,42 +0,0 @@
1
- # Author:: Mike Evans <mike@urlgonomics.com>
2
- # Copyright:: 2013 Urlgonomics LLC.
3
- # License:: Apache License, Version 2.0
4
- #
5
- # Licensed under the Apache License, Version 2.0 (the "License");
6
- # you may not use this file except in compliance with the License.
7
- # You may obtain a copy of the License at
8
- #
9
- # http://www.apache.org/licenses/LICENSE-2.0
10
- #
11
- # Unless required by applicable law or agreed to in writing, software
12
- # distributed under the License is distributed on an "AS IS" BASIS,
13
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- # See the License for the specific language governing permissions and
15
- # limitations under the License.
16
- #
17
-
18
- module Couchbase::Operations
19
- module Stats
20
-
21
- def stats(statname = nil)
22
- stats = if statname.nil?
23
- client.getStats
24
- else
25
- client.getStats(statname)
26
- end
27
-
28
- stats = stats.to_hash
29
-
30
- {}.tap do |hash|
31
- stats.each_pair do |node, values|
32
- node_value = node.to_s
33
- values.each_pair do |stat, value|
34
- hash[stat] ||= {}
35
- hash[stat][node_value] = value
36
- end
37
- end
38
- end
39
- end
40
-
41
- end
42
- end