[jboss-svn-commits] JBL Code SVN: r23838 - in labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta: src/org/jboss/soa/esb/client and 1 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed Nov 12 11:24:11 EST 2008
Author: kevin.conner at jboss.com
Date: 2008-11-12 11:24:11 -0500 (Wed, 12 Nov 2008)
New Revision: 23838
Added:
labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/tests/src/org/jboss/soa/esb/listeners/message/ServiceInvokerCallUnitTest.java
Modified:
labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/soa/esb/addressing/Call.java
labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/soa/esb/client/ServiceInvoker.java
Log:
Fix the To/ReplyTo EPR handling during delivery: JBESB-2183
Modified: labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/soa/esb/addressing/Call.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/soa/esb/addressing/Call.java 2008-11-12 15:50:14 UTC (rev 23837)
+++ labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/soa/esb/addressing/Call.java 2008-11-12 16:24:11 UTC (rev 23838)
@@ -94,9 +94,6 @@
public void setTo (EPR epr)
{
- if (epr == null)
- throw new IllegalArgumentException();
-
_to = epr;
}
Modified: labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/soa/esb/client/ServiceInvoker.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/soa/esb/client/ServiceInvoker.java 2008-11-12 15:50:14 UTC (rev 23837)
+++ labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/soa/esb/client/ServiceInvoker.java 2008-11-12 16:24:11 UTC (rev 23838)
@@ -30,6 +30,7 @@
import org.jboss.internal.soa.esb.assertion.AssertArgument;
import org.jboss.soa.esb.ConfigurationException;
import org.jboss.soa.esb.Service;
+import org.jboss.soa.esb.addressing.Call;
import org.jboss.soa.esb.addressing.EPR;
import org.jboss.soa.esb.addressing.MalformedEPRException;
import org.jboss.soa.esb.addressing.PortReference;
@@ -542,23 +543,24 @@
if (courier != null) {
// make sure the message header does not change when we exit
+ final Call call = message.getHeader().getCall() ;
+ final EPR currentToEpr = call.getTo() ;
+ final EPR currentReplyToEpr = call.getReplyTo() ;
- EPR currentEpr = message.getHeader().getCall().getTo();
-
try {
- EPR replyToEPR = message.getHeader().getCall().getReplyTo();
+ call.setTo(targetEPR);
- message.getHeader().getCall().setTo(targetEPR);
-
+ final EPR replyToEPR ;
if (synchronous) {
- if (replyToEPR == null)
- replyToEPR = getReplyToAddress(targetEPR);
+ replyToEPR = (currentReplyToEpr == null ? getReplyToAddress(targetEPR) : currentReplyToEpr) ;
if (replyToEPR == null) {
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);
+ call.setReplyTo(replyToEPR);
+ } else {
+ replyToEPR = null ;
}
if (courier.deliver(message)) {
if (synchronous) {
@@ -609,8 +611,8 @@
// put back the old To since we will have changed it.
- if (currentEpr != null)
- message.getHeader().getCall().setTo(currentEpr);
+ call.setTo(currentToEpr) ;
+ call.setReplyTo(currentReplyToEpr) ;
}
}
Copied: labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/tests/src/org/jboss/soa/esb/listeners/message/ServiceInvokerCallUnitTest.java (from rev 23837, labs/jbossesb/branches/JBESB_4_2_1_GA_CP/product/rosetta/tests/src/org/jboss/soa/esb/listeners/message/ServiceInvokerCallUnitTest.java)
===================================================================
--- labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/tests/src/org/jboss/soa/esb/listeners/message/ServiceInvokerCallUnitTest.java (rev 0)
+++ labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/tests/src/org/jboss/soa/esb/listeners/message/ServiceInvokerCallUnitTest.java 2008-11-12 16:24:11 UTC (rev 23838)
@@ -0,0 +1,297 @@
+/*
+ * 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.listeners.message;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.fail;
+
+import java.net.URI;
+
+import junit.framework.JUnit4TestAdapter;
+
+import org.jboss.internal.soa.esb.couriers.MockCourier;
+import org.jboss.internal.soa.esb.couriers.MockCourierFactory;
+import org.jboss.internal.soa.esb.services.registry.MockRegistry;
+import org.jboss.soa.esb.addressing.EPR;
+import org.jboss.soa.esb.addressing.eprs.JMSEpr;
+import org.jboss.soa.esb.client.ServiceInvoker;
+import org.jboss.soa.esb.message.Message;
+import org.jboss.soa.esb.message.format.MessageFactory;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+/**
+ * Tests for Call modifications while invoking through ServiceInvoker.
+ *
+ * @author <a href="mailto:kevin.conner at jboss.com">Kevin Conner</a>
+ */
+public class ServiceInvokerCallUnitTest
+{
+ private EPR deliverEPR ;
+ private EPR failEPR ;
+ private EPR pickupEPR ;
+ private JMSEpr jmsDeliverEPR ;
+ private MockCourier deliverCourier ;
+ private MockCourier failCourier ;
+ private Message responseMessage ;
+
+ @Before
+ public void setUp()
+ throws Exception
+ {
+ MockCourierFactory.install() ;
+ MockRegistry.install() ;
+
+ deliverEPR = new EPR(new URI("test:deliver")) ;
+ failEPR = new EPR(new URI("test:fail")) ;
+ pickupEPR = new EPR(new URI("test:pickup")) ;
+ jmsDeliverEPR = new JMSEpr(JMSEpr.QUEUE_TYPE, "deliver", "ConnectionFactory") ;
+
+ deliverCourier = new MockCourier(true);
+ failCourier = new MockCourier(false);
+ responseMessage = MessageFactory.getInstance().getMessage() ;
+ deliverCourier.pickupMessage = responseMessage ;
+
+ MockRegistry.register("test", "deliver", deliverEPR, deliverCourier);
+ MockRegistry.register("test", "fail", failEPR, failCourier);
+ MockRegistry.register("test", "jmsdeliver", jmsDeliverEPR, deliverCourier);
+
+ final EPR deadLetterEPR = new EPR(new URI("internal:DLQ")) ;
+ MockRegistry.register(ServiceInvoker.INTERNAL_SERVICE_CATEGORY, ServiceInvoker.DEAD_LETTER_SERVICE_NAME, deadLetterEPR, deliverCourier);
+ }
+
+ @After
+ public void tearDown()
+ throws Exception
+ {
+ MockRegistry.uninstall() ;
+ MockCourierFactory.uninstall() ;
+ }
+
+ @Test
+ public void testNullSyncEPRs()
+ throws Exception
+ {
+ final Message message = MessageFactory.getInstance().getMessage() ;
+
+ final ServiceInvoker si = new ServiceInvoker("test", "jmsdeliver") ;
+ final Message resp = si.deliverSync(message, 10) ;
+
+ assertEquals("Response message", resp, responseMessage) ;
+
+ assertNull("Call To EPR", message.getHeader().getCall().getTo()) ;
+ assertNull("Call ReplyTo EPR", message.getHeader().getCall().getReplyTo()) ;
+ }
+
+ @Test
+ public void testNonNullToSyncEPRs()
+ throws Exception
+ {
+ final Message message = MessageFactory.getInstance().getMessage() ;
+ message.getHeader().getCall().setTo(deliverEPR) ;
+
+ final ServiceInvoker si = new ServiceInvoker("test", "jmsdeliver") ;
+ final Message resp = si.deliverSync(message, 10) ;
+
+ assertEquals("Response message", resp, responseMessage) ;
+
+ assertEquals("Call To EPR", deliverEPR, message.getHeader().getCall().getTo()) ;
+ assertNull("Call ReplyTo EPR", message.getHeader().getCall().getReplyTo()) ;
+ }
+
+ @Test
+ public void testNonNullSyncEPRs()
+ throws Exception
+ {
+ final Message message = MessageFactory.getInstance().getMessage() ;
+ message.getHeader().getCall().setTo(deliverEPR) ;
+ message.getHeader().getCall().setReplyTo(pickupEPR) ;
+
+ final ServiceInvoker si = new ServiceInvoker("test", "jmsdeliver") ;
+ final Message resp = si.deliverSync(message, 10) ;
+
+ assertEquals("Response message", resp, responseMessage) ;
+
+ assertEquals("Call To EPR", deliverEPR, message.getHeader().getCall().getTo()) ;
+ assertEquals("Call ReplyTo EPR", pickupEPR, message.getHeader().getCall().getReplyTo()) ;
+ }
+
+ @Test
+ public void testNullAsyncEPRs()
+ throws Exception
+ {
+ final Message message = MessageFactory.getInstance().getMessage() ;
+
+ final ServiceInvoker si = new ServiceInvoker("test", "jmsdeliver") ;
+ si.deliverAsync(message) ;
+
+ assertNull("Call To EPR", message.getHeader().getCall().getTo()) ;
+ assertNull("Call ReplyTo EPR", message.getHeader().getCall().getReplyTo()) ;
+ }
+
+ @Test
+ public void testNonNullToAsyncEPRs()
+ throws Exception
+ {
+ final Message message = MessageFactory.getInstance().getMessage() ;
+ message.getHeader().getCall().setTo(deliverEPR) ;
+
+ final ServiceInvoker si = new ServiceInvoker("test", "jmsdeliver") ;
+ si.deliverAsync(message) ;
+
+ assertEquals("Call To EPR", deliverEPR, message.getHeader().getCall().getTo()) ;
+ assertNull("Call ReplyTo EPR", message.getHeader().getCall().getReplyTo()) ;
+ }
+
+ @Test
+ public void testNonNullAsyncEPRs()
+ throws Exception
+ {
+ final Message message = MessageFactory.getInstance().getMessage() ;
+ message.getHeader().getCall().setTo(deliverEPR) ;
+ message.getHeader().getCall().setReplyTo(pickupEPR) ;
+
+ final ServiceInvoker si = new ServiceInvoker("test", "jmsdeliver") ;
+ si.deliverAsync(message) ;
+
+ assertEquals("Call To EPR", deliverEPR, message.getHeader().getCall().getTo()) ;
+ assertEquals("Call ReplyTo EPR", pickupEPR, message.getHeader().getCall().getReplyTo()) ;
+ }
+
+ @Test
+ public void testFailNullSyncEPRs()
+ throws Exception
+ {
+ final Message message = MessageFactory.getInstance().getMessage() ;
+
+ final ServiceInvoker si = new ServiceInvoker("test", "fail") ;
+ try
+ {
+ si.deliverSync(message, 10) ;
+ fail("Expected MessageDeliveryException") ;
+ }
+ catch (final MessageDeliverException mde) {} // expected
+
+ assertNull("Call To EPR", message.getHeader().getCall().getTo()) ;
+ assertNull("Call ReplyTo EPR", message.getHeader().getCall().getReplyTo()) ;
+ }
+
+ @Test
+ public void testFailNonNullToSyncEPRs()
+ throws Exception
+ {
+ final Message message = MessageFactory.getInstance().getMessage() ;
+ message.getHeader().getCall().setTo(deliverEPR) ;
+
+ final ServiceInvoker si = new ServiceInvoker("test", "fail") ;
+ try
+ {
+ si.deliverSync(message, 10) ;
+ fail("Expected MessageDeliveryException") ;
+ }
+ catch (final MessageDeliverException mde) {} // expected
+
+ assertEquals("Call To EPR", deliverEPR, message.getHeader().getCall().getTo()) ;
+ assertNull("Call ReplyTo EPR", message.getHeader().getCall().getReplyTo()) ;
+ }
+
+ @Test
+ public void testFailNonNullSyncEPRs()
+ throws Exception
+ {
+ final Message message = MessageFactory.getInstance().getMessage() ;
+ message.getHeader().getCall().setTo(deliverEPR) ;
+ message.getHeader().getCall().setReplyTo(pickupEPR) ;
+
+ final ServiceInvoker si = new ServiceInvoker("test", "fail") ;
+ try
+ {
+ si.deliverSync(message, 10) ;
+ fail("Expected MessageDeliveryException") ;
+ }
+ catch (final MessageDeliverException mde) {} // expected
+
+ assertEquals("Call To EPR", deliverEPR, message.getHeader().getCall().getTo()) ;
+ assertEquals("Call ReplyTo EPR", pickupEPR, message.getHeader().getCall().getReplyTo()) ;
+ }
+
+ @Test
+ public void testFailNullAsyncEPRs()
+ throws Exception
+ {
+ final Message message = MessageFactory.getInstance().getMessage() ;
+
+ final ServiceInvoker si = new ServiceInvoker("test", "fail") ;
+ try
+ {
+ si.deliverAsync(message) ;
+ fail("Expected MessageDeliveryException") ;
+ }
+ catch (final MessageDeliverException mde) {} // expected
+
+ assertNull("Call To EPR", message.getHeader().getCall().getTo()) ;
+ assertNull("Call ReplyTo EPR", message.getHeader().getCall().getReplyTo()) ;
+ }
+
+ @Test
+ public void testFailNonNullToAsyncEPRs()
+ throws Exception
+ {
+ final Message message = MessageFactory.getInstance().getMessage() ;
+ message.getHeader().getCall().setTo(deliverEPR) ;
+
+ final ServiceInvoker si = new ServiceInvoker("test", "fail") ;
+ try
+ {
+ si.deliverAsync(message) ;
+ fail("Expected MessageDeliveryException") ;
+ }
+ catch (final MessageDeliverException mde) {} // expected
+
+ assertEquals("Call To EPR", deliverEPR, message.getHeader().getCall().getTo()) ;
+ assertNull("Call ReplyTo EPR", message.getHeader().getCall().getReplyTo()) ;
+ }
+
+ @Test
+ public void testFailNonNullAsyncEPRs()
+ throws Exception
+ {
+ final Message message = MessageFactory.getInstance().getMessage() ;
+ message.getHeader().getCall().setTo(deliverEPR) ;
+ message.getHeader().getCall().setReplyTo(pickupEPR) ;
+
+ final ServiceInvoker si = new ServiceInvoker("test", "fail") ;
+ try
+ {
+ si.deliverAsync(message) ;
+ fail("Expected MessageDeliveryException") ;
+ }
+ catch (final MessageDeliverException mde) {} // expected
+
+ assertEquals("Call To EPR", deliverEPR, message.getHeader().getCall().getTo()) ;
+ assertEquals("Call ReplyTo EPR", pickupEPR, message.getHeader().getCall().getReplyTo()) ;
+ }
+
+ public static junit.framework.Test suite()
+ {
+ return new JUnit4TestAdapter(ServiceInvokerCallUnitTest.class) ;
+ }
+}
More information about the jboss-svn-commits
mailing list