You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@synapse.apache.org by ve...@apache.org on 2008/05/03 18:25:03 UTC

svn commit: r653093 - in /synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport: base/BaseUtils.java vfs/VFSTransportSender.java

Author: veithen
Date: Sat May  3 09:25:02 2008
New Revision: 653093

URL: http://svn.apache.org/viewvc?rev=653093&view=rev
Log:
SYNAPSE-261: Moved MessageFormatter selection logic to a new method in BaseUtils so that it can be reused.

Modified:
    synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/base/BaseUtils.java
    synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/vfs/VFSTransportSender.java

Modified: synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/base/BaseUtils.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/base/BaseUtils.java?rev=653093&r1=653092&r2=653093&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/base/BaseUtils.java (original)
+++ synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/base/BaseUtils.java Sat May  3 09:25:02 2008
@@ -25,7 +25,11 @@
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.Constants;
 import org.apache.axis2.builder.BuilderUtil;
+import org.apache.axis2.transport.MessageFormatter;
+import org.apache.axis2.transport.TransportUtils;
 import org.apache.axis2.transport.http.HTTPTransportUtils;
+import org.apache.synapse.format.BinaryFormatter;
+import org.apache.synapse.format.PlainTextFormatter;
 import org.apache.synapse.transport.vfs.PollTableEntry;
 import org.apache.axis2.context.MessageContext;
 import org.apache.commons.lang.StringUtils;
@@ -140,6 +144,33 @@
         }
         return format;
     }
+    
+    /**
+     * Get the MessageFormatter for the given message.
+     * @param msgContext the axis message context
+     * @return the MessageFormatter to be used
+     */
+    public static MessageFormatter getMessageFormatter(MessageContext msgContext) {
+        // check the first element of the SOAP body, do we have content wrapped using the
+        // default wrapper elements for binary (BaseConstants.DEFAULT_BINARY_WRAPPER) or
+        // text (BaseConstants.DEFAULT_TEXT_WRAPPER) ? If so, select the appropriate
+        // message formatter directly ...
+        OMElement firstChild = msgContext.getEnvelope().getBody().getFirstElement();
+        if (firstChild != null) {
+            if (BaseConstants.DEFAULT_BINARY_WRAPPER.equals(firstChild.getQName())) {
+                return new BinaryFormatter();
+            } else if (BaseConstants.DEFAULT_TEXT_WRAPPER.equals(firstChild.getQName())) {
+                return new PlainTextFormatter();
+            }
+        }
+        
+        // ... otherwise, let Axis choose the right message formatter:
+        try {
+            return TransportUtils.getMessageFormatter(msgContext);
+        } catch (AxisFault axisFault) {
+            throw new BaseTransportException("Unable to get the message formatter to use");
+        }
+    }
 
     public static long getMinPollTime(List pollTable) {
         Iterator iter = pollTable.iterator();

Modified: synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/vfs/VFSTransportSender.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/vfs/VFSTransportSender.java?rev=653093&r1=653092&r2=653093&view=diff
==============================================================================
--- synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/vfs/VFSTransportSender.java (original)
+++ synapse/trunk/java/modules/transports/src/main/java/org/apache/synapse/transport/vfs/VFSTransportSender.java Sat May  3 09:25:02 2008
@@ -18,12 +18,9 @@
 */
 package org.apache.synapse.transport.vfs;
 
-import org.apache.synapse.format.BinaryFormatter;
-import org.apache.synapse.format.PlainTextFormatter;
 import org.apache.synapse.transport.base.*;
 import org.apache.axis2.transport.OutTransportInfo;
 import org.apache.axis2.transport.MessageFormatter;
-import org.apache.axis2.transport.TransportUtils;
 import org.apache.axis2.context.MessageContext;
 import org.apache.axis2.context.ConfigurationContext;
 import org.apache.axis2.AxisFault;
@@ -33,7 +30,6 @@
 import org.apache.commons.io.output.CountingOutputStream;
 import org.apache.commons.logging.LogFactory;
 import org.apache.axiom.om.OMOutputFormat;
-import org.apache.axiom.om.OMElement;
 
 import java.io.IOException;
 
@@ -166,32 +162,7 @@
     }
 
     private void populateResponseFile(FileObject responseFile, MessageContext msgContext) throws AxisFault {
-        MessageFormatter messageFormatter = null;
-        
-        // check the first element of the SOAP body, do we have content wrapped using the
-        // default wrapper elements for binary (BaseConstants.DEFAULT_BINARY_WRAPPER) or
-        // text (BaseConstants.DEFAULT_TEXT_WRAPPER) ? If so, select the appropriate
-        // message formatter directly ...
-        OMElement firstChild = msgContext.getEnvelope().getBody().getFirstElement();
-        if (firstChild != null) {
-            if (BaseConstants.DEFAULT_BINARY_WRAPPER.equals(firstChild.getQName())) {
-                messageFormatter = new BinaryFormatter();
-            } else if (BaseConstants.DEFAULT_TEXT_WRAPPER.equals(firstChild.getQName())) {
-                messageFormatter = new PlainTextFormatter();
-            }
-        }
-        
-        // ... otherwise, let Axis choose the right message formatter:
-        if (messageFormatter == null) {
-            try {
-                messageFormatter = TransportUtils.getMessageFormatter(msgContext);
-            } catch (AxisFault axisFault) {
-                metrics.incrementFaultsSending();
-                throw new BaseTransportException("Unable to get the message formatter to use");
-            }
-        }
-        
-        // Write the message to the file using the selected message formatter
+        MessageFormatter messageFormatter = BaseUtils.getMessageFormatter(msgContext);
         OMOutputFormat format = BaseUtils.getOMOutputFormat(msgContext);
         try {
             CountingOutputStream os = new CountingOutputStream(responseFile.getContent().getOutputStream());