[jboss-svn-commits] JBL Code SVN: r8072 - labs/jbossesb/trunk/product/core/services/tests/src/org/jboss/internal/soa/esb/services/registry

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Dec 5 14:35:15 EST 2006


Author: tfennelly
Date: 2006-12-05 14:35:10 -0500 (Tue, 05 Dec 2006)
New Revision: 8072

Added:
   labs/jbossesb/trunk/product/core/services/tests/src/org/jboss/internal/soa/esb/services/registry/MockRegistryUnitTest.java
Modified:
   labs/jbossesb/trunk/product/core/services/tests/src/org/jboss/internal/soa/esb/services/registry/MockRegistry.java
Log:
finished and tested the MockRegistry

Modified: labs/jbossesb/trunk/product/core/services/tests/src/org/jboss/internal/soa/esb/services/registry/MockRegistry.java
===================================================================
--- labs/jbossesb/trunk/product/core/services/tests/src/org/jboss/internal/soa/esb/services/registry/MockRegistry.java	2006-12-05 17:29:41 UTC (rev 8071)
+++ labs/jbossesb/trunk/product/core/services/tests/src/org/jboss/internal/soa/esb/services/registry/MockRegistry.java	2006-12-05 19:35:10 UTC (rev 8072)
@@ -21,59 +21,114 @@
 
 package org.jboss.internal.soa.esb.services.registry;
 
+import java.util.ArrayList;
 import java.util.Collection;
+import java.util.List;
 
+import junit.framework.TestCase;
+
 import org.jboss.soa.esb.addressing.EPR;
 import org.jboss.soa.esb.common.Environment;
 import org.jboss.soa.esb.common.ModulePropertyManager;
 import org.jboss.soa.esb.services.registry.Registry;
 import org.jboss.soa.esb.services.registry.RegistryException;
 
+import com.arjuna.common.util.propertyservice.PropertyManager;
+
 /**
  * Mock Registry implementation.
  * <p/>
  * Avoids the need to setup HSQLDB etc.
+ * <p/>
+ * Just call {@link #install()} and {@link #uninstall()} from inside your test setUp and tearDown
+ * methods respectfully.
+ *  
  * @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
  */
 public class MockRegistry implements Registry {
-
 	
+	private static final String REGISTRY_IMPEMENTATION_CLASS_ORIGINAL = Environment.REGISTRY_IMPEMENTATION_CLASS + "#Original";
+	public static PropertyManager regPropManager = ModulePropertyManager.getPropertyManager(ModulePropertyManager.REGISTRY_MODULE);
+	public List<RepositoryEntry> repository = new ArrayList<RepositoryEntry>();
 	
 	/**
 	 * Install this Mock Registry impl as the registry implementation to be used.
+	 * <p/>
+	 * Call this method in the test setUp.
 	 */
 	public static void install() {
-		ModulePropertyManager.getPropertyManager(ModulePropertyManager.REGISTRY_MODULE).setProperty(Environment.REGISTRY_IMPEMENTATION_CLASS, MockRegistry.class.getName());
+		if(regPropManager == null) {
+			TestCase.fail("Failed to locate PropertyManager for [" + ModulePropertyManager.REGISTRY_MODULE + "].");
+		}
+		String currentRegImpl = regPropManager.getProperty(Environment.REGISTRY_IMPEMENTATION_CLASS);
+		
+		if(currentRegImpl != null) {
+			// Save the current/original.
+			regPropManager.setProperty(REGISTRY_IMPEMENTATION_CLASS_ORIGINAL, currentRegImpl);
+		}
+		regPropManager.setProperty(Environment.REGISTRY_IMPEMENTATION_CLASS, MockRegistry.class.getName());
 	}
-	
-	/* (non-Javadoc)
-	 * @see org.jboss.soa.esb.services.registry.Registry#unRegisterService(java.lang.String, java.lang.String)
+
+	/**
+	 * Uninstall this Mock Registry impl as the registry implementation to be used. Reinstate the reg impl that was
+	 * specified prior to the install.
+	 * <p/>
+	 * Call this method in the test tearDown.
 	 */
-	public void unRegisterService(String category, String serviceName)
-			throws RegistryException {
+	public static void uninstall() {
+		if(regPropManager == null) {
+			TestCase.fail("Failed to locate PropertyManager for [" + ModulePropertyManager.REGISTRY_MODULE + "].");
+		}
+		String originalRegImpl = regPropManager.getProperty(REGISTRY_IMPEMENTATION_CLASS_ORIGINAL);
 
+		if(originalRegImpl != null) {
+			// Reset the original.
+			regPropManager.setProperty(Environment.REGISTRY_IMPEMENTATION_CLASS, originalRegImpl);
+			regPropManager.removeProperty(REGISTRY_IMPEMENTATION_CLASS_ORIGINAL);
+		} else {
+			// It wasn't set in the first place, so just unset the impl
+			regPropManager.removeProperty(Environment.REGISTRY_IMPEMENTATION_CLASS);
+		}
 	}
-
+	
 	/* (non-Javadoc)
 	 * @see org.jboss.soa.esb.services.registry.Registry#registerEPR(java.lang.String, java.lang.String, java.lang.String, org.jboss.soa.esb.addressing.EPR, java.lang.String)
 	 */
 	public void registerEPR(String serviceCategoryName, String serviceName,
 			String serviceDescription, EPR epr, String eprDescription)
 			throws RegistryException {
+		
+		repository.add(new RepositoryEntry(serviceCategoryName, serviceName, serviceDescription, epr, eprDescription));
 	}
+	
+	/* (non-Javadoc)
+	 * @see org.jboss.soa.esb.services.registry.Registry#unRegisterService(java.lang.String, java.lang.String)
+	 */
+	public void unRegisterService(String category, String serviceName) throws RegistryException {
+		unRegisterEPR(category, serviceName, null);
+	}
 
 	/* (non-Javadoc)
 	 * @see org.jboss.soa.esb.services.registry.Registry#unRegisterEPR(java.lang.String, java.lang.String, org.jboss.soa.esb.addressing.EPR)
 	 */
-	public void unRegisterEPR(String serviceCategoryName, String serviceName,
-			EPR epr) throws RegistryException {
+	public void unRegisterEPR(String serviceCategoryName, String serviceName, EPR epr) throws RegistryException {
+		int indexOf = repository.indexOf(new RepositoryEntry(serviceCategoryName, serviceName, null, epr, null));
+		
+		if(indexOf == -1) {
+			throw new RegistryException("Registry entry [" + serviceCategoryName + "][" + serviceName + "] not found.");
+		}
+		repository.remove(indexOf);
 	}
 
 	/* (non-Javadoc)
 	 * @see org.jboss.soa.esb.services.registry.Registry#findAllServices()
 	 */
 	public Collection<String> findAllServices() throws RegistryException {
-		return null;
+		Collection<String> services = new ArrayList<String>();
+		for(RepositoryEntry entry : repository) {
+			services.add(entry.serviceName);
+		}
+		return services;
 	}
 
 	/* (non-Javadoc)
@@ -81,7 +136,13 @@
 	 */
 	public Collection<String> findServices(String serviceCategoryName)
 			throws RegistryException {
-		return null;
+		Collection<String> services = new ArrayList<String>();
+		for(RepositoryEntry entry : repository) {
+			if(serviceCategoryName.equals(entry.serviceCategoryName)) {
+				services.add(entry.serviceName);
+			}
+		}
+		return services;
 	}
 
 	/* (non-Javadoc)
@@ -89,7 +150,13 @@
 	 */
 	public Collection<EPR> findEPRs(String serviceCategoryName,
 			String serviceName) throws RegistryException {
-		return null;
+		Collection<EPR> services = new ArrayList<EPR>();
+		for(RepositoryEntry entry : repository) {
+			if(serviceCategoryName.equals(entry.serviceCategoryName) && serviceName.equals(entry.serviceName)) {
+				services.add(entry.epr);
+			}
+		}
+		return services;
 	}
 
 	/* (non-Javadoc)
@@ -97,15 +164,47 @@
 	 */
 	public EPR findEPR(String serviceCategoryName, String serviceName)
 			throws RegistryException {
+		for(RepositoryEntry entry : repository) {
+			if(serviceCategoryName.equals(entry.serviceCategoryName) && serviceName.equals(entry.serviceName)) {
+				return entry.epr;
+			}
+		}
 		return null;
 	}
 	
-	@SuppressWarnings("unused")
-	private class RepositoryEntry {
-		private String serviceCategoryName;
-		private String serviceName;
-		private String serviceDescription;
-		private EPR epr;
-		private String eprDescription;
+	public class RepositoryEntry {
+		public String serviceCategoryName;
+		public String serviceName;
+		public String serviceDescription;
+		public EPR epr;
+		public String eprDescription;
+
+		public RepositoryEntry(String serviceCategoryName, String serviceName, String serviceDescription, EPR epr, String eprDescription) {
+			this.serviceCategoryName = serviceCategoryName;
+			this.serviceName = serviceName;
+			this.serviceDescription = serviceDescription;
+			this.epr = epr;
+			this.eprDescription = eprDescription;
+		}
+		
+		public boolean equals(Object obj) {
+			if(obj instanceof RepositoryEntry) {
+				RepositoryEntry entry = (RepositoryEntry)obj;
+				
+				if(serviceCategoryName != null && !serviceCategoryName.equalsIgnoreCase(entry.serviceCategoryName)) {
+					return false;
+				}
+				if(serviceName != null && !serviceName.equalsIgnoreCase(entry.serviceName)) {
+					return false;
+				}
+				if(epr != null && epr != entry.epr) {
+					return false;
+				}
+				
+				return true;
+			}
+			
+			return false;
+		}
 	}
 }

Added: labs/jbossesb/trunk/product/core/services/tests/src/org/jboss/internal/soa/esb/services/registry/MockRegistryUnitTest.java
===================================================================
--- labs/jbossesb/trunk/product/core/services/tests/src/org/jboss/internal/soa/esb/services/registry/MockRegistryUnitTest.java	2006-12-05 17:29:41 UTC (rev 8071)
+++ labs/jbossesb/trunk/product/core/services/tests/src/org/jboss/internal/soa/esb/services/registry/MockRegistryUnitTest.java	2006-12-05 19:35:10 UTC (rev 8072)
@@ -0,0 +1,102 @@
+/*
+ * 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,
+ * @author JBoss Inc.
+ */
+
+package org.jboss.internal.soa.esb.services.registry;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.jboss.soa.esb.addressing.EPR;
+import org.jboss.soa.esb.common.Environment;
+import org.jboss.soa.esb.services.registry.RegistryException;
+
+import junit.framework.TestCase;
+
+/**
+ * MockRegistry Unit Test.
+ * @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
+ */
+public class MockRegistryUnitTest extends TestCase {
+
+	public void test_install_uninstall() {
+		assertNotSame(MockRegistry.class.getName(), MockRegistry.regPropManager.getProperty(Environment.REGISTRY_IMPEMENTATION_CLASS));
+		MockRegistry.install();
+		assertEquals(MockRegistry.class.getName(), MockRegistry.regPropManager.getProperty(Environment.REGISTRY_IMPEMENTATION_CLASS));
+		MockRegistry.uninstall();
+		assertNotSame(MockRegistry.class.getName(), MockRegistry.regPropManager.getProperty(Environment.REGISTRY_IMPEMENTATION_CLASS));
+	}
+
+	public void test_features() throws RegistryException {
+		MockRegistry registry = new MockRegistry();
+		EPR epr = new EPR();
+		List<String> services = new ArrayList<String>();
+		List<EPR> eprs = new ArrayList<EPR>();
+		
+		registry.registerEPR("cat1", "cat1-service1", "service-desc", epr, "epr-desc"); 
+		registry.registerEPR("cat1", "cat1-service2", "service-desc", epr, "epr-desc"); 
+		registry.registerEPR("cat1", "cat1-service3", "service-desc", epr, "epr-desc"); 
+		registry.registerEPR("cat2", "cat2-service1", "service-desc", epr, "epr-desc"); 
+		registry.registerEPR("cat2", "cat2-service2", "service-desc", epr, "epr-desc"); 
+		registry.registerEPR("cat2", "cat2-service3", "service-desc", epr, "epr-desc"); 
+
+		services.addAll(registry.findAllServices());
+		assertEquals(6, services.size());
+		assertEquals("cat1-service1", services.get(0));
+		assertEquals("cat2-service1", services.get(3));
+		assertEquals("cat2-service3", services.get(5));
+
+		services.clear();
+		services.addAll(registry.findServices("cat1"));
+		assertEquals(3, services.size());
+		assertEquals("cat1-service1", services.get(0));
+		assertEquals("cat1-service2", services.get(1));
+		assertEquals("cat1-service3", services.get(2));
+
+		assertEquals(epr, registry.findEPR("cat1", "cat1-service1"));
+
+		try {
+			registry.unRegisterService("cat2", "cat1-service2");
+			fail("Expected RegistryException for unknown service.");
+		} catch(RegistryException e) {
+			//OK
+		}
+		
+		eprs.addAll(registry.findEPRs("cat1", "cat1-service1"));
+		assertEquals(1, eprs.size());
+		assertEquals(epr, eprs.get(0));
+
+		registry.unRegisterService("cat1", "cat1-service2");
+		services.clear();
+		services.addAll(registry.findAllServices());
+		assertEquals(5, services.size());
+		assertEquals("cat1-service1", services.get(0));
+		assertEquals("cat1-service3", services.get(1));
+		assertEquals("cat2-service1", services.get(2));
+
+		registry.unRegisterEPR("cat2", "cat2-service2", epr);
+		services.clear();
+		services.addAll(registry.findAllServices());
+		assertEquals(4, services.size());
+		assertEquals("cat1-service1", services.get(0));
+		assertEquals("cat1-service3", services.get(1));
+		assertEquals("cat2-service1", services.get(2));
+	}
+}




More information about the jboss-svn-commits mailing list