@Override public Float doNotNullDemarshall(final EJValue o, final MarshallingSession ctx) { if (o.isObject() != null) { EJValue numVal = o.isObject().get(SerializationParts.NUMERIC_VALUE); if (numVal.isString() != null) { return Float.parseFloat(numVal.isString().stringValue()); } return numVal.isNumber().floatValue(); } else if (o.isString() != null) { return Float.parseFloat(o.isString().stringValue()); } else { return o.isNumber().floatValue(); } }
@Override public String determineTypeFor(String formatType, Object o) { EJValue jsonValue = (EJValue) o; if (jsonValue.isObject() != null) { EJObject jsonObject = jsonValue.isObject(); if (jsonObject.containsKey(SerializationParts.ENCODED_TYPE)) { return jsonObject.get(SerializationParts.ENCODED_TYPE).isString().stringValue(); } else { return Map.class.getName(); } } else if (jsonValue.isString() != null) { return String.class.getName(); } else if (jsonValue.isNumber() != null) { return Double.class.getName(); } else if (jsonValue.isBoolean() != null) { return Boolean.class.getName(); } else if (jsonValue.isArray() != null) { return List.class.getName(); } else if (jsonValue.isNull()) { return null; } throw new RuntimeException( "unknown type: cannot reverse map value to concrete Java type: " + o); }
@Override public Date doNotNullDemarshall(final EJValue o, final MarshallingSession ctx) { if (o.isObject() != null) { EJValue qualifiedValue = o.isObject().get(SerializationParts.QUALIFIED_VALUE); if (!qualifiedValue.isNull() && qualifiedValue.isString() != null) { return new Date(Long.parseLong(qualifiedValue.isString().stringValue())); } EJValue numericValue = o.isObject().get(SerializationParts.NUMERIC_VALUE); if (!numericValue.isNull() && numericValue.isNumber() != null) { return new Date(new Double(numericValue.isNumber().doubleValue()).longValue()); } if (!numericValue.isNull() && numericValue.isString() != null) { return new Date(Long.parseLong(numericValue.isString().stringValue())); } } return null; }