blob: 200578335b5ee689e873ea17591c22084a0e4ef7 [file] [log] [blame]
package org.apache.cayenne.demo.model.types;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
import org.apache.cayenne.CayenneRuntimeException;
import org.apache.cayenne.access.types.ValueObjectType;
import org.apache.cayenne.value.Json;
import org.apache.cayenne.di.Inject;
public class JsonValueType implements ValueObjectType<ObjectNode, Json> {
@Inject
ObjectMapper objectMapper;
@Override
public Class<Json> getTargetType() {
return Json.class;
}
@Override
public Class<ObjectNode> getValueType() {
return ObjectNode.class;
}
@Override
public ObjectNode toJavaObject(Json value) {
try {
return (ObjectNode) objectMapper.readTree(value.getRawJson());
} catch (Exception e) {
throw new CayenneRuntimeException("Unable to parse JSON", e);
}
}
@Override
public Json fromJavaObject(ObjectNode object) {
return new Json(object.toString());
}
@Override
public String toCacheKey(ObjectNode object) {
return object.toString();
}
}