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) {