[jboss-svn-commits] JBL Code SVN: r14935 - in labs/jbossesb/trunk: product/rosetta/src/org/jboss/internal/soa/esb/message and 5 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Sep 7 09:30:22 EDT 2007


Author: tfennelly
Date: 2007-09-07 09:30:22 -0400 (Fri, 07 Sep 2007)
New Revision: 14935

Modified:
   labs/jbossesb/trunk/
   labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/message/LegacyMessageComposerAdapter.java
   labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/AbstractFileGateway.java
   labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/JBossRemotingGatewayListener.java
   labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/LocalFileMessageComposer.java
   labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/RemoteFileMessageComposer.java
   labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/message/AbstractMessageComposer.java
   labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/message/BasicMessageComposer.java
   labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/message/MessageComposer.java
   labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/message/UncomposedMessageDeliveryAdapter.java
   labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/notification/jms/DefaultJMSPropertiesSetter.java
   labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/listeners/gateway/FileGatewayListenerUnitTest.java
   labs/jbossesb/trunk/product/services/soap/src/main/java/org/jboss/soa/esb/actions/soap/SOAPProcessor.java
   labs/jbossesb/trunk/product/services/soap/src/main/java/org/jboss/soa/esb/actions/soap/WsdlTransformer.java
Log:
Verifying http://jira.jboss.com/jira/browse/JBESB-731

MTOM quickstart is in the http://anonsvn.labs.jboss.com/labs/jbossesb/workspace/webservice_mtom_qs/ SVN workspace


Property changes on: labs/jbossesb/trunk
___________________________________________________________________
Name: svn:ignore
   - .settings
.classpath
.project
bin
.packaging
build
junit
ObjectToFileWriter.tst
null

   + .settings
.classpath
.project
bin
.packaging
build
junit
ObjectToFileWriter.tst
null
classes


Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/message/LegacyMessageComposerAdapter.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/message/LegacyMessageComposerAdapter.java	2007-09-07 12:03:25 UTC (rev 14934)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/message/LegacyMessageComposerAdapter.java	2007-09-07 13:30:22 UTC (rev 14935)
@@ -42,7 +42,7 @@
  *
  * @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
  */
-public abstract class LegacyMessageComposerAdapter implements MessageComposer {
+public abstract class LegacyMessageComposerAdapter<T> implements MessageComposer<T> {
 
     protected Class _composerClass;
 
@@ -65,7 +65,7 @@
     
     public abstract Class[] getResponderParameters();
 
-    public Message compose(Object messagePayload) throws MessageDeliverException {
+    public Message compose(T messagePayload) throws MessageDeliverException {
         try {
             return (Message) _processMethod.invoke(_composer, new Object[] {messagePayload});
         } catch(ClassCastException e) {

Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/AbstractFileGateway.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/AbstractFileGateway.java	2007-09-07 12:03:25 UTC (rev 14934)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/AbstractFileGateway.java	2007-09-07 13:30:22 UTC (rev 14935)
@@ -168,9 +168,9 @@
                 try {
                     if (_maxMillisForResponse > 0) {
                         Message replyMsg = serviceInvoker.deliverSync(message, _maxMillisForResponse);
-                        replyMsg.getAttachment().put(Environment.ORIGINAL_FILE, fileIn);
+                        replyMsg.getAttachment().put(Environment.ORIGINAL_FILE, fileIn); // For backward compatibility!
                         try {
-                            processReply(replyMsg);
+                            processReply(replyMsg, fileIn);
                         } catch (GatewayException e) {
                             processException("Failed to process reply.", e, fileIn, workingFile);
                             continue;
@@ -232,14 +232,13 @@
         }
     }
 
-    private void processReply(Message replyMsg) throws MessageDeliverException, GatewayException {
-        Object responseData = messageComposer.decompose(replyMsg);
+    private void processReply(Message replyMsg, File fileIn) throws MessageDeliverException, GatewayException {
+        Object responseData = messageComposer.decompose(replyMsg, fileIn);
 
         if(responseData == null) {
             // Legacy composers may handled response delivery themselves...
         } else if(responseData instanceof byte[]) {
-            File inputFile = (File) replyMsg.getAttachment().get(Environment.ORIGINAL_FILE);
-            File responseFile = new File(inputFile.getParent(), inputFile.getName() + FileEpr.DEFAULT_REPLY_TO_FILE_SUFFIX + "_gw");
+            File responseFile = new File(fileIn.getParent(), fileIn.getName() + FileEpr.DEFAULT_REPLY_TO_FILE_SUFFIX + "_gw");
 
             bytesToFile((byte[])responseData, responseFile);
         } else {
@@ -413,11 +412,9 @@
      *
      * @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
      */
-    private class LegacyFileMessageComposerAdapter extends LegacyMessageComposerAdapter {
+    private class LegacyFileMessageComposerAdapter<T extends File> extends LegacyMessageComposerAdapter<T> {
 
-        public Object decompose(Message message) throws MessageDeliverException {
-            // This is all done this way for backward compatibility!!!!
-            File inputFile = (File) message.getAttachment().get(Environment.ORIGINAL_FILE);
+        public Object decompose(Message message, T inputFile) throws MessageDeliverException {
             try {
                 return _responderMethod.invoke(_composer, message, inputFile);
             } catch (IllegalAccessException e) {

Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/JBossRemotingGatewayListener.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/JBossRemotingGatewayListener.java	2007-09-07 12:03:25 UTC (rev 14934)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/JBossRemotingGatewayListener.java	2007-09-07 13:30:22 UTC (rev 14935)
@@ -49,6 +49,7 @@
 import org.jboss.soa.esb.listeners.message.MessageDeliverException;
 import org.jboss.soa.esb.listeners.message.UncomposedMessageDeliveryAdapter;
 import org.jboss.soa.esb.message.Message;
+import org.jboss.soa.esb.message.Properties;
 import org.jboss.soa.esb.services.registry.RegistryException;
 import org.jboss.soa.esb.services.registry.RegistryFactory;
 
@@ -304,6 +305,7 @@
                 if(logger.isDebugEnabled()) {
                     logger.debug("Returning response [" + response + "].");
                 }
+                
                 return response;
             } else {
                 messageDeliveryAdapter.deliverAsync(invocationRequest);
@@ -408,21 +410,20 @@
      * @throws ConfigurationException Configuration error.
      */
     protected UncomposedMessageDeliveryAdapter createDeliveryAdapter() throws ConfigurationException {
-        return UncomposedMessageDeliveryAdapter.getGatewayDeliveryAdapter(getConfig(), new JBossRemotingMessageComposer());
+        return UncomposedMessageDeliveryAdapter.getGatewayDeliveryAdapter(getConfig(), new JBossRemotingMessageComposer<InvocationRequest>());
     }
 
     /**
      * Message composer for a JBoss Remoting {@link org.jboss.remoting.InvocationRequest}
      * instance.
      */
-    public static class JBossRemotingMessageComposer extends AbstractMessageComposer {
+    public static class JBossRemotingMessageComposer<T extends InvocationRequest> extends AbstractMessageComposer<T> {
 
         public void setConfiguration(ConfigTree config) {
         }
 
         @SuppressWarnings("unchecked")
-        protected void populateMessage(Message message, Object invocationRequestObj) throws MessageDeliverException {
-            InvocationRequest invocationRequest = (InvocationRequest) invocationRequestObj;
+        protected void populateMessage(Message message, T invocationRequest) throws MessageDeliverException {
 
             //
             // There really needs to be an optoin on the body to set it's contents
@@ -449,5 +450,20 @@
                 }
             }
         }
+
+        public Object decompose(Message message, T invocationRequest) throws MessageDeliverException {
+            Properties properties = message.getProperties();
+            String propertyNames[] = properties.getNames();
+            Map responseMap = invocationRequest.getReturnPayload();
+
+            for(String name : propertyNames) {
+                Object value = properties.getProperty(name);
+                if(value != null) {
+                    responseMap.put(name, value);
+                }
+            }
+            
+            return super.decompose(message, invocationRequest);
+        }
     }
 }

Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/LocalFileMessageComposer.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/LocalFileMessageComposer.java	2007-09-07 12:03:25 UTC (rev 14934)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/LocalFileMessageComposer.java	2007-09-07 13:30:22 UTC (rev 14935)
@@ -38,19 +38,14 @@
  * @see org.jboss.soa.esb.listeners.gateway.RemoteFileMessageComposer
  * @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
  */
-public class LocalFileMessageComposer implements MessageComposer {
+public class LocalFileMessageComposer<T extends File> implements MessageComposer<T> {
 
     public void setConfiguration(ConfigTree config) throws ConfigurationException {
     }
 
-    public Message compose(Object messagePayload) throws MessageDeliverException {
-        AssertArgument.isNotNull(messagePayload, "messagePayload");
+    public Message compose(T inputFile) throws MessageDeliverException {
+        AssertArgument.isNotNull(inputFile, "inputFile");
 
-        if(!(messagePayload instanceof File)) {
-            throw new MessageDeliverException("Invalid payload type '" + messagePayload.getClass().getName() + "'.  Must be a " + File.class.getName() + " based payload.");
-        }
-
-        File inputFile = (File)messagePayload;
         if(!inputFile.exists()) {
             throw new MessageDeliverException("Invalid File payload.  File '" + inputFile.getAbsolutePath() + "' doesn't exist.");
         }
@@ -65,7 +60,7 @@
         return message;
     }
 
-    public Object decompose(Message message) throws MessageDeliverException {
+    public Object decompose(Message message, T inputFile) throws MessageDeliverException {
         byte[] payload = (byte[]) message.getBody().get(BytesBody.BYTES_LOCATION);
 
         if(payload == null) {

Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/RemoteFileMessageComposer.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/RemoteFileMessageComposer.java	2007-09-07 12:03:25 UTC (rev 14934)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/gateway/RemoteFileMessageComposer.java	2007-09-07 13:30:22 UTC (rev 14935)
@@ -43,7 +43,7 @@
  * @see org.jboss.soa.esb.listeners.gateway.LocalFileMessageComposer
  * @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
  */
-public class RemoteFileMessageComposer implements MessageComposer {
+public class RemoteFileMessageComposer<T extends File> implements MessageComposer<T> {
  
     private FTPEpr ftpEpr;
     private File downloadDir;
@@ -59,15 +59,9 @@
         downloadDir = AbstractFileGateway.getFileInputDirectory(config);
     }
 
-    public Message compose(Object messagePayload) throws MessageDeliverException {
-        AssertArgument.isNotNull(messagePayload, "messagePayload");
+    public Message compose(T inputFile) throws MessageDeliverException {
+        AssertArgument.isNotNull(inputFile, "inputFile");
 
-        if(!(messagePayload instanceof File)) {
-            throw new MessageDeliverException("Invalid payload type '" + messagePayload.getClass().getName() + "'.  Must be a " + File.class.getName() + " based payload.");
-        }
-
-        File inputFile = (File)messagePayload;
-
         Message message = MessageFactory.getInstance().getMessage();
         try {
             message.getBody().add(BytesBody.BYTES_LOCATION, getFileContents(inputFile));
@@ -80,7 +74,7 @@
         return message;
     }
 
-    public Object decompose(Message message) throws MessageDeliverException {
+    public Object decompose(Message message, T inputMessage) throws MessageDeliverException {
         byte[] payload = (byte[]) message.getBody().get(BytesBody.BYTES_LOCATION);
 
         if(payload == null) {

Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/message/AbstractMessageComposer.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/message/AbstractMessageComposer.java	2007-09-07 12:03:25 UTC (rev 14934)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/message/AbstractMessageComposer.java	2007-09-07 13:30:22 UTC (rev 14935)
@@ -32,7 +32,7 @@
  *
  * @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
  */
-public abstract class AbstractMessageComposer implements MessageComposer {
+public abstract class AbstractMessageComposer<T> implements MessageComposer<T> {
 
     /**
      * Compose the message.
@@ -44,7 +44,7 @@
      * @return ESB aware message instance.
      * @throws MessageDeliverException Failed to compose message payload for delivery.
      */
-    public Message compose(Object messagePayload) throws MessageDeliverException {
+    public Message compose(T messagePayload) throws MessageDeliverException {
         Message message = MessageFactory.getInstance().getMessage();
 
         populateMessage(message, messagePayload);
@@ -59,10 +59,14 @@
      * Override to implement an alternative {@link Message} decomposition strategy.
      *
      * @param message The message to be decomposed.
+     * @param originalInputMessagePayload The original input message payload used to
+     * compose this (or ther original) message.  The original message can sometimes contain
+     * information relevant during the decomposition process.  Whether or not this parameter
+     * can be null depends on the MessageComposer implementation.
      * @return The message "task object".
      * @throws MessageDeliverException
      */
-    public Object decompose(Message message) throws MessageDeliverException {
+    public Object decompose(Message message, T originalInputMessagePayload) throws MessageDeliverException {
         // Hopefully we can fix the Message object such that there's no need for this
         // i.e. the message will have setContents(Object) and getContents() methods.
 
@@ -82,5 +86,5 @@
      * @param messagePayload The message payload to to be populated into the message.
      * @throws MessageDeliverException Unable to populate message with payload.
      */
-    protected abstract void populateMessage(Message message, Object messagePayload) throws MessageDeliverException;
+    protected abstract void populateMessage(Message message, T messagePayload) throws MessageDeliverException;
 }

Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/message/BasicMessageComposer.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/message/BasicMessageComposer.java	2007-09-07 12:03:25 UTC (rev 14934)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/message/BasicMessageComposer.java	2007-09-07 13:30:22 UTC (rev 14935)
@@ -30,11 +30,11 @@
  *
  * @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
  */
-public class BasicMessageComposer extends AbstractMessageComposer {
+public class BasicMessageComposer<T> extends AbstractMessageComposer<T> {
     public void setConfiguration(ConfigTree config) {
     }
 
-    protected void populateMessage(Message message, Object messagePayload) throws MessageDeliverException {
+    protected void populateMessage(Message message, T messagePayload) throws MessageDeliverException {
         ActionUtils.setTaskObject(message, messagePayload);
     }
 }

Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/message/MessageComposer.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/message/MessageComposer.java	2007-09-07 12:03:25 UTC (rev 14934)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/message/MessageComposer.java	2007-09-07 13:30:22 UTC (rev 14935)
@@ -36,7 +36,7 @@
  *
  * @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
  */
-public interface MessageComposer {
+public interface MessageComposer<T> {
 
     /**
      * Set the conposer's configuration.
@@ -57,16 +57,20 @@
      * @return ESB aware message instance.
      * @throws MessageDeliverException Failed to compose message payload for delivery.
      */
-    public Message compose(Object messagePayload) throws MessageDeliverException;
+    public Message compose(T messagePayload) throws MessageDeliverException;
 
     /**
      * Decompose an ESB "aware" message, extracting and returning the message payload.
      *
      * @param message ESB aware message instance to be decomposed.
+     * @param originalInputMessagePayload The original input message payload used to
+     * compose this (or ther original) message.  The original message can sometimes contain
+     * information relevant during the decomposition process.  Whether or not this parameter
+     * can be null depends on the MessageComposer implementation.
      * @return ESB unaware message instance - a message payload.
      * @throws MessageDeliverException Failed to decompose message payload.
      */
-    public Object decompose(Message message) throws MessageDeliverException;
+    public Object decompose(Message message, T originalInputMessagePayload) throws MessageDeliverException;
 
     /**
      * Uitility factory class for reflective {@link MessageComposer} construction.
@@ -97,7 +101,7 @@
          * @throws ConfigurationException  Bad configuration.  Unable to create composer instance.
          */
         public static MessageComposer getInstance(String className, ConfigTree config, Class legacyAdapterType) throws ConfigurationException {
-            MessageComposer instance = null;
+            MessageComposer instance;
 
             AssertArgument.isNotNullAndNotEmpty(className, "className");
             AssertArgument.isNotNull(config, "config");

Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/message/UncomposedMessageDeliveryAdapter.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/message/UncomposedMessageDeliveryAdapter.java	2007-09-07 12:03:25 UTC (rev 14934)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/listeners/message/UncomposedMessageDeliveryAdapter.java	2007-09-07 13:30:22 UTC (rev 14935)
@@ -69,7 +69,7 @@
 
     /**
      * Synchronously deliver the supplied message to the target service associated with this adapter instance,
-     * {@link MessageComposer#decompose(org.jboss.soa.esb.message.Message) decomposing} the reply message payload.
+     * {@link MessageComposer#decompose(org.jboss.soa.esb.message.Message,Object) decomposing} the reply message payload.
      * <p/>
      * To deliver synchronusly <u>without</u> decomposing the reply, see
      * {@link #deliverSyncWithoutDecomposing(Object,long)}.
@@ -78,7 +78,7 @@
      *                       container class for the message payload (e.g. a JMS message).
      * @param timeoutMillis  Number of milliseconds before synchronous reply pickup should timeout.
      * @return The reply message payload
-     *         ({@link MessageComposer#decompose(org.jboss.soa.esb.message.Message) decomposed}).
+     *         ({@link MessageComposer#decompose(org.jboss.soa.esb.message.Message,Object) decomposed}).
      * @throws MessageDeliverException Failed to deliverAsync message, after trying all available EPRs.
      */
     public Object deliverSync(Object messagePayload, long timeoutMillis) throws MessageDeliverException, RegistryException, FaultMessageException {
@@ -86,7 +86,7 @@
         Message message = deliverSyncWithoutDecomposing(messagePayload, timeoutMillis);
 
         // Decompose the reply message...
-        return composer.decompose(message);
+        return composer.decompose(message, messagePayload);
     }
 
     /**

Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/notification/jms/DefaultJMSPropertiesSetter.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/notification/jms/DefaultJMSPropertiesSetter.java	2007-09-07 12:03:25 UTC (rev 14934)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/notification/jms/DefaultJMSPropertiesSetter.java	2007-09-07 13:30:22 UTC (rev 14935)
@@ -99,7 +99,7 @@
 	 * Set ESB Message object properties on the outgoing JMS Message object instance.
 	 * <p>
 	 * Property names must obey the rules for a message selector identifier, See section 3.8.1.1, 
-	 * “Message Selector Syntax” on the JMS Spec.
+	 * "Message Selector Syntax" on the JMS Spec.
 	 * </p>
 	 * Values must also by set with the correct type so that selector expressions work as 
 	 * expected. 

Modified: labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/listeners/gateway/FileGatewayListenerUnitTest.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/listeners/gateway/FileGatewayListenerUnitTest.java	2007-09-07 12:03:25 UTC (rev 14934)
+++ labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/listeners/gateway/FileGatewayListenerUnitTest.java	2007-09-07 13:30:22 UTC (rev 14935)
@@ -115,7 +115,7 @@
 		
 		gateway.onSchedule();
 		
-		LocalFileMessageComposer f = new LocalFileMessageComposer();
+		LocalFileMessageComposer<File> f = new LocalFileMessageComposer<File>();
 
         try {
             f.compose(new File("hello"));
@@ -124,13 +124,6 @@
             // expected
         }
 
-        try {
-            f.compose("hello");
-            fail("Expected exception on invalid payload type.");
-        } catch(MessageDeliverException e) {
-            // expected
-        }
-
 		File testFile = null;
 		File anTestFile = null;
 		

Modified: labs/jbossesb/trunk/product/services/soap/src/main/java/org/jboss/soa/esb/actions/soap/SOAPProcessor.java
===================================================================
--- labs/jbossesb/trunk/product/services/soap/src/main/java/org/jboss/soa/esb/actions/soap/SOAPProcessor.java	2007-09-07 12:03:25 UTC (rev 14934)
+++ labs/jbossesb/trunk/product/services/soap/src/main/java/org/jboss/soa/esb/actions/soap/SOAPProcessor.java	2007-09-07 13:30:22 UTC (rev 14935)
@@ -132,6 +132,9 @@
 
             requestHandler.handleRequest(endpoint, new ByteArrayInputStream(soapMessage), os, invocationContext);
 
+            if(message.getProperties().getProperty("Content-Type") == null) {
+                message.getProperties().setProperty("Content-Type", "text/xml");
+            }
             ActionUtils.setTaskObject(message, new String(os.toByteArray()).trim());
         }
         catch (Exception ex) {

Modified: labs/jbossesb/trunk/product/services/soap/src/main/java/org/jboss/soa/esb/actions/soap/WsdlTransformer.java
===================================================================
--- labs/jbossesb/trunk/product/services/soap/src/main/java/org/jboss/soa/esb/actions/soap/WsdlTransformer.java	2007-09-07 12:03:25 UTC (rev 14934)
+++ labs/jbossesb/trunk/product/services/soap/src/main/java/org/jboss/soa/esb/actions/soap/WsdlTransformer.java	2007-09-07 13:30:22 UTC (rev 14935)
@@ -95,6 +95,17 @@
     private void transformAddress(Element element, ExecutionContext executionContext) {
         URI endpointURI = (URI) executionContext.getAttribute(ENDPOINT_URI);
         if(endpointURI != null) {
+            // Make sure there's a path (if only a single slash).  JBossWS client code will
+            // fail because of a feature of JBossRemoting.  See http://jira.jboss.com/jira/browse/JBWS-1802
+            if(endpointURI.getPath() == null || endpointURI.getPath().equals("")) {
+                try {
+                    endpointURI = new URI(endpointURI.getScheme(), endpointURI.getUserInfo(),
+                            endpointURI.getHost(), endpointURI.getPort(), "/", endpointURI.getQuery(), endpointURI.getFragment());
+                } catch (URISyntaxException e) {
+                    logger.error("Failed to properly format endpoint location URL '" + endpointURI.toString() + "'.  Failed to add single slash character for path.  This may cause JBossWS Client code to fail.");
+                }
+            }
+            
             element.setAttribute("location", endpointURI.toString());
         }
     }




More information about the jboss-svn-commits mailing list