[jboss-svn-commits] JBL Code SVN: r17042 - in labs/jbossesb/branches/JBESB_4_2_1_GA_CP: product/rosetta/src/org/jboss/soa/esb/addressing and 5 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed Dec 5 13:01:06 EST 2007
Author: kevin.conner at jboss.com
Date: 2007-12-05 13:01:06 -0500 (Wed, 05 Dec 2007)
New Revision: 17042
Added:
labs/jbossesb/branches/JBESB_4_2_1_GA_CP/qa/junit/src/org/jboss/soa/esb/epr/Service4Action.java
Modified:
labs/jbossesb/branches/JBESB_4_2_1_GA_CP/product/rosetta/src/org/jboss/internal/soa/esb/addressing/helpers/CallHelper.java
labs/jbossesb/branches/JBESB_4_2_1_GA_CP/product/rosetta/src/org/jboss/internal/soa/esb/addressing/helpers/EPRHelper.java
labs/jbossesb/branches/JBESB_4_2_1_GA_CP/product/rosetta/src/org/jboss/soa/esb/addressing/PortReference.java
labs/jbossesb/branches/JBESB_4_2_1_GA_CP/product/rosetta/src/org/jboss/soa/esb/addressing/eprs/LogicalEPR.java
labs/jbossesb/branches/JBESB_4_2_1_GA_CP/product/rosetta/src/org/jboss/soa/esb/client/ServiceInvoker.java
labs/jbossesb/branches/JBESB_4_2_1_GA_CP/product/rosetta/tests/src/org/jboss/soa/esb/addressing/eprs/LogicalEPRUnitTest.java
labs/jbossesb/branches/JBESB_4_2_1_GA_CP/product/rosetta/tests/src/org/jboss/soa/esb/addressing/tests/CallUnitTest.java
labs/jbossesb/branches/JBESB_4_2_1_GA_CP/qa/junit/src/org/jboss/soa/esb/epr/LogicalEPRUnitTest.java
labs/jbossesb/branches/JBESB_4_2_1_GA_CP/qa/junit/src/org/jboss/soa/esb/epr/deployment.xml
labs/jbossesb/branches/JBESB_4_2_1_GA_CP/qa/junit/src/org/jboss/soa/esb/epr/jboss-esb.xml
labs/jbossesb/branches/JBESB_4_2_1_GA_CP/qa/junit/src/org/jboss/soa/esb/epr/jms-service.xml
Log:
Fixed extension processing/logical EPR bridge: JBESB-1395
Modified: labs/jbossesb/branches/JBESB_4_2_1_GA_CP/product/rosetta/src/org/jboss/internal/soa/esb/addressing/helpers/CallHelper.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_2_1_GA_CP/product/rosetta/src/org/jboss/internal/soa/esb/addressing/helpers/CallHelper.java 2007-12-05 17:59:47 UTC (rev 17041)
+++ labs/jbossesb/branches/JBESB_4_2_1_GA_CP/product/rosetta/src/org/jboss/internal/soa/esb/addressing/helpers/CallHelper.java 2007-12-05 18:01:06 UTC (rev 17042)
@@ -23,11 +23,14 @@
import java.net.URI;
import java.net.URISyntaxException;
+import java.util.ArrayList;
+import java.util.List;
import org.jboss.internal.soa.esb.assertion.AssertArgument;
import org.jboss.soa.esb.MarshalException;
import org.jboss.soa.esb.UnmarshalException;
import org.jboss.soa.esb.addressing.Call;
+import org.jboss.soa.esb.addressing.PortReference;
import org.jboss.soa.esb.addressing.XMLUtil;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
@@ -122,28 +125,30 @@
Call call = new Call();
NodeList nl = header.getChildNodes();
+ final List<Node> extensions = new ArrayList<Node>() ;
for (int i = 0; i < nl.getLength(); i++)
{
Node n = nl.item(i);
-
- if ((n.getPrefix() != null) && (n.getLocalName() != null))
+ if (!(n instanceof Element))
{
- if (n.getPrefix().equals(XMLUtil.WSA_PREFIX) && (n.getLocalName().equals(XMLUtil.TO_TAG)))
+ continue ;
+ }
+ if (XMLUtil.WSA_NAMESPACE_URI.equals(n.getNamespaceURI()))
+ {
+ final String name = n.getLocalName() ;
+ if (XMLUtil.TO_TAG.equals(name))
{
call.setTo(EPRHelper.fromXML((Element) header, true));
}
-
- if (n.getPrefix().equals(XMLUtil.WSA_PREFIX) && (n.getLocalName().equals(XMLUtil.FROM_TAG)))
+ else if (XMLUtil.FROM_TAG.equals(name))
{
call.setFrom(EPRHelper.fromXML((Element) n, false));
}
-
- if (n.getPrefix().equals(XMLUtil.WSA_PREFIX) && (n.getLocalName().equals(XMLUtil.REPLY_TO_TAG)))
+ else if (XMLUtil.REPLY_TO_TAG.equals(name))
{
call.setReplyTo(EPRHelper.fromXML((Element) n, false));
}
-
- if (n.getPrefix().equals(XMLUtil.WSA_PREFIX) && (n.getLocalName().equals(XMLUtil.RELATES_TO_TAG)))
+ else if (XMLUtil.RELATES_TO_TAG.equals(name))
{
try
{
@@ -160,13 +165,11 @@
+ "' has invalid content", ex);
}
}
-
- if (n.getPrefix().equals(XMLUtil.WSA_PREFIX) && (n.getLocalName().equals(XMLUtil.FAULT_TO_TAG)))
+ else if (XMLUtil.FAULT_TO_TAG.equals(name))
{
call.setFaultTo(EPRHelper.fromXML((Element) n, false));
}
-
- if (n.getPrefix().equals(XMLUtil.WSA_PREFIX) && (n.getLocalName().equals(XMLUtil.ACTION_TAG)))
+ else if (XMLUtil.ACTION_TAG.equals(name))
{
try
{
@@ -183,8 +186,7 @@
+ "' has invalid content", ex);
}
}
-
- if (n.getPrefix().equals(XMLUtil.WSA_PREFIX) && (n.getLocalName().equals(XMLUtil.MESSAGE_IDENTIFIER_TAG)))
+ else if (XMLUtil.MESSAGE_IDENTIFIER_TAG.equals(name))
{
try
{
@@ -202,9 +204,25 @@
+ "' has invalid content", ex);
}
}
+ else
+ {
+ extensions.add(n) ;
+ }
}
+ else
+ {
+ extensions.add(n) ;
+ }
}
+ if (extensions.size() > 0)
+ {
+ final PortReference to = call.getTo().getAddr() ;
+ for(Node node:extensions)
+ {
+ to.addExtension(node.getLocalName(), node.getPrefix(), node.getNamespaceURI(), node.getTextContent()) ;
+ }
+ }
return call;
}
Modified: labs/jbossesb/branches/JBESB_4_2_1_GA_CP/product/rosetta/src/org/jboss/internal/soa/esb/addressing/helpers/EPRHelper.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_2_1_GA_CP/product/rosetta/src/org/jboss/internal/soa/esb/addressing/helpers/EPRHelper.java 2007-12-05 17:59:47 UTC (rev 17041)
+++ labs/jbossesb/branches/JBESB_4_2_1_GA_CP/product/rosetta/src/org/jboss/internal/soa/esb/addressing/helpers/EPRHelper.java 2007-12-05 18:01:06 UTC (rev 17042)
@@ -27,7 +27,9 @@
import org.jboss.soa.esb.MarshalException;
import org.jboss.soa.esb.UnmarshalException;
import org.jboss.soa.esb.addressing.EPR;
+import org.jboss.soa.esb.addressing.PortReference;
import org.jboss.soa.esb.addressing.XMLUtil;
+import org.jboss.soa.esb.addressing.PortReference.Extension;
import org.jboss.soa.esb.addressing.eprs.*;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
@@ -41,6 +43,7 @@
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.StringWriter;
+import java.util.List;
public class EPRHelper
{
@@ -342,7 +345,7 @@
else if (eprType.equals(FileEpr.type().toString()))
return new FileEpr(epr);
else if (eprType.equals(LogicalEPR.type().toString()))
- return new LogicalEPR(epr.getAddr());
+ return new LogicalEPR(epr);
else
return epr;
} else {
@@ -402,7 +405,7 @@
else if (eprType.equals(FileEpr.type().toString()))
return new FileEpr(epr, header);
else if (eprType.equals(LogicalEPR.type().toString()))
- return new LogicalEPR(epr.getAddr());
+ return new LogicalEPR(epr, header);
else
return epr;
} else {
@@ -410,4 +413,29 @@
}
}
+ /**
+ * Create a copy of the EPR, including the specified extensions.
+ * @param epr The current EPR.
+ * @param extensions The extensions to add.
+ * @return The EPR copy.
+ */
+ public static EPR copyEPR(final EPR epr, final List<Extension> extensions)
+ {
+ final EPR copyEPR = new EPR(epr.getAddr().copy()) ;
+ final PortReference addr = copyEPR.getAddr() ;
+ if (extensions != null)
+ {
+ for(Extension extension: extensions)
+ {
+ if (!(EPR_TYPE.equals(extension.getTag()) &&
+ XMLUtil.JBOSSESB_NAMESPACE_URI.equals(extension.getURI()) &&
+ XMLUtil.JBOSSESB_PREFIX.equals(extension.getPrefix())))
+ {
+ addr.addExtension(extension) ;
+ }
+ }
+ }
+ return copyEPR ;
+ }
+
}
\ No newline at end of file
Modified: labs/jbossesb/branches/JBESB_4_2_1_GA_CP/product/rosetta/src/org/jboss/soa/esb/addressing/PortReference.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_2_1_GA_CP/product/rosetta/src/org/jboss/soa/esb/addressing/PortReference.java 2007-12-05 17:59:47 UTC (rev 17041)
+++ labs/jbossesb/branches/JBESB_4_2_1_GA_CP/product/rosetta/src/org/jboss/soa/esb/addressing/PortReference.java 2007-12-05 18:01:06 UTC (rev 17042)
@@ -107,6 +107,11 @@
_extensions.add(new Extension(tag, prefix, uri, value, parent));
}
+ public void addExtensions(final List<Extension> extensions)
+ {
+ _extensions.addAll(extensions);
+ }
+
// placeholders only
public void addPortType(String qName)
@@ -142,6 +147,11 @@
return _extensions.iterator();
}
+ public List<Extension> getAllExtensions()
+ {
+ return _extensions;
+ }
+
public void clearExtensions()
{
_extensions.clear();
@@ -162,8 +172,9 @@
* But should be ok here because the invariants are known and field-wise
* copying should therefore be safe.
*/
-
- return (PortReference) clone();
+ final PortReference clone = (PortReference)clone() ;
+ clone._extensions = new LinkedList<Extension>(_extensions) ;
+ return clone;
}
catch (Exception ex)
{
Modified: labs/jbossesb/branches/JBESB_4_2_1_GA_CP/product/rosetta/src/org/jboss/soa/esb/addressing/eprs/LogicalEPR.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_2_1_GA_CP/product/rosetta/src/org/jboss/soa/esb/addressing/eprs/LogicalEPR.java 2007-12-05 17:59:47 UTC (rev 17041)
+++ labs/jbossesb/branches/JBESB_4_2_1_GA_CP/product/rosetta/src/org/jboss/soa/esb/addressing/eprs/LogicalEPR.java 2007-12-05 18:01:06 UTC (rev 17042)
@@ -25,6 +25,7 @@
import org.jboss.soa.esb.addressing.EPR;
import org.jboss.soa.esb.addressing.PortReference;
import org.jboss.soa.esb.client.ServiceInvoker;
+import org.w3c.dom.Element;
import java.net.URI;
import java.net.URISyntaxException;
@@ -47,14 +48,22 @@
}
public LogicalEPR(PortReference addr) {
- this(URI.create(((PortReference)AssertArgument.isNotNull(addr, "addr")).getAddress()));
+ this(new EPR(addr)) ;
}
public LogicalEPR(URI uri) {
- super((URI)AssertArgument.isNotNull(uri, "uri"));
- assertValidLogicalURI(uri);
+ this(new EPR(uri)) ;
}
+ public LogicalEPR(final EPR epr) {
+ super(epr);
+ assertValidLogicalURI(URI.create(((PortReference)AssertArgument.isNotNull(epr.getAddr(), "addr")).getAddress()));
+ }
+
+ public LogicalEPR(final EPR epr, final Element header) {
+ this(epr);
+ }
+
public LogicalEPR(String serviceCategory, String serviceName) {
super(toLogicalURI(serviceCategory, serviceName));
}
@@ -86,7 +95,7 @@
public ServiceInvoker getServiceInvoker() throws MessageDeliverException {
if(serviceInvoker == null) {
- serviceInvoker = new ServiceInvoker(toService());
+ serviceInvoker = new ServiceInvoker(toService(), getAddr().getAllExtensions());
}
return serviceInvoker;
}
Modified: labs/jbossesb/branches/JBESB_4_2_1_GA_CP/product/rosetta/src/org/jboss/soa/esb/client/ServiceInvoker.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_2_1_GA_CP/product/rosetta/src/org/jboss/soa/esb/client/ServiceInvoker.java 2007-12-05 17:59:47 UTC (rev 17041)
+++ labs/jbossesb/branches/JBESB_4_2_1_GA_CP/product/rosetta/src/org/jboss/soa/esb/client/ServiceInvoker.java 2007-12-05 18:01:06 UTC (rev 17042)
@@ -30,6 +30,7 @@
import org.jboss.soa.esb.Service;
import org.jboss.soa.esb.addressing.EPR;
import org.jboss.soa.esb.addressing.MalformedEPRException;
+import org.jboss.soa.esb.addressing.PortReference;
import org.jboss.soa.esb.addressing.util.DefaultReplyTo;
import org.jboss.soa.esb.common.Configuration;
import org.jboss.soa.esb.couriers.Courier;
@@ -72,11 +73,15 @@
/**
* The target service.
*/
- private Service service;
+ private final Service service;
/**
+ * The list of any extensions to be added to the target address.
+ */
+ private final List<PortReference.Extension> extensions ;
+ /**
* Load balancer.
*/
- private LoadBalancePolicy loadBalancer;
+ private final LoadBalancePolicy loadBalancer;
/**
* Cluster info.
*/
@@ -104,8 +109,20 @@
* @throws MessageDeliverException Failed to deliver message to endpoint.
*/
public ServiceInvoker(Service service) throws MessageDeliverException {
+ this(service, null) ;
+ }
+
+ /**
+ * Public constructor.
+ *
+ * @param service The Service to which this instance will deliver messages.
+ * @param extensions The extensions to be added to the target service.
+ * @throws MessageDeliverException Failed to deliver message to endpoint.
+ */
+ public ServiceInvoker(final Service service, final List<PortReference.Extension> extensions) throws MessageDeliverException {
AssertArgument.isNotNull(service, "service");
this.service = service;
+ this.extensions = extensions ;
String lbClass = Configuration.getLoadBalancerPolicy();
registryCacheLife = Long.valueOf(Configuration.getRegistryCacheLife());
try {
@@ -399,19 +416,28 @@
private Message attemptDelivery(Message message, EPR epr) throws FaultMessageException, MalformedEPRException {
TwoWayCourier courier = null;
+ final EPR targetEPR ;
+ if ((extensions != null) && (extensions.size() > 0))
+ {
+ targetEPR = EPRHelper.copyEPR(epr, extensions) ;
+ }
+ else
+ {
+ targetEPR = epr ;
+ }
// Get a courier for the EPR...
try {
- courier = getCourier(epr);
+ courier = getCourier(targetEPR);
} catch (CourierException e) {
- logger.debug("Courier lookup failed for EPR [" + epr + "] for Service [" + service + "] and Message ["+message.getHeader()+"].", e);
+ logger.debug("Courier lookup failed for EPR [" + targetEPR + "] for Service [" + service + "] and Message ["+message.getHeader()+"].", e);
} catch (MalformedEPRException e) {
// probably an ESB-unaware EPR in the registry!!
- logger.info("Badly formed EPR [" + epr + "] for Service [" + service + "] and Message ["+message.getHeader()+"]." + e.getMessage());
+ logger.info("Badly formed EPR [" + targetEPR + "] for Service [" + service + "] and Message ["+message.getHeader()+"]." + e.getMessage());
throw e;
} catch (Throwable t) {
- logger.warn("Unexpected exception during Courier lookup for EPR [" + epr + "] for Service [" + service + "] and Message ["+message.getHeader()+"].", t);
+ logger.warn("Unexpected exception during Courier lookup for EPR [" + targetEPR + "] for Service [" + service + "] and Message ["+message.getHeader()+"].", t);
}
// Try delivering the message using the courier we just looked up....
@@ -424,14 +450,14 @@
try {
EPR replyToEPR = message.getHeader().getCall().getReplyTo();
- message.getHeader().getCall().setTo(epr);
+ message.getHeader().getCall().setTo(targetEPR);
if (synchronous) {
if (replyToEPR == null)
- replyToEPR = getReplyToAddress(epr);
+ replyToEPR = getReplyToAddress(targetEPR);
if (replyToEPR == null) {
- logger.debug("Not using epr [" + epr + "] for Service [" + service + "] and Message ["+message.getHeader()+"]. No reply-to address available for synchronous response.");
+ logger.debug("Not using epr [" + targetEPR + "] for Service [" + service + "] and Message ["+message.getHeader()+"]. No reply-to address available for synchronous response.");
return null;
}
message.getHeader().getCall().setReplyTo(replyToEPR);
@@ -451,14 +477,14 @@
} catch (FaultMessageException e) {
throw e;
} catch (CourierException e) {
- logger.debug("Badly formed EPR [" + epr + "] for Service [" + service + "] and Message ["+message.getHeader()+"]. " + e.getMessage());
+ logger.debug("Badly formed EPR [" + targetEPR + "] for Service [" + service + "] and Message ["+message.getHeader()+"]. " + e.getMessage());
} catch (MalformedEPRException e) {
// Hmmmm???... Can this really happen? The Courier has already been created. Haven't we already validated the EPR during the Courier lookup (above)??
- logger.warn("Unexpected error. Badly formed EPR [" + epr + "] for Service [" + service + "]. But the EPR has already been validated!!");
+ logger.warn("Unexpected error. Badly formed EPR [" + targetEPR + "] for Service [" + service + "]. But the EPR has already been validated!!");
throw e;
} catch (Throwable t) {
- logger.warn("Unexpected exception during attempted message delivery over Courier for EPR [" + epr + "] for Service [" + service + "] and Message ["+message.getHeader()+"].", t);
+ logger.warn("Unexpected exception during attempted message delivery over Courier for EPR [" + targetEPR + "] for Service [" + service + "] and Message ["+message.getHeader()+"].", t);
} finally {
// TODO: So does this mean that Couriers are stateful? If so, do we need to synchronize on using them??
CourierUtil.cleanCourier(courier);
Modified: labs/jbossesb/branches/JBESB_4_2_1_GA_CP/product/rosetta/tests/src/org/jboss/soa/esb/addressing/eprs/LogicalEPRUnitTest.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_2_1_GA_CP/product/rosetta/tests/src/org/jboss/soa/esb/addressing/eprs/LogicalEPRUnitTest.java 2007-12-05 17:59:47 UTC (rev 17041)
+++ labs/jbossesb/branches/JBESB_4_2_1_GA_CP/product/rosetta/tests/src/org/jboss/soa/esb/addressing/eprs/LogicalEPRUnitTest.java 2007-12-05 18:01:06 UTC (rev 17042)
@@ -67,7 +67,17 @@
assertEquals("logical:My%20/%20Category#My%20/%20Name", epr.getAddr().getAddress());
assertEquals("My / Category", epr.toService().getCategory());
assertEquals("My / Name", epr.toService().getName());
+
+ epr = new LogicalEPR(new EPR(URI.create("logical:My%20/%20Category#My%20/%20Name")));
+ assertEquals("logical:My%20/%20Category#My%20/%20Name", epr.getAddr().getAddress());
+ assertEquals("My / Category", epr.toService().getCategory());
+ assertEquals("My / Name", epr.toService().getName());
+ epr = new LogicalEPR(new EPR(new PortReference("logical:My%20/%20Category#My%20/%20Name")));
+ assertEquals("logical:My%20/%20Category#My%20/%20Name", epr.getAddr().getAddress());
+ assertEquals("My / Category", epr.toService().getCategory());
+ assertEquals("My / Name", epr.toService().getName());
+
epr = new LogicalEPR();
epr.setAddr(new PortReference("logical:My%20/%20Category#My%20/%20Name"));
assertEquals("logical:My%20/%20Category#My%20/%20Name", epr.getAddr().getAddress());
@@ -97,6 +107,20 @@
}
try {
+ new LogicalEPR(new EPR(URI.create("xxxx:a#b")));
+ fail("Expected IllegalArgumentException");
+ } catch (IllegalArgumentException e) {
+ assertEquals("'xxxx:a#b' is not a valid URI for a Logical EPR - URI scheme must be 'logical'.", e.getMessage());
+ }
+
+ try {
+ new LogicalEPR(new EPR(new PortReference("logical://a#b")));
+ fail("Expected IllegalArgumentException");
+ } catch (IllegalArgumentException e) {
+ assertEquals("'logical://a#b' is not a valid URI for a Logical EPR - URI must be opaque.", e.getMessage());
+ }
+
+ try {
LogicalEPR epr = new LogicalEPR();
epr.setAddr(new PortReference("logical:a"));
fail("Expected IllegalArgumentException");
@@ -114,29 +138,23 @@
}
public void test_Serialize_Deserialize()
+ throws Exception
{
Message msg = MessageFactory.getInstance().getMessage(MessageType.JBOSS_XML);
- try
- {
- EPR epr = new LogicalEPR(new PortReference("logical:a#b"));
+ EPR epr = new LogicalEPR(new PortReference("logical:a#b"));
- msg.getHeader().getCall().setTo(epr);
+ msg.getHeader().getCall().setTo(epr);
- final String xmlRepresentation = XMLMessageUnitTest.msgToXML((MessageImpl)msg) ;
+ final String xmlRepresentation = XMLMessageUnitTest.msgToXML((MessageImpl)msg) ;
- final MessageImpl nImpl = XMLMessageUnitTest.msgFromXML(xmlRepresentation) ;
+ final MessageImpl nImpl = XMLMessageUnitTest.msgFromXML(xmlRepresentation) ;
- EPR theEpr = nImpl.getHeader().getCall().getTo();
+ EPR theEpr = nImpl.getHeader().getCall().getTo();
- assertTrue("Expected a Logical EPR", theEpr instanceof LogicalEPR);
+ assertTrue("Expected a Logical EPR", theEpr instanceof LogicalEPR);
- assertEquals("logical:a#b", theEpr.getAddr().getAddress());
- }
- catch (Exception ex)
- {
- fail(ex.toString());
- }
+ assertEquals("logical:a#b", theEpr.getAddr().getAddress());
}
private MockCourier courier1;
Modified: labs/jbossesb/branches/JBESB_4_2_1_GA_CP/product/rosetta/tests/src/org/jboss/soa/esb/addressing/tests/CallUnitTest.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_2_1_GA_CP/product/rosetta/tests/src/org/jboss/soa/esb/addressing/tests/CallUnitTest.java 2007-12-05 17:59:47 UTC (rev 17041)
+++ labs/jbossesb/branches/JBESB_4_2_1_GA_CP/product/rosetta/tests/src/org/jboss/soa/esb/addressing/tests/CallUnitTest.java 2007-12-05 18:01:06 UTC (rev 17042)
@@ -23,11 +23,18 @@
package org.jboss.soa.esb.addressing.tests;
import java.net.URI;
+import java.net.URISyntaxException;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
import junit.framework.TestCase;
+import org.jboss.internal.soa.esb.addressing.helpers.CallHelper;
import org.jboss.soa.esb.addressing.Call;
import org.jboss.soa.esb.addressing.EPR;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
/**
* Unit tests for the Class class.
@@ -192,4 +199,46 @@
}
}
+ public void testSerialisation()
+ throws Exception
+ {
+ final Call call = new Call() ;
+ call.setAction(new URI("urn:action")) ;
+ call.setFaultTo(getEPR("urn:faultTo", "faultToTag", "faultToValue")) ;
+ call.setFrom(getEPR("urn:from", "fromTag", "fromValue")) ;
+ call.setMessageID(new URI("urn:messageID")) ;
+ call.setRelatesTo(new URI("urn:relatesTo")) ;
+ call.setReplyTo(getEPR("urn:replyTo", "replyToTag", "replyToValue")) ;
+ call.setTo(getEPR("urn:to", "toTag", "toValue")) ;
+
+ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+
+ factory.setNamespaceAware(true);
+
+ DocumentBuilder builder = factory.newDocumentBuilder();
+ Document doc = builder.newDocument();
+ Element header = doc.createElement("HEADER");
+
+ doc.appendChild(header);
+
+ CallHelper.toXML(call, doc, header);
+
+ final Call result = CallHelper.fromXML(header) ;
+
+ assertEquals("Action URI", call.getAction(), result.getAction()) ;
+ assertEquals("FaultTo EPR", call.getFaultTo(), result.getFaultTo()) ;
+ assertEquals("From EPR", call.getFrom(), result.getFrom()) ;
+ assertEquals("MessageID URI", call.getMessageID(), result.getMessageID()) ;
+ assertEquals("RelatesTo URI", call.getRelatesTo(), result.getRelatesTo()) ;
+ assertEquals("ReplyTo URI", call.getReplyTo(), result.getReplyTo()) ;
+ assertEquals("To URI", call.getTo(), result.getTo()) ;
+ }
+
+ private EPR getEPR(final String uri, final String tag, final String value)
+ throws URISyntaxException
+ {
+ final EPR epr = new EPR(new URI(uri)) ;
+ epr.getAddr().addExtension(tag, value) ;
+ return epr ;
+ }
}
Modified: labs/jbossesb/branches/JBESB_4_2_1_GA_CP/qa/junit/src/org/jboss/soa/esb/epr/LogicalEPRUnitTest.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_2_1_GA_CP/qa/junit/src/org/jboss/soa/esb/epr/LogicalEPRUnitTest.java 2007-12-05 17:59:47 UTC (rev 17041)
+++ labs/jbossesb/branches/JBESB_4_2_1_GA_CP/qa/junit/src/org/jboss/soa/esb/epr/LogicalEPRUnitTest.java 2007-12-05 18:01:06 UTC (rev 17042)
@@ -21,6 +21,9 @@
import junit.framework.Test;
import org.jboss.soa.esb.TestUtils;
+import org.jboss.soa.esb.addressing.eprs.LogicalEPR;
+import org.jboss.soa.esb.message.Message;
+import org.jboss.soa.esb.message.format.MessageFactory;
import org.jboss.soa.esb.testutils.FileUtil;
import org.jboss.soa.esb.testutils.JMSUtil;
import org.jboss.soa.esb.util.DeploymentArchive;
@@ -63,6 +66,25 @@
assertEquals("org.jboss.soa.esb.actions.ActionProcessingException: Service2Action fault", actualOutput);
}
+ public void test_logical_extension() throws Exception {
+ final LogicalEPR logicalEPR = new LogicalEPR("MyServiceCategory", "MyService4") ;
+ final String tag = "TestTag" ;
+ final String prefix = "TestPrefix" ;
+ final String value = "TestValue" ;
+
+ logicalEPR.getAddr().addExtension(tag, prefix, Service4Action.TEST_URI, value) ;
+
+ final Message message = MessageFactory.getInstance().getMessage() ;
+ message.getBody().add("Incoming Test Payload") ;
+ logicalEPR.getServiceInvoker().deliverAsync(message) ;
+
+ assertTrue("Test output file '" + TEST_OUTPUT_FILE + "' not dropped.", TestUtils.waitForFile(TEST_OUTPUT_FILE.getAbsolutePath()));
+
+ final String actualOutput = FileUtil.readStream(new FileInputStream(TEST_OUTPUT_FILE));
+ final String expectedOutput = "Prefix " + prefix + " Tag " + tag + " value " + value ;
+ assertEquals(expectedOutput, actualOutput);
+ }
+
public static Test suite() throws Exception {
DeploymentArchive deployment = new DeploymentArchive("LogicalEPRUnitTest.esb");
@@ -73,6 +95,7 @@
deployment.addEntry(Service2Action.class);
deployment.addEntry(Service3Action1.class);
deployment.addEntry(Service3Action2.class);
+ deployment.addEntry(Service4Action.class);
deployment.create();
Added: labs/jbossesb/branches/JBESB_4_2_1_GA_CP/qa/junit/src/org/jboss/soa/esb/epr/Service4Action.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_2_1_GA_CP/qa/junit/src/org/jboss/soa/esb/epr/Service4Action.java (rev 0)
+++ labs/jbossesb/branches/JBESB_4_2_1_GA_CP/qa/junit/src/org/jboss/soa/esb/epr/Service4Action.java 2007-12-05 18:01:06 UTC (rev 17042)
@@ -0,0 +1,70 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, JBoss Inc., and others contributors as indicated
+ * by the @authors tag. All rights reserved.
+ * See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ * This program is distributed in the hope that it will be useful, but WITHOUT A
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+ * You should have received a copy of the GNU Lesser General Public License,
+ * v.2.1 along with this distribution; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301, USA.
+ *
+ * (C) 2005-2006, JBoss Inc.
+ */
+package org.jboss.soa.esb.epr;
+
+import java.util.Iterator;
+
+import org.jboss.soa.esb.actions.AbstractActionPipelineProcessor;
+import org.jboss.soa.esb.actions.ActionProcessingException;
+import org.jboss.soa.esb.addressing.Call;
+import org.jboss.soa.esb.addressing.EPR;
+import org.jboss.soa.esb.addressing.PortReference.Extension;
+import org.jboss.soa.esb.helpers.ConfigTree;
+import org.jboss.soa.esb.listeners.message.MessageDeliverException;
+import org.jboss.soa.esb.message.Message;
+
+/**
+ * @author <a href="mailto:Kevin.Conner at jboss.com">Kevin Conner</a>
+ */
+public class Service4Action extends AbstractActionPipelineProcessor
+{
+ public static final String TEST_URI = "http://labs.jboss.org/jbossesb/testing/test-uri" ;
+
+ public Service4Action(final ConfigTree config)
+ throws MessageDeliverException
+ {
+ }
+
+ public Message process(final Message message)
+ throws ActionProcessingException
+ {
+ final Call call = message.getHeader().getCall() ;
+ final EPR toEPR = call.getTo() ;
+ final Iterator<Extension> extensions = toEPR.getAddr().getExtensions() ;
+ if (extensions.hasNext())
+ {
+ final StringBuilder sb = new StringBuilder() ;
+ do
+ {
+ final Extension extension = extensions.next() ;
+ if (TEST_URI.equals(extension.getURI()))
+ {
+ sb.append("Prefix " + extension.getPrefix()) ;
+ sb.append(" Tag " + extension.getTag()) ;
+ sb.append(" value " + extension.getValue()) ;
+ }
+ }
+ while(extensions.hasNext()) ;
+ message.getBody().add(sb.toString()) ;
+ }
+
+ return message;
+ }
+}
\ No newline at end of file
Property changes on: labs/jbossesb/branches/JBESB_4_2_1_GA_CP/qa/junit/src/org/jboss/soa/esb/epr/Service4Action.java
___________________________________________________________________
Name: svn:keywords
+ Rev Date
Name: svn:eol-style
+ native
Modified: labs/jbossesb/branches/JBESB_4_2_1_GA_CP/qa/junit/src/org/jboss/soa/esb/epr/deployment.xml
===================================================================
--- labs/jbossesb/branches/JBESB_4_2_1_GA_CP/qa/junit/src/org/jboss/soa/esb/epr/deployment.xml 2007-12-05 17:59:47 UTC (rev 17041)
+++ labs/jbossesb/branches/JBESB_4_2_1_GA_CP/qa/junit/src/org/jboss/soa/esb/epr/deployment.xml 2007-12-05 18:01:06 UTC (rev 17042)
@@ -3,4 +3,5 @@
<depends>jboss.esb.qa.junit.destination:service=Queue,name=LogicalEPRUnitTest_service1</depends>
<depends>jboss.esb.qa.junit.destination:service=Queue,name=LogicalEPRUnitTest_service2</depends>
<depends>jboss.esb.qa.junit.destination:service=Queue,name=LogicalEPRUnitTest_service3</depends>
+ <depends>jboss.esb.qa.junit.destination:service=Queue,name=LogicalEPRUnitTest_service4</depends>
</jbossesb-deployment>
Modified: labs/jbossesb/branches/JBESB_4_2_1_GA_CP/qa/junit/src/org/jboss/soa/esb/epr/jboss-esb.xml
===================================================================
--- labs/jbossesb/branches/JBESB_4_2_1_GA_CP/qa/junit/src/org/jboss/soa/esb/epr/jboss-esb.xml 2007-12-05 17:59:47 UTC (rev 17041)
+++ labs/jbossesb/branches/JBESB_4_2_1_GA_CP/qa/junit/src/org/jboss/soa/esb/epr/jboss-esb.xml 2007-12-05 18:01:06 UTC (rev 17042)
@@ -20,6 +20,9 @@
<jms-bus busid="service3">
<jms-message-filter dest-type="QUEUE" dest-name="queue/LogicalEPRUnitTest_service3"/>
</jms-bus>
+ <jms-bus busid="service4">
+ <jms-message-filter dest-type="QUEUE" dest-name="queue/LogicalEPRUnitTest_service4"/>
+ </jms-bus>
</jms-provider>
</providers>
@@ -71,6 +74,18 @@
</actions>
</service>
+ <service category="MyServiceCategory" name="MyService4" description="Service 4">
+ <listeners>
+ <jms-listener name="JMS-ESBListener" busidref="service4"/>
+ </listeners>
+ <actions>
+ <action name="Service4Action" class="org.jboss.soa.esb.epr.Service4Action" />
+ <action name="testStore" class="org.jboss.soa.esb.actions.StoreMessageToFile">
+ <property name="filename" value="LogicalEPRUnitTest.log" />
+ <property name="raw" value="true"/>
+ </action>
+ </actions>
+ </service>
</services>
</jbossesb>
Modified: labs/jbossesb/branches/JBESB_4_2_1_GA_CP/qa/junit/src/org/jboss/soa/esb/epr/jms-service.xml
===================================================================
--- labs/jbossesb/branches/JBESB_4_2_1_GA_CP/qa/junit/src/org/jboss/soa/esb/epr/jms-service.xml 2007-12-05 17:59:47 UTC (rev 17041)
+++ labs/jbossesb/branches/JBESB_4_2_1_GA_CP/qa/junit/src/org/jboss/soa/esb/epr/jms-service.xml 2007-12-05 18:01:06 UTC (rev 17042)
@@ -29,4 +29,11 @@
<depends>jboss.messaging:service=PostOffice</depends>
</mbean>
+ <mbean code="org.jboss.jms.server.destination.QueueService"
+ name="jboss.esb.qa.junit.destination:service=Queue,name=LogicalEPRUnitTest_service4"
+ xmbean-dd="xmdesc/Queue-xmbean.xml">
+ <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
+ <depends>jboss.messaging:service=PostOffice</depends>
+ </mbean>
+
</server>
\ No newline at end of file
More information about the jboss-svn-commits
mailing list