You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by dk...@apache.org on 2010/05/26 22:52:17 UTC

svn commit: r948586 - /cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBDataBinding.java

Author: dkulp
Date: Wed May 26 20:52:17 2010
New Revision: 948586

URL: http://svn.apache.org/viewvc?rev=948586&view=rev
Log:
[CXF-2803] Make sure the initialize method is only called once.

Modified:
    cxf/trunk/rt/databinding/jaxb/src/main/java/org/apache/cxf/jaxb/JAXBDataBinding.java

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=948586&r1=948585&r2=948586&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 Wed May 26 20:52:17 2010
@@ -210,15 +210,14 @@ public class JAXBDataBinding extends Abs
     private boolean unwrapJAXBElement = true;
 
     private boolean qualifiedSchemas;
-    private Service service;
     
-    private List<Interceptor<? extends Message>> in 
+    private ModCountCopyOnWriteArrayList<Interceptor<? extends Message>> in 
         = new ModCountCopyOnWriteArrayList<Interceptor<? extends Message>>();
-    private List<Interceptor<? extends Message>> out
+    private ModCountCopyOnWriteArrayList<Interceptor<? extends Message>> out
         = new ModCountCopyOnWriteArrayList<Interceptor<? extends Message>>();
-    private List<Interceptor<? extends Message>> outFault 
+    private ModCountCopyOnWriteArrayList<Interceptor<? extends Message>> outFault 
         = new ModCountCopyOnWriteArrayList<Interceptor<? extends Message>>();
-    private List<Interceptor<? extends Message>> inFault 
+    private ModCountCopyOnWriteArrayList<Interceptor<? extends Message>> inFault 
         = new ModCountCopyOnWriteArrayList<Interceptor<? extends Message>>();
 
     public JAXBDataBinding() {
@@ -295,11 +294,10 @@ public class JAXBDataBinding extends Abs
     }
 
     @SuppressWarnings("unchecked")
-    public void initialize(Service aservice) {
-        this.service = aservice;
+    public synchronized void initialize(Service service) {
         
-        getInInterceptors().add(JAXBAttachmentSchemaValidationHack.INSTANCE);
-        getInFaultInterceptors().add(JAXBAttachmentSchemaValidationHack.INSTANCE);
+        in.addIfAbsent(JAXBAttachmentSchemaValidationHack.INSTANCE);
+        inFault.addIfAbsent(JAXBAttachmentSchemaValidationHack.INSTANCE);
         
         // context is already set, don't redo it
         if (context != null) {
@@ -319,7 +317,7 @@ public class JAXBDataBinding extends Abs
 
         }
 
-        String tns = getNamespaceToUse();
+        String tns = getNamespaceToUse(service);
         CachedContextAndSchemas cachedContextAndSchemas = null;
         JAXBContext ctx = null;
         try {
@@ -425,7 +423,7 @@ public class JAXBDataBinding extends Abs
         }
     }
     
-    private String getNamespaceToUse() {
+    private String getNamespaceToUse(Service service) {
         if ("true".equals(service.get("org.apache.cxf.databinding.namespace"))) {
             return null;    
         }