JUDDI-937 adding test cases, discovered a caching mechanism that had no way of being cleared which was resolved.
diff --git a/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDIClient.java b/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDIClient.java
index b326645..61945b5 100644
--- a/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDIClient.java
+++ b/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDIClient.java
@@ -77,6 +77,10 @@
private Properties properties = null;
private static Map<String, ServiceLocator> serviceLocators = new HashMap<String, ServiceLocator>();
+
+ public static void clearServiceLocatorCaches(){
+ serviceLocators.clear();
+ }
/**
* Default constructor, loads from the default config, META-INF/uddi.xml
*
diff --git a/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDIClientContainer.java b/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDIClientContainer.java
index bd2f441..d64dd7b 100644
--- a/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDIClientContainer.java
+++ b/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDIClientContainer.java
@@ -89,5 +89,9 @@
public static boolean contains(String name) {
return (clients.containsKey(name)) ;
}
+
+ public static void removeAll() {
+ clients.clear();
+ }
}
diff --git a/juddi-core/src/test/java/org/apache/juddi/api/impl/API_050_BindingTemplateTest.java b/juddi-core/src/test/java/org/apache/juddi/api/impl/API_050_BindingTemplateTest.java
index 9e71358..af6f3af 100644
--- a/juddi-core/src/test/java/org/apache/juddi/api/impl/API_050_BindingTemplateTest.java
+++ b/juddi-core/src/test/java/org/apache/juddi/api/impl/API_050_BindingTemplateTest.java
@@ -21,13 +21,18 @@
import org.apache.commons.logging.LogFactory;
import org.apache.juddi.Registry;
import org.apache.juddi.v3.client.UDDIConstants;
+import org.apache.juddi.v3.client.config.UDDIClient;
+import org.apache.juddi.v3.client.config.UDDIClientContainer;
import org.apache.juddi.v3.client.ext.wsdm.WSDMQosConstants;
+import org.apache.juddi.v3.client.mapping.ServiceLocator;
+import org.apache.juddi.v3.client.transport.Transport;
import org.apache.juddi.v3.error.ValueNotAllowedException;
import org.apache.juddi.v3.tck.TckBindingTemplate;
import static org.apache.juddi.v3.tck.TckBindingTemplate.JOE_BINDING_KEY;
import static org.apache.juddi.v3.tck.TckBindingTemplate.JOE_BINDING_XML;
import org.apache.juddi.v3.tck.TckBusiness;
import org.apache.juddi.v3.tck.TckBusinessService;
+import org.apache.juddi.v3.tck.TckCommon;
import org.apache.juddi.v3.tck.TckFindEntity;
import org.apache.juddi.v3.tck.TckPublisher;
import org.apache.juddi.v3.tck.TckSecurity;
@@ -43,6 +48,7 @@
import org.uddi.api_v3.IdentifierBag;
import org.uddi.api_v3.KeyedReference;
import org.uddi.api_v3.TModelBag;
+import org.uddi.v3_service.UDDIPublicationPortType;
import org.uddi.v3_service.UDDISecurityPortType;
/**
@@ -244,4 +250,60 @@
tckTModel.deleteJoePublisherTmodel(authInfoJoe);
}
}
+
+ @Test
+ public void testJuddi937ServiceLocatorWithCache() throws Exception {
+ try {
+ tckTModel.saveJoePublisherTmodel(authInfoJoe);
+ tckBusiness.saveJoePublisherBusiness(authInfoJoe);
+ tckBusinessService.saveJoePublisherService(authInfoJoe);
+ tckBindingTemplate.saveBinding(authInfoJoe, "uddi_data/joepublisher/bindingTemplate.xml", JOE_BINDING_KEY, false);
+
+ //create a client using invm transport
+ UDDIClientContainer.removeAll();
+ UDDIClient.clearServiceLocatorCaches();
+ UDDIClient c = new UDDIClient("META-INF/uddi.xml");
+ ServiceLocator serviceLocator = c.getServiceLocator("joe");
+ serviceLocator.withSimpleCache();
+ serviceLocator.clearCaches();
+ String lookupEndpoint = serviceLocator.lookupEndpoint(TckBusinessService.JOE_SERVICE_KEY);
+ String lookupEndpoint2 = serviceLocator.lookupEndpoint(TckBusinessService.JOE_SERVICE_KEY);
+ System.out.println(TckCommon.DumpAllServices(authInfoJoe, c.getTransport("default").getUDDIInquiryService()));
+ Assert.assertNotEquals(lookupEndpoint, lookupEndpoint2);
+ } finally {
+ tckBusinessService.deleteJoePublisherService(authInfoJoe);
+ tckBusiness.deleteJoePublisherBusiness(authInfoJoe);
+ tckTModel.deleteJoePublisherTmodel(authInfoJoe);
+ }
+ }
+
+
+
+ @Test
+ public void testJuddi937ServiceLocatorWithoutCache() throws Exception {
+ try {
+
+ tckTModel.saveJoePublisherTmodel(authInfoJoe);
+ tckBusiness.saveJoePublisherBusiness(authInfoJoe);
+ tckBusinessService.saveJoePublisherService(authInfoJoe);
+ tckBindingTemplate.saveBinding(authInfoJoe, "uddi_data/joepublisher/bindingTemplate.xml", JOE_BINDING_KEY, false);
+
+ //create a client using invm transport
+ UDDIClientContainer.removeAll();
+ UDDIClient.clearServiceLocatorCaches();
+ UDDIClient c = new UDDIClient("META-INF/uddi.xml");
+ ServiceLocator serviceLocator = c.getServiceLocator("joe");
+ serviceLocator.clearCaches();
+ //serviceLocator.withSimpleCache();
+ String lookupEndpoint = serviceLocator.lookupEndpoint(TckBusinessService.JOE_SERVICE_KEY);
+ String lookupEndpoint2 = serviceLocator.lookupEndpoint(TckBusinessService.JOE_SERVICE_KEY);
+
+ System.out.println(TckCommon.DumpAllServices(authInfoJoe, c.getTransport("default").getUDDIInquiryService()));
+ Assert.assertEquals(lookupEndpoint, lookupEndpoint2);
+ } finally {
+ tckBusinessService.deleteJoePublisherService(authInfoJoe);
+ tckBusiness.deleteJoePublisherBusiness(authInfoJoe);
+ tckTModel.deleteJoePublisherTmodel(authInfoJoe);
+ }
+ }
}
diff --git a/juddi-core/src/test/java/org/apache/juddi/api/runtime/CLIServerTest.java b/juddi-core/src/test/java/org/apache/juddi/api/runtime/CLIServerTest.java
index f60c3e0..0869b9a 100644
--- a/juddi-core/src/test/java/org/apache/juddi/api/runtime/CLIServerTest.java
+++ b/juddi-core/src/test/java/org/apache/juddi/api/runtime/CLIServerTest.java
@@ -53,8 +53,8 @@
static String replUrl = null;
static String juddiUrl = null;
static boolean sink = false;
- static replicantImpl repl= new replicantImpl();
- static juddiTestimpl jude= new juddiTestimpl();
+ static ReplicantImpl repl= new ReplicantImpl();
+ static JuddiTestimpl jude= new JuddiTestimpl();
@BeforeClass
public static void startManager() throws Exception {
diff --git a/juddi-core/src/test/java/org/apache/juddi/api/runtime/juddiTestimpl.java b/juddi-core/src/test/java/org/apache/juddi/api/runtime/JuddiTestimpl.java
similarity index 99%
rename from juddi-core/src/test/java/org/apache/juddi/api/runtime/juddiTestimpl.java
rename to juddi-core/src/test/java/org/apache/juddi/api/runtime/JuddiTestimpl.java
index 9032d34..c9f6dab 100644
--- a/juddi-core/src/test/java/org/apache/juddi/api/runtime/juddiTestimpl.java
+++ b/juddi-core/src/test/java/org/apache/juddi/api/runtime/JuddiTestimpl.java
@@ -62,7 +62,7 @@
@WebService(serviceName = "JUDDIApiService",
endpointInterface = "org.apache.juddi.v3_service.JUDDIApiPortType",
targetNamespace = "urn:juddi-apache-org:v3_service")
-public class juddiTestimpl implements JUDDIApiPortType {
+public class JuddiTestimpl implements JUDDIApiPortType {
@Override
diff --git a/juddi-core/src/test/java/org/apache/juddi/api/runtime/replicantImpl.java b/juddi-core/src/test/java/org/apache/juddi/api/runtime/ReplicantImpl.java
similarity index 96%
rename from juddi-core/src/test/java/org/apache/juddi/api/runtime/replicantImpl.java
rename to juddi-core/src/test/java/org/apache/juddi/api/runtime/ReplicantImpl.java
index 7d05569..c34d862 100644
--- a/juddi-core/src/test/java/org/apache/juddi/api/runtime/replicantImpl.java
+++ b/juddi-core/src/test/java/org/apache/juddi/api/runtime/ReplicantImpl.java
@@ -36,9 +36,9 @@
*/
@WebService(serviceName = "UDDI_Replication_PortType", targetNamespace = "urn:uddi-org:repl_v3_portType",
endpointInterface = "org.uddi.v3_service.UDDIReplicationPortType")
- public class replicantImpl implements UDDIReplicationPortType {
+ public class ReplicantImpl implements UDDIReplicationPortType {
- public replicantImpl(){
+ public ReplicantImpl(){
}
diff --git a/uddi-tck-base/src/main/java/org/apache/juddi/v3/tck/TckCommon.java b/uddi-tck-base/src/main/java/org/apache/juddi/v3/tck/TckCommon.java
index 38ed251..7011ca9 100644
--- a/uddi-tck-base/src/main/java/org/apache/juddi/v3/tck/TckCommon.java
+++ b/uddi-tck-base/src/main/java/org/apache/juddi/v3/tck/TckCommon.java
@@ -19,10 +19,12 @@
import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.uddi.api_v3.BindingTemplate;
import org.uddi.api_v3.BindingTemplates;
import org.uddi.api_v3.BusinessEntity;
import org.uddi.api_v3.BusinessInfos;
import org.uddi.api_v3.BusinessList;
+import org.uddi.api_v3.BusinessService;
import org.uddi.api_v3.CategoryBag;
import org.uddi.api_v3.Contacts;
import org.uddi.api_v3.DeleteBusiness;
@@ -32,9 +34,11 @@
import org.uddi.api_v3.FindService;
import org.uddi.api_v3.FindTModel;
import org.uddi.api_v3.GetOperationalInfo;
+import org.uddi.api_v3.GetServiceDetail;
import org.uddi.api_v3.KeyedReference;
import org.uddi.api_v3.Name;
import org.uddi.api_v3.OperationalInfos;
+import org.uddi.api_v3.ServiceDetail;
import org.uddi.api_v3.ServiceInfos;
import org.uddi.api_v3.ServiceList;
import org.uddi.api_v3.TModelList;
@@ -268,8 +272,23 @@
return ("NO SERVICES RETURNED!");
} else {
for (int i = 0; i < findService.getServiceInfos().getServiceInfo().size(); i++) {
- sb.append(findService.getServiceInfos().getServiceInfo().get(i).getName().get(0).getValue()).append(" lang=").append(findService.getServiceInfos().getServiceInfo().get(i).getName().get(0).getLang()).append(" ").append(findService.getServiceInfos().getServiceInfo().get(i).getServiceKey()).append(" ").append(findService.getServiceInfos().getServiceInfo().get(i).getBusinessKey()).append(
- System.getProperty("line.separator"));
+ sb.append(findService.getServiceInfos().getServiceInfo().get(i).getName().get(0).getValue()).
+ append(" lang=").append(findService.getServiceInfos().getServiceInfo().get(i).getName().get(0).getLang()).
+ append(" ").append(findService.getServiceInfos().getServiceInfo().get(i).getServiceKey()).
+ append(" ").append(findService.getServiceInfos().getServiceInfo().get(i).getBusinessKey()).
+ append(System.getProperty("line.separator"));
+ GetServiceDetail req=new GetServiceDetail();
+ req.setAuthInfo(authinfo);
+ req.getServiceKey().add(findService.getServiceInfos().getServiceInfo().get(i).getServiceKey());
+ ServiceDetail d=inquiry.getServiceDetail(req);
+ for(BusinessService bs : d.getBusinessService()){
+ for(BindingTemplate bt:bs.getBindingTemplates().getBindingTemplate()){
+ sb.append(bt.getBindingKey());
+ sb.append(" ");
+ sb.append(bt.getAccessPoint().getValue());
+ sb. append(System.getProperty("line.separator"));
+ }
+ }
}
}
} catch (Exception ex) {