From 004fe8148fae961344a92f0324f5c0a0c14a27e5 Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Fri, 16 Oct 2009 12:42:13 +0000 Subject: [PATCH] Improve JSON support git-svn-id: https://svn.argeo.org/commons/trunk@3043 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- .../server/json/GenericJsonDeserializer.java | 6 +++- .../server/json/JsonObjectFactoryImpl.java | 32 +++---------------- .../argeo/server/json/JsonServerMapper.java | 2 ++ 3 files changed, 11 insertions(+), 29 deletions(-) diff --git a/server/runtime/org.argeo.server.json/src/main/java/org/argeo/server/json/GenericJsonDeserializer.java b/server/runtime/org.argeo.server.json/src/main/java/org/argeo/server/json/GenericJsonDeserializer.java index 6bfe9b698..18c7d3e52 100644 --- a/server/runtime/org.argeo.server.json/src/main/java/org/argeo/server/json/GenericJsonDeserializer.java +++ b/server/runtime/org.argeo.server.json/src/main/java/org/argeo/server/json/GenericJsonDeserializer.java @@ -24,6 +24,7 @@ public class GenericJsonDeserializer extends JsonDeserializer { private JsonFactory jsonFactory = new JsonFactory(); private ObjectCodec objectCodec = new ObjectMapper(); + private JsonObjectFactory defaultObjectFactory = new JsonObjectFactoryImpl(); private String typeField = "type"; @@ -57,10 +58,13 @@ public class GenericJsonDeserializer extends JsonDeserializer { } if (objectFactory == null) + objectFactory = defaultObjectFactory; + + if (objectFactory == null || !objectFactory.supports(type)) throw new ArgeoServerException( "Cannot find JSON object factory for type " + type); - return (T)objectFactory.readValue(type, str); + return (T) objectFactory.readValue(type, str); } public void setTypeField(String typeField) { diff --git a/server/runtime/org.argeo.server.json/src/main/java/org/argeo/server/json/JsonObjectFactoryImpl.java b/server/runtime/org.argeo.server.json/src/main/java/org/argeo/server/json/JsonObjectFactoryImpl.java index 0f1e91e49..40e197e02 100644 --- a/server/runtime/org.argeo.server.json/src/main/java/org/argeo/server/json/JsonObjectFactoryImpl.java +++ b/server/runtime/org.argeo.server.json/src/main/java/org/argeo/server/json/JsonObjectFactoryImpl.java @@ -21,7 +21,7 @@ public class JsonObjectFactoryImpl implements JsonObjectFactory, private ClassLoader classLoader = getClass().getClassLoader(); private ObjectMapper objectMapper = new ObjectMapper(); - private Map> supportedTypes = new HashMap>(); + private Map> supportedTypes = new HashMap>(); public Boolean supports(String type) { if (supportedTypes.containsKey(type)) @@ -32,7 +32,7 @@ public class JsonObjectFactoryImpl implements JsonObjectFactory, @SuppressWarnings("unchecked") public T readValue(String type, String str) { - final Class clss; + final Class clss; if (supportedTypes.containsKey(type)) clss = supportedTypes.get(type); else { @@ -49,35 +49,11 @@ public class JsonObjectFactoryImpl implements JsonObjectFactory, } } - public void setSupportedTypes(Map> supportedTypes) { + public void setSupportedTypes(Map> supportedTypes) { this.supportedTypes = supportedTypes; } - protected Class loadClass(String type) { -// try { -// return Class.forName(type); -// } catch (ClassNotFoundException e) { -// if (log.isDebugEnabled()) -// log.debug("Class.forName failed: " + e); -// } -// -// try { -// return Thread.currentThread().getContextClassLoader().loadClass( -// type); -// } catch (ClassNotFoundException e) { -// if (log.isDebugEnabled()) -// log -// .debug("Thread.currentThread().getContextClassLoader().loadClass failed: " -// + e); -// } -// -// try { -// return getClass().getClassLoader().loadClass(type); -// } catch (ClassNotFoundException e) { -// if (log.isDebugEnabled()) -// log.debug("getClass().getClassLoader().loadClass failed: " + e); -// } -// + protected Class loadClass(String type) { try { return classLoader.loadClass(type); } catch (ClassNotFoundException e) { 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 36312ed59..7ca8352d5 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 @@ -33,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); -- 2.30.2