X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=server%2Fruntime%2Forg.argeo.server.json%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fserver%2Fjson%2FJsonServerMapper.java;h=266ff2eec3f041ec37f1908b4c18c86456aa7660;hb=f3ff1f46c8a04c4a60bbccd44e16d5880b386229;hp=8fef8e6b2fa7772638bbcdae89280d0c218cc201;hpb=98c2719d08b7d1791eb2080b4488bba810044608;p=lgpl%2Fargeo-commons.git diff --git a/server/runtime/org.argeo.server.json/src/main/java/org/argeo/server/json/JsonServerMapper.java b/server/runtime/org.argeo.server.json/src/main/java/org/argeo/server/json/JsonServerMapper.java index 8fef8e6b2..266ff2eec 100644 --- a/server/runtime/org.argeo.server.json/src/main/java/org/argeo/server/json/JsonServerMapper.java +++ b/server/runtime/org.argeo.server.json/src/main/java/org/argeo/server/json/JsonServerMapper.java @@ -2,9 +2,11 @@ package org.argeo.server.json; import java.io.IOException; import java.io.Reader; +import java.io.StringReader; import java.util.HashMap; import java.util.Map; +import org.apache.commons.io.IOUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.argeo.server.ArgeoServerException; @@ -21,10 +23,11 @@ public class JsonServerMapper extends JsonServerSerializer implements ServerDeserializer, InitializingBean { private final static Log log = LogFactory.getLog(JsonServerMapper.class); - private Class targetClass; + private Class targetClass; - private Map deserializers = new HashMap(); + private Map, JsonDeserializer> deserializers = new HashMap, JsonDeserializer>(); + @SuppressWarnings("unchecked") public void afterPropertiesSet() throws Exception { CustomDeserializerFactory dsf = new CustomDeserializerFactory(); for (Class clss : deserializers.keySet()) { @@ -40,8 +43,9 @@ public class JsonServerMapper extends JsonServerSerializer implements JsonDeserializer deserializer, Object bean, String propertyName) throws IOException, JsonProcessingException { - if (log.isDebugEnabled()) + if (log.isTraceEnabled()) log.debug("Ignore property " + propertyName); + ctxt.getParser().skipChildren(); return true; } }); @@ -67,12 +71,29 @@ public class JsonServerMapper extends JsonServerSerializer implements } - public void setTargetClass(Class targetClass) { + public Object deserialize(String content) { + StringReader reader = new StringReader(content); + try { + return deserialize(reader); + } finally { + IOUtils.closeQuietly(reader); + } + } + + public void setTargetClass(Class targetClass) { this.targetClass = targetClass; } - public void setDeserializers(Map deserializers) { + public void setDeserializers(Map, JsonDeserializer> deserializers) { this.deserializers = deserializers; } + public Class getTargetClass() { + return targetClass; + } + + public Map, JsonDeserializer> getDeserializers() { + return deserializers; + } + }