From 016743b0156f11115fba9fa9da03d07419c6d90f Mon Sep 17 00:00:00 2001 From: Kyle Banker Date: Fri, 14 Jan 2011 10:50:32 -0500 Subject: [PATCH] RUBY-224 encode JRuby strings with byte[] --- Rakefile | 2 +- ext/java/jar/jbson.jar | Bin 13829 -> 13848 bytes ext/java/src/org/jbson/RubyBSONEncoder.java | 13 ++++++++----- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/Rakefile b/Rakefile index 35a4c84..65de58c 100644 --- a/Rakefile +++ b/Rakefile @@ -26,7 +26,7 @@ namespace :build do jar_dir = File.join(java_dir, 'jar') jruby_jar = File.join(jar_dir, 'jruby.jar') - mongo_jar = File.join(jar_dir, 'mongo-2.2.jar') + mongo_jar = File.join(jar_dir, 'mongo-2.4.jar') bson_jar = File.join(jar_dir, 'bson-2.2.jar') src_base = File.join(java_dir, 'src') diff --git a/ext/java/jar/jbson.jar b/ext/java/jar/jbson.jar index 720fc27d84cb7e4894e41b2e7ece1b62a5b958fb..d56c190300a11296f4a002e613869c6d341d85cc 100644 GIT binary patch delta 9019 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 delta 9000 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