@Override public String toString() { return asText(); }
/** * As it is possible that some implementations embed byte[] as POJONode * (despite optimal being {@link BinaryNode}), let's add support for exposing * binary data here too. */ @Override public byte[] binaryValue() throws IOException { if (_value instanceof byte[]) { return (byte[]) _value; } return super.binaryValue(); }
private Object getValue(ValueNode value) { if (value.isNull()) { return null; } if (value.numberType() != null) { switch (value.numberType()) { case LONG: return value.longValue(); case DOUBLE: return value.doubleValue(); case FLOAT: return value.floatValue(); case INT: return value.intValue(); case BIG_DECIMAL: return value.decimalValue(); case BIG_INTEGER: return value.bigIntegerValue(); default: return value.asText(); } } if (value.isBoolean()) { return value.asBoolean(); } return value.asText(); }
@Override public Object asValue(JsonNode value) { if (value == null) { return null; } else if (value instanceof NullNode) { return null; } else if (value instanceof BigIntegerNode) { return ((ValueNode) value).bigIntegerValue(); } else if (value instanceof BooleanNode) { return ((ValueNode) value).booleanValue(); } else if (value instanceof DecimalNode) { return ((ValueNode) value).decimalValue(); } else if (value instanceof DoubleNode || value instanceof FloatNode) { return ((ValueNode) value).doubleValue(); } else if (value instanceof IntNode) { return ((ValueNode) value).intValue(); } else if (value instanceof LongNode) { return ((ValueNode) value).longValue(); } else { return ((ValueNode) value).asText(); } }
LOG.trace("VALUE IS A " + valueNode.getNodeType().name()); if (valueNode.isNumber()) { if (valueNode.isInt()) { field.setFieldType(FieldType.INTEGER); field.setStatus(FieldStatus.SUPPORTED); field.setValue(valueNode.intValue()); } else if (valueNode.isBigInteger()) { field.setFieldType(FieldType.INTEGER); field.setStatus(FieldStatus.SUPPORTED); field.setValue(valueNode.bigIntegerValue()); } else if (valueNode.isFloat()) { field.setFieldType(FieldType.FLOAT); field.setStatus(FieldStatus.SUPPORTED); field.setValue(valueNode.floatValue()); } else if (valueNode.isDouble()) { field.setFieldType(FieldType.DOUBLE); field.setStatus(FieldStatus.SUPPORTED); field.setValue(valueNode.asDouble()); } else if (valueNode.isBigDecimal()) { field.setFieldType(FieldType.DECIMAL); field.setStatus(FieldStatus.SUPPORTED); field.setValue(valueNode.decimalValue()); } else if (valueNode.isShort()) { field.setFieldType(FieldType.SHORT); field.setStatus(FieldStatus.SUPPORTED); field.setValue(valueNode.shortValue()); } else if (valueNode.isLong()) { field.setFieldType(FieldType.LONG); field.setStatus(FieldStatus.SUPPORTED);
final ObjectMapper mapper = (ObjectMapper) jp.getCodec(); final ValueNode vNode = mapper.readTree(jp); if (vNode.asToken().isScalarValue()) { if (vNode.getNodeType() == JsonNodeType.BOOLEAN) { cda = new CustomAttribute<Boolean>(currentName, vNode.asBoolean(), Boolean.class); } else if (vNode.getNodeType() == JsonNodeType.STRING) { cda = new CustomAttribute<String>(currentName, vNode.asText(), String.class); } else if (vNode.getNodeType() == JsonNodeType.NUMBER) { final NumericNode nNode = (NumericNode) vNode; if (currentName.endsWith("_at")) { cda = new CustomAttribute<Long>(currentName, vNode.longValue(), Long.class); } else if (nNode.isInt()) { cda = new CustomAttribute<Integer>(currentName, vNode.intValue(), Integer.class); } else if (nNode.isFloat()) { cda = new CustomAttribute<Float>(currentName, vNode.floatValue(), Float.class); } else if (nNode.isDouble()) { cda = new CustomAttribute<Double>(currentName, vNode.doubleValue(), Double.class); } else if (nNode.isLong()) { cda = new CustomAttribute<Long>(currentName, vNode.longValue(), Long.class); } else { cda = new CustomAttribute<String>(currentName, vNode.asText(), String.class); cda = new CustomAttribute<String>(currentName, vNode.asText(), String.class);
@Override @SuppressWarnings("deprecation") public Pattern deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException { if (jp instanceof BsonParser) { BsonParser bsonParser = (BsonParser)jp; if (bsonParser.getCurrentToken() != JsonToken.VALUE_EMBEDDED_OBJECT || bsonParser.getCurrentBsonType() != BsonConstants.TYPE_REGEX) { throw ctxt.mappingException(Pattern.class); } return (Pattern)bsonParser.getEmbeddedObject(); } else { TreeNode tree = jp.getCodec().readTree(jp); String pattern = null; TreeNode patternNode = tree.get("$pattern"); if (patternNode instanceof ValueNode) { pattern = ((ValueNode)patternNode).asText(); } int flags = 0; TreeNode flagsNode = tree.get("$flags"); if (flagsNode instanceof ValueNode) { flags = ((ValueNode)flagsNode).asInt(); } return Pattern.compile(pattern, flags); } } }
public void flattenJsonIntoMap(String currentPath, JsonNode jsonNode, Map<String, Object> map) { if (jsonNode.isObject()) { ObjectNode objectNode = (ObjectNode) jsonNode; Iterator<Map.Entry<String, JsonNode>> iter = objectNode.fields(); String pathPrefix = currentPath.isEmpty() ? "" : currentPath + "."; while (iter.hasNext()) { Map.Entry<String, JsonNode> entry = iter.next(); flattenJsonIntoMap(pathPrefix + entry.getKey(), entry.getValue(), map); } } else if (jsonNode.isArray()) { ArrayNode arrayNode = (ArrayNode) jsonNode; for (int i = 0; i < arrayNode.size(); i++) { flattenJsonIntoMap(currentPath + "[" + i + "]", arrayNode.get(i), map); } } else if (jsonNode.isValueNode()) { ValueNode valueNode = (ValueNode) jsonNode; Object value = null; if (valueNode.isNumber()) { value = valueNode.numberValue(); } else if (valueNode.isBoolean()) { value = valueNode.asBoolean(); } else if (valueNode.isTextual()){ value = valueNode.asText(); } map.put(currentPath, value); } } }
if (object instanceof ValueNode) { ValueNode jsonPrimitive = (ValueNode) object; return Base64.decodeBase64(jsonPrimitive.asText().getBytes(Charsets.UTF_8)); byte[] data = Base64.decodeBase64(jsonPrimitive.asText().getBytes(Charsets.UTF_8)); return new DataHandler(new ByteArrayDataSource(null, data)); return ((ValueNode) object).asInt(); return ((ValueNode) object).asLong(); return (short)((ValueNode) object).asInt(); for (Object enumConstantObject : definedType.getInstanceClass().getEnumConstants()) { Enum<?> enumConstant = (Enum<?>) enumConstantObject; if (enumConstant.name().equals(primitive.asText())) { return enumConstant; return new Date(((ValueNode) object).asLong()); return ((ValueNode) object).asText(); } else if (object instanceof NullNode) { return null; return ((ValueNode) object).asBoolean(); return ((ValueNode) object).asLong(); return ((ValueNode) object).asInt();
@Override public void onValueNode(ValueNode node, Optional<ContainerNode<?>> parent, List<PathElement> path) { String value = node.isTextual() ? node.textValue() : node.toString(); List<String> placeholders = extractPlaceholderStrings(value); if (!placeholders.isEmpty()) { String pathString = new NodePath(path).toString(); for (String placeholder : placeholders) { unresolvedPlaceholderDescriptions.add(new UnresolvedPlaceholder(pathString, value, placeholder)); } } } }
} else { ValueNode vn = (ValueNode) t; JsonNodeType nodeType = vn.getNodeType(); switch (nodeType) { case NUMBER: return new JsonPrimitive(vn.numberValue()); case BOOLEAN: return new JsonPrimitive(vn.asBoolean()); case STRING: return new JsonPrimitive(vn.textValue()); case NULL: return nullValue();
/** * Returns a Java object for a json value node based on the node type. */ public static Object valueFromJson(ValueNode node) { if (node instanceof NullNode) { return null; } else { if(node instanceof TextNode) { return node.textValue(); } else if(node instanceof BooleanNode) { return node.booleanValue(); } else if(node instanceof NumericNode) { return node.numberValue(); } else { throw new RuntimeException("Unsupported node type:"+node.getClass().getName()); } } }
@Override public void serializeWithType(JsonGenerator jg, SerializerProvider provider, TypeSerializer typeSer) throws IOException, JsonProcessingException { typeSer.writeTypePrefixForScalar(this, jg); serialize(jg, provider); typeSer.writeTypeSuffixForScalar(this, jg); }
@Override @SuppressWarnings("deprecation") public ObjectId deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException { if (jp instanceof BsonParser) { BsonParser bsonParser = (BsonParser)jp; if (bsonParser.getCurrentToken() != JsonToken.VALUE_EMBEDDED_OBJECT || bsonParser.getCurrentBsonType() != BsonConstants.TYPE_OBJECTID) { throw ctxt.mappingException(ObjectId.class); } return (ObjectId)bsonParser.getEmbeddedObject(); } else { TreeNode tree = jp.getCodec().readTree(jp); int time = ((ValueNode)tree.get("$time")).asInt(); int machine = ((ValueNode)tree.get("$machine")).asInt(); int inc = ((ValueNode)tree.get("$inc")).asInt(); return new ObjectId(time, machine, inc); } } }
@Override public Object asValue(JsonNode value) { if (value == null) { return null; } else if (value instanceof NullNode) { return null; } else if (value instanceof BigIntegerNode) { return ((ValueNode) value).bigIntegerValue(); } else if (value instanceof BooleanNode) { return ((ValueNode) value).booleanValue(); } else if (value instanceof DecimalNode) { return ((ValueNode) value).decimalValue(); } else if (value instanceof DoubleNode || value instanceof FloatNode) { return ((ValueNode) value).doubleValue(); } else if (value instanceof IntNode) { return ((ValueNode) value).intValue(); } else if (value instanceof LongNode) { return ((ValueNode) value).longValue(); } else { return ((ValueNode) value).asText(); } }
@Override @SuppressWarnings("deprecation") public Pattern deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException { if (jp instanceof BsonParser) { BsonParser bsonParser = (BsonParser)jp; if (bsonParser.getCurrentToken() != JsonToken.VALUE_EMBEDDED_OBJECT || bsonParser.getCurrentBsonType() != BsonConstants.TYPE_REGEX) { throw ctxt.mappingException(Pattern.class); } return (Pattern)bsonParser.getEmbeddedObject(); } else { TreeNode tree = jp.getCodec().readTree(jp); String pattern = null; TreeNode patternNode = tree.get("$pattern"); if (patternNode instanceof ValueNode) { pattern = ((ValueNode)patternNode).asText(); } int flags = 0; TreeNode flagsNode = tree.get("$flags"); if (flagsNode instanceof ValueNode) { flags = ((ValueNode)flagsNode).asInt(); } return Pattern.compile(pattern, flags); } } }