You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@juddi.apache.org by ks...@apache.org on 2010/10/05 16:42:53 UTC
svn commit: r1004656 - in /webservices/juddi/trunk:
juddi-client/src/main/java/org/apache/juddi/v3/client/config/
juddi-core-openjpa/src/test/java/org/apache/juddi/api/impl/
juddiv3-samples/src/main/java/org/apache/juddi/samples/
uddi-tck-base/src/main...
Author: kstam
Date: Tue Oct 5 14:42:53 2010
New Revision: 1004656
URL: http://svn.apache.org/viewvc?rev=1004656&view=rev
Log:
JUDDI-419 adding functionality to remove just a binding to the juddi-client
Modified:
webservices/juddi/trunk/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDIClerk.java
webservices/juddi/trunk/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDIClerkManager.java
webservices/juddi/trunk/juddi-core-openjpa/src/test/java/org/apache/juddi/api/impl/API_050_BindingTemplateTest.java
webservices/juddi/trunk/juddiv3-samples/src/main/java/org/apache/juddi/samples/HelloWorldImpl.java
webservices/juddi/trunk/uddi-tck-base/src/main/java/org/apache/juddi/v3/tck/TckFindEntity.java
webservices/juddi/trunk/uddi-tck/src/test/java/org/apache/juddi/v3/tck/UDDI_050_BindingTemplateIntegrationTest.java
Modified: webservices/juddi/trunk/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDIClerk.java
URL: http://svn.apache.org/viewvc/webservices/juddi/trunk/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDIClerk.java?rev=1004656&r1=1004655&r2=1004656&view=diff
==============================================================================
--- webservices/juddi/trunk/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDIClerk.java (original)
+++ webservices/juddi/trunk/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDIClerk.java Tue Oct 5 14:42:53 2010
@@ -41,6 +41,7 @@ import org.uddi.api_v3.BusinessDetail;
import org.uddi.api_v3.BusinessEntity;
import org.uddi.api_v3.BusinessService;
import org.uddi.api_v3.DeleteBinding;
+import org.uddi.api_v3.DeleteService;
import org.uddi.api_v3.DispositionReport;
import org.uddi.api_v3.FindRelatedBusinesses;
import org.uddi.api_v3.GetAuthToken;
@@ -189,6 +190,7 @@ public class UDDIClerk implements Serial
/**
* Unregisters the BindingTemplates for this service.
* @param service
+ * @deprecated use {@link UDDIClerk.unRegisterService}
*/
public void unRegister(BusinessService service, Node node) {
log.info("UnRegistering binding for service " + service.getName().get(0).getValue());
@@ -205,6 +207,43 @@ public class UDDIClerk implements Serial
+ " ." + e.getMessage(),e);
}
}
+ /**
+ * Unregisters the service with specified serviceKey.
+ * @param service
+ */
+ public void unRegisterService(String serviceKey, Node node) {
+ log.info("UnRegistering the service " + serviceKey);
+ try {
+ String authToken = getAuthToken(node.getSecurityUrl());
+ DeleteService deleteService = new DeleteService();
+ deleteService.setAuthInfo(authToken);
+ deleteService.getServiceKey().add(serviceKey);
+ getUDDINode().getTransport().getUDDIPublishService(node.getPublishUrl()).deleteService(deleteService);
+ } catch (Exception e) {
+ log.error("Unable to register service " + serviceKey
+ + " ." + e.getMessage(),e);
+ }
+ }
+
+ /**
+ * Unregisters the BindingTemplate with specified bindingKey.
+ * @param bindingTemplate
+ * @param node
+ */
+ public void unRegisterBinding(String bindingKey, Node node) {
+ log.info("UnRegistering binding key " + bindingKey);
+ try {
+ String authToken = getAuthToken(node.getSecurityUrl());
+ DeleteBinding deleteBinding = new DeleteBinding();
+ deleteBinding.setAuthInfo(authToken);
+ deleteBinding.getBindingKey().add(bindingKey);
+ getUDDINode().getTransport().getUDDIPublishService(node.getPublishUrl()).deleteBinding(deleteBinding);
+ } catch (Exception e) {
+ log.error("Unable to unregister bindingkey " + bindingKey
+ + " ." + e.getMessage(),e);
+ }
+ }
+
public BusinessService findService(String serviceKey, Node node) throws RemoteException,
TransportException, ConfigurationException {
Modified: webservices/juddi/trunk/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDIClerkManager.java
URL: http://svn.apache.org/viewvc/webservices/juddi/trunk/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDIClerkManager.java?rev=1004656&r1=1004655&r2=1004656&view=diff
==============================================================================
--- webservices/juddi/trunk/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDIClerkManager.java (original)
+++ webservices/juddi/trunk/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDIClerkManager.java Tue Oct 5 14:42:53 2010
@@ -16,13 +16,17 @@
*/
package org.apache.juddi.v3.client.config;
+import java.rmi.RemoteException;
import java.util.Collection;
+import java.util.List;
import java.util.Map;
import java.util.Set;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.juddi.v3.annotations.AnnotationProcessor;
+import org.apache.juddi.v3.client.transport.TransportException;
import org.apache.log4j.Logger;
+import org.uddi.api_v3.BindingTemplate;
import org.uddi.api_v3.BusinessService;
public class UDDIClerkManager {
@@ -50,7 +54,7 @@ public class UDDIClerkManager {
}
private void releaseResources() {
- unRegisterAnnotatedServices();
+ unRegisterBindingsOfAnnotatedServices(true);
}
/**
* Initializes the UDDI Clerk.
@@ -140,7 +144,9 @@ public class UDDIClerkManager {
}
}
/**
- * Removes the bindings of the services of the annotated classes.
+ * Removes the service and all of its bindingTemplates of the annotated classes.
+ * @throws TransportException
+ * @throws RemoteException
*/
public void unRegisterAnnotatedServices() {
Map<String,UDDIClerk> clerks = clientConfig.getUDDIClerks();
@@ -150,12 +156,51 @@ public class UDDIClerkManager {
Collection<BusinessService> services = ap.readServiceAnnotations(
clerk.getClassWithAnnotations(),clerk.getUDDINode().getProperties());
for (BusinessService businessService : services) {
- clerk.unRegister(businessService,clerk.getUDDINode().getApiNode());
+ clerk.unRegisterService(businessService.getServiceKey(),clerk.getUDDINode().getApiNode());
}
}
}
}
+ /**
+ * Removes the bindings of the services in the annotated classes. Multiple nodes may register
+ * the same service using different BindingTempates. If the last BindingTemplate is removed
+ * the service can be removed as well.
+ *
+ * @param removeServiceWithNoBindingTemplates - if set to true it will remove the service if there
+ * are no other BindingTemplates.
+ */
+ public void unRegisterBindingsOfAnnotatedServices(boolean removeServiceWithNoBindingTemplates) {
+
+ Map<String,UDDIClerk> clerks = clientConfig.getUDDIClerks();
+ if (clerks.size() > 0) {
+ AnnotationProcessor ap = new AnnotationProcessor();
+ for (UDDIClerk clerk : clerks.values()) {
+ Collection<BusinessService> services = ap.readServiceAnnotations(
+ clerk.getClassWithAnnotations(),clerk.getUDDINode().getProperties());
+ for (BusinessService businessService : services) {
+ if (businessService.getBindingTemplates() != null) {
+ List<BindingTemplate> bindingTemplates = businessService.getBindingTemplates().getBindingTemplate();
+ for (BindingTemplate bindingTemplate : bindingTemplates) {
+ clerk.unRegisterBinding(bindingTemplate.getBindingKey(), clerk.getUDDINode().getApiNode());
+ }
+ }
+ if (removeServiceWithNoBindingTemplates) {
+ try {
+ BusinessService existingService = clerk.findService(businessService.getServiceKey(), clerk.getUDDINode().getApiNode());
+ if (existingService.getBindingTemplates()==null || existingService.getBindingTemplates().getBindingTemplate().size()==0) {
+ clerk.unRegisterService(businessService.getServiceKey(),clerk.getUDDINode().getApiNode());
+ }
+ } catch (Exception e) {
+ log.error(e.getMessage(),e);
+ }
+ }
+ }
+ }
+ }
+
+ }
+
public ClientConfig getClientConfig() {
return clientConfig;
}
Modified: webservices/juddi/trunk/juddi-core-openjpa/src/test/java/org/apache/juddi/api/impl/API_050_BindingTemplateTest.java
URL: http://svn.apache.org/viewvc/webservices/juddi/trunk/juddi-core-openjpa/src/test/java/org/apache/juddi/api/impl/API_050_BindingTemplateTest.java?rev=1004656&r1=1004655&r2=1004656&view=diff
==============================================================================
--- webservices/juddi/trunk/juddi-core-openjpa/src/test/java/org/apache/juddi/api/impl/API_050_BindingTemplateTest.java (original)
+++ webservices/juddi/trunk/juddi-core-openjpa/src/test/java/org/apache/juddi/api/impl/API_050_BindingTemplateTest.java Tue Oct 5 14:42:53 2010
@@ -21,6 +21,7 @@ import org.apache.juddi.Registry;
import org.apache.juddi.v3.tck.TckBindingTemplate;
import org.apache.juddi.v3.tck.TckBusiness;
import org.apache.juddi.v3.tck.TckBusinessService;
+import org.apache.juddi.v3.tck.TckFindEntity;
import org.apache.juddi.v3.tck.TckPublisher;
import org.apache.juddi.v3.tck.TckSecurity;
import org.apache.juddi.v3.tck.TckTModel;
@@ -44,7 +45,7 @@ public class API_050_BindingTemplateTest
private static TckBusiness tckBusiness = new TckBusiness(new UDDIPublicationImpl(), new UDDIInquiryImpl());
private static TckBusinessService tckBusinessService = new TckBusinessService(new UDDIPublicationImpl(), new UDDIInquiryImpl());
private static TckBindingTemplate tckBindingTemplate = new TckBindingTemplate(new UDDIPublicationImpl(), new UDDIInquiryImpl());
-
+ private static TckFindEntity tckFindEntity = new TckFindEntity(new UDDIInquiryImpl());
private static String authInfoJoe = null;
@@ -80,4 +81,32 @@ public class API_050_BindingTemplateTest
tckTModel.deleteJoePublisherTmodel(authInfoJoe);
}
}
+
+ @Test
+ public void testSearchBinding() {
+ try {
+ tckTModel.saveJoePublisherTmodel(authInfoJoe);
+ tckBusiness.saveJoePublisherBusiness(authInfoJoe);
+ tckBusinessService.saveJoePublisherService(authInfoJoe);
+
+ tckFindEntity.findServiceDetail("uddi:uddi.joepublisher.com:serviceone");
+ tckBindingTemplate.deleteBinding(authInfoJoe, "uddi:uddi.joepublisher.com:bindingone");
+ String serviceKey = tckFindEntity.findService();
+ tckFindEntity.findServiceDetail(serviceKey);
+
+ tckBindingTemplate.saveJoePublisherBinding(authInfoJoe);
+
+ serviceKey = tckFindEntity.findService();
+ tckFindEntity.findServiceDetail(serviceKey);
+
+ tckBindingTemplate.deleteJoePublisherBinding(authInfoJoe);
+
+ tckFindEntity.findService();
+ tckFindEntity.findServiceDetail(serviceKey);
+ } finally {
+ tckBusinessService.deleteJoePublisherService(authInfoJoe);
+ tckBusiness.deleteJoePublisherBusiness(authInfoJoe);
+ tckTModel.deleteJoePublisherTmodel(authInfoJoe);
+ }
+ }
}
Modified: webservices/juddi/trunk/juddiv3-samples/src/main/java/org/apache/juddi/samples/HelloWorldImpl.java
URL: http://svn.apache.org/viewvc/webservices/juddi/trunk/juddiv3-samples/src/main/java/org/apache/juddi/samples/HelloWorldImpl.java?rev=1004656&r1=1004655&r2=1004656&view=diff
==============================================================================
--- webservices/juddi/trunk/juddiv3-samples/src/main/java/org/apache/juddi/samples/HelloWorldImpl.java (original)
+++ webservices/juddi/trunk/juddiv3-samples/src/main/java/org/apache/juddi/samples/HelloWorldImpl.java Tue Oct 5 14:42:53 2010
@@ -27,7 +27,7 @@ import org.apache.juddi.v3.annotations.U
serviceKey="uddi:${keyDomain}:services-hello${department}",
description = "Hello World test service")
@UDDIServiceBinding(
- bindingKey="uddi:${keyDomain}:bindings-hello${department}-wsdl",
+ bindingKey="uddi:${keyDomain}:${serverName}-${serverPort}-hello${department}-wsdl",
description="WSDL endpoint for the hello${department} Service. This service is used for "
+ "testing the jUDDI annotation functionality",
accessPointType="wsdlDeployment",
Modified: webservices/juddi/trunk/uddi-tck-base/src/main/java/org/apache/juddi/v3/tck/TckFindEntity.java
URL: http://svn.apache.org/viewvc/webservices/juddi/trunk/uddi-tck-base/src/main/java/org/apache/juddi/v3/tck/TckFindEntity.java?rev=1004656&r1=1004655&r2=1004656&view=diff
==============================================================================
--- webservices/juddi/trunk/uddi-tck-base/src/main/java/org/apache/juddi/v3/tck/TckFindEntity.java (original)
+++ webservices/juddi/trunk/uddi-tck-base/src/main/java/org/apache/juddi/v3/tck/TckFindEntity.java Tue Oct 5 14:42:53 2010
@@ -27,6 +27,7 @@ import org.apache.log4j.Logger;
import org.junit.Assert;
import org.uddi.api_v3.BindingDetail;
import org.uddi.api_v3.BindingTemplate;
+import org.uddi.api_v3.BindingTemplates;
import org.uddi.api_v3.BusinessDetail;
import org.uddi.api_v3.BusinessEntity;
import org.uddi.api_v3.BusinessInfo;
@@ -39,9 +40,11 @@ import org.uddi.api_v3.FindRelatedBusine
import org.uddi.api_v3.FindService;
import org.uddi.api_v3.FindTModel;
import org.uddi.api_v3.GetBusinessDetail;
+import org.uddi.api_v3.GetServiceDetail;
import org.uddi.api_v3.RelatedBusinessInfo;
import org.uddi.api_v3.RelatedBusinessInfos;
import org.uddi.api_v3.RelatedBusinessesList;
+import org.uddi.api_v3.ServiceDetail;
import org.uddi.api_v3.ServiceInfo;
import org.uddi.api_v3.ServiceInfos;
import org.uddi.api_v3.ServiceList;
@@ -174,7 +177,8 @@ public class TckFindEntity
}
}
- public void findService() {
+ public String findService() {
+ String serviceKey = null;
try {
FindService body = (FindService)EntityCreator.buildFromDoc(FIND_SERVICE_XML, "org.uddi.api_v3");
ServiceList result = inquiry.findService(body);
@@ -193,13 +197,50 @@ public class TckFindEntity
assertEquals(bsIn.getServiceKey(), siOut.getServiceKey());
TckValidator.checkNames(bsIn.getName(), siOut.getName());
+ serviceKey = siOut.getServiceKey();
}
catch(Exception e) {
logger.error(e.getMessage(), e);
Assert.fail("No exception should be thrown.");
}
+ return serviceKey;
}
+ public void findServiceDetail(String serviceKey) {
+ try {
+ GetServiceDetail getServiceDetail = new GetServiceDetail();
+ getServiceDetail.getServiceKey().add(serviceKey);
+
+
+ ServiceDetail result = inquiry.getServiceDetail(getServiceDetail);
+
+ if (result == null)
+ Assert.fail("Null result from find service operation");
+
+ BindingTemplates templates = result.getBusinessService().get(0).getBindingTemplates();
+ if (templates!=null && templates.getBindingTemplate()!=null) {
+ System.out.println(templates.getBindingTemplate().size());
+ System.out.println("key=" + templates.getBindingTemplate().get(0).getBindingKey());
+ }
+// ServiceInfos sInfos = result.getServiceInfos();
+// if (sInfos == null)
+// Assert.fail("No result from find service operation");
+// List<ServiceInfo> siList = sInfos.getServiceInfo();
+// if (siList == null || siList.size() == 0)
+// Assert.fail("No result from find service operation");
+// ServiceInfo siOut = siList.get(0);
+//
+// BusinessService bsIn = (BusinessService)EntityCreator.buildFromDoc(TckBusinessService.JOE_SERVICE_XML, "org.uddi.api_v3");
+//
+// assertEquals(bsIn.getServiceKey(), siOut.getServiceKey());
+//
+// TckValidator.checkNames(bsIn.getName(), siOut.getName());
+ }
+ catch(Exception e) {
+ logger.error(e.getMessage(), e);
+ Assert.fail("No exception should be thrown.");
+ }
+ }
public void findBinding() {
try {
FindBinding body = (FindBinding)EntityCreator.buildFromDoc(FIND_BINDING_XML, "org.uddi.api_v3");
Modified: webservices/juddi/trunk/uddi-tck/src/test/java/org/apache/juddi/v3/tck/UDDI_050_BindingTemplateIntegrationTest.java
URL: http://svn.apache.org/viewvc/webservices/juddi/trunk/uddi-tck/src/test/java/org/apache/juddi/v3/tck/UDDI_050_BindingTemplateIntegrationTest.java?rev=1004656&r1=1004655&r2=1004656&view=diff
==============================================================================
--- webservices/juddi/trunk/uddi-tck/src/test/java/org/apache/juddi/v3/tck/UDDI_050_BindingTemplateIntegrationTest.java (original)
+++ webservices/juddi/trunk/uddi-tck/src/test/java/org/apache/juddi/v3/tck/UDDI_050_BindingTemplateIntegrationTest.java Tue Oct 5 14:42:53 2010
@@ -42,6 +42,7 @@ public class UDDI_050_BindingTemplateInt
private static TckBusiness tckBusiness = null;
private static TckBusinessService tckBusinessService = null;
private static TckBindingTemplate tckBindingTemplate = null;
+ private static TckFindEntity tckFindEntity = null;
private static String authInfoJoe = null;
@@ -69,6 +70,7 @@ public class UDDI_050_BindingTemplateInt
tckBusiness = new TckBusiness(publication, inquiry);
tckBusinessService = new TckBusinessService(publication, inquiry);
tckBindingTemplate = new TckBindingTemplate(publication, inquiry);
+ tckFindEntity = new TckFindEntity(inquiry);
} else {
Assert.fail();
}
@@ -100,4 +102,31 @@ public class UDDI_050_BindingTemplateInt
tckTModel.deleteJoePublisherTmodel(authInfoJoe);
}
}
+
+ @Test
+ public void findService() {
+ try {
+ tckTModel.saveJoePublisherTmodel(authInfoJoe);
+ tckBusiness.saveJoePublisherBusiness(authInfoJoe);
+ tckBusinessService.saveJoePublisherService(authInfoJoe);
+ tckBindingTemplate.saveJoePublisherBinding(authInfoJoe);
+ tckBindingTemplate.deleteBinding(authInfoJoe, "uddi:uddi.joepublisher.com:bindingone");
+ String serviceKey = tckFindEntity.findService();
+ tckFindEntity.findServiceDetail(serviceKey);
+
+ tckBindingTemplate.saveJoePublisherBinding(authInfoJoe);
+
+ serviceKey = tckFindEntity.findService();
+ tckFindEntity.findServiceDetail(serviceKey);
+
+ tckBindingTemplate.deleteJoePublisherBinding(authInfoJoe);
+
+ tckFindEntity.findService();
+ tckFindEntity.findServiceDetail(serviceKey);
+ } finally {
+ tckBusinessService.deleteJoePublisherService(authInfoJoe);
+ tckBusiness.deleteJoePublisherBusiness(authInfoJoe);
+ tckTModel.deleteJoePublisherTmodel(authInfoJoe);
+ }
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: juddi-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: juddi-cvs-help@ws.apache.org