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

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Feb 6 10:06:38 EST 2009


Author: kevin.conner at jboss.com
Date: 2009-02-06 10:06:38 -0500 (Fri, 06 Feb 2009)
New Revision: 25138

Modified:
   labs/jbossesb/trunk/product/docs/ProgrammersGuide.odt
   labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/webservice/BaseWebService.java
   labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/common/Environment.java
   labs/jbossesb/trunk/qa/junit/src/org/jboss/soa/esb/server/ebws/EBWSUnitTest.java
   labs/jbossesb/trunk/qa/junit/src/org/jboss/soa/esb/server/ebws/EBWSUtil.java
   labs/jbossesb/trunk/qa/junit/src/org/jboss/soa/esb/server/ebws/LogMessageAction.java
Log:
Add support for passing message id/relates to into message: JBESB-2027

Modified: labs/jbossesb/trunk/product/docs/ProgrammersGuide.odt
===================================================================
(Binary files differ)

Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/webservice/BaseWebService.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/webservice/BaseWebService.java	2009-02-06 14:33:35 UTC (rev 25137)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/internal/soa/esb/webservice/BaseWebService.java	2009-02-06 15:06:38 UTC (rev 25138)
@@ -25,7 +25,9 @@
 import java.io.ByteArrayOutputStream;
 import java.io.PrintWriter;
 import java.io.StringWriter;
+import java.util.ArrayList;
 import java.util.Iterator;
+import java.util.List;
 
 import javax.xml.namespace.QName;
 import javax.xml.soap.Detail;
@@ -39,6 +41,8 @@
 import javax.xml.ws.Provider;
 import javax.xml.ws.WebServiceException;
 import javax.xml.ws.addressing.AddressingBuilder;
+import javax.xml.ws.addressing.AttributedURI;
+import javax.xml.ws.addressing.Relationship;
 import javax.xml.ws.addressing.soap.SOAPAddressingProperties;
 
 import org.apache.log4j.Logger;
@@ -52,6 +56,7 @@
 import org.jboss.soa.esb.message.Fault;
 import org.jboss.soa.esb.message.Message;
 import org.jboss.soa.esb.message.MessagePayloadProxy;
+import org.jboss.soa.esb.message.Properties;
 import org.jboss.soa.esb.message.format.MessageFactory;
 import org.w3c.dom.Document;
 
@@ -69,7 +74,9 @@
     private static final boolean RETURN_STACK_TRACES ;
     private static final Logger LOGGER = Logger.getLogger(BaseWebService.class);
 
-    private static AddressingBuilder ADDRESSING_BUILDER = AddressingBuilder.getAddressingBuilder() ;
+    private static final AddressingBuilder ADDRESSING_BUILDER = AddressingBuilder.getAddressingBuilder() ;
+    private static final String ADDRESSING_NAMESPACE = ADDRESSING_BUILDER.getNamespaceURI() ;
+    private static final QName ADDRESSING_REPLY = new QName(ADDRESSING_NAMESPACE, "Reply") ;
     
     protected final ServiceInvoker serviceInvoker ;
     protected final MessagePayloadProxy requestProxy ;
@@ -122,6 +129,11 @@
                 throw new SOAPException("Could not find SOAPElement in SOAPBody") ;
             }
 
+            if (soapIncomingProps != null)
+            {
+                initialiseWSAProps(esbReq, soapIncomingProps) ;
+            }
+
             final Message esbRes = deliverMessage(esbReq) ;
             if (esbRes != null)
             {
@@ -238,6 +250,46 @@
         return faultMsg ;
     }
 
+    private void initialiseWSAProps(final Message esbReq, final SOAPAddressingProperties props)
+    {
+        final AttributedURI messageID = props.getMessageID() ;
+        final Properties esbReqProps = esbReq.getProperties() ;
+        
+        if (messageID != null)
+        {
+            esbReqProps.setProperty(Environment.WSA_MESSAGE_ID, messageID.getURI().toASCIIString()) ;
+        }
+        final Relationship[] relationships = props.getRelatesTo() ;
+        final int numRelatesTo = (relationships == null ? 0 : relationships.length) ;
+        if (numRelatesTo > 0)
+        {
+            final List<String> relatesTo = new ArrayList<String>() ;
+            final List<String> relationshipType = new ArrayList<String>() ;
+            for(int count = 0 ; count < numRelatesTo ; count++)
+            {
+                final Relationship relationship = relationships[count] ;
+                if (relationship != null)
+                {
+                    relatesTo.add(relationship.getID().toASCIIString()) ;
+                    final QName type = relationship.getType() ;
+                    if (type != null)
+                    {
+                        relationshipType.add(type.toString()) ;
+                    }
+                    else
+                    {
+                        relationshipType.add(ADDRESSING_REPLY.toString()) ;
+                    }
+                }
+            }
+            if (relatesTo.size() > 0)
+            {
+                esbReqProps.setProperty(Environment.WSA_RELATES_TO, relatesTo.toArray(new String[relatesTo.size()])) ;
+                esbReqProps.setProperty(Environment.WSA_RELATIONSHIP_TYPE, relationshipType.toArray(new String[relationshipType.size()])) ;
+            }
+        }
+    }
+
     protected abstract Message deliverMessage(final Message request)
         throws Exception ;
 

Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/common/Environment.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/common/Environment.java	2009-02-06 14:33:35 UTC (rev 25137)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/common/Environment.java	2009-02-06 15:06:38 UTC (rev 25138)
@@ -240,6 +240,12 @@
         public static final String SECURITY_SERVICE_PUBLIC_KEY_PASS             = "org.jboss.soa.esb.services.security.publicKeyPassword";
         public static final String SECURITY_SERVICE_PUBLIC_KEY_TRANSFORMATION = "org.jboss.soa.esb.services.security.publicKeyTransformation";
 
+        /** Message property name for EBWS WS-A properties*/
+
+        public static final String WSA_MESSAGE_ID = "org.jboss.soa.esb.gateway.ebws.messageID" ;
+        public static final String WSA_RELATES_TO = "org.jboss.soa.esb.gateway.ebws.relatesTo";
+        public static final String WSA_RELATIONSHIP_TYPE = "org.jboss.soa.esb.gateway.ebws.relationshipType";
+
         // Configuration options for the Naming Context pooling.
         /**
          * The maximum pool size.

Modified: labs/jbossesb/trunk/qa/junit/src/org/jboss/soa/esb/server/ebws/EBWSUnitTest.java
===================================================================
--- labs/jbossesb/trunk/qa/junit/src/org/jboss/soa/esb/server/ebws/EBWSUnitTest.java	2009-02-06 14:33:35 UTC (rev 25137)
+++ labs/jbossesb/trunk/qa/junit/src/org/jboss/soa/esb/server/ebws/EBWSUnitTest.java	2009-02-06 15:06:38 UTC (rev 25138)
@@ -271,11 +271,14 @@
         assertNotNull("XML response", response) ;
         assertTrue("XML response", response.contains("http://soa.jboss.org/TestEBWS/addressingOpResp")) ;
 
-        final String[] logs = waitForMessages(2) ;
+        final String[] logs = waitForMessages(5) ;
         assertNotNull("Log message", logs) ;
-        assertEquals("Log count", 2, logs.length) ;
+        assertEquals("Log count", 5, logs.length) ;
         assertTrue("Request log message", StringUtils.compareXMLContent(EBWSUtil.VALID_REQUEST, logs[0])) ;
-        assertTrue("Response log message", StringUtils.compareXMLContent(EBWSUtil.VALID_RESPONSE, logs[1])) ;
+        assertEquals("WS-A Message ID", "urn:esb:1234567", logs[1]) ;
+        assertEquals("WS-A relates TO", "[urn:esb:r1234, urn:esb:r5678]", logs[2]) ;
+        assertEquals("WS-A relationship Type", "[{http://www.w3.org/2005/08/addressing}Reply, {http://www.w3.org/2005/08/addressing}test]", logs[3]) ;
+        assertTrue("Response log message", StringUtils.compareXMLContent(EBWSUtil.VALID_RESPONSE, logs[4])) ;
     }
     
     /**

Modified: labs/jbossesb/trunk/qa/junit/src/org/jboss/soa/esb/server/ebws/EBWSUtil.java
===================================================================
--- labs/jbossesb/trunk/qa/junit/src/org/jboss/soa/esb/server/ebws/EBWSUtil.java	2009-02-06 14:33:35 UTC (rev 25137)
+++ labs/jbossesb/trunk/qa/junit/src/org/jboss/soa/esb/server/ebws/EBWSUtil.java	2009-02-06 15:06:38 UTC (rev 25138)
@@ -54,6 +54,8 @@
     public static final String SOAP_ADDRESSING_REQUEST = "<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">" +
         "<soap:Header xmlns:wsa=\"http://www.w3.org/2005/08/addressing\">" +
             "<wsa:MessageID>urn:esb:1234567</wsa:MessageID>" +
+            "<wsa:RelatesTo RelationshipType=\"wsa:test\">urn:esb:r1234</wsa:RelatesTo>" +
+            "<wsa:RelatesTo>urn:esb:r5678</wsa:RelatesTo>" +
             "<wsa:To>http://example.com/To</wsa:To>" +
             "<wsa:Action>http://example.com/Action</wsa:Action>" +
         "</soap:Header>" +

Modified: labs/jbossesb/trunk/qa/junit/src/org/jboss/soa/esb/server/ebws/LogMessageAction.java
===================================================================
--- labs/jbossesb/trunk/qa/junit/src/org/jboss/soa/esb/server/ebws/LogMessageAction.java	2009-02-06 14:33:35 UTC (rev 25137)
+++ labs/jbossesb/trunk/qa/junit/src/org/jboss/soa/esb/server/ebws/LogMessageAction.java	2009-02-06 15:06:38 UTC (rev 25138)
@@ -21,6 +21,10 @@
 */
 package org.jboss.soa.esb.server.ebws;
 
+import java.util.Arrays;
+import java.util.Set;
+import java.util.TreeSet;
+
 import javax.management.MBeanServer;
 import javax.management.MalformedObjectNameException;
 
@@ -29,10 +33,12 @@
 import org.jboss.soa.esb.actions.AbstractActionLifecycle;
 import org.jboss.soa.esb.actions.ActionPipelineProcessor;
 import org.jboss.soa.esb.actions.ActionProcessingException;
+import org.jboss.soa.esb.common.Environment;
 import org.jboss.soa.esb.helpers.ConfigTree;
 import org.jboss.soa.esb.listeners.ListenerTagNames;
 import org.jboss.soa.esb.message.Body;
 import org.jboss.soa.esb.message.Message;
+import org.jboss.soa.esb.message.Properties;
 
 /**
  * Action class to attempt a suspend of a running jBPM process.
@@ -79,6 +85,16 @@
         final String contents = String.valueOf(messageRequest) ;
         ebwsServer.logMessage(contents) ;
         
+        final Properties props = message.getProperties() ;
+        final String wsaMessageID = (String) props.getProperty(Environment.WSA_MESSAGE_ID) ;
+        log(ebwsServer, wsaMessageID) ;
+        
+        final String[] relatesTo = (String[]) props.getProperty(Environment.WSA_RELATES_TO) ;
+        log(ebwsServer, relatesTo) ;
+        
+        final String[] relationshipType = (String[]) props.getProperty(Environment.WSA_RELATIONSHIP_TYPE) ;
+        log(ebwsServer, relationshipType) ;
+        
         final String response = (message.getBody().get(EBWSUtil.ERROR) != null ? EBWSUtil.INVALID_RESPONSE : EBWSUtil.VALID_RESPONSE) ;
         ebwsServer.logMessage(response) ;
         
@@ -92,7 +108,25 @@
         }
         return message;
     }
-    
+
+    private static void log(final EBWSServerMBean server, final String message)
+    {
+        if (message != null)
+        {
+            server.logMessage(message) ;
+        }
+    }
+
+    private static void log(final EBWSServerMBean server, final String[] messages)
+    {
+        final int numMessages = (messages == null ? 0 : messages.length) ;
+        if (numMessages > 0)
+        {
+            final Set<String> messageSet = new TreeSet<String>(Arrays.asList(messages)) ;
+            log(server, messageSet.toString()) ;
+        }
+    }
+
     public void processException(final Message message, final Throwable th)
     {
     }




More information about the jboss-svn-commits mailing list