From bf10db9b21bcd13bc18c7d1294b5f5b6f7bee4f9 Mon Sep 17 00:00:00 2001 From: Kyle Banker Date: Mon, 4 Oct 2010 12:09:29 -0400 Subject: [PATCH] minor: ObjectId optimization --- ext/java/jar/jbson.jar | Bin 17401 -> 17156 bytes ext/java/src/org/jbson/RubyBSONCallback.class | Bin 9385 -> 9353 bytes ext/java/src/org/jbson/RubyBSONCallback.java | 7 ++++--- ext/java/src/org/jbson/RubyBSONEncoder.class | Bin 17784 -> 17138 bytes ext/java/src/org/jbson/RubyBSONEncoder.java | 5 +++-- lib/bson/types/object_id.rb | 14 +++++++------- 6 files changed, 14 insertions(+), 12 deletions(-) diff --git a/ext/java/jar/jbson.jar b/ext/java/jar/jbson.jar index a45390a900f93474bdc0cb7adbeb2933067e74ba..cdbd3792d0e763265fec41a53f41f7cc8e979374 100644 GIT binary patch delta 12741 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 A)&Kwi delta 3381 zcmZu!3w)Jj8UH`q*}k)HF9SAqIXk;^8M`?GHe`aZfn3^!%Rm@c&)9{HvB53~Xq~LI zOw{zN3`!C$i%bPaV_*nn30WbfCWuOw*$um(mZDhy=Q}4h!2N#T`+V>7{Ga>tzTesH zb9c`TKKs$ZrvQwXn{D`U%)-xYMBrEqlJKl9ztH8EUi``?J+7PQyf~rs*IxWa>GNK^ zp!7vAeyj8)FHR~w<;BZNPg{6Jm0#7(Yij+B7r(Rcx{co>_y-Gb*eJjs74oJoe^SVw zE&RoczuL&b-*kUgC2#55-*x$ig?}pNUlz_OecQ%6c-M=6+xQRO)8&0#&a34QRN+HK zT~O3V`u1O2AYw^G(8kpgX^F>1nMBzVEtW1`OJZ!XCDz8ZV!Sd$H*sDW>Xl)(43~IY z5@ZC;Nun)DlC0V(bS6GqQpN9;G~J{tAcOuS)0QmBwk1bK>UI=MA){?9ma$_j$>j@< zxjPl+S(2}t0@W^5PLU;7^*$)2k)Ai0xAThUB{|o-FY2sFOz$o$KEjhLsC2f)jB-xL zY?gdykv%@I3tI&vS_7K`#Xa3EZN*hB?duvFs#?0b4c4N?piP%{bU2UONx`4sX@eUO z5SWVEc{OEa6)o+7&MgLOlouP~&8%41*ksV8EIY)S(b3Ro&^$=7x~09ck%|q2d4bI? zuTgn%ADV zLL;@ZNRT`bjN8JBE!~aUKuZ=Ixn7p2?o!Tii;+56#+UVcHe0gX$O>6$$tsPQHM>F9 zSkh>uNt%tURrmyHwPc-g-s*I@s0S+0stH1Zh`Phr#36W61{1aib-jM!JOI z?q_n?fQ<(I(jyo?Fky27U2CfY#BY)t4W7c`D@tA6(a_VzKsK{0vPHHUd>MBO5;f1> zhljl7@!TZHayG4}@D7R?<{%5@92x{~clqlrD7w0NFeMw)L-x@Hi^7{S`aFtiao#e!`J z8D8yE!+U&}8oo1ZmtoY zC5qEY6{dMlyu8TYr0AYdXoM6pY%S5S`~q!CA4;5)sit|Liw|HZc2VWtiz*s~s$3Do zcL;Ov6|NeD!lFM8_I(1rimxfmsq{}{)_3@Q)_wT8%X!2S5jAcQ;%Op&M#M8jd;?mB9_O*NZ2CWumT29N zoi68WTJ9j7#Zmm-aQPm}$Q~5z+Z>yB z*sgbp_+A+CddB!c<$RBG{XRQ$9$EN+sNK+J^f(hUtLW^O%)HWjLKYipRpPbX2t4vNu)Nfg3@RIcdDY73a*!nzBSEBV^GJThb9P85l{LC)v<* z;~raM;Z8Y^G-~a|6RJzes&G1``Gxy2uO=#-NS!CDAM>5lS-F)1wnrmca*-@~{QXma z5-FsOUe033(pr|qqQ&X?MYL4r37PVFYU|vhr1fKgQ=MHg zUvvbEs|t={#FJQDw;$J6DZ8K#OO_O9C=u>hgqpt`v9c0FWfhyW8d(x>U3ekxrFn#3 zil8d|nC|$iFq~Zz-RYF&<@aN0bs;U&V_i+rQKaZ**$%w~`>?#Gu%Jl277ch!)doou z(`-hZv>;Vl>2)2OvEKC@3%P(?3r8&cbXYlW;se33)4^BqipwerKe2aRUj2{1wf*q& s^7{XGU?h{%zu0i8dQm%Y;@qmIVJtDv5EFr;Qcr60pM@l8V6A-r1E!#4YybcN diff --git a/ext/java/src/org/jbson/RubyBSONCallback.java b/ext/java/src/org/jbson/RubyBSONCallback.java index 5d3df44..96c4ecd 100644 --- a/ext/java/src/org/jbson/RubyBSONCallback.java +++ b/ext/java/src/org/jbson/RubyBSONCallback.java @@ -264,10 +264,11 @@ public class RubyBSONCallback implements BSONCallback { } public void gotObjectId( String name , ObjectId id ){ - IRubyObject arg = (IRubyObject)RubyString.newString(_runtime, id.toString()); + byte[] jbytes = id.toByteArray(); + RubyArray arg = ja2ra(jbytes); Object[] args = new Object[] { arg }; - Object result = JavaEmbedUtils.invokeMethod(_runtime, _rbclsObjectId, "from_string", args, Object.class); + Object result = JavaEmbedUtils.invokeMethod(_runtime, _rbclsObjectId, "new", args, Object.class); _put( name, (RubyObject)result ); } @@ -281,7 +282,7 @@ public class RubyBSONCallback implements BSONCallback { // TODO: I know that this is horrible. To be optimized. private RubyArray ja2ra( byte[] b ) { RubyArray result = RubyArray.newArray( _runtime, b.length ); - + for ( int i=0; izW#ml`*D|Z@7b4o-{sVuc>Ff>Z8`hu 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