bson_ext 1.0.9 → 1.1

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -13,6 +13,29 @@ require 'rbconfig'
13
13
  include Config
14
14
  ENV['TEST_MODE'] = 'TRUE'
15
15
 
16
+ task :java do
17
+ Rake::Task['build:java'].invoke
18
+ Rake::Task['test:ruby'].invoke
19
+ end
20
+
21
+ namespace :build do
22
+ desc "Build the java extensions."
23
+ task :java do
24
+ puts "Building Java extensions..."
25
+ java_dir = File.join(File.dirname(__FILE__), 'ext', 'java')
26
+ jar_dir = File.join(java_dir, 'jar')
27
+
28
+ jruby_jar = File.join(jar_dir, 'jruby.jar')
29
+ mongo_jar = File.join(jar_dir, 'mongo.jar')
30
+ bson_jar = File.join(jar_dir, 'bson.jar')
31
+
32
+ src_base = File.join(java_dir, 'src')
33
+
34
+ system("javac -Xlint:unchecked -classpath #{jruby_jar}:#{mongo_jar}:#{bson_jar} #{File.join(src_base, 'org', 'jbson', '*.java')}")
35
+ system("cd #{src_base} && jar cf #{File.join(jar_dir, 'jbson.jar')} #{File.join('.', 'org', 'jbson', '*.class')}")
36
+ end
37
+ end
38
+
16
39
  desc "Test the MongoDB Ruby driver."
17
40
  task :test do
18
41
  puts "\nThis option has changed."
@@ -75,7 +75,6 @@ static ID lt_operator;
75
75
  static ID gt_operator;
76
76
 
77
77
  static VALUE Binary;
78
- static VALUE ObjectID;
79
78
  static VALUE ObjectId;
80
79
  static VALUE DBRef;
81
80
  static VALUE Code;
@@ -324,37 +323,14 @@ static int write_element(VALUE key, VALUE value, VALUE extra, int allow_id) {
324
323
  }
325
324
  case T_STRING:
326
325
  {
327
- if (strcmp(rb_obj_classname(value),
328
- "BSON::Code") == 0) {
329
- buffer_position length_location, start_position, total_length;
330
- int length;
331
- write_name_and_type(buffer, key, 0x0F);
332
-
333
- start_position = buffer_get_position(buffer);
334
- length_location = buffer_save_space(buffer, 4);
335
- if (length_location == -1) {
336
- rb_raise(rb_eNoMemError, "failed to allocate memory in buffer.c");
337
- }
338
-
339
- length = RSTRING_LEN(value) + 1;
340
- SAFE_WRITE(buffer, (char*)&length, 4);
341
- SAFE_WRITE(buffer, RSTRING_PTR(value), length - 1);
342
- SAFE_WRITE(buffer, &zero, 1);
343
- write_doc(buffer, rb_funcall(value, rb_intern("scope"), 0), Qfalse, Qfalse);
344
-
345
- total_length = buffer_get_position(buffer) - start_position;
346
- SAFE_WRITE_AT_POS(buffer, length_location, (const char*)&total_length, 4);
347
- break;
348
- } else {
349
- int length;
350
- write_name_and_type(buffer, key, 0x02);
351
- value = TO_UTF8(value);
352
- length = RSTRING_LEN(value) + 1;
353
- SAFE_WRITE(buffer, (char*)&length, 4);
354
- write_utf8(buffer, value, 0);
355
- SAFE_WRITE(buffer, &zero, 1);
356
- break;
357
- }
326
+ int length;
327
+ write_name_and_type(buffer, key, 0x02);
328
+ value = TO_UTF8(value);
329
+ length = RSTRING_LEN(value) + 1;
330
+ SAFE_WRITE(buffer, (char*)&length, 4);
331
+ write_utf8(buffer, value, 0);
332
+ SAFE_WRITE(buffer, &zero, 1);
333
+ break;
358
334
  }
359
335
  case T_SYMBOL:
360
336
  {
@@ -388,7 +364,7 @@ static int write_element(VALUE key, VALUE value, VALUE extra, int allow_id) {
388
364
  SAFE_WRITE(buffer, RSTRING_PTR(string_data), length);
389
365
  break;
390
366
  }
391
- if ((strcmp(cls, "BSON::ObjectId") == 0) || (strcmp(cls, "BSON::ObjectID") == 0)) {
367
+ if (strcmp(cls, "BSON::ObjectId") == 0) {
392
368
  VALUE as_array = rb_funcall(value, rb_intern("to_a"), 0);
393
369
  int i;
394
370
  write_name_and_type(buffer, key, 0x07);
@@ -422,6 +398,28 @@ static int write_element(VALUE key, VALUE value, VALUE extra, int allow_id) {
422
398
  SAFE_WRITE_AT_POS(buffer, length_location, (const char*)&obj_length, 4);
423
399
  break;
424
400
  }
401
+ if (strcmp(cls, "BSON::Code") == 0) {
402
+ buffer_position length_location, start_position, total_length;
403
+ int length;
404
+ write_name_and_type(buffer, key, 0x0F);
405
+
406
+ start_position = buffer_get_position(buffer);
407
+ length_location = buffer_save_space(buffer, 4);
408
+ if (length_location == -1) {
409
+ rb_raise(rb_eNoMemError, "failed to allocate memory in buffer.c");
410
+ }
411
+
412
+ VALUE code_str = rb_funcall(value, rb_intern("code"), 0);
413
+ length = RSTRING_LEN(code_str) + 1;
414
+ SAFE_WRITE(buffer, (char*)&length, 4);
415
+ SAFE_WRITE(buffer, RSTRING_PTR(code_str), length - 1);
416
+ SAFE_WRITE(buffer, &zero, 1);
417
+ write_doc(buffer, rb_funcall(value, rb_intern("scope"), 0), Qfalse, Qfalse);
418
+
419
+ total_length = buffer_get_position(buffer) - start_position;
420
+ SAFE_WRITE_AT_POS(buffer, length_location, (const char*)&total_length, 4);
421
+ break;
422
+ }
425
423
  if (strcmp(cls, "BSON::MaxKey") == 0) {
426
424
  write_name_and_type(buffer, key, 0x7f);
427
425
  break;
@@ -918,8 +916,6 @@ void Init_cbson() {
918
916
  bson = rb_const_get(rb_cObject, rb_intern("BSON"));
919
917
  rb_require("bson/types/binary");
920
918
  Binary = rb_const_get(bson, rb_intern("Binary"));
921
- rb_require("bson/types/objectid");
922
- ObjectID = rb_const_get(bson, rb_intern("ObjectID"));
923
919
  rb_require("bson/types/object_id");
924
920
  ObjectId = rb_const_get(bson, rb_intern("ObjectId"));
925
921
  rb_require("bson/types/dbref");
@@ -948,7 +944,6 @@ void Init_cbson() {
948
944
  Digest = rb_const_get(rb_cObject, rb_intern("Digest"));
949
945
  DigestMD5 = rb_const_get(Digest, rb_intern("MD5"));
950
946
 
951
- rb_define_method(ObjectID, "generate", objectid_generate, 0);
952
947
  rb_define_method(ObjectId, "generate", objectid_generate, 0);
953
948
 
954
949
  if (gethostname(hostname, MAX_HOSTNAME_LENGTH) != 0) {
@@ -14,4 +14,4 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- #define VERSION "1.0.9"
17
+ #define VERSION "1.1"
metadata CHANGED
@@ -1,21 +1,19 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bson_ext
3
3
  version: !ruby/object:Gem::Version
4
- hash: 5
5
4
  prerelease: false
6
5
  segments:
7
- - 1
8
- - 0
9
- - 9
10
- version: 1.0.9
6
+ - 1
7
+ - 1
8
+ version: "1.1"
11
9
  platform: ruby
12
10
  authors:
13
- - Mike Dirolf
11
+ - Mike Dirolf
14
12
  autorequire:
15
13
  bindir: bin
16
14
  cert_chain: []
17
15
 
18
- date: 2010-09-20 00:00:00 -04:00
16
+ date: 2010-10-04 00:00:00 -04:00
19
17
  default_executable:
20
18
  dependencies: []
21
19
 
@@ -24,21 +22,20 @@ email: mongodb-dev@googlegroups.com
24
22
  executables: []
25
23
 
26
24
  extensions:
27
- - ext/cbson/extconf.rb
25
+ - ext/cbson/extconf.rb
28
26
  extra_rdoc_files: []
29
27
 
30
28
  files:
31
- - Rakefile
32
- - bson_ext.gemspec
33
- - ext/cbson/extconf.rb
34
- - ext/lib/bson_ext.rb
35
- - ext/cbson/buffer.c
36
- - ext/cbson/cbson.c
37
- - ext/cbson/encoding_helpers.c
38
- - ext/cbson/buffer.h
39
- - ext/cbson/encoding_helpers.h
40
- - ext/cbson/version.h
41
- has_rdoc: false
29
+ - Rakefile
30
+ - bson_ext.gemspec
31
+ - ext/cbson/extconf.rb
32
+ - ext/cbson/buffer.c
33
+ - ext/cbson/cbson.c
34
+ - ext/cbson/encoding_helpers.c
35
+ - ext/cbson/buffer.h
36
+ - ext/cbson/encoding_helpers.h
37
+ - ext/cbson/version.h
38
+ has_rdoc: true
42
39
  homepage: http://www.mongodb.org
43
40
  licenses: []
44
41
 
@@ -46,29 +43,25 @@ post_install_message:
46
43
  rdoc_options: []
47
44
 
48
45
  require_paths:
49
- - ext
46
+ - ext
50
47
  required_ruby_version: !ruby/object:Gem::Requirement
51
- none: false
52
48
  requirements:
53
- - - ">="
54
- - !ruby/object:Gem::Version
55
- hash: 3
56
- segments:
57
- - 0
58
- version: "0"
49
+ - - ">="
50
+ - !ruby/object:Gem::Version
51
+ segments:
52
+ - 0
53
+ version: "0"
59
54
  required_rubygems_version: !ruby/object:Gem::Requirement
60
- none: false
61
55
  requirements:
62
- - - ">="
63
- - !ruby/object:Gem::Version
64
- hash: 3
65
- segments:
66
- - 0
67
- version: "0"
56
+ - - ">="
57
+ - !ruby/object:Gem::Version
58
+ segments:
59
+ - 0
60
+ version: "0"
68
61
  requirements: []
69
62
 
70
63
  rubyforge_project:
71
- rubygems_version: 1.3.7
64
+ rubygems_version: 1.3.6
72
65
  signing_key:
73
66
  specification_version: 3
74
67
  summary: C extensions for Ruby BSON.
@@ -1 +0,0 @@
1
- puts "hello world"