[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