case UNKNOWN: Type inferredType = Type.typeFor(value); if (inferredType == Type.UNKNOWN || inferredType == type) return null; return convert(value, inferredType);
case UNKNOWN: Type inferredType = Type.typeFor(value); if (inferredType == Type.UNKNOWN || inferredType == type) return null; return convert(value, inferredType);
@Override public Number convert( Object value, Type type ) { if (value == null) return null; switch (type) { case STRING: String str = value.toString(); return JsonReader.parseNumber(str); // may return null case INTEGER: case NUMBER: return (Number)value; case BOOLEAN: // Convert a boolean to either '1' or '0' integer ... Boolean bool = (Boolean)value; return Boolean.TRUE.equals(bool) ? new Integer(1) : new Integer(0); case OBJECT: // this is a document, and we can't convert it to a number ... case UNION: case NULL: case ARRAY: return null; case ANY: // fall through case UNKNOWN: // Figure out the type ... Type inferredType = Type.typeFor(value); if (inferredType == Type.UNKNOWN || inferredType == type) return null; return convert(value, inferredType); } return null; } }
case UNKNOWN: Type inferredType = Type.typeFor(value); if (inferredType == Type.UNKNOWN || inferredType == type) return null; return convert(value, inferredType);
case UNKNOWN: Type inferredType = Type.typeFor(value); if (inferredType == Type.UNKNOWN || inferredType == type) return null; return convert(value, inferredType);
Type actual = Type.typeFor(fieldValue); if (!type.isEquivalent(actual)) {
case UNKNOWN: Type inferredType = Type.typeFor(value); if (inferredType == Type.UNKNOWN || inferredType == type) return null; return convert(value, inferredType);
@Override public Number convert( Object value, Type type ) { if (value == null) return null; switch (type) { case STRING: String str = value.toString(); return JsonReader.parseNumber(str); // may return null case INTEGER: case NUMBER: return (Number)value; case BOOLEAN: // Convert a boolean to either '1' or '0' integer ... Boolean bool = (Boolean)value; return Boolean.TRUE.equals(bool) ? new Integer(1) : new Integer(0); case OBJECT: // this is a document, and we can't convert it to a number ... case UNION: case NULL: case ARRAY: return null; case ANY: // fall through case UNKNOWN: // Figure out the type ... Type inferredType = Type.typeFor(value); if (inferredType == Type.UNKNOWN || inferredType == type) return null; return convert(value, inferredType); } return null; } }
Type actual = Type.typeFor(fieldValue); if (!type.isEquivalent(actual)) {
case UNKNOWN: Type inferredType = Type.typeFor(value); if (inferredType == Type.UNKNOWN || inferredType == type) return null; return convert(value, inferredType);
@Override public Object convert( Object value, Type type ) { if (value == null) return null; switch (type) { case OBJECT: // this is a document return value; case STRING: case INTEGER: case NUMBER: case BOOLEAN: case UNION: case NULL: return null; case ARRAY: // The array can already be treated as a document ... return value instanceof Document ? value : null; case ANY: // fall through case UNKNOWN: // Figure out the type ... Type inferredType = Type.typeFor(value); if (inferredType == Type.UNKNOWN || inferredType == type) return null; return convert(value, inferredType); } return null; } }
@Override public Object convert( Object value, Type type ) { if (value == null) return null; switch (type) { case OBJECT: // this is a document return value; case STRING: case INTEGER: case NUMBER: case BOOLEAN: case UNION: case NULL: return null; case ARRAY: // The array can already be treated as a document ... return value instanceof Document ? value : null; case ANY: // fall through case UNKNOWN: // Figure out the type ... Type inferredType = Type.typeFor(value); if (inferredType == Type.UNKNOWN || inferredType == type) return null; return convert(value, inferredType); } return null; } }
@Override public String convert( Object value, Type type ) { if (value == null) return null; switch (type) { case STRING: return (String)value; case INTEGER: case NUMBER: case BOOLEAN: return value.toString(); case OBJECT: // this is a document, and we can't convert it to a string ... case UNION: case NULL: case ARRAY: return null; case ANY: // fall through case UNKNOWN: // Figure out the type ... Type inferredType = Type.typeFor(value); if (inferredType == Type.UNKNOWN || inferredType == type) return null; return convert(value, inferredType); } return null; } }
@Override public String convert( Object value, Type type ) { if (value == null) return null; switch (type) { case STRING: return (String)value; case INTEGER: case NUMBER: case BOOLEAN: return value.toString(); case OBJECT: // this is a document, and we can't convert it to a string ... case UNION: case NULL: case ARRAY: return null; case ANY: // fall through case UNKNOWN: // Figure out the type ... Type inferredType = Type.typeFor(value); if (inferredType == Type.UNKNOWN || inferredType == type) return null; return convert(value, inferredType); } return null; } }
@Override public void validate( Object fieldValue, String fieldName, Document parent, Path pathToParent, Problems problems, SchemaDocumentResolver resolver ) { Type type = Type.typeFor(fieldValue); if (type != Type.NULL) { if (disallowedTypes.contains(type)) { problems.recordError(pathToParent.with(fieldName), "The '" + fieldName + "' field on '" + pathToParent + "' contains a value '" + fieldValue + "' whose type '" + type + "' is disallowed."); } else { problems.recordSuccess(); } } }
@Override public void validate( Object fieldValue, String fieldName, Document parent, Path pathToParent, Problems problems, SchemaDocumentResolver resolver ) { Type type = Type.typeFor(fieldValue); if (type != Type.NULL) { if (disallowedTypes.contains(type)) { problems.recordError(pathToParent.with(fieldName), "The '" + fieldName + "' field on '" + pathToParent + "' contains a value '" + fieldValue + "' whose type '" + type + "' is disallowed."); } else { problems.recordSuccess(); } } }
/** * Attempt to convert the supplied value (with the given type) into a value compatible with this type. * * @param actualValue the value to be converted; may be null * @param actualType the type of the value; may be null * @return the converted value, or null if the value could not be converted to this type */ public Object convertValueFrom( Object actualValue, Type actualType ) { if (actualType == null) actualType = Type.typeFor(actualValue); return converter.convert(actualValue, actualType); }
/** * Attempt to convert the supplied value (with the given type) into a value compatible with this type. * * @param actualValue the value to be converted; may be null * @param actualType the type of the value; may be null * @return the converted value, or null if the value could not be converted to this type */ public Object convertValueFrom( Object actualValue, Type actualType ) { if (actualType == null) actualType = Type.typeFor(actualValue); return converter.convert(actualValue, actualType); }