import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.argeo.server.ArgeoServerException;
+import org.argeo.ArgeoException;
import org.codehaus.jackson.JsonFactory;
import org.codehaus.jackson.JsonGenerator;
import org.codehaus.jackson.JsonNode;
private JsonFactory jsonFactory = new JsonFactory();
private ObjectCodec objectCodec = new ObjectMapper();
+ private JsonObjectFactory defaultObjectFactory = new JsonObjectFactoryImpl();
private String typeField = "type";
private List<JsonObjectFactory> objectFactories = new ArrayList<JsonObjectFactory>();
+ @SuppressWarnings("unchecked")
@Override
public T deserialize(JsonParser parser, DeserializationContext ctxt)
throws IOException, JsonProcessingException {
generator.writeTree(root);
String str = writer.toString();
- if (log.isDebugEnabled())
+ if (log.isTraceEnabled())
log.debug("Deserialize object of type=" + type + ", str=" + str);
JsonObjectFactory objectFactory = null;
}
if (objectFactory == null)
- throw new ArgeoServerException(
+ objectFactory = defaultObjectFactory;
+
+ if (objectFactory == null || !objectFactory.supports(type))
+ throw new ArgeoException(
"Cannot find JSON object factory for type " + type);
return (T) objectFactory.readValue(type, str);
this.objectFactories = objectFactories;
}
+ public List<JsonObjectFactory> getObjectFactories() {
+ return objectFactories;
+ }
+
}