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