Search in sources :

Example 11 with CodeWScope

use of org.bson.types.CodeWScope in project mongo-java-driver by mongodb.

the class LazyBSONObject method readValue.

Object readValue(final BsonBinaryReader reader) {
    switch(reader.getCurrentBsonType()) {
        case DOCUMENT:
            return readDocument(reader);
        case ARRAY:
            return readArray(reader);
        case DOUBLE:
            return reader.readDouble();
        case STRING:
            return reader.readString();
        case BINARY:
            byte binarySubType = reader.peekBinarySubType();
            if (BsonBinarySubType.isUuid(binarySubType) && reader.peekBinarySize() == 16) {
                return new UuidCodec().decode(reader, DecoderContext.builder().build());
            }
            BsonBinary binary = reader.readBinaryData();
            if (binarySubType == BINARY.getValue() || binarySubType == OLD_BINARY.getValue()) {
                return binary.getData();
            } else {
                return new Binary(binary.getType(), binary.getData());
            }
        case NULL:
            reader.readNull();
            return null;
        case UNDEFINED:
            reader.readUndefined();
            return null;
        case OBJECT_ID:
            return reader.readObjectId();
        case BOOLEAN:
            return reader.readBoolean();
        case DATE_TIME:
            return new Date(reader.readDateTime());
        case REGULAR_EXPRESSION:
            BsonRegularExpression regularExpression = reader.readRegularExpression();
            return Pattern.compile(regularExpression.getPattern(), BSON.regexFlags(regularExpression.getOptions()));
        case DB_POINTER:
            BsonDbPointer dbPointer = reader.readDBPointer();
            return callback.createDBRef(dbPointer.getNamespace(), dbPointer.getId());
        case JAVASCRIPT:
            return new Code(reader.readJavaScript());
        case SYMBOL:
            return new Symbol(reader.readSymbol());
        case JAVASCRIPT_WITH_SCOPE:
            return new CodeWScope(reader.readJavaScriptWithScope(), (BSONObject) readJavaScriptWithScopeDocument(reader));
        case INT32:
            return reader.readInt32();
        case TIMESTAMP:
            BsonTimestamp timestamp = reader.readTimestamp();
            return new BSONTimestamp(timestamp.getTime(), timestamp.getInc());
        case INT64:
            return reader.readInt64();
        case DECIMAL128:
            return reader.readDecimal128();
        case MIN_KEY:
            reader.readMinKey();
            return new MinKey();
        case MAX_KEY:
            reader.readMaxKey();
            return new MaxKey();
        default:
            throw new IllegalArgumentException("unhandled BSON type: " + reader.getCurrentBsonType());
    }
}
Also used : UuidCodec(org.bson.codecs.UuidCodec) Symbol(org.bson.types.Symbol) MaxKey(org.bson.types.MaxKey) BSONTimestamp(org.bson.types.BSONTimestamp) Code(org.bson.types.Code) Date(java.util.Date) CodeWScope(org.bson.types.CodeWScope) MinKey(org.bson.types.MinKey) Binary(org.bson.types.Binary)

Example 12 with CodeWScope

use of org.bson.types.CodeWScope in project mongo-java-driver by mongodb.

the class JSONSerializersTest method testSerializationByAncestry.

@Test
public void testSerializationByAncestry() {
    ClassMapBasedObjectSerializer serializer = new ClassMapBasedObjectSerializer();
    // by superclass
    serializer.addObjectSerializer(Object.class, new AbstractObjectSerializer() {

        @Override
        public void serialize(final Object obj, final StringBuilder buf) {
            buf.append("serialized as Object class");
        }
    });
    // interface
    serializer.addObjectSerializer(java.util.List.class, new AbstractObjectSerializer() {

        @Override
        public void serialize(final Object obj, final StringBuilder buf) {
            buf.append(obj.toString());
        }
    });
    ArrayList<String> list = new ArrayList<String>();
    list.add("val1");
    StringBuilder buf = new StringBuilder();
    serializer.serialize(list, buf);
    assertEquals("[val1]", buf.toString());
    CodeWScope code = new CodeWScope("code_test", null);
    buf = new StringBuilder();
    serializer.serialize(code, buf);
    assertEquals("serialized as Object class", buf.toString());
}
Also used : ArrayList(java.util.ArrayList) BasicDBObject(com.mongodb.BasicDBObject) CodeWScope(org.bson.types.CodeWScope) Test(org.junit.Test)

Example 13 with CodeWScope

use of org.bson.types.CodeWScope in project mongo-java-driver by mongodb.

the class JSONSerializersTest method testLegacySerialization.

@Test
public void testLegacySerialization() {
    ObjectSerializer serializer = JSONSerializers.getLegacy();
    BasicDBObject testObj = new BasicDBObject();
    // test  ARRAY
    BasicDBObject[] a = { new BasicDBObject("object1", "value1"), new BasicDBObject("object2", "value2") };
    testObj.put("array", a);
    StringBuilder buf = new StringBuilder();
    serializer.serialize(a, buf);
    assertEquals("[ { \"object1\" : \"value1\"} , { \"object2\" : \"value2\"}]", buf.toString());
    // test  BINARY
    byte[] b = { 1, 2, 3, 4 };
    testObj = new BasicDBObject("binary", new org.bson.types.Binary(b));
    buf = new StringBuilder();
    serializer.serialize(testObj, buf);
    assertEquals("{ \"binary\" : <Binary Data>}", buf.toString());
    // test  BOOLEAN
    testObj = new BasicDBObject("boolean", new Boolean(true));
    buf = new StringBuilder();
    serializer.serialize(testObj, buf);
    assertEquals(buf.toString(), "{ \"boolean\" : true}");
    // test  BSON_TIMESTAMP,
    testObj = new BasicDBObject("timestamp", new BSONTimestamp());
    buf = new StringBuilder();
    serializer.serialize(testObj, buf);
    assertEquals("{ \"timestamp\" : { \"$ts\" : 0 , \"$inc\" : 0}}", buf.toString());
    // test  BYTE_ARRAY
    testObj = new BasicDBObject("byte_array", b);
    buf = new StringBuilder();
    serializer.serialize(testObj, buf);
    assertEquals("{ \"byte_array\" : <Binary Data>}", buf.toString());
    // test  CODE
    testObj = new BasicDBObject("code", new Code("test code"));
    buf = new StringBuilder();
    serializer.serialize(testObj, buf);
    assertEquals("{ \"code\" : { \"$code\" : \"test code\"}}", buf.toString());
    // test  CODE_W_SCOPE
    testObj = new BasicDBObject("scope", "scope of code");
    CodeWScope codewscope = new CodeWScope("test code", testObj);
    buf = new StringBuilder();
    serializer.serialize(codewscope, buf);
    assertEquals("{ \"$code\" : \"test code\" , \"$scope\" : { \"scope\" : \"scope of code\"}}", buf.toString());
    // test  DATE
    Date d = new Date();
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
    format.setCalendar(new GregorianCalendar(new SimpleTimeZone(0, "GMT")));
    buf = new StringBuilder();
    serializer.serialize(d, buf);
    assertEquals("{ \"$date\" : \"" + format.format(d) + "\"}", buf.toString());
    // test  DB_OBJECT implicit in preceding tests
    // test  DB_REF_BASE
    DBRef dbref = new com.mongodb.DBRef("test.test", "4d83ab59a39562db9c1ae2af");
    buf = new StringBuilder();
    serializer.serialize(dbref, buf);
    assertEquals("{ \"$ref\" : \"test.test\" , \"$id\" : \"4d83ab59a39562db9c1ae2af\"}", buf.toString());
    DBRef dbrefWithDatabaseName = new com.mongodb.DBRef("mydb", "test.test", "4d83ab59a39562db9c1ae2af");
    buf = new StringBuilder();
    serializer.serialize(dbrefWithDatabaseName, buf);
    assertEquals("{ \"$ref\" : \"test.test\" , \"$id\" : \"4d83ab59a39562db9c1ae2af\" , \"$db\" : \"mydb\"}", buf.toString());
    // test  ITERABLE
    BasicBSONList testList = new BasicBSONList();
    testList.add(new BasicDBObject("key1", "val1"));
    testList.add(new BasicDBObject("key2", "val2"));
    buf = new StringBuilder();
    serializer.serialize(testList, buf);
    assertEquals("[ { \"key1\" : \"val1\"} , { \"key2\" : \"val2\"}]", buf.toString());
    // test  MAP
    Map<String, String> testMap = new TreeMap<String, String>();
    testMap.put("key1", "val1");
    testMap.put("key2", "val2");
    buf = new StringBuilder();
    serializer.serialize(testMap, buf);
    assertEquals("{ \"key1\" : \"val1\" , \"key2\" : \"val2\"}", buf.toString());
    // test  MAXKEY
    buf = new StringBuilder();
    serializer.serialize(new MaxKey(), buf);
    assertEquals("{ \"$maxKey\" : 1}", buf.toString());
    // test  MINKEY
    buf = new StringBuilder();
    serializer.serialize(new MinKey(), buf);
    assertEquals("{ \"$minKey\" : 1}", buf.toString());
    // test  NULL
    buf = new StringBuilder();
    serializer.serialize(null, buf);
    assertEquals(" null ", buf.toString());
    // test  NUMBER
    Random rand = new Random();
    long val = rand.nextLong();
    Long longVal = new Long(val);
    buf = new StringBuilder();
    serializer.serialize(longVal, buf);
    assertEquals(String.valueOf(val), buf.toString());
    // test  OBJECT_ID
    buf = new StringBuilder();
    serializer.serialize(new ObjectId("4d83ab3ea39562db9c1ae2ae"), buf);
    assertEquals("{ \"$oid\" : \"4d83ab3ea39562db9c1ae2ae\"}", buf.toString());
    // test  PATTERN
    buf = new StringBuilder();
    serializer.serialize(Pattern.compile("test"), buf);
    assertEquals("{ \"$regex\" : \"test\"}", buf.toString());
    // test  STRING
    buf = new StringBuilder();
    serializer.serialize("test string", buf);
    assertEquals("\"test string\"", buf.toString());
    // test  UUID;
    UUID uuid = UUID.randomUUID();
    buf = new StringBuilder();
    serializer.serialize(uuid, buf);
    assertEquals("{ \"$uuid\" : \"" + uuid.toString() + "\"}", buf.toString());
    // test Decimal128
    Decimal128 decimal128 = Decimal128.parse("3.140");
    buf = new StringBuilder();
    serializer.serialize(decimal128, buf);
    assertEquals("{ \"$numberDecimal\" : \"3.140\"}", buf.toString());
}
Also used : MaxKey(org.bson.types.MaxKey) BSONTimestamp(org.bson.types.BSONTimestamp) BasicDBObject(com.mongodb.BasicDBObject) MinKey(org.bson.types.MinKey) Random(java.util.Random) SimpleTimeZone(java.util.SimpleTimeZone) UUID(java.util.UUID) ObjectId(org.bson.types.ObjectId) BasicBSONList(org.bson.types.BasicBSONList) GregorianCalendar(java.util.GregorianCalendar) DBRef(com.mongodb.DBRef) Decimal128(org.bson.types.Decimal128) TreeMap(java.util.TreeMap) Code(org.bson.types.Code) Date(java.util.Date) CodeWScope(org.bson.types.CodeWScope) Binary(org.bson.types.Binary) SimpleDateFormat(java.text.SimpleDateFormat) Test(org.junit.Test)

Example 14 with CodeWScope

use of org.bson.types.CodeWScope in project bson4jackson by michel-kraemer.

the class BsonParserTest method parseCode.

/**
 * Test if {@link JavaScript} objects can be deserialized
 * @throws Exception if something goes wrong
 */
@Test
public void parseCode() throws Exception {
    BSONObject scope = new BasicBSONObject();
    scope.put("Int32", 5);
    BSONObject o = new BasicBSONObject();
    o.put("Code1", new CodeWScope("alert('test');", scope));
    o.put("Code2", new Code("alert('Hello');"));
    Map<?, ?> data = parseBsonObject(o);
    assertEquals(2, data.size());
    JavaScript c1 = (JavaScript) data.get("Code1");
    JavaScript c2 = (JavaScript) data.get("Code2");
    assertEquals("alert('test');", c1.getCode());
    assertEquals("alert('Hello');", c2.getCode());
    Map<String, Object> c1scope = c1.getScope();
    assertEquals(5, c1scope.get("Int32"));
}
Also used : BasicBSONObject(org.bson.BasicBSONObject) JavaScript(de.undercouch.bson4jackson.types.JavaScript) BasicBSONObject(org.bson.BasicBSONObject) BSONObject(org.bson.BSONObject) BasicBSONObject(org.bson.BasicBSONObject) BSONObject(org.bson.BSONObject) Code(org.bson.types.Code) CodeWScope(org.bson.types.CodeWScope) Test(org.junit.Test)

Example 15 with CodeWScope

use of org.bson.types.CodeWScope in project bson4jackson by michel-kraemer.

the class BsonDeserializersTest method javascript.

/**
 * Tests if {@code JavaScript} objects can be deserialized
 * @throws Exception if something goes wrong
 */
@Test
public void javascript() throws Exception {
    Code code = new Code("code");
    TC.J obj = generateAndParse(code, TC.J.class);
    assertEquals(code.getCode(), obj.obj.getCode());
    CodeWScope codews = new CodeWScope("code", new BasicBSONObject("key", "value"));
    obj = generateAndParse(codews, TC.J.class);
    assertEquals(code.getCode(), obj.obj.getCode());
    assertEquals(codews.getScope().toMap(), obj.obj.getScope());
}
Also used : BasicBSONObject(org.bson.BasicBSONObject) Code(org.bson.types.Code) CodeWScope(org.bson.types.CodeWScope) Test(org.junit.Test)

Aggregations

CodeWScope (org.bson.types.CodeWScope)15 Test (org.junit.Test)11 Code (org.bson.types.Code)8 BasicDBObject (com.mongodb.BasicDBObject)6 BSONTimestamp (org.bson.types.BSONTimestamp)6 Date (java.util.Date)5 BSONObject (org.bson.BSONObject)5 Binary (org.bson.types.Binary)5 MaxKey (org.bson.types.MaxKey)5 MinKey (org.bson.types.MinKey)5 ObjectId (org.bson.types.ObjectId)5 DBRef (com.mongodb.DBRef)3 JavaScript (de.undercouch.bson4jackson.types.JavaScript)3 SimpleDateFormat (java.text.SimpleDateFormat)3 GregorianCalendar (java.util.GregorianCalendar)3 SimpleTimeZone (java.util.SimpleTimeZone)3 BasicBSONObject (org.bson.BasicBSONObject)3 Symbol (org.bson.types.Symbol)3 ArrayList (java.util.ArrayList)2 HashMap (java.util.HashMap)2