|
28 | 28 | import org.bson.types.MaxKey; |
29 | 29 | import org.bson.types.MinKey; |
30 | 30 | import org.bson.types.ObjectId; |
| 31 | +import org.bson.types.Symbol; |
31 | 32 |
|
32 | 33 | import javax.xml.bind.DatatypeConverter; |
33 | 34 | import java.lang.reflect.Array; |
@@ -104,6 +105,7 @@ static ClassMapBasedObjectSerializer addCommonSerializers() { |
104 | 105 | serializer.addObjectSerializer(ObjectId.class, new ObjectIdSerializer(serializer)); |
105 | 106 | serializer.addObjectSerializer(Pattern.class, new PatternSerializer(serializer)); |
106 | 107 | serializer.addObjectSerializer(String.class, new StringSerializer()); |
| 108 | + serializer.addObjectSerializer(Symbol.class, new SymbolSerializer(serializer)); |
107 | 109 | serializer.addObjectSerializer(UUID.class, new UuidSerializer(serializer)); |
108 | 110 | serializer.addObjectSerializer(BsonUndefined.class, new UndefinedSerializer(serializer)); |
109 | 111 | return serializer; |
@@ -389,6 +391,21 @@ public void serialize(final Object obj, final StringBuilder buf) { |
389 | 391 | } |
390 | 392 | } |
391 | 393 |
|
| 394 | + private static class SymbolSerializer extends CompoundObjectSerializer { |
| 395 | + |
| 396 | + SymbolSerializer(final ObjectSerializer serializer) { |
| 397 | + super(serializer); |
| 398 | + } |
| 399 | + |
| 400 | + @Override |
| 401 | + public void serialize(final Object obj, final StringBuilder buf) { |
| 402 | + Symbol symbol = (Symbol) obj; |
| 403 | + BasicDBObject temp = new BasicDBObject(); |
| 404 | + temp.put("$symbol", symbol.toString()); |
| 405 | + serializer.serialize(temp, buf); |
| 406 | + } |
| 407 | + } |
| 408 | + |
392 | 409 | private static class UuidSerializer extends CompoundObjectSerializer { |
393 | 410 |
|
394 | 411 | UuidSerializer(final ObjectSerializer serializer) { |
|
0 commit comments