[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