content type encoding
[lgpl/argeo-commons.git] / server / runtime / org.argeo.server.json / src / main / java / org / argeo / server / json / JsonObjectFactoryImpl.java
index cd6c00ee41c05317e0af0022b5174bf0e7d1389a..a2f0cc4fa0e97f1490457df01a8e4d85dcec8753 100644 (file)
@@ -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<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))
                        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> 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<String, Class> supportedTypes) {
+       public void setSupportedTypes(Map<String, Class<?>> 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) {