[jboss-svn-commits] JBL Code SVN: r23837 - in labs/jbossesb/branches/JBESB_4_2_1_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 10:50:15 EST 2008


Author: kevin.conner at jboss.com
Date: 2008-11-12 10:50:14 -0500 (Wed, 12 Nov 2008)
New Revision: 23837

Added:
   labs/jbossesb/branches/JBESB_4_2_1_GA_CP/product/rosetta/tests/src/org/jboss/soa/esb/listeners/message/ServiceInvokerCallUnitTest.java
Modified:
   labs/jbossesb/branches/JBESB_4_2_1_GA_CP/product/rosetta/src/org/jboss/soa/esb/addressing/Call.java
   labs/jbossesb/branches/JBESB_4_2_1_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_2_1_GA_CP/product/rosetta/src/org/jboss/soa/esb/addressing/Call.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_2_1_GA_CP/product/rosetta/src/org/jboss/soa/esb/addressing/Call.java	2008-11-12 15:24:47 UTC (rev 23836)
+++ labs/jbossesb/branches/JBESB_4_2_1_GA_CP/product/rosetta/src/org/jboss/soa/esb/addressing/Call.java	2008-11-12 15:50:14 UTC (rev 23837)
@@ -94,9 +94,6 @@
 	
 	public void setTo (EPR epr)
 	{
-		if (epr == null)
-			throw new IllegalArgumentException();
-		
 		_to = epr;
 	}
 	

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	2008-11-12 15:24:47 UTC (rev 23836)
+++ labs/jbossesb/branches/JBESB_4_2_1_GA_CP/product/rosetta/src/org/jboss/soa/esb/client/ServiceInvoker.java	2008-11-12 15:50:14 UTC (rev 23837)
@@ -28,6 +28,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;
@@ -504,23 +505,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) {
@@ -571,8 +573,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) ;
                 }
             }
 

Added: 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_2_1_GA_CP/product/rosetta/tests/src/org/jboss/soa/esb/listeners/message/ServiceInvokerCallUnitTest.java	                        (rev 0)
+++ labs/jbossesb/branches/JBESB_4_2_1_GA_CP/product/rosetta/tests/src/org/jboss/soa/esb/listeners/message/ServiceInvokerCallUnitTest.java	2008-11-12 15:50:14 UTC (rev 23837)
@@ -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) ;
+    }
+}


Property changes on: labs/jbossesb/branches/JBESB_4_2_1_GA_CP/product/rosetta/tests/src/org/jboss/soa/esb/listeners/message/ServiceInvokerCallUnitTest.java
___________________________________________________________________
Name: svn:keywords
   + Rev Date
Name: svn:eol-style
   + native




More information about the jboss-svn-commits mailing list