Author: dkulp
Date: Tue Apr 21 03:20:21 2009
New Revision: 766963

URL: http://svn.apache.org/viewvc?rev=766963&view=rev
Log:
Cache the message factories

Modified:
    
cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/saaj/SAAJInInterceptor.java
    
cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/saaj/SAAJOutInterceptor.java

Modified: 
cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/saaj/SAAJInInterceptor.java
URL: 
http://svn.apache.org/viewvc/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/saaj/SAAJInInterceptor.java?rev=766963&r1=766962&r2=766963&view=diff
==============================================================================
--- 
cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/saaj/SAAJInInterceptor.java
 (original)
+++ 
cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/saaj/SAAJInInterceptor.java
 Tue Apr 21 03:20:21 2009
@@ -66,7 +66,11 @@
  */
 public class SAAJInInterceptor extends AbstractSoapInterceptor {
     private static final ResourceBundle BUNDLE = 
BundleUtils.getBundle(SAAJInInterceptor.class);
-
+    
+    private MessageFactory factory11;
+    private MessageFactory factory12;
+    
+    
     public SAAJInInterceptor() {
         super(Phase.PRE_PROTOCOL);
     }
@@ -74,15 +78,22 @@
         super(phase);
     }
     
+    private synchronized MessageFactory getFactory(SoapMessage message) throws 
SOAPException {
+        if (message.getVersion() instanceof Soap11) {
+            if (factory11 == null) { 
+                factory11 = MessageFactory.newInstance();
+            } 
+            return factory11;
+        }
+        if (factory12 == null) {
+            factory12 = 
MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL);
+        }
+        return factory12;
+    }
+    
     public void handleMessage(SoapMessage message) throws Fault {
         try {
-            MessageFactory factory = null;
-            if (message.getVersion() instanceof Soap11) {
-                factory = MessageFactory.newInstance();
-            } else {
-                factory = 
MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL);
-            }
-            
+            MessageFactory factory = getFactory(message);
             SOAPMessage soapMessage = factory.createMessage();
             message.setContent(SOAPMessage.class, soapMessage);
             

Modified: 
cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/saaj/SAAJOutInterceptor.java
URL: 
http://svn.apache.org/viewvc/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/saaj/SAAJOutInterceptor.java?rev=766963&r1=766962&r2=766963&view=diff
==============================================================================
--- 
cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/saaj/SAAJOutInterceptor.java
 (original)
+++ 
cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/saaj/SAAJOutInterceptor.java
 Tue Apr 21 03:20:21 2009
@@ -38,6 +38,7 @@
 
 
 import org.apache.cxf.attachment.AttachmentImpl;
+import org.apache.cxf.binding.soap.Soap11;
 import org.apache.cxf.binding.soap.SoapFault;
 import org.apache.cxf.binding.soap.SoapMessage;
 import org.apache.cxf.binding.soap.SoapVersion;
@@ -67,22 +68,30 @@
     
     private static final ResourceBundle BUNDLE = 
BundleUtils.getBundle(SAAJOutInterceptor.class);
     
-
+    private MessageFactory factory11;
+    private MessageFactory factory12;
+    
     public SAAJOutInterceptor() {
         super(Phase.PRE_PROTOCOL);
     }
-    
+    private synchronized MessageFactory getFactory(SoapMessage message) throws 
SOAPException {
+        if (message.getVersion() instanceof Soap11) {
+            if (factory11 == null) { 
+                factory11 = MessageFactory.newInstance();
+            } 
+            return factory11;
+        }
+        if (factory12 == null) {
+            factory12 = 
MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL);
+        }
+        return factory12;
+    }
     public void handleMessage(SoapMessage message) throws Fault {
         SOAPMessage saaj = message.getContent(SOAPMessage.class);
         if (saaj == null) {
             SoapVersion version = message.getVersion();
             try {
-                MessageFactory factory = null;
-                if (version.getVersion() == 1.1) {
-                    factory = MessageFactory.newInstance();
-                } else {
-                    factory = 
MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL);
-                }
+                MessageFactory factory = getFactory(message);
                 SOAPMessage soapMessage = factory.createMessage();
 
                 SOAPPart soapPart = soapMessage.getSOAPPart();


Reply via email to