Example #1
0
  protected void _putObjectField(String name, Object val) {

    if (name.equals("_transientFields")) return;

    if (DEBUG) System.out.println("\t put thing : " + name);

    if (name.equals("$where") && val instanceof String) {
      _put(CODE, name);
      _putValueString(val.toString());
      return;
    }

    val = BSON.applyEncodingHooks(val);

    if (val == null) putNull(name);
    else if (val instanceof Date) putDate(name, (Date) val);
    else if (val instanceof Number) putNumber(name, (Number) val);
    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);
    else if (val instanceof Binary) putBinary(name, (Binary) val);
    else if (val instanceof UUID) putUUID(name, (UUID) val);
    else if (val.getClass().isArray()) putArray(name, val);
    else if (val instanceof Symbol) {
      putSymbol(name, (Symbol) val);
    } else if (val instanceof BSONTimestamp) {
      putTimestamp(name, (BSONTimestamp) val);
    } else if (val instanceof CodeWScope) {
      putCodeWScope(name, (CodeWScope) val);
    } else if (val instanceof Code) {
      putCode(name, (Code) val);
    } else if (putSpecial(name, val)) {
      // no-op
    } else {
      throw new IllegalArgumentException("can't serialize " + val.getClass());
    }
  }