X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=server%2Fruntime%2Forg.argeo.server.json%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fserver%2Fjson%2FJsonServerMapper.java;h=25b9f8d1753218d342427d18b9ef474afd1f1c87;hb=770c76924f74e070100815c68c3b920e795a41c9;hp=266ff2eec3f041ec37f1908b4c18c86456aa7660;hpb=f3ff1f46c8a04c4a60bbccd44e16d5880b386229;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 266ff2eec..25b9f8d17 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 @@ -9,7 +9,8 @@ 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; +import org.argeo.ArgeoException; +import org.argeo.server.Deserializer; import org.argeo.server.ServerDeserializer; import org.codehaus.jackson.JsonProcessingException; import org.codehaus.jackson.map.DeserializationContext; @@ -20,7 +21,7 @@ import org.codehaus.jackson.map.deser.StdDeserializerProvider; import org.springframework.beans.factory.InitializingBean; public class JsonServerMapper extends JsonServerSerializer implements - ServerDeserializer, InitializingBean { + ServerDeserializer, Deserializer, InitializingBean { private final static Log log = LogFactory.getLog(JsonServerMapper.class); private Class targetClass; @@ -32,6 +33,8 @@ public class JsonServerMapper extends JsonServerSerializer implements CustomDeserializerFactory dsf = new CustomDeserializerFactory(); for (Class clss : deserializers.keySet()) { dsf.addSpecificMapping(clss, deserializers.get(clss)); + if (log.isDebugEnabled()) + log.debug("Add JSON mapping for " + clss); } StdDeserializerProvider sdp = new StdDeserializerProvider(dsf); getObjectMapper().setDeserializerProvider(sdp); @@ -44,7 +47,8 @@ public class JsonServerMapper extends JsonServerSerializer implements String propertyName) throws IOException, JsonProcessingException { if (log.isTraceEnabled()) - log.debug("Ignore property " + propertyName); + log.debug("Ignore property " + propertyName + + " in bean " + bean); ctxt.getParser().skipChildren(); return true; } @@ -53,20 +57,30 @@ public class JsonServerMapper extends JsonServerSerializer implements public Object deserialize(Reader reader) { try { - // String body = request.getParameter("body"); - // if (body == null) { - // // lets read the message body instead - // BufferedReader reader = request.getReader(); - // StringBuffer buffer = new StringBuffer(); - // String line = null; - // while (((line = reader.readLine()) != null)) { - // buffer.append(line); - // } - // body = buffer.toString(); - // } + if (log.isTraceEnabled()) { + String str = IOUtils.toString(reader); + log.debug(str); + reader = new StringReader(str); + } + return getObjectMapper().readValue(reader, targetClass); } catch (Exception e) { - throw new ArgeoServerException("Cannot deserialize " + reader, e); + throw new ArgeoException("Cannot deserialize " + reader, e); + } + + } + + public T deserialize(Reader reader, Class clss) { + try { + if (log.isTraceEnabled()) { + String str = IOUtils.toString(reader); + log.debug(str); + reader = new StringReader(str); + } + + return getObjectMapper().readValue(reader, clss); + } catch (Exception e) { + throw new ArgeoException("Cannot deserialize " + reader, e); } } @@ -84,7 +98,8 @@ public class JsonServerMapper extends JsonServerSerializer implements this.targetClass = targetClass; } - public void setDeserializers(Map, JsonDeserializer> deserializers) { + public void setDeserializers( + Map, JsonDeserializer> deserializers) { this.deserializers = deserializers; }