projects
/
lgpl
/
argeo-commons.git
/ blobdiff
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Improve JSON support
[lgpl/argeo-commons.git]
/
server
/
runtime
/
org.argeo.server.json
/
src
/
main
/
java
/
org
/
argeo
/
server
/
json
/
GenericJsonDeserializer.java
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 6bfe9b698431a58694880bd627ee886896dd8cab..18c7d3e520bb1472c1c31d1d180652bbb84c6ea3 100644
(file)
--- 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<T> extends JsonDeserializer<T> {
private JsonFactory jsonFactory = new JsonFactory();
private ObjectCodec objectCodec = new ObjectMapper();
private JsonFactory jsonFactory = new JsonFactory();
private ObjectCodec objectCodec = new ObjectMapper();
+ private JsonObjectFactory defaultObjectFactory = new JsonObjectFactoryImpl();
private String typeField = "type";
private String typeField = "type";
@@
-57,10
+58,13
@@
public class GenericJsonDeserializer<T> extends JsonDeserializer<T> {
}
if (objectFactory == null)
}
if (objectFactory == null)
+ objectFactory = defaultObjectFactory;
+
+ if (objectFactory == null || !objectFactory.supports(type))
throw new ArgeoServerException(
"Cannot find JSON object factory for type " + 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) {
}
public void setTypeField(String typeField) {