X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=server%2Fruntime%2Forg.argeo.server.json%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fserver%2Fjson%2FJsonObjectFactoryImpl.java;h=a2f0cc4fa0e97f1490457df01a8e4d85dcec8753;hb=4cb283095a8b0c9d9b37fb838ddf39463bec097a;hp=cd6c00ee41c05317e0af0022b5174bf0e7d1389a;hpb=00ae7654c948e62c35ef88e7d8d528965d5e0371;p=lgpl%2Fargeo-commons.git 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 cd6c00ee4..a2f0cc4fa 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 @@ -5,7 +5,7 @@ import java.util.Map; 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.map.ObjectMapper; import org.osgi.framework.BundleContext; import org.springframework.beans.factory.InitializingBean; @@ -18,80 +18,42 @@ public class JsonObjectFactoryImpl implements JsonObjectFactory, .getLog(JsonObjectFactoryImpl.class); private BundleContext bundleContext; - private BundleDelegatingClassLoader classLoader; + 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)) return true; return loadClass(type) != null ? true : false; - // try { - // // Class.forName(type); - // Thread.currentThread().getContextClassLoader().loadClass(type); - // return true; - // } catch (ClassNotFoundException e) { - // return false; - // } } + @SuppressWarnings("unchecked") public T readValue(String type, String str) { - final Class clss; + final Class clss; if (supportedTypes.containsKey(type)) clss = supportedTypes.get(type); else { clss = loadClass(type); if (clss == null) - throw new ArgeoServerException("Cannot find type " + type); - // try { - // // clss = Class.forName(type); - // clss = Thread.currentThread().getContextClassLoader() - // .loadClass(type); - // } catch (ClassNotFoundException e) { - // throw new ArgeoServerException("Cannot find type " + type, e); - // } + throw new ArgeoException("Cannot find type " + type); } try { return (T) objectMapper.readValue(str, clss); } catch (Exception e) { - throw new ArgeoServerException("Cannot deserialize " + str + throw new ArgeoException("Cannot deserialize " + str + " (type=" + type + ")", e); } } - public void setSupportedTypes(Map supportedTypes) { + public void setSupportedTypes(Map> supportedTypes) { this.supportedTypes = supportedTypes; } - protected Class loadClass(String type) { - Class clss; -// 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) {