private JsonFactory jsonFactory = new JsonFactory();
private ObjectCodec objectCodec = new ObjectMapper();
+ private JsonObjectFactory defaultObjectFactory = new JsonObjectFactoryImpl();
private String typeField = "type";
}
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) {
private ClassLoader classLoader = getClass().getClassLoader();
private ObjectMapper objectMapper = new ObjectMapper();
- private Map<String, Class<?>> supportedTypes = new HashMap<String, Class<?>>();
+ private Map<String, Class<?>> supportedTypes = new HashMap<String, Class<?>>();
public Boolean supports(String type) {
if (supportedTypes.containsKey(type))
@SuppressWarnings("unchecked")
public <T> T readValue(String type, String str) {
- final Class<?> clss;
+ final Class<?> clss;
if (supportedTypes.containsKey(type))
clss = supportedTypes.get(type);
else {
}
}
- public void setSupportedTypes(Map<String, Class<?>> supportedTypes) {
+ public void setSupportedTypes(Map<String, Class<?>> 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) {
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);