Skip to content

Commit bc18bb2

Browse files
author
kristina
committed
Added encoding/decoding for longs
1 parent 922545d commit bc18bb2

5 files changed

Lines changed: 29 additions & 1 deletion

File tree

src/main/com/mongodb/ByteDecoder.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,11 @@ protected int decodeNext( DBObject o , String path ){
177177
case NUMBER_INT:
178178
o.put( name , _buf.getInt() );
179179
break;
180-
180+
181+
case NUMBER_LONG:
182+
o.put( name , _buf.getLong() );
183+
break;
184+
181185
case SYMBOL:
182186
// intentional fallthrough
183187
case STRING:

src/main/com/mongodb/ByteEncoder.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -385,6 +385,10 @@ protected int putNumber( String name , Number n ){
385385
_put( NUMBER_INT , name );
386386
_buf.putInt( n.intValue() );
387387
}
388+
else if (n instanceof Long ) {
389+
_put( NUMBER_LONG , name );
390+
_buf.putLong( n.longValue() );
391+
}
388392
else {
389393
_put( NUMBER , name );
390394
_buf.putDouble( n.doubleValue() );

src/main/com/mongodb/Bytes.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ public class Bytes {
6868
static final byte CODE_W_SCOPE = 15;
6969
static final byte NUMBER_INT = 16;
7070
static final byte TIMESTAMP = 17;
71+
static final byte NUMBER_LONG = 18;
7172

7273
static final byte MINKEY = -1;
7374
static final byte MAXKEY = 127;

src/main/com/mongodb/RawDBObject.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,7 @@ class Element {
190190
break;
191191
case DATE:
192192
case NUMBER:
193+
case NUMBER_LONG:
193194
size += 8;
194195
break;
195196
case NUMBER_INT:

src/test/com/mongodb/ByteTest.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -371,6 +371,24 @@ public void testPattern() {
371371
decoder.done();
372372
}
373373

374+
@Test(groups = {"basic"})
375+
public void testLong() {
376+
long s = -9223372036854775808l;
377+
long m = 1l;
378+
long l = 9223372036854775807l;
379+
380+
DBObject obj = BasicDBObjectBuilder.start().add("s", s).add("m", m).add("l", l).get();
381+
DBCollection c = _db.getCollection("test");
382+
c.drop();
383+
384+
c.insert(obj);
385+
DBObject r = c.findOne();
386+
387+
assertEquals(r.get("s"), -9223372036854775808l);
388+
assertEquals(r.get("m"), 1l);
389+
assertEquals(r.get("l"), 9223372036854775807l);
390+
}
391+
374392
final DBBase _db;
375393

376394
public static void main( String args[] )

0 commit comments

Comments
 (0)