From ff6e6a7002b1cc773ce8fed5cd11add77823bafb Mon Sep 17 00:00:00 2001 From: rfeng Date: Mon, 23 Jun 2008 16:17:53 +0000 Subject: Merge the fix for TUSCANY-2388 from trunk git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@670666 13f79535-47bb-0310-9956-ffa450edef68 --- .../sca/databinding/jaxb/JAXBContextCache.java | 23 ++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) (limited to 'branches/sca-java-1.3/modules/databinding-jaxb/src/main/java/org/apache') diff --git a/branches/sca-java-1.3/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXBContextCache.java b/branches/sca-java-1.3/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXBContextCache.java index 8b527bf079..30ca226dc1 100644 --- a/branches/sca-java-1.3/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXBContextCache.java +++ b/branches/sca-java-1.3/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXBContextCache.java @@ -75,17 +75,21 @@ public class JAXBContextCache { protected static final Set> BUILTIN_CLASSES_SET = new HashSet>(Arrays.asList(JAXB_BUILTIN_CLASSES)); + /* protected static Class[] COMMON_ARRAY_CLASSES = new Class[] {char[].class, short[].class, int[].class, long[].class, float[].class, double[].class, String[].class }; protected static final Set> COMMON_CLASSES_SET = new HashSet>(Arrays.asList(COMMON_ARRAY_CLASSES)); + */ protected LRUCache cache; protected LRUCache upool; protected LRUCache mpool; - protected JAXBContext commonContext; + + // protected JAXBContext commonContext; + protected JAXBContext defaultContext; public JAXBContextCache() { this(CACHE_SIZE, CACHE_SIZE, CACHE_SIZE); @@ -95,12 +99,12 @@ public class JAXBContextCache { cache = new LRUCache(contextSize); upool = new LRUCache(unmarshallerSize); mpool = new LRUCache(marshallerSize); - commonContext = getCommonJAXBContext(); + defaultContext = getDefaultJAXBContext(); } - - public static JAXBContext getCommonJAXBContext() { + + public static JAXBContext getDefaultJAXBContext() { try { - return JAXBContext.newInstance(COMMON_CLASSES_SET.toArray(new Class[COMMON_CLASSES_SET.size()])); + return JAXBContext.newInstance(); } catch (JAXBException e) { throw new IllegalArgumentException(e); } @@ -201,8 +205,8 @@ public class JAXBContextCache { } public JAXBContext getJAXBContext(Class cls) throws JAXBException { - if (COMMON_CLASSES_SET.contains(cls) || BUILTIN_CLASSES_SET.contains(cls)) { - return commonContext; + if (BUILTIN_CLASSES_SET.contains(cls)) { + return defaultContext; } synchronized (cache) { JAXBContext context = cache.get(cls); @@ -253,9 +257,8 @@ public class JAXBContextCache { classSet.remove(Image[].class); } - // Is the common one - if (COMMON_CLASSES_SET.containsAll(classSet)) { - return commonContext; + if(classSet.isEmpty()) { + return defaultContext; } // For single class -- cgit v1.2.3