You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by rf...@apache.org on 2008/06/21 09:18:51 UTC

svn commit: r670156 - in /tuscany/java/sca/modules/databinding-jaxb/src: main/java/org/apache/tuscany/sca/databinding/jaxb/JAXBContextCache.java test/java/org/apache/tuscany/databinding/jaxb/JAXBContextCacheTestCase.java

Author: rfeng
Date: Sat Jun 21 00:18:50 2008
New Revision: 670156

URL: http://svn.apache.org/viewvc?rev=670156&view=rev
Log:
Avoid extra classes in the default JAXBContext

Modified:
    tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXBContextCache.java
    tuscany/java/sca/modules/databinding-jaxb/src/test/java/org/apache/tuscany/databinding/jaxb/JAXBContextCacheTestCase.java

Modified: tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXBContextCache.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXBContextCache.java?rev=670156&r1=670155&r2=670156&view=diff
==============================================================================
--- tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXBContextCache.java (original)
+++ tuscany/java/sca/modules/databinding-jaxb/src/main/java/org/apache/tuscany/sca/databinding/jaxb/JAXBContextCache.java Sat Jun 21 00:18:50 2008
@@ -75,17 +75,21 @@
 
     protected static final Set<Class<?>> BUILTIN_CLASSES_SET = new HashSet<Class<?>>(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<Class<?>> COMMON_CLASSES_SET = new HashSet<Class<?>>(Arrays.asList(COMMON_ARRAY_CLASSES));
+    */
 
     protected LRUCache<Object, JAXBContext> cache;
     protected LRUCache<JAXBContext, Unmarshaller> upool;
     protected LRUCache<JAXBContext, Marshaller> mpool;
-    protected JAXBContext commonContext;
+    
+    // protected JAXBContext commonContext;
+    protected JAXBContext defaultContext;
 
     public JAXBContextCache() {
         this(CACHE_SIZE, CACHE_SIZE, CACHE_SIZE);
@@ -95,12 +99,12 @@
         cache = new LRUCache<Object, JAXBContext>(contextSize);
         upool = new LRUCache<JAXBContext, Unmarshaller>(unmarshallerSize);
         mpool = new LRUCache<JAXBContext, Marshaller>(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 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 @@
             classSet.remove(Image[].class);
         } 
         
-        // Is the common one
-        if (COMMON_CLASSES_SET.containsAll(classSet)) {
-            return commonContext;
+        if(classSet.isEmpty()) {
+            return defaultContext;
         }
         
         // For single class

Modified: tuscany/java/sca/modules/databinding-jaxb/src/test/java/org/apache/tuscany/databinding/jaxb/JAXBContextCacheTestCase.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/databinding-jaxb/src/test/java/org/apache/tuscany/databinding/jaxb/JAXBContextCacheTestCase.java?rev=670156&r1=670155&r2=670156&view=diff
==============================================================================
--- tuscany/java/sca/modules/databinding-jaxb/src/test/java/org/apache/tuscany/databinding/jaxb/JAXBContextCacheTestCase.java (original)
+++ tuscany/java/sca/modules/databinding-jaxb/src/test/java/org/apache/tuscany/databinding/jaxb/JAXBContextCacheTestCase.java Sat Jun 21 00:18:50 2008
@@ -50,8 +50,8 @@
         JAXBContext context3 = cache.getJAXBContext(String[].class);
         JAXBContext context4 = cache.getJAXBContext(Source.class);
         Assert.assertSame(context1, context2);
-        Assert.assertSame(context2, context3);
-        Assert.assertSame(context3, context4);
+        Assert.assertNotSame(context2, context3);
+        Assert.assertSame(context1, context4);
 
         QName name = new QName("http://example.com/ns1", "e1");
         JAXBElement<String> element = new JAXBElement<String>(name, String.class, "123");