[jboss-svn-commits] JBL Code SVN: r23550 - in labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta: src/org/jboss/internal/soa/esb/couriers and 9 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Oct 22 06:58:40 EDT 2008


Author: tfennelly
Date: 2008-10-22 06:58:39 -0400 (Wed, 22 Oct 2008)
New Revision: 23550

Added:
   labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/tests/src/org/jboss/soa/esb/couriers/
   labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/tests/src/org/jboss/soa/esb/couriers/CourierFactoryUtil.java
Modified:
   labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/internal/soa/esb/addressing/eprs/DefaultInVMReplyToEpr.java
   labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/internal/soa/esb/couriers/InVMCourier.java
   labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/internal/soa/esb/services/registry/InVMRegistryInterceptor.java
   labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/soa/esb/addressing/eprs/InVMEpr.java
   labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/soa/esb/couriers/CourierFactory.java
   labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/soa/esb/listeners/message/MessageAwareListener.java
   labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/tests/src/org/jboss/internal/soa/esb/couriers/tests/InVMCourierUnitTest.java
   labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/tests/src/org/jboss/internal/soa/esb/services/registry/InVMRegistryInterceptorUnitTest.java
   labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/tests/src/org/jboss/soa/esb/addressing/helpers/tests/InVMUnitTest.java
Log:
InVM courier factory/registration issues: https://jira.jboss.org/jira/browse/JBESB-2108

Modified: labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/internal/soa/esb/addressing/eprs/DefaultInVMReplyToEpr.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/internal/soa/esb/addressing/eprs/DefaultInVMReplyToEpr.java	2008-10-22 10:24:11 UTC (rev 23549)
+++ labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/internal/soa/esb/addressing/eprs/DefaultInVMReplyToEpr.java	2008-10-22 10:58:39 UTC (rev 23550)
@@ -44,6 +44,7 @@
             try {
                 threadEPR = new InVMEpr(URI.create("invm://thread-" + Thread.currentThread().getId()));
                 invmReplyToEPRTL.set(threadEPR);
+                CourierFactory.getInstance().addInVMCourier(threadEPR);
             } catch (URISyntaxException e) {
                 throw new RuntimeException("Unexpected Exception creating replyTo InVMEpr.", e);
             }

Modified: labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/internal/soa/esb/couriers/InVMCourier.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/internal/soa/esb/couriers/InVMCourier.java	2008-10-22 10:24:11 UTC (rev 23549)
+++ labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/internal/soa/esb/couriers/InVMCourier.java	2008-10-22 10:58:39 UTC (rev 23550)
@@ -31,6 +31,7 @@
 import org.jboss.soa.esb.couriers.CourierException;
 import org.jboss.soa.esb.message.ByReferenceMessage;
 import org.jboss.soa.esb.message.Message;
+import org.jboss.soa.esb.Service;
 
 import java.io.IOException;
 import java.util.Queue;
@@ -56,6 +57,7 @@
 
     protected static Logger logger = Logger.getLogger(InVMCourier.class);
 
+    private Service service;
     private Queue<Object> messageQueue = new ConcurrentLinkedQueue<Object>();
 
     private long deliveryTimeout = 0;
@@ -94,6 +96,22 @@
     }
 
     /**
+     * Get the Service name owning this InVMCourier instance.
+     * @return The owning Service name.
+     */
+    public Service getService() {
+        return service;
+    }
+
+    /**
+     * Set the Service name owning this InVMCourier instance.
+     * @param service The owning Service name.
+     */
+    public void setService(Service service) {
+        this.service = service;
+    }
+
+    /**
      * package the ESB message into the queue. If this is a transactional interaction
      * then the deliver will return immediately, but the message may not go into
      * the queue if the transaction subsequently rolls back. The caller must monitor
@@ -107,7 +125,7 @@
      */
     
     public boolean deliver(Message message) throws CourierException {
-        isCourierActive() ;
+        assertCourierActive() ;
 
         if (message == null) {
             return false;
@@ -243,7 +261,7 @@
     // see associated test
     
     public Message pickup(long millis) throws CourierException {
-        isCourierActive() ;
+        assertCourierActive() ;
 
         Message message = null;
 
@@ -306,12 +324,16 @@
     public void cleanup() {
     }
 
-    private void isCourierActive() throws CourierException {
+    private void assertCourierActive() throws CourierException {
         if (!isActive) {
             throw new CourierException("InVMCourier for EPR '" + epr.getAddr().getAddress() + "' is not active.  Cannot pickup/deliver on this courier.");
         }
     }
 
+    public boolean isActive() {
+        return isActive;
+    }
+
     public void setActive(boolean active) {
         isActive = active;
     }

Modified: labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/internal/soa/esb/services/registry/InVMRegistryInterceptor.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/internal/soa/esb/services/registry/InVMRegistryInterceptor.java	2008-10-22 10:24:11 UTC (rev 23549)
+++ labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/internal/soa/esb/services/registry/InVMRegistryInterceptor.java	2008-10-22 10:58:39 UTC (rev 23550)
@@ -19,7 +19,6 @@
  */
 package org.jboss.internal.soa.esb.services.registry;
 
-import org.jboss.internal.soa.esb.couriers.InVMCourier;
 import org.jboss.soa.esb.Service;
 import org.jboss.soa.esb.addressing.EPR;
 import org.jboss.soa.esb.addressing.eprs.InVMEpr;
@@ -27,6 +26,7 @@
 import org.jboss.soa.esb.services.registry.AbstractRegistryInterceptor;
 import org.jboss.soa.esb.services.registry.RegistryException;
 import org.jboss.soa.esb.services.registry.ServiceNotFoundException;
+import org.jboss.internal.soa.esb.couriers.InVMCourier;
 
 import java.util.*;
 import java.util.concurrent.ConcurrentHashMap;
@@ -45,7 +45,29 @@
             Service service = new Service(serviceCategoryName, serviceName);
             RegsitryEntry regEntry = new RegsitryEntry(service, serviceDescription, epr, eprDescription);
             List<RegsitryEntry> serviceEntries = getServiceEntries(service);
-    
+
+            if(serviceEntries == null) {
+                serviceEntries = new ArrayList<RegsitryEntry>();
+                regEntries.put(service, serviceEntries);
+            }
+
+            if(serviceEntries.isEmpty()) {
+                InVMCourier existingInVMCourier = CourierFactory.getInstance().getInVMCourier((InVMEpr) epr);
+
+                if(existingInVMCourier != null) {
+                    throw new RegistryException("Invalid attempt to register InVM EPR '" + epr + "' for Service '" + service + "'.  This InVM EPR is already registered for Service '" + existingInVMCourier.getService() + "'." );
+                }
+                InVMCourier newInVMCourier = CourierFactory.getInstance().addInVMCourier((InVMEpr) epr);
+                newInVMCourier.setService(service);
+            } else {
+                // Verify that the InVM EPRs on the other registrations for this service
+                // are exactly the same...
+                EPR existingEpr = serviceEntries.get(0).getEpr();
+                if(!epr.equals(existingEpr)) {
+                    throw new RegistryException("Invalid attempt to register different InVM EPRs for Service '" + service + "'.  EPR '" + existingEpr + "' already registered.  Attempt to register '" + epr + "'.");
+                }
+            }
+
             serviceEntries.add(regEntry);
         } else {
             getRegistry().registerEPR(serviceCategoryName, serviceName, serviceDescription, epr, eprDescription) ;
@@ -63,10 +85,9 @@
         }
     }
 
-    protected boolean unRegisterInVMService(String category, String serviceName) throws RegistryException, ServiceNotFoundException {
+    private boolean unRegisterInVMService(String category, String serviceName) throws RegistryException, ServiceNotFoundException {
         if (isValidService(category, serviceName)) {
-            _unRegisterEPR(category, serviceName, null);
-            return (regEntries.remove(new Service(category, serviceName)) != null);
+            return _unRegisterEPR(category, serviceName, true);
         } else {
             return false ;
         }
@@ -74,31 +95,37 @@
 
     public void unRegisterEPR(String serviceCategoryName, String serviceName, EPR epr) throws RegistryException, ServiceNotFoundException {
         if (epr instanceof InVMEpr) {
-            _unRegisterEPR(serviceCategoryName, serviceName, epr);
+            _unRegisterEPR(serviceCategoryName, serviceName, false);
         } else {
             getRegistry().unRegisterEPR(serviceCategoryName, serviceName, epr) ;
         }
     }
 
-    private void _unRegisterEPR(String serviceCategoryName, String serviceName, EPR epr) {
+    private boolean _unRegisterEPR(String serviceCategoryName, String serviceName, boolean removeAll) {
         Service service = new Service(serviceCategoryName, serviceName);
         List<RegsitryEntry> serviceEntries = getServiceEntries(service);
-        Iterator<RegsitryEntry> iterator = serviceEntries.iterator();
 
-        while (iterator.hasNext()) {
-            RegsitryEntry regsitryEntry =  iterator.next();
+        if(serviceEntries != null) {
+            InVMEpr removedInVMEpr = null;
 
-            if(epr == null || regsitryEntry.getEpr().getAddr().getAddress().equals(epr.getAddr().getAddress())) {
-                if(regsitryEntry.getEpr() instanceof InVMEpr) {
-                    InVMCourier courier = CourierFactory.getInstance().getInVMCourier((InVMEpr)regsitryEntry.getEpr());
-                    if(courier != null) {
-                        courier.setActive(false);
-                    }
-                }
+            if(!serviceEntries.isEmpty()) {
+                // Just remove one (decrement the count)...
+                removedInVMEpr = (InVMEpr) serviceEntries.remove(0).getEpr();
+            }
 
-                iterator.remove();
+            if(removeAll) {
+                serviceEntries.clear();
             }
+
+            // Zap the InVM courier if there are no more Services using it...
+            if(removedInVMEpr != null && serviceEntries.isEmpty()) {
+                CourierFactory.getInstance().removeInVMCourier(removedInVMEpr);
+            }
+
+            return (removedInVMEpr != null);
         }
+
+        return false;
     }
 
     public List<String> findAllServices() throws RegistryException {
@@ -156,9 +183,11 @@
         if (isValidService(serviceCategoryName, serviceName)) {
             Service service = new Service(serviceCategoryName, serviceName);
             List<RegsitryEntry> serviceEntries = getServiceEntries(service);
-    
-            for (RegsitryEntry serviceEntry : serviceEntries) {
-                eprs.add(serviceEntry.getEpr());
+
+            if(serviceEntries != null) {
+                for (RegsitryEntry serviceEntry : serviceEntries) {
+                    eprs.add(serviceEntry.getEpr());
+                }
             }
         }
         return eprs ;
@@ -175,11 +204,6 @@
             }
         }
 
-        if(serviceEntries == null) {
-            serviceEntries = new ArrayList<RegsitryEntry>();
-            regEntries.put(service, serviceEntries);
-        }
-
         return serviceEntries;
     }
     

Modified: labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/soa/esb/addressing/eprs/InVMEpr.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/soa/esb/addressing/eprs/InVMEpr.java	2008-10-22 10:24:11 UTC (rev 23549)
+++ labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/soa/esb/addressing/eprs/InVMEpr.java	2008-10-22 10:58:39 UTC (rev 23550)
@@ -284,7 +284,7 @@
         AssertArgument.isNotNullAndNotEmpty(catagory, "catagory");
         AssertArgument.isNotNullAndNotEmpty(name, "name");
 
-        byte[] bytes = (catagory.trim() + name.trim()).getBytes();
+        byte[] bytes = (catagory.trim() + "$$$$$$$$$$$$" + name.trim()).getBytes();
 
         return new String(Hex.encodeHex(bytes));
     }

Modified: labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/soa/esb/couriers/CourierFactory.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/soa/esb/couriers/CourierFactory.java	2008-10-22 10:24:11 UTC (rev 23549)
+++ labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/soa/esb/couriers/CourierFactory.java	2008-10-22 10:58:39 UTC (rev 23550)
@@ -91,7 +91,7 @@
      *
      * @param instance New factory instance.
      */
-    protected static void setInstance(CourierFactory instance) {
+    public static void setInstance(CourierFactory instance) {
         CourierFactory.instance = instance;
     }
 
@@ -141,21 +141,32 @@
             return getCourier(null, replyToEPR);
         }    
     }
-    
-    public synchronized InVMCourier getInVMCourier(InVMEpr epr) {
+
+    public synchronized InVMCourier addInVMCourier(InVMEpr epr) {
         String address = epr.getAddr().getAddress();
-        InVMCourier courier = inVMCouriers.get(address);
+        InVMCourier courier = new InVMCourier(epr);
 
-        if (courier == null) {
-            courier = new InVMCourier(epr);
-            inVMCouriers.put(address, courier);
-        }
-
+        inVMCouriers.put(address, courier);
         courier.setActive(true);
 
         return courier;
     }
 
+    public synchronized InVMCourier getInVMCourier(InVMEpr epr) {
+        String address = epr.getAddr().getAddress();
+
+        return inVMCouriers.get(address);
+    }
+
+    public synchronized void removeInVMCourier(InVMEpr epr) {
+        String address = epr.getAddr().getAddress();
+        InVMCourier courier = inVMCouriers.remove(address);
+
+        if(courier != null) {
+            courier.setActive(false);
+        }
+    }
+
     /**
 	 * Obtain a courier which can perform both deliveries and pickups and prime it with 
 	 * the "to address" (toEPR) and the "replyTo address" (replyToEPR). 

Modified: labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/soa/esb/listeners/message/MessageAwareListener.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/soa/esb/listeners/message/MessageAwareListener.java	2008-10-22 10:24:11 UTC (rev 23549)
+++ labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/src/org/jboss/soa/esb/listeners/message/MessageAwareListener.java	2008-10-22 10:58:39 UTC (rev 23550)
@@ -187,7 +187,16 @@
             {
                 throw new ManagedLifecycleException("Error configuring action processing pipeline", ce) ;
             }
-            
+
+            try
+            {
+                RegistryUtil.register(_config, _epr);
+            }
+            catch (final RegistryException re)
+            {
+                throw new ManagedLifecycleException("Unexpected error during registration for epr " + _epr, re);
+            }
+
             this.pipeline = pipeline ;
             final PickUpOnlyCourier pickUpCourier ;
             try
@@ -197,21 +206,14 @@
             }
             catch (final MalformedEPRException mepre)
             {
+                RegistryUtil.unregister(_eprCategoryName, _eprName, _epr) ;
                 throw new ManagedLifecycleException("Malformed EPR: " + _epr) ;
             }
             catch (final CourierException ce)
             {
+                RegistryUtil.unregister(_eprCategoryName, _eprName, _epr) ;
                 throw new ManagedLifecycleException("No appropriate courier can be obtained for " + _epr, ce);
             }
-            
-            try
-            {
-                RegistryUtil.register(_config, _epr);
-            }
-            catch (final RegistryException re)
-            {
-                throw new ManagedLifecycleException("Unexpected error during registration for epr " + _epr, re);
-            }
         }
 
         /**

Modified: labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/tests/src/org/jboss/internal/soa/esb/couriers/tests/InVMCourierUnitTest.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/tests/src/org/jboss/internal/soa/esb/couriers/tests/InVMCourierUnitTest.java	2008-10-22 10:24:11 UTC (rev 23549)
+++ labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/tests/src/org/jboss/internal/soa/esb/couriers/tests/InVMCourierUnitTest.java	2008-10-22 10:58:39 UTC (rev 23550)
@@ -24,24 +24,36 @@
 
 import junit.framework.Assert;
 import junit.framework.JUnit4TestAdapter;
+import junit.framework.TestCase;
 import org.jboss.internal.soa.esb.couriers.InVMCourier;
 import org.jboss.internal.soa.esb.couriers.TwoWayCourierImpl;
+import org.jboss.internal.soa.esb.services.registry.InVMRegistryInterceptor;
+import org.jboss.internal.soa.esb.services.registry.MockRegistry;
 import org.jboss.soa.esb.addressing.MalformedEPRException;
+import org.jboss.soa.esb.addressing.EPR;
 import org.jboss.soa.esb.addressing.eprs.InVMEpr;
 import org.jboss.soa.esb.couriers.CourierException;
 import org.jboss.soa.esb.couriers.CourierFactory;
+import org.jboss.soa.esb.couriers.CourierFactoryUtil;
 import org.jboss.soa.esb.message.Message;
 import org.jboss.soa.esb.message.format.MessageFactory;
+import org.jboss.soa.esb.services.registry.ServiceNotFoundException;
+import org.jboss.soa.esb.services.registry.RegistryException;
 import org.junit.Test;
 
 import java.net.URI;
 import java.net.URISyntaxException;
 
-public class InVMCourierUnitTest {
+public class InVMCourierUnitTest extends TestCase {
+
     public static junit.framework.Test suite() {
         return new JUnit4TestAdapter(InVMCourierUnitTest.class);
     }
 
+    protected void tearDown() throws Exception {
+        CourierFactoryUtil.resetCourierFactory();
+    }
+
     @Test
     public void testUnthreadedDeliver() throws Exception {
         InVMEpr epr = new InVMEpr(new URI("invm://serviceid1"));
@@ -199,6 +211,97 @@
         System.err.println("Messages per second: " + msgsPerSecond);
     }
 
+    @Test
+    public void test_JBESB_2108_01() throws ServiceNotFoundException, RegistryException {
+        InVMRegistryInterceptor reg = new InVMRegistryInterceptor();
+        reg.setRegistry(new MockRegistry()) ;
+
+        reg.registerEPR("x", "y", "blah", new InVMEpr(new EPR(URI.create("x://123"))), "blah");
+
+        EPR eprFromReg = reg.findEPR("x", "y");
+        InVMCourier courier = CourierFactory.getInstance().getInVMCourier((InVMEpr) eprFromReg);
+        Assert.assertNotNull(courier);
+        Assert.assertTrue(courier.isActive());
+
+        // Register the EPR again...
+        reg.registerEPR("x", "y", "blah", new InVMEpr(new EPR(URI.create("x://123"))), "blah");
+
+        // Unregister it once...
+        reg.unRegisterEPR("x", "y", new InVMEpr(new EPR(URI.create("x://123"))));
+
+        // Should still be able to find it...
+        reg.findEPR("x", "y");
+        // Should still be able to get the courier and it should still be active...
+        Assert.assertNotNull(CourierFactory.getInstance().getInVMCourier((InVMEpr) eprFromReg));
+        Assert.assertTrue(courier.isActive());
+
+        // Unregister it again...
+        reg.unRegisterEPR("x", "y", new InVMEpr(new EPR(URI.create("x://123"))));
+
+        // Should get an error trying to find it now...
+        try {
+            reg.findEPR("x", "y");
+            Assert.fail("Expected ServiceNotFoundException.");
+        } catch(ServiceNotFoundException e) {
+            Assert.assertEquals("Registry entry [x][y] not found.", e.getMessage());
+        }
+        
+        // Shouldn't be able to get the courier and it should be inactive...
+        Assert.assertNull(CourierFactory.getInstance().getInVMCourier((InVMEpr) eprFromReg));
+        Assert.assertFalse(courier.isActive());
+    }
+
+    @Test
+    public void test_JBESB_2108_02() throws ServiceNotFoundException, RegistryException {
+        InVMRegistryInterceptor reg = new InVMRegistryInterceptor();
+        reg.setRegistry(new MockRegistry()) ;
+
+        reg.registerEPR("xy", "z", "blah", new InVMEpr(new EPR(URI.create("x://123"))), "blah");
+        try {
+            reg.registerEPR("x", "yz", "blah", new InVMEpr(new EPR(URI.create("x://123"))), "blah");
+            Assert.fail("Expected RegistryException");
+        } catch (RegistryException e) {
+            Assert.assertEquals("Invalid attempt to register InVM EPR 'InVMEpr [ PortReference < <wsa:Address x://123/> > ]' for Service 'x:yz'.  This InVM EPR is already registered for Service 'xy:z'.", e.getMessage());
+        }
+    }
+
+    @Test
+    public void test_JBESB_2108_03() throws ServiceNotFoundException, RegistryException {
+        InVMRegistryInterceptor reg = new InVMRegistryInterceptor();
+        EPR xy_z = new InVMEpr(new EPR(URI.create("x://123")));
+        EPR x_yz = new InVMEpr(new EPR(URI.create("x://1234")));
+        reg.setRegistry(new MockRegistry()) ;
+
+        // Register "xy:z"...
+        reg.registerEPR("xy", "z", "blah", xy_z, "blah");
+        Assert.assertEquals(xy_z, reg.findEPR("xy", "z"));
+        InVMCourier xy_z_courier = CourierFactory.getInstance().getInVMCourier((InVMEpr) xy_z);
+        Assert.assertNotNull(xy_z_courier);
+        Assert.assertTrue(xy_z_courier.isActive());
+
+        // Register "x:yz"...
+        reg.registerEPR("x", "yz", "blah", x_yz, "blah");
+        Assert.assertEquals(x_yz, reg.findEPR("x", "yz"));
+        InVMCourier x_yz_courier = CourierFactory.getInstance().getInVMCourier((InVMEpr) x_yz);
+        Assert.assertNotNull(x_yz_courier);
+        Assert.assertTrue(x_yz_courier.isActive());
+
+        // Unregister "xy:z"...
+        reg.unRegisterEPR("xy", "z", xy_z);
+        // Shouldn't be able to get the courier for "xy_z" and should be inactive...
+        Assert.assertNull(CourierFactory.getInstance().getInVMCourier((InVMEpr) xy_z));
+        Assert.assertFalse(xy_z_courier.isActive());
+        // Should still be able to get the courier for "x_yz" and should still be active...
+        Assert.assertNotNull(CourierFactory.getInstance().getInVMCourier((InVMEpr) x_yz));
+        Assert.assertTrue(x_yz_courier.isActive());
+
+        // Unregister "x:yz"...
+        reg.unRegisterEPR("x", "yz", x_yz);
+        // Shouldn't be able to get the courier for "x_yz" and should be inactive...
+        Assert.assertNull(CourierFactory.getInstance().getInVMCourier((InVMEpr) x_yz));
+        Assert.assertFalse(x_yz_courier.isActive());
+    }
+
     /*
      * test that WeakHashMap could be used to gc invmcouriers.
      * 

Modified: labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/tests/src/org/jboss/internal/soa/esb/services/registry/InVMRegistryInterceptorUnitTest.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/tests/src/org/jboss/internal/soa/esb/services/registry/InVMRegistryInterceptorUnitTest.java	2008-10-22 10:24:11 UTC (rev 23549)
+++ labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/tests/src/org/jboss/internal/soa/esb/services/registry/InVMRegistryInterceptorUnitTest.java	2008-10-22 10:58:39 UTC (rev 23550)
@@ -46,7 +46,7 @@
         assertEquals(1, reg.findEPRs("x", "y").size());
         assertEquals("x://123", reg.findEPR("x", "y").getAddr().getAddress());
 
-        reg.registerEPR("x", "y", "blah", new InVMEpr(new EPR(URI.create("x://1234"))), "blah");
+        reg.registerEPR("x", "y", "blah", new InVMEpr(new EPR(URI.create("x://123"))), "blah");
         assertEquals(2, reg.findEPRs("x", "y").size());
 
         reg.registerEPR("a", "z", "blah", new InVMEpr(new EPR(URI.create("x://12345"))), "blah");
@@ -56,9 +56,6 @@
         assertEquals(2, reg.findAllServices().size());
         assertEquals(1, reg.findServices("x").size());
 
-        // unreg using a valid service, but unregistred EPR... make sure nothing changes...
-        reg.unRegisterEPR("a", "z", new InVMEpr(new EPR(URI.create("x://1"))));
-        assertEquals(1, reg.findEPRs("a", "z").size());
         // unreg using a valid service + registred EPR... make sure EPR is removed...
         reg.unRegisterEPR("a", "z", new InVMEpr(new EPR(URI.create("x://12345"))));
         assertEquals(0, reg.findEPRs("a", "z").size());

Modified: labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/tests/src/org/jboss/soa/esb/addressing/helpers/tests/InVMUnitTest.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/tests/src/org/jboss/soa/esb/addressing/helpers/tests/InVMUnitTest.java	2008-10-22 10:24:11 UTC (rev 23549)
+++ labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/tests/src/org/jboss/soa/esb/addressing/helpers/tests/InVMUnitTest.java	2008-10-22 10:58:39 UTC (rev 23550)
@@ -88,9 +88,9 @@
 
     public void test_getEncodedServiceId() throws URISyntaxException {
         String serviceId = InVMEpr.createEncodedServiceId("Service Cat / &&&", " Service / Name $$");
-        assertEquals("5365727669636520436174202f2026262653657276696365202f204e616d65202424", serviceId);
+        assertEquals("5365727669636520436174202f2026262624242424242424242424242453657276696365202f204e616d65202424", serviceId);
 
         InVMEpr epr = new InVMEpr(new URI(InVMEpr.INVM_PROTOCOL + "://" + serviceId));
-        assertEquals("5365727669636520436174202f2026262653657276696365202f204e616d65202424", epr.getServiceId());
+        assertEquals("5365727669636520436174202f2026262624242424242424242424242453657276696365202f204e616d65202424", epr.getServiceId());
     }
 }

Added: labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/tests/src/org/jboss/soa/esb/couriers/CourierFactoryUtil.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/tests/src/org/jboss/soa/esb/couriers/CourierFactoryUtil.java	                        (rev 0)
+++ labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/tests/src/org/jboss/soa/esb/couriers/CourierFactoryUtil.java	2008-10-22 10:58:39 UTC (rev 23550)
@@ -0,0 +1,30 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, 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-2008, JBoss Inc.
+ */
+package org.jboss.soa.esb.couriers;
+
+/**
+ * @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
+ */
+public abstract class CourierFactoryUtil {
+
+    public static void resetCourierFactory() {
+        CourierFactory.setInstance(new CourierFactory());
+    }
+}


Property changes on: labs/jbossesb/branches/JBESB_4_4_GA_CP/product/rosetta/tests/src/org/jboss/soa/esb/couriers/CourierFactoryUtil.java
___________________________________________________________________
Name: svn:eol-style
   + native




More information about the jboss-svn-commits mailing list