Author: bimargulies
Date: Thu May  8 18:37:42 2008
New Revision: 654662

URL: http://svn.apache.org/viewvc?rev=654662&view=rev
Log:
Fix to CXF-1569, I think.

Modified:
    
cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/map/MapsTest.java
    
cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/map/fortest/MapTest.aegis.xml
    
cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/map/fortest/MapTest.java
    
cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/map/fortest/MapTestImpl.java
    
cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBDataBinding.java

Modified: 
cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/map/MapsTest.java
URL: 
http://svn.apache.org/viewvc/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/map/MapsTest.java?rev=654662&r1=654661&r2=654662&view=diff
==============================================================================
--- 
cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/map/MapsTest.java
 (original)
+++ 
cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/map/MapsTest.java
 Thu May  8 18:37:42 2008
@@ -37,7 +37,6 @@
 import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
 import org.apache.cxf.jaxws.JaxWsServerFactoryBean;
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 
 /**
@@ -70,12 +69,7 @@
         clientInterface = (MapTest)proxyFac.create(); 
     }
     
-    @Ignore
     @Test
-    /**
-     * Until some issues in CXF-1051 are resolved, it's not clear what to test 
in here. 
-     * 
-     */
     public void testMapWsdl() throws WSDLException {
         @SuppressWarnings("unused")
         //Document wsdl = getWSDLDocument("MapTestService");

Modified: 
cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/map/fortest/MapTest.aegis.xml
URL: 
http://svn.apache.org/viewvc/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/map/fortest/MapTest.aegis.xml?rev=654662&r1=654661&r2=654662&view=diff
==============================================================================
--- 
cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/map/fortest/MapTest.aegis.xml
 (original)
+++ 
cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/map/fortest/MapTest.aegis.xml
 Thu May  8 18:37:42 2008
@@ -20,10 +20,13 @@
 <mappings>
        <mapping>
                <method name="getMapStringToLong">
-                       <return-type valueType='java.lang.Integer' 
typeName="mstl"  />
+                       <return-type typeName="mstl"  />
+               </method>
+               <method name="getRawMapStringToInteger">
+                 <return-type valueType="java.lang.Integer"/>
                </method>
                <method name="getMapLongToString">
-                       <return-type typeName="mslt" />
+                       <return-type typeName="mlts" />
                </method>
        </mapping>
 </mappings>
\ No newline at end of file

Modified: 
cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/map/fortest/MapTest.java
URL: 
http://svn.apache.org/viewvc/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/map/fortest/MapTest.java?rev=654662&r1=654661&r2=654662&view=diff
==============================================================================
--- 
cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/map/fortest/MapTest.java
 (original)
+++ 
cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/map/fortest/MapTest.java
 Thu May  8 18:37:42 2008
@@ -34,6 +34,7 @@
     ObjectWithAMap returnObjectWithAMap();
     void takeMap(ObjectWithAMap map);
     Map<String, Long> getMapStringToLong();
+    Map getRawMapStringToInteger();
     Map<Long, String> getMapLongToString();
     
     ObjectWithAMapNs2 returnObjectWithAMapNs2();

Modified: 
cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/map/fortest/MapTestImpl.java
URL: 
http://svn.apache.org/viewvc/cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/map/fortest/MapTestImpl.java?rev=654662&r1=654661&r2=654662&view=diff
==============================================================================
--- 
cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/map/fortest/MapTestImpl.java
 (original)
+++ 
cxf/trunk/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/map/fortest/MapTestImpl.java
 Thu May  8 18:37:42 2008
@@ -61,4 +61,11 @@
     public void takeMapNs2(ObjectWithAMapNs2 map) {
     }
 
+    @SuppressWarnings("unchecked")
+    public Map getRawMapStringToInteger() {
+        Map r = new HashMap();
+        r.put("key", new Integer(12));
+        return r;
+    }
+
 }

Modified: 
cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBDataBinding.java
URL: 
http://svn.apache.org/viewvc/cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBDataBinding.java?rev=654662&r1=654661&r2=654662&view=diff
==============================================================================
--- 
cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBDataBinding.java
 (original)
+++ 
cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBDataBinding.java
 Thu May  8 18:37:42 2008
@@ -445,8 +445,10 @@
                 packageLoaders.put(pkgName, jcls.getClassLoader());
                 String objectFactoryClassName = pkgName + "." + 
"ObjectFactory";
                 Class<?> ofactory = null;
-                CachedClassOrNull cachedFactory = 
-                    OBJECT_FACTORY_CACHE.get(objectFactoryClassName);
+                CachedClassOrNull cachedFactory = null;
+                synchronized (OBJECT_FACTORY_CACHE) {
+                    cachedFactory = 
OBJECT_FACTORY_CACHE.get(objectFactoryClassName);
+                }
                 if (cachedFactory != null) {
                     ofactory = cachedFactory.getCachedClass();
                 }
@@ -455,11 +457,9 @@
                         ofactory = Class.forName(objectFactoryClassName, 
false, jcls
                                                  .getClassLoader());
                         objectFactories.add(ofactory);
-                        OBJECT_FACTORY_CACHE.put(objectFactoryClassName, 
-                                                 new 
CachedClassOrNull(ofactory));
+                        addToObjectFactoryCache(objectFactoryClassName, 
ofactory);
                     } catch (ClassNotFoundException e) {
-                        OBJECT_FACTORY_CACHE.put(objectFactoryClassName, 
-                                                 new CachedClassOrNull(null));
+                        addToObjectFactoryCache(objectFactoryClassName, null);
                     }
                 } else {
                     objectFactories.add(ofactory);                    
@@ -532,12 +532,19 @@
                 cachedContextAndSchemas = new CachedContextAndSchemas(ctx);
                 JAXBCONTEXT_CACHE.put(classes, cachedContextAndSchemas);
             }
+            cachedContextAndSchemas = JAXBCONTEXT_CACHE.get(classes);
         }
 
-        cachedContextAndSchemas = JAXBCONTEXT_CACHE.get(classes);
         return cachedContextAndSchemas.getContext();
     }
 
+    private void addToObjectFactoryCache(String objectFactoryClassName, 
Class<?> ofactory) {
+        synchronized (OBJECT_FACTORY_CACHE) {
+            OBJECT_FACTORY_CACHE.put(objectFactoryClassName, 
+                                     new CachedClassOrNull(ofactory));
+        }
+    }
+
     private void addWsAddressingTypes(Set<Class<?>> classes) {
         if (classes.contains(ObjectFactory.class)) {
             // ws-addressing is used, lets add the specific types


Reply via email to