X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=server%2Fruntime%2Forg.argeo.server.json%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fserver%2Fjson%2FJsonObjectFactoryImpl.java;h=3103cd10f2261c4e6e8b52f6bcdbe85a08219592;hb=1d5afdce3e91054f07ddd3c98309c363b4cf1d46;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..3103cd10f 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 @@ -1,3 +1,18 @@ +/* + * Copyright (C) 2007-2012 Mathieu Baudier + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ package org.argeo.server.json; import java.util.HashMap; @@ -5,7 +20,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 +33,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) {