Refine search
private BSONEncoder getEncoder() { return new BasicBSONEncoder(); }
/** * Encodes a DBObject as a BSON byte array. * * @param doc the document to encode * @return the document encoded as BSON */ public static byte[] encode(final BSONObject doc) { return new BasicBSONEncoder().encode(doc); }
/** * Encodes a {@code BSONObject}. This is for the higher level api calls. * * @param document the document to encode * @return the number of characters in the encoding */ @Override public int putObject(final BSONObject document) { int startPosition = getOutputBuffer().getPosition(); bsonWriter.writeStartDocument(); if (isTopLevelDocument() && document.containsField("_id")) { _putObjectField("_id", document.get("_id")); } for (final String key : document.keySet()) { if (isTopLevelDocument() && key.equals("_id")) { continue; } _putObjectField(key, document.get(key)); } bsonWriter.writeEndDocument(); return getOutputBuffer().getPosition() - startPosition; }
@Override public byte[] encode(final BSONObject document) { OutputBuffer outputBuffer = new BasicOutputBuffer(); set(outputBuffer); putObject(document); done(); return outputBuffer.toByteArray(); }
/** * Encodes a map, as a BSON document * * @param name the field name * @param map the value */ @SuppressWarnings({"rawtypes", "unchecked"}) protected void putMap(final String name, final Map map) { putName(name); bsonWriter.writeStartDocument(); for (final Map.Entry entry : (Set<Map.Entry>) map.entrySet()) { _putObjectField((String) entry.getKey(), entry.getValue()); } bsonWriter.writeEndDocument(); }
putCode(name, new Code((String) initialValue)); putNull(name); } else if (value instanceof Date) { putDate(name, (Date) value); } else if (value instanceof Decimal128) { putDecimal128(name, (Decimal128) value); } else if (value instanceof Number) { putNumber(name, (Number) value); } else if (value instanceof Character) { putString(name, value.toString()); } else if (value instanceof String) { putString(name, value.toString()); } else if (value instanceof ObjectId) { putObjectId(name, (ObjectId) value); } else if (value instanceof Boolean) { putBoolean(name, (Boolean) value); } else if (value instanceof Pattern) { putPattern(name, (Pattern) value); } else if (value instanceof Iterable) { putIterable(name, (Iterable) value); } else if (value instanceof BSONObject) { putObject(name, (BSONObject) value); } else if (value instanceof Map) { putMap(name, (Map) value); } else if (value instanceof byte[]) { putBinary(name, (byte[]) value); } else if (value instanceof Binary) { putBinary(name, (Binary) value);
private void putIterable(String name, Iterable l) { _put(ARRAY, name); final int sizePos = _buf.getPosition(); _buf.writeInt(0); int i = 0; for (Object obj : l) { _putObjectField(String.valueOf(i), obj); i++; } _buf.write(EOO); _buf.writeInt(sizePos, _buf.getPosition() - sizePos); }
@Override public Put createPut(byte[] row, BSONObject object) { byte[] raw = bsonEncoder.encode(object); Put put = new Put(row); put.add(COL_FAMILY, COL_QUALIFIER, raw); return put; } }
protected void putBinary(String name, byte[] data) { putBinary(name, B_GENERAL, data); }
_put(CODE, name); _putValueString(val.toString()); return; putNull(name); else if (val instanceof Timestamp) putTimestamp(name, new BSONTimestamp((Timestamp) val)); else if (val instanceof Date) putDate(name, (Date) val); else if (val instanceof Number) putNumber(name, (Number) val); else if (val instanceof Character) putString(name, val.toString()); else if (val instanceof String) putString(name, val.toString()); else if (val instanceof ObjectId) putObjectId(name, (ObjectId) val); else if (val instanceof BSONObject) putObject(name, (BSONObject) val); else if (val instanceof Boolean) putBoolean(name, (Boolean) val); else if (val instanceof Pattern) putPattern(name, (Pattern) val); else if (val instanceof Map) putMap(name, (Map) val); else if (val instanceof Iterable) putIterable(name, (Iterable) val); else if (val instanceof byte[]) putBinary(name, (byte[]) val);
private void putArray(String name, Object array) { _put(ARRAY, name); final int sizePos = _buf.getPosition(); _buf.writeInt(0); int size = Array.getLength(array); for (int i = 0; i < size; i++) _putObjectField(String.valueOf(i), Array.get(array, i)); _buf.write(EOO); _buf.writeInt(sizePos, _buf.getPosition() - sizePos); }
@Override public byte[] createRowKey(BSONObject object) { Object id = object.get("_id"); byte[] raw; if (id instanceof ObjectId) { raw = ((ObjectId) id).toByteArray(); } else if (id instanceof String) { raw = ((String) id).getBytes(); } else if (id instanceof BSONObject) { raw = bsonEncoder.encode(((BSONObject) id)); } else { throw new RuntimeException("Don't know how to serialize _id: " + id.toString()); } return DigestUtils.md5(raw); }
/** * Encodes an Iterable, for example {@code List} values * * @param name the field name * @param iterable the value */ @SuppressWarnings("rawtypes") protected void putIterable(final String name, final Iterable iterable) { putName(name); bsonWriter.writeStartArray(); int i = 0; for (final Object o : iterable) { _putObjectField(String.valueOf(i), o); } bsonWriter.writeEndArray(); }
protected void putBinary(String name, byte[] data) { this.putBinary(name, 0, data); }
throw new IllegalArgumentException("Document field names can\'t have a NULL character. (Bad Key: \'" + name + "\')"); } else if(name.equals("$where") && val instanceof String) { this._put((byte) 13, name); this._putValueString(val.toString()); } else { val = BSON.applyEncodingHooks(val); if(val == null || "null".equals(val)) { this.putNull(name); } else if(val instanceof Date) { this.putDate(name, (Date)val); } else if(val instanceof Number) { this.putNumber(name, (Number)val); } else if(val instanceof Character) { this.putString(name, val.toString()); } else if(val instanceof String) { this.putString(name, val.toString()); } else if(val instanceof ObjectId) { this.putObjectId(name, (ObjectId)val); } else if(val instanceof BSONObject) { this.putObject(name, (BSONObject)val); } else if(val instanceof Boolean) { this.putBoolean(name, (Boolean)val); } else if(val instanceof Pattern) { this.putPattern(name, (Pattern)val); } else if(val instanceof Map) { this.putMap(name, (Map)val); } else if(val instanceof Iterable) { this.putIterable(name, (Iterable)val); } else if(val instanceof byte[]) {
<T> Key<T> createKey(final Class<T> clazz, final Object id) { if (id instanceof Serializable) { return createKey(clazz, (Serializable) id); } //TODO: cache the encoders, maybe use the pool version of the buffer that the driver does. final BSONEncoder enc = new BasicBSONEncoder(); return new Key<T>(clazz, getCollectionName(clazz), enc.encode(toDBObject(id))); } }
import org.bson.BasicBSONEncoder; BSONObject bson = (BSONObject)com.mongodb.util.JSON.parse(string_json); BasicBSONEncoder encoder = new BasicBSONEncoder(); byte[] bson_byte = encoder.encode(bson);
private void putMap(String name, Map m) { _put(OBJECT, name); final int sizePos = _buf.getPosition(); _buf.writeInt(0); for (Map.Entry entry : (Set<Map.Entry>) m.entrySet()) _putObjectField(entry.getKey().toString(), entry.getValue()); _buf.write(EOO); _buf.writeInt(sizePos, _buf.getPosition() - sizePos); }