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 2009/04/21 16:41:52 UTC

svn commit: r767160 - in /cxf/branches/2.1.x-fixes: ./ rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/

Author: dkulp
Date: Tue Apr 21 14:41:51 2009
New Revision: 767160

URL: http://svn.apache.org/viewvc?rev=767160&view=rev
Log:
Merged revisions 767159 via svnmerge from 
https://svn.apache.org/repos/asf/cxf/trunk

........
  r767159 | dkulp | 2009-04-21 10:37:30 -0400 (Tue, 21 Apr 2009) | 2 lines
  
  [CXF-2181] Cache message factories for dispatch/provider stuff as well.
........

Modified:
    cxf/branches/2.1.x-fixes/   (props changed)
    cxf/branches/2.1.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/DispatchInDatabindingInterceptor.java
    cxf/branches/2.1.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/DispatchOutDatabindingInterceptor.java

Propchange: cxf/branches/2.1.x-fixes/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Apr 21 14:41:51 2009
@@ -1 +1 @@
-/cxf/trunk:743446,753380,753397,753421,754585,755365,757499,757859,757899,757935,757951,758195,758303,758308,758378,758690,758910,759890,759961,759963-759964,759966,760029,760073,760150,760171,760178,760198,760212,760456,760468,760582,760938,761094,761113,761120,761317,761759,761789,762393,762518,762567,763200,763272,763495,763854,763931,763942,763953,764033-764034,764581,764599-764606,764887,765357,766013,766058,766100-766101,766763,766770,766860,766962-766963
+/cxf/trunk:743446,753380,753397,753421,754585,755365,757499,757859,757899,757935,757951,758195,758303,758308,758378,758690,758910,759890,759961,759963-759964,759966,760029,760073,760150,760171,760178,760198,760212,760456,760468,760582,760938,761094,761113,761120,761317,761759,761789,762393,762518,762567,763200,763272,763495,763854,763931,763942,763953,764033-764034,764581,764599-764606,764887,765357,766013,766058,766100-766101,766763,766770,766860,766962-766963,767159

Propchange: cxf/branches/2.1.x-fixes/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.

Modified: cxf/branches/2.1.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/DispatchInDatabindingInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/DispatchInDatabindingInterceptor.java?rev=767160&r1=767159&r2=767160&view=diff
==============================================================================
--- cxf/branches/2.1.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/DispatchInDatabindingInterceptor.java (original)
+++ cxf/branches/2.1.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/DispatchInDatabindingInterceptor.java Tue Apr 21 14:41:51 2009
@@ -49,7 +49,6 @@
 
 import org.apache.cxf.attachment.AttachmentImpl;
 import org.apache.cxf.binding.soap.Soap11;
-import org.apache.cxf.binding.soap.Soap12;
 import org.apache.cxf.binding.soap.SoapMessage;
 import org.apache.cxf.binding.soap.SoapVersion;
 import org.apache.cxf.common.logging.LogUtils;
@@ -57,7 +56,6 @@
 import org.apache.cxf.databinding.source.NodeDataReader;
 import org.apache.cxf.databinding.source.XMLStreamDataReader;
 import org.apache.cxf.endpoint.Endpoint;
-//import org.apache.cxf.endpoint.Endpoint;
 import org.apache.cxf.helpers.CastUtils;
 import org.apache.cxf.helpers.DOMUtils;
 import org.apache.cxf.helpers.XMLUtils;
@@ -75,9 +73,6 @@
 import org.apache.cxf.message.MessageContentsList;
 import org.apache.cxf.message.XMLMessage;
 import org.apache.cxf.phase.Phase;
-//import org.apache.cxf.service.model.BindingOperationInfo;
-//import org.apache.cxf.service.model.MessageInfo;
-//import org.apache.cxf.service.model.MessagePartInfo;
 import org.apache.cxf.service.model.BindingOperationInfo;
 import org.apache.cxf.service.model.OperationInfo;
 import org.apache.cxf.service.model.ServiceModelUtil;
@@ -86,8 +81,10 @@
 public class DispatchInDatabindingInterceptor extends AbstractInDatabindingInterceptor {
 
     private static final Logger LOG = LogUtils.getL7dLogger(DispatchInDatabindingInterceptor.class);
-    private Class type;
-    private Service.Mode mode;
+    private final Class type;
+    private final Service.Mode mode;
+    private MessageFactory soap11Factory;
+    private MessageFactory soap12Factory;
     
     public DispatchInDatabindingInterceptor(Class type, Mode mode) {
         super(Phase.READ);
@@ -95,7 +92,21 @@
         this.type = type;
         this.mode = mode;
     }
-
+    private MessageFactory getFactory(SoapMessage message) throws SOAPException {
+        return getFactory(message.getVersion());
+    }
+    private synchronized MessageFactory getFactory(SoapVersion version) throws SOAPException {
+        if (version instanceof Soap11) {
+            if (soap11Factory == null) { 
+                soap11Factory = MessageFactory.newInstance();
+            } 
+            return soap11Factory;
+        }
+        if (soap12Factory == null) {
+            soap12Factory = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL);
+        }
+        return soap12Factory;
+    }
     public void handleMessage(Message message) throws Fault {
         Exchange ex = message.getExchange();     
         
@@ -184,8 +195,6 @@
     }    
     
     private SOAPMessage newSOAPMessage(InputStream is, SoapMessage msg) throws Exception {
-        SoapVersion version = msg.getVersion();
-
         MimeHeaders headers = new MimeHeaders();
         if (msg.containsKey(Message.PROTOCOL_HEADERS)) {
             Map<String, List<String>> heads = CastUtils.cast((Map<?, ?>)msg.get(Message.PROTOCOL_HEADERS));
@@ -196,13 +205,7 @@
             }
         }
         
-        MessageFactory msgFactory = null;
-        if (version == null || version instanceof Soap11) {
-            msgFactory = MessageFactory.newInstance();
-        } else if (version instanceof Soap12) {
-            msgFactory = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL);
-        }
-        return msgFactory.createMessage(headers, is);
+        return getFactory(msg).createMessage(headers, is);
     }
 
     void setupBindingOperationInfo(Exchange exch, SOAPMessage msg) {
@@ -324,13 +327,7 @@
 
                 if (SOAPMessage.class.isAssignableFrom(type)) {
                     try {
-                        SoapVersion version = ((SoapMessage)message).getVersion();
-                        MessageFactory msgFactory = null;
-                        if (version == null || version instanceof Soap11) {
-                            msgFactory = MessageFactory.newInstance();
-                        } else if (version instanceof Soap12) {
-                            msgFactory = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL);
-                        }
+                        MessageFactory msgFactory = getFactory((SoapMessage)message);
                         SOAPMessage msg = msgFactory.createMessage();
                         msg.getSOAPPart().setContent(source);
                         

Modified: cxf/branches/2.1.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/DispatchOutDatabindingInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/DispatchOutDatabindingInterceptor.java?rev=767160&r1=767159&r2=767160&view=diff
==============================================================================
--- cxf/branches/2.1.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/DispatchOutDatabindingInterceptor.java (original)
+++ cxf/branches/2.1.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/DispatchOutDatabindingInterceptor.java Tue Apr 21 14:41:51 2009
@@ -52,7 +52,6 @@
 
 import org.apache.cxf.attachment.AttachmentImpl;
 import org.apache.cxf.binding.soap.Soap11;
-import org.apache.cxf.binding.soap.Soap12;
 import org.apache.cxf.binding.soap.SoapMessage;
 import org.apache.cxf.binding.soap.SoapVersion;
 import org.apache.cxf.common.WSDLConstants;
@@ -78,7 +77,9 @@
     private static final Logger LOG = LogUtils.getL7dLogger(DispatchOutDatabindingInterceptor.class);
     private DispatchOutDatabindingEndingInterceptor ending;
     
-    private Service.Mode mode;
+    private final Service.Mode mode;
+    private MessageFactory soap11Factory;
+    private MessageFactory soap12Factory;
     
     public DispatchOutDatabindingInterceptor(Mode mode) {
         super(Phase.WRITE);
@@ -86,7 +87,21 @@
         
         this.mode = mode;
     }
-
+    private MessageFactory getFactory(SoapMessage message) throws SOAPException {
+        return getFactory(message.getVersion());
+    }
+    private synchronized MessageFactory getFactory(SoapVersion version) throws SOAPException {
+        if (version instanceof Soap11) {
+            if (soap11Factory == null) { 
+                soap11Factory = MessageFactory.newInstance();
+            } 
+            return soap11Factory;
+        }
+        if (soap12Factory == null) {
+            soap12Factory = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL);
+        }
+        return soap12Factory;
+    }
     public void handleMessage(Message message) throws Fault {
         Object obj = null;
         Object result = message.getContent(List.class);
@@ -337,13 +352,7 @@
                     }
                 } else {
                     try {
-                        SoapVersion version = ((SoapMessage)message).getVersion();
-                        MessageFactory msgFactory = null;
-                        if (version == null || version instanceof Soap11) {
-                            msgFactory = MessageFactory.newInstance();
-                        } else if (version instanceof Soap12) {
-                            msgFactory = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL);
-                        }
+                        MessageFactory msgFactory = getFactory((SoapMessage)message);
                         SOAPMessage msg = msgFactory.createMessage();
                         msg.getSOAPPart().setContent(source);
                         if (message.getAttachments() != null) {
@@ -375,12 +384,7 @@
         SOAPMessage msg = null;
         
         MimeHeaders headers = new MimeHeaders();
-        MessageFactory msgFactory = null;
-        if (version == null || version instanceof Soap11) {
-            msgFactory = MessageFactory.newInstance();
-        } else if (version instanceof Soap12) {
-            msgFactory = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL);
-        }
+        MessageFactory msgFactory = getFactory(version);
         
         if (is != null) {
             msg = msgFactory.createMessage(headers, is);