You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@juddi.apache.org by al...@apache.org on 2013/05/11 02:27:35 UTC

svn commit: r1481240 [2/4] - in /juddi/branches/juddi-3.2.x: ./ juddi-client/ juddi-client/src/main/java/org/apache/juddi/v3/client/ juddi-client/src/main/java/org/apache/juddi/v3/client/config/ juddi-client/src/main/java/org/apache/juddi/v3/client/map...

Modified: juddi/branches/juddi-3.2.x/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDIClerk.java
URL: http://svn.apache.org/viewvc/juddi/branches/juddi-3.2.x/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDIClerk.java?rev=1481240&r1=1481239&r2=1481240&view=diff
==============================================================================
--- juddi/branches/juddi-3.2.x/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDIClerk.java (original)
+++ juddi/branches/juddi-3.2.x/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDIClerk.java Sat May 11 00:27:33 2013
@@ -18,6 +18,8 @@ package org.apache.juddi.v3.client.confi
 
 import java.io.Serializable;
 import java.lang.reflect.UndeclaredThrowableException;
+import java.net.MalformedURLException;
+import java.net.URL;
 import java.rmi.RemoteException;
 import java.util.ArrayList;
 import java.util.Date;
@@ -26,6 +28,8 @@ import java.util.List;
 import java.util.Map;
 import java.util.Properties;
 
+import javax.wsdl.Definition;
+import javax.wsdl.WSDLException;
 import javax.xml.ws.Holder;
 import javax.xml.ws.soap.SOAPFaultException;
 
@@ -38,13 +42,19 @@ import org.apache.juddi.api_v3.Node;
 import org.apache.juddi.api_v3.NodeDetail;
 import org.apache.juddi.api_v3.SaveClerk;
 import org.apache.juddi.api_v3.SaveNode;
+import org.apache.juddi.v3.client.UDDIConstants;
+import org.apache.juddi.v3.client.mapping.ReadWSDL;
+import org.apache.juddi.v3.client.mapping.URLLocalizerDefaultImpl;
+import org.apache.juddi.v3.client.mapping.WSDL2UDDI;
 import org.apache.juddi.v3.client.transport.TransportException;
 import org.uddi.api_v3.BindingDetail;
 import org.uddi.api_v3.BindingTemplate;
 import org.uddi.api_v3.BusinessDetail;
 import org.uddi.api_v3.BusinessEntity;
 import org.uddi.api_v3.BusinessService;
+import org.uddi.api_v3.CategoryBag;
 import org.uddi.api_v3.DeleteBinding;
+import org.uddi.api_v3.DeleteBusiness;
 import org.uddi.api_v3.DeleteService;
 import org.uddi.api_v3.DeleteTModel;
 import org.uddi.api_v3.DiscardAuthToken;
@@ -56,6 +66,10 @@ import org.uddi.api_v3.GetBindingDetail;
 import org.uddi.api_v3.GetBusinessDetail;
 import org.uddi.api_v3.GetServiceDetail;
 import org.uddi.api_v3.GetTModelDetail;
+import org.uddi.api_v3.KeyedReference;
+import org.uddi.api_v3.Name;
+import org.uddi.api_v3.OverviewDoc;
+import org.uddi.api_v3.OverviewURL;
 import org.uddi.api_v3.RelatedBusinessesList;
 import org.uddi.api_v3.Result;
 import org.uddi.api_v3.SaveBinding;
@@ -72,585 +86,789 @@ import org.uddi.v3_service.DispositionRe
 
 public class UDDIClerk implements Serializable {
 
-	private static final long serialVersionUID = -8597375975981358134L;
-	private Log log = LogFactory.getLog(this.getClass());
-	
-	protected String name;
-	protected UDDINode uddiNode;
-	protected String publisher;
-	protected String password;
-	
-	private Date tokenBirthDate;
-	private String authToken;
-	private String[] classWithAnnotations;
-	private String managerName;
-
-	private Map<String,Properties> services = new HashMap<String,Properties>(); 
-
-	
-	
-	public UDDIClerk() {
-		super();
-		// TODO Auto-generated constructor stub
-	}
-	
-	public UDDIClerk(Clerk clerk) {
-		super();
-		this.name = clerk.getName();
-		this.password = clerk.getPassword();
-		this.publisher = clerk.getPublisher();
-		this.uddiNode = new UDDINode(clerk.getNode());
-	}
-
-	public String[] getClassWithAnnotations() {
-		return classWithAnnotations;
-	}
-
-	public void setClassWithAnnotations(String[] classWithAnnotations) {
-		this.classWithAnnotations = classWithAnnotations;
-	}
-
-	public Map<String, Properties> getServices() {
-		return services;
-	}
-
-	public void setServices(Map<String, Properties> services) {
-		this.services = services;
-	}
-
-	public String getManagerName() {
-		return managerName;
-	}
-
-	public void setManagerName(String managerName) {
-		this.managerName = managerName;
-	}
-	
-	public Subscription register(Subscription subscription) {
-		return register(subscription, this.getUDDINode().getApiNode());
-	}
-	/**
-	 * Register a Subscription.
-	 */
-	public Subscription register(Subscription subscription, Node node) {
-		
-		log.info("Registering subscription with key " + subscription.getSubscriptionKey());
-		Holder<List<Subscription>> holder = new Holder<List<Subscription>>();
-		try {
-			String authToken = getAuthToken(node.getSecurityUrl());
-			
-			List<Subscription> subscriptions = new ArrayList<Subscription>();
-			subscriptions.add(subscription);
-			holder.value = subscriptions;
-			getUDDINode().getTransport().getUDDISubscriptionService(node.getSubscriptionUrl()).saveSubscription(authToken, holder);
-			if (log.isDebugEnabled()) log.debug("Registering subscription " +  subscription.getSubscriptionKey() + " completed.");
-		} catch (Exception e) {
-			log.error("Unable to register subscription " +  subscription.getSubscriptionKey()
-					+ " ." + e.getMessage(),e);
-		} catch (Throwable t) {
-			log.error("Unable to register subscriptionl " +  subscription.getSubscriptionKey()
-					+ " ." + t.getMessage(),t);
-		}
-		subscription = holder.value.get(0);
-		return subscription;
-	}
-	/**
-	 * Register a tModel, using the node of current clerk ('this').
-	 * 
-	 * @param tModel
-	 * @return the TModelDetail of the newly registered TModel
-	 */
-	public TModelDetail register(TModel tModel) {
-		return register(tModel, this.getUDDINode().getApiNode());
-	}
-	/**
-	 * Register a tModel.
-	 */
-	public TModelDetail register(TModel tModel, Node node) {
-		TModelDetail tModelDetail = null;
-		log.info("Registering tModel with key " + tModel.getTModelKey());
-		try {
-			String authToken = getAuthToken(node.getSecurityUrl());
-			SaveTModel saveTModel = new SaveTModel();
-			saveTModel.setAuthInfo(authToken);
-			saveTModel.getTModel().add(tModel);
-			tModelDetail = getUDDINode().getTransport().getUDDIPublishService(node.getPublishUrl()).saveTModel(saveTModel);
-			if (log.isDebugEnabled()) log.debug("Registering tModel " +  tModel.getTModelKey() + " completed.");
-		} catch (Exception e) {
-			log.error("Unable to register tModel " +  tModel.getTModelKey()
-					+ " ." + e.getMessage(),e);
-		} catch (Throwable t) {
-			log.error("Unable to register tModel " +  tModel.getTModelKey()
-					+ " ." + t.getMessage(),t);
-		}
-		return tModelDetail;
-	}
-	
-	/**
-	 * Register a BindingTemplate, using the node of current clerk ('this').
-	 * 
-	 */
-	public BindingTemplate register(BindingTemplate binding) {
-		return register(binding, this.getUDDINode().getApiNode());
-	}
-	/**
-	 * Register a BindingTemplate.
-	 * 
-	 */
-	public BindingTemplate register(BindingTemplate binding, Node node) {
-		
-		BindingTemplate bindingTemplate=null;
-		log.info("Registering bindingTemplate with key " + binding.getBindingKey());
-		try {
-			String authToken = getAuthToken(node.getSecurityUrl());
-			SaveBinding saveBinding = new SaveBinding();
-			saveBinding.setAuthInfo(authToken);
-			saveBinding.getBindingTemplate().add(binding);
-			BindingDetail bindingDetail = getUDDINode().getTransport().getUDDIPublishService(node.getPublishUrl()).saveBinding(saveBinding);
-			bindingTemplate = bindingDetail.getBindingTemplate().get(0);
-			if (log.isDebugEnabled()) log.debug("Registering template binding " + binding.getBindingKey() + " completed.");
-		} catch (Exception e) {
-			log.error("Unable to register template binding " + bindingTemplate.getBindingKey()
-					+ " ." + e.getMessage(),e);
-		} catch (Throwable t) {
-			log.error("Unable to register template binding " + bindingTemplate.getBindingKey()
-					+ " ." + t.getMessage(),t);
-		}
-		return bindingTemplate;
-	}
-	/**
-	 * Register a service, using the node of current clerk ('this').
-	 * 
-	 */
-	public BusinessService register(BusinessService service) {
-		return register(service, this.getUDDINode().getApiNode());
-	}
-	/**
-	 * Register a service.
-	 * 
-	 */
-	public BusinessService register(BusinessService service, Node node) {
-		
-		BusinessService businessService=null;
-		log.info("Registering service " + service.getName().get(0).getValue()
-				+ " with key " + service.getServiceKey());
-		try {
-			String authToken = getAuthToken(node.getSecurityUrl());
-			SaveService saveService = new SaveService();
-			saveService.setAuthInfo(authToken);
-			saveService.getBusinessService().add(service);
-			ServiceDetail serviceDetail = getUDDINode().getTransport().getUDDIPublishService(node.getPublishUrl()).saveService(saveService);
-			businessService = serviceDetail.getBusinessService().get(0);
-			if (log.isDebugEnabled()) log.debug("Registering service " + service.getName().get(0).getValue() + " completed.");
-		} catch (Exception e) {
-			log.error("Unable to register service " + service.getName().get(0).getValue()
-					+ " ." + e.getMessage(),e);
-		} catch (Throwable t) {
-			log.error("Unable to register service " + service.getName().get(0).getValue()
-					+ " ." + t.getMessage(),t);
-		}
-		return businessService;
-	}
-	public BusinessEntity register(BusinessEntity business) {
-		return register(business, this.getUDDINode().getApiNode());
-	}
-	/**
-	 * Register a service.
-	 * returns null if not successful 
-	 */
-	public BusinessEntity register(BusinessEntity business, Node node) {
-		
-		BusinessEntity businessEntity=null;
-		log.info("Registering business " + business.getName().get(0).getValue()
-				+ " with key " + business.getBusinessKey());
-		try {
-			String authToken = getAuthToken(node.getSecurityUrl());
-			SaveBusiness saveBusiness = new SaveBusiness();
-			saveBusiness.setAuthInfo(authToken);
-			saveBusiness.getBusinessEntity().add(business);
-			BusinessDetail businessDetail = getUDDINode().getTransport().getUDDIPublishService(node.getPublishUrl()).saveBusiness(saveBusiness);
-			businessEntity = businessDetail.getBusinessEntity().get(0);
-			if (log.isDebugEnabled()) log.debug("Registering businessEntity " + businessEntity.getName().get(0).getValue() + " completed.");
-		} catch (Exception e) {
-			log.error("Unable to register business " + business.getName().get(0).getValue()
-					+ " ." + e.getMessage(),e);
-		} catch (Throwable t) {
-			log.error("Unable to register business " + business.getName().get(0).getValue()
-					+ " ." + t.getMessage(),t);
-		}
-		return businessEntity;
-	}
-	
-	public void unRegisterService(String serviceKey) {
-		unRegisterService(serviceKey, this.getUDDINode().getApiNode());
-	}
-	/**
-	 * 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);
-		}
-	}
-	public void unRegisterBinding(String bindingKey) {
-		unRegisterBinding(bindingKey, this.getUDDINode().getApiNode());
-	}
-	/**
-	 * 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 void unRegisterTModel(String tModelKey) {
-		unRegisterTModel(tModelKey, this.getUDDINode().getApiNode());
-	}
-	/**
-	 * Unregisters the BindingTemplate with specified bindingKey. 
-	 * @param bindingTemplate
-	 * @param node
-	 */
-	public void unRegisterTModel(String tModelKey, Node node) {
-		log.info("UnRegistering tModel key " + tModelKey);
-		try {
-			String authToken = getAuthToken(node.getSecurityUrl());
-			DeleteTModel deleteTModel = new DeleteTModel();
-			deleteTModel.setAuthInfo(authToken);
-			deleteTModel.getTModelKey().add(tModelKey);
-			getUDDINode().getTransport().getUDDIPublishService(node.getPublishUrl()).deleteTModel(deleteTModel);
-		} catch (Exception e) {
-			log.error("Unable to unregister tModelkey " + tModelKey
-					+ " ." + e.getMessage(),e);
-		}
-	}
-	
-	public void unRegisterSubscription(String subscriptionKey) {
-		unRegisterSubscription(subscriptionKey, this.getUDDINode().getApiNode());
-	}
-	
-	public void unRegisterSubscription(String subscriptionKey, Node node) {
-		log.info("UnRegistering subscription with key " + subscriptionKey);
-		try {
-			String authToken = getAuthToken(node.getSecurityUrl());
-			DeleteSubscription deleteSubscription = new DeleteSubscription();
-			deleteSubscription.setAuthInfo(authToken);
-			deleteSubscription.getSubscriptionKey().add(subscriptionKey);
-			getUDDINode().getTransport().getUDDISubscriptionService(node.getSubscriptionUrl()).deleteSubscription(deleteSubscription);
-		} catch (Exception e) {
-			log.error("Unable to unregister subscription key " + subscriptionKey
-					+ " ." + e.getMessage(),e);
-		}
-	}
-	
-	
-	public TModelList findTModel(FindTModel findTModel) throws RemoteException, ConfigurationException, TransportException {
-		return findTModel(findTModel, this.getUDDINode().getApiNode());
-	}
-			
-	public TModelList findTModel(FindTModel findTModel, Node node) throws RemoteException, 
-	TransportException, ConfigurationException  {
-		
-		findTModel.setAuthInfo(getAuthToken(node.getSecurityUrl()));
-		try {
-			TModelList tModelList = getUDDINode().getTransport().getUDDIInquiryService(node.getInquiryUrl()).findTModel(findTModel);
-			return tModelList;
-		} catch (DispositionReportFaultMessage dr) {
-			DispositionReport report = DispositionReportFaultMessage.getDispositionReport(dr);
-			checkForErrorInDispositionReport(report, null, null);
-		} catch (SOAPFaultException sfe) {
-			DispositionReport report = DispositionReportFaultMessage.getDispositionReport(sfe);
-			checkForErrorInDispositionReport(report, null, null);
-		} catch (UndeclaredThrowableException ute) {
-			DispositionReport report = DispositionReportFaultMessage.getDispositionReport(ute);
-			checkForErrorInDispositionReport(report, null, null);
-		}
-		return null;
-	}
-	
-	public TModelDetail getTModelDetail(String tModelKey) throws RemoteException, ConfigurationException, TransportException {
-		GetTModelDetail getTModelDetail = new GetTModelDetail();
-		getTModelDetail.getTModelKey().add(tModelKey);
-		return getTModelDetail(getTModelDetail);
-	}
-	
-	public TModelDetail getTModelDetail(GetTModelDetail getTModelDetail) throws RemoteException, ConfigurationException, TransportException {
-		return getTModelDetail(getTModelDetail, this.getUDDINode().getApiNode());
-	}
-	
-	public TModelDetail getTModelDetail(GetTModelDetail getTModelDetail, Node node) throws RemoteException, 
-	TransportException, ConfigurationException  {
-		
-		getTModelDetail.setAuthInfo(getAuthToken(node.getSecurityUrl()));
-		try {
-			TModelDetail tModelDetail = getUDDINode().getTransport().getUDDIInquiryService(node.getInquiryUrl()).getTModelDetail(getTModelDetail);
-			return tModelDetail;
-		} catch (DispositionReportFaultMessage dr) {
-			DispositionReport report = DispositionReportFaultMessage.getDispositionReport(dr);
-			checkForErrorInDispositionReport(report, null, null);
-		} catch (SOAPFaultException sfe) {
-			DispositionReport report = DispositionReportFaultMessage.getDispositionReport(sfe);
-			checkForErrorInDispositionReport(report, null, null);
-		} catch (UndeclaredThrowableException ute) {
-			DispositionReport report = DispositionReportFaultMessage.getDispositionReport(ute);
-			checkForErrorInDispositionReport(report, null, null);
-		}
-		return null;
-	}
-   
-	public BusinessService findService(String serviceKey) throws RemoteException, 
-	TransportException, ConfigurationException  {
-		return findService(serviceKey, this.getUDDINode().getApiNode());
-	}
-	
-	public BusinessService findService(String serviceKey, Node node) throws RemoteException, 
-	TransportException, ConfigurationException  {
-		GetServiceDetail getServiceDetail = new GetServiceDetail();
-		getServiceDetail.getServiceKey().add(serviceKey);
-		getServiceDetail.setAuthInfo(getAuthToken(node.getSecurityUrl()));
-		try {
-			ServiceDetail sd = getUDDINode().getTransport().getUDDIInquiryService(node.getInquiryUrl()).getServiceDetail(getServiceDetail);
-			List<BusinessService> businessServiceList = sd.getBusinessService();
-			if (businessServiceList.size() == 0) throw new ConfigurationException("Could not find Service with key=" + serviceKey);
-			return businessServiceList.get(0);
-		} catch (DispositionReportFaultMessage dr) {
-			DispositionReport report = DispositionReportFaultMessage.getDispositionReport(dr);
-			checkForErrorInDispositionReport(report, DispositionReport.E_INVALID_KEY_PASSED, serviceKey);
-		} catch (SOAPFaultException sfe) {
-			DispositionReport report = DispositionReportFaultMessage.getDispositionReport(sfe);
-			checkForErrorInDispositionReport(report, DispositionReport.E_INVALID_KEY_PASSED, serviceKey);
-		} catch (UndeclaredThrowableException ute) {
-			DispositionReport report = DispositionReportFaultMessage.getDispositionReport(ute);
-			checkForErrorInDispositionReport(report, DispositionReport.E_INVALID_KEY_PASSED, serviceKey);
-		}
-		return null;
-	}
-	
-	public BindingTemplate findServiceBinding(String bindingKey) throws DispositionReportFaultMessage, RemoteException, 
-	TransportException, ConfigurationException  {
-		return findServiceBinding(bindingKey, this.getUDDINode().getApiNode());
-	}
-	
-	public BindingTemplate findServiceBinding(String bindingKey, Node node) throws DispositionReportFaultMessage, RemoteException, 
-			TransportException, ConfigurationException  {
-		GetBindingDetail getBindingDetail = new GetBindingDetail();
-		getBindingDetail.getBindingKey().add(bindingKey);
-		getBindingDetail.setAuthInfo(getAuthToken(node.getSecurityUrl()));
-		try {
-			BindingDetail bd = getUDDINode().getTransport().getUDDIInquiryService(node.getInquiryUrl()).getBindingDetail(getBindingDetail);
-			List<BindingTemplate> bindingTemplateList = bd.getBindingTemplate();
-			if (bindingTemplateList.size() == 0) throw new ConfigurationException("Could not find ServiceBinding with key=" + bindingKey);
-			return bindingTemplateList.get(0);
-		} catch (DispositionReportFaultMessage dr) {
-			DispositionReport report = DispositionReportFaultMessage.getDispositionReport(dr);
-			checkForErrorInDispositionReport(report, DispositionReport.E_INVALID_KEY_PASSED, bindingKey);
-		} catch (SOAPFaultException sfe) {
-			DispositionReport report = DispositionReportFaultMessage.getDispositionReport(sfe);
-			checkForErrorInDispositionReport(report, DispositionReport.E_INVALID_KEY_PASSED, bindingKey);
-		} catch (UndeclaredThrowableException ute) {
-			DispositionReport report = DispositionReportFaultMessage.getDispositionReport(ute);
-			checkForErrorInDispositionReport(report, DispositionReport.E_INVALID_KEY_PASSED, bindingKey);
-		}
-		return null;
-	}
-	
-	public BusinessEntity findBusiness(String businessKey) throws RemoteException, 
-	TransportException, ConfigurationException  {
-		return findBusiness(businessKey, this.getUDDINode().getApiNode());
-	}
-	
-	/**
-	 * Looks up the BusinessEntiry in the registry, will return null if is not found.
-	 * 
-	 * @param businessKey - the key we are looking for
-	 * @param node - the node which is going to be queried
-	 * @return BusinessEntity is found, or null if not found.
-	 * @throws RemoteException
-	 * @throws TransportException
-	 * @throws ConfigurationException
-	 */
-	public BusinessEntity findBusiness(String businessKey, Node node) throws RemoteException, 
-			TransportException, ConfigurationException  {
-		GetBusinessDetail getBusinessDetail = new GetBusinessDetail();
-		getBusinessDetail.getBusinessKey().add(businessKey);
-		getBusinessDetail.setAuthInfo(node.getSecurityUrl());
-		try {
-			BusinessDetail bd = getUDDINode().getTransport().getUDDIInquiryService(node.getInquiryUrl()).getBusinessDetail(getBusinessDetail);
-			return bd.getBusinessEntity().get(0);
-		} catch (DispositionReportFaultMessage dr) {
-			DispositionReport report = DispositionReportFaultMessage.getDispositionReport(dr);
-			checkForErrorInDispositionReport(report, DispositionReport.E_INVALID_KEY_PASSED, businessKey);
-		} catch (SOAPFaultException sfe) {
-			DispositionReport report = DispositionReportFaultMessage.getDispositionReport(sfe);
-			checkForErrorInDispositionReport(report, DispositionReport.E_INVALID_KEY_PASSED, businessKey);
-		} catch (UndeclaredThrowableException ute) {
-			DispositionReport report = DispositionReportFaultMessage.getDispositionReport(ute);
-			checkForErrorInDispositionReport(report, DispositionReport.E_INVALID_KEY_PASSED, businessKey);
-		}
-		return null;
-	}
-	
-	/**
-	 * Looks up the BusinessEntiry in the registry, will return null if is not found.
-	 * 
-	 * @param businessKey - the key we are looking for
-	 * @param node - the node which is going to be queried
-	 * @return BusinessEntity is found, or null if not found.
-	 * @throws RemoteException
-	 * @throws TransportException
-	 * @throws ConfigurationException
-	 */
-	public RelatedBusinessesList findRelatedBusinesses(String businessKey, Node node) throws RemoteException, 
-			TransportException, ConfigurationException  {
-		FindRelatedBusinesses findRelatedBusinesses = new FindRelatedBusinesses();
-		findRelatedBusinesses.setBusinessKey(businessKey);
-		findRelatedBusinesses.setAuthInfo(node.getSecurityUrl());
-		try {
-			RelatedBusinessesList rbl = getUDDINode().getTransport().getUDDIInquiryService(node.getInquiryUrl()).findRelatedBusinesses(findRelatedBusinesses);
-			return rbl;
-		} catch (DispositionReportFaultMessage dr) {
-			DispositionReport report = DispositionReportFaultMessage.getDispositionReport(dr);
-			checkForErrorInDispositionReport(report, DispositionReport.E_INVALID_KEY_PASSED, businessKey);
-		} catch (SOAPFaultException sfe) {
-			DispositionReport report = DispositionReportFaultMessage.getDispositionReport(sfe);
-			checkForErrorInDispositionReport(report, DispositionReport.E_INVALID_KEY_PASSED, businessKey);
-		} catch (UndeclaredThrowableException ute) {
-			DispositionReport report = DispositionReportFaultMessage.getDispositionReport(ute);
-			checkForErrorInDispositionReport(report, DispositionReport.E_INVALID_KEY_PASSED, businessKey);
-		}
-		return null;
-	}
-	
-	private void checkForErrorInDispositionReport(DispositionReport report, String Error, String entityKey) {
-		
-		if (entityKey!=null && report!=null && report.countainsErrorCode(DispositionReport.E_INVALID_KEY_PASSED)) {
-			log.info("entityKey " + entityKey + " was not found in the registry");
-		} else {
-			if (report == null) {
-				log.info("Missing DispositionReport");
-			} else {
-				for (Result result : report.getResult()) {
-					log.error(result.getErrInfo().getErrCode() + " " + result.getErrInfo().getValue());
-				}
-			}
-		}
-	}
-	
-	private String getAuthToken(String endpointURL) throws TransportException, DispositionReportFaultMessage, RemoteException {
-		//if the token is older then 10 minutes discard it, and create a new one.
-		if ((authToken!=null && !"".equals(authToken)) && (tokenBirthDate !=null && System.currentTimeMillis() > tokenBirthDate.getTime() + 600000 )) {
-			DiscardAuthToken discardAuthToken = new DiscardAuthToken();
-			discardAuthToken.setAuthInfo(authToken);
-			getUDDINode().getTransport().getUDDISecurityService(endpointURL).discardAuthToken(discardAuthToken);
-			authToken=null;
-		}
-		if (authToken==null || "".equals(authToken)) {
-			tokenBirthDate = new Date();
-			GetAuthToken getAuthToken = new GetAuthToken();
-			getAuthToken.setUserID(getPublisher());
-			getAuthToken.setCred(getPassword());
-			authToken = getUDDINode().getTransport().getUDDISecurityService(endpointURL).getAuthToken(getAuthToken).getAuthInfo();
-		}
-		return authToken;
-	}
-	
-	public NodeDetail saveNode(Node node)  {
-		NodeDetail nodeDetail = null;
-		try {
-			log.info("Sending Node " + node.getName() + " info to jUDDI " + getUDDINode().getName());
-			SaveNode saveNode = new SaveNode();
-			saveNode.setAuthInfo(getAuthToken(node.getSecurityUrl()));
-			saveNode.getNode().add(node);
-			nodeDetail =getUDDINode().getTransport().getJUDDIApiService(node.getJuddiApiUrl()).saveNode(saveNode);
-		} catch (Exception e) {
-			log.error("Unable to save node " + node.getName()
-					+ " ." + e.getMessage(),e);
-		} catch (Throwable t) {
-			log.error("Unable to save node " + node.getName()
-					+ " ." + t.getMessage(),t);
-		}
-		return nodeDetail;
-	}
-	
-	public ClerkDetail saveClerk(UDDIClerk senderClerk)  {
-		ClerkDetail clerkDetail = null;
-		try {
-			log.debug("Sending Clerk " + senderClerk.getName() + " info to jUDDI " + getUDDINode().getName());
-			SaveClerk saveClerk = new SaveClerk();
-			saveClerk.setAuthInfo(getAuthToken(senderClerk.getUDDINode().getSecurityUrl()));
-			saveClerk.getClerk().add(getApiClerk());
-			clerkDetail = getUDDINode().getTransport().getJUDDIApiService(senderClerk.getUDDINode().getJuddiApiUrl()).saveClerk(saveClerk);
-		} catch (Exception e) {
-			log.error("Unable to save clerk " + getName()
-					+ " ." + e.getMessage(),e);
-		} catch (Throwable t) {
-			log.error("Unable to save clerk " + getName()
-					+ " ." + t.getMessage(),t);
-		}
-		return clerkDetail;
-	}
-	
-	public Clerk getApiClerk() {
-		Clerk apiClerk = new Clerk();
-		apiClerk.setName(name);
-		apiClerk.setNode(uddiNode.getApiNode());
-		apiClerk.setPassword(password);
-		apiClerk.setPublisher(publisher);
-		return apiClerk;
-	}
-	
-	public UDDINode getUDDINode() {
-		return uddiNode;
-	}
-
-	public String getName() {
-		return name;
-	}
-
-	public void setName(String name) {
-		this.name = name;
-	}
-
-	public void setUDDINode(UDDINode uddiNode) {
-		this.uddiNode = uddiNode;
-	}
-
-	public String getPublisher() {
-		return publisher;
-	}
-
-	public void setPublisher(String publisher) {
-		this.publisher = publisher;
-	}
-
-	public String getPassword() {
-		return password;
-	}
-
-	public void setPassword(String password) {
-		this.password = password;
-	}
-
-	
-
+    private static final long serialVersionUID = -8597375975981358134L;
+    private Log log = LogFactory.getLog(this.getClass());
+    protected String name;
+    protected UDDINode uddiNode;
+    protected String publisher;
+    protected String password;
+    private Date tokenBirthDate;
+    private String authToken;
+    private String[] classWithAnnotations;
+    private WSDL[] wsdls;
+    private String managerName;
+    private Map<String, Properties> services = new HashMap<String, Properties>();
+
+    public UDDIClerk() {
+        super();
+        // TODO Auto-generated constructor stub
+    }
+
+    public UDDIClerk(Clerk clerk) {
+        super();
+        this.name = clerk.getName();
+        this.password = clerk.getPassword();
+        this.publisher = clerk.getPublisher();
+        this.uddiNode = new UDDINode(clerk.getNode());
+    }
+
+    public String[] getClassWithAnnotations() {
+        return classWithAnnotations;
+    }
+
+    public void setClassWithAnnotations(String[] classWithAnnotations) {
+        this.classWithAnnotations = classWithAnnotations;
+    }
+
+    public Map<String, Properties> getServices() {
+        return services;
+    }
+
+    public void setServices(Map<String, Properties> services) {
+        this.services = services;
+    }
+
+    public String getManagerName() {
+        return managerName;
+    }
+
+    public void setManagerName(String managerName) {
+        this.managerName = managerName;
+    }
+
+    public void registerWsdls() {
+        if (this.getWsdls() != null) {
+            Properties properties = new Properties();
+            properties.putAll(this.getUDDINode().getProperties());
+
+            for (WSDL wsdl : this.getWsdls()) {
+                try {
+                    URL wsdlUrl = this.getClass().getClassLoader().getResource(wsdl.getFileName());
+                    ReadWSDL rw = new ReadWSDL();
+                    Definition wsdlDefinition = rw.readWSDL(wsdlUrl);
+                    if (wsdl.keyDomain != null) {
+                        properties.setProperty("keyDomain", wsdl.keyDomain);
+                    }
+                    if (wsdl.businessKey != null) {
+                        properties.setProperty("businessKey", wsdl.getBusinessKey());
+                    }
+
+                    WSDL2UDDI wsdl2UDDI = new WSDL2UDDI(this, new URLLocalizerDefaultImpl(), properties);
+                    wsdl2UDDI.registerBusinessServices(wsdlDefinition);
+                } catch (Exception e) {
+                    log.error("Unable to register wsdl " + wsdl.getFileName() + " ." + e.getMessage(), e);
+                } catch (Throwable t) {
+                    log.error("Unable to register wsdl " + wsdl.getFileName() + " ." + t.getMessage(), t);
+                }
+            }
+        }
+    }
+
+    public void registerWsdls(Definition wsdlDefinition, String keyDomain, String businessKey) {
+
+        try {
+            Properties properties = new Properties();
+            properties.putAll(this.getUDDINode().getProperties());
+            //Definition wsdlDefinition = rw.readWSDL(wsdlUrl);
+            if (keyDomain != null) {
+                properties.setProperty("keyDomain", keyDomain);
+            }
+            if (businessKey != null) {
+                properties.setProperty("businessKey", businessKey);
+            }
+
+            WSDL2UDDI wsdl2UDDI = new WSDL2UDDI(this, new URLLocalizerDefaultImpl(), properties);
+            wsdl2UDDI.registerBusinessServices(wsdlDefinition);
+        } catch (Exception e) {
+            log.error("Unable to register wsdl " + " ." + e.getMessage(), e);
+        } catch (Throwable t) {
+            log.error("Unable to register wsdl " + " ." + t.getMessage(), t);
+        }
+    }
+
+    public void unRegisterWsdls() {
+        if (this.getWsdls() != null) {
+            Properties properties = new Properties();
+            properties.putAll(this.getUDDINode().getProperties());
+
+            for (WSDL wsdl : this.getWsdls()) {
+                try {
+                    URL wsdlUrl = this.getClass().getClassLoader().getResource(wsdl.getFileName());
+                    ReadWSDL rw = new ReadWSDL();
+                    Definition wsdlDefinition = rw.readWSDL(wsdlUrl);
+                    if (wsdl.keyDomain != null) {
+                        properties.setProperty("keyDomain", wsdl.keyDomain);
+                    }
+                    if (wsdl.businessKey != null) {
+                        properties.setProperty("businessKey", wsdl.getBusinessKey());
+                    }
+
+                    WSDL2UDDI wsdl2UDDI = new WSDL2UDDI(this, new URLLocalizerDefaultImpl(), properties);
+                    wsdl2UDDI.unRegisterBusinessServices(wsdlDefinition);
+                } catch (Exception e) {
+                    log.error("Unable to register wsdl " + wsdl.getFileName() + " ." + e.getMessage(), e);
+                } catch (Throwable t) {
+                    log.error("Unable to register wsdl " + wsdl.getFileName() + " ." + t.getMessage(), t);
+                }
+            }
+        }
+    }
+
+    public Subscription register(Subscription subscription) {
+        return register(subscription, this.getUDDINode().getApiNode());
+    }
+
+    /**
+     * Register a Subscription.
+     */
+    public Subscription register(Subscription subscription, Node node) {
+
+        log.info("Registering subscription with key " + subscription.getSubscriptionKey());
+        Holder<List<Subscription>> holder = new Holder<List<Subscription>>();
+        try {
+            String authToken = getAuthToken(node.getSecurityUrl());
+
+            List<Subscription> subscriptions = new ArrayList<Subscription>();
+            subscriptions.add(subscription);
+            holder.value = subscriptions;
+            getUDDINode().getTransport().getUDDISubscriptionService(node.getSubscriptionUrl()).saveSubscription(authToken, holder);
+            if (log.isDebugEnabled()) {
+                log.debug("Registering subscription " + subscription.getSubscriptionKey() + " completed.");
+            }
+        } catch (Exception e) {
+            log.error("Unable to register subscription " + subscription.getSubscriptionKey()
+                    + " ." + e.getMessage(), e);
+        } catch (Throwable t) {
+            log.error("Unable to register subscriptionl " + subscription.getSubscriptionKey()
+                    + " ." + t.getMessage(), t);
+        }
+        subscription = holder.value.get(0);
+        return subscription;
+    }
+
+    /**
+     * Register a tModel, using the node of current clerk ('this').
+     *
+     * @param tModel
+     * @return the TModelDetail of the newly registered TModel
+     */
+    public TModelDetail register(TModel tModel) {
+        return register(tModel, this.getUDDINode().getApiNode());
+    }
+
+    /**
+     * Register a tModel.
+     */
+    public TModelDetail register(TModel tModel, Node node) {
+        TModelDetail tModelDetail = null;
+        log.info("Registering tModel with key " + tModel.getTModelKey());
+        try {
+            String authToken = getAuthToken(node.getSecurityUrl());
+            SaveTModel saveTModel = new SaveTModel();
+            saveTModel.setAuthInfo(authToken);
+            saveTModel.getTModel().add(tModel);
+            tModelDetail = getUDDINode().getTransport().getUDDIPublishService(node.getPublishUrl()).saveTModel(saveTModel);
+            if (log.isDebugEnabled()) {
+                log.debug("Registering tModel " + tModel.getTModelKey() + " completed.");
+            }
+        } catch (Exception e) {
+            log.error("Unable to register tModel " + tModel.getTModelKey()
+                    + " ." + e.getMessage(), e);
+        } catch (Throwable t) {
+            log.error("Unable to register tModel " + tModel.getTModelKey()
+                    + " ." + t.getMessage(), t);
+        }
+        return tModelDetail;
+    }
+
+    /**
+     * Register a BindingTemplate, using the node of current clerk ('this').
+     *
+     */
+    public BindingTemplate register(BindingTemplate binding) {
+        return register(binding, this.getUDDINode().getApiNode());
+    }
+
+    /**
+     * Register a BindingTemplate.
+     *
+     */
+    public BindingTemplate register(BindingTemplate binding, Node node) {
+
+        BindingTemplate bindingTemplate = null;
+        log.info("Registering bindingTemplate with key " + binding.getBindingKey());
+        try {
+            String authToken = getAuthToken(node.getSecurityUrl());
+            SaveBinding saveBinding = new SaveBinding();
+            saveBinding.setAuthInfo(authToken);
+            saveBinding.getBindingTemplate().add(binding);
+            BindingDetail bindingDetail = getUDDINode().getTransport().getUDDIPublishService(node.getPublishUrl()).saveBinding(saveBinding);
+            bindingTemplate = bindingDetail.getBindingTemplate().get(0);
+            if (log.isDebugEnabled()) {
+                log.debug("Registering template binding " + binding.getBindingKey() + " completed.");
+            }
+        } catch (Exception e) {
+            log.error("Unable to register template binding " + bindingTemplate.getBindingKey()
+                    + " ." + e.getMessage(), e);
+        } catch (Throwable t) {
+            log.error("Unable to register template binding " + bindingTemplate.getBindingKey()
+                    + " ." + t.getMessage(), t);
+        }
+        return bindingTemplate;
+    }
+
+    /**
+     * Register a service, using the node of current clerk ('this').
+     *
+     */
+    public BusinessService register(BusinessService service) {
+        return register(service, this.getUDDINode().getApiNode());
+    }
+
+    /**
+     * Register a service.
+     *
+     */
+    public BusinessService register(BusinessService service, Node node) {
+
+        BusinessService businessService = null;
+        log.info("Registering service " + service.getName().get(0).getValue()
+                + " with key " + service.getServiceKey());
+        try {
+            String authToken = getAuthToken(node.getSecurityUrl());
+            SaveService saveService = new SaveService();
+            saveService.setAuthInfo(authToken);
+            saveService.getBusinessService().add(service);
+            ServiceDetail serviceDetail = getUDDINode().getTransport().getUDDIPublishService(node.getPublishUrl()).saveService(saveService);
+            businessService = serviceDetail.getBusinessService().get(0);
+            if (log.isDebugEnabled()) {
+                log.debug("Registering service " + service.getName().get(0).getValue() + " completed.");
+            }
+        } catch (Exception e) {
+            log.error("Unable to register service " + service.getName().get(0).getValue()
+                    + " ." + e.getMessage(), e);
+        } catch (Throwable t) {
+            log.error("Unable to register service " + service.getName().get(0).getValue()
+                    + " ." + t.getMessage(), t);
+        }
+        return businessService;
+    }
+
+    public BusinessEntity register(BusinessEntity business) {
+        return register(business, this.getUDDINode().getApiNode());
+    }
+
+    /**
+     * Register a service. returns null if not successful
+     */
+    public BusinessEntity register(BusinessEntity business, Node node) {
+
+        BusinessEntity businessEntity = null;
+        log.info("Registering business " + business.getName().get(0).getValue()
+                + " with key " + business.getBusinessKey());
+        try {
+            String authToken = getAuthToken(node.getSecurityUrl());
+            SaveBusiness saveBusiness = new SaveBusiness();
+            saveBusiness.setAuthInfo(authToken);
+            saveBusiness.getBusinessEntity().add(business);
+            BusinessDetail businessDetail = getUDDINode().getTransport().getUDDIPublishService(node.getPublishUrl()).saveBusiness(saveBusiness);
+            businessEntity = businessDetail.getBusinessEntity().get(0);
+            if (log.isDebugEnabled()) {
+                log.debug("Registering businessEntity " + businessEntity.getName().get(0).getValue() + " completed.");
+            }
+        } catch (Exception e) {
+            log.error("Unable to register business " + business.getName().get(0).getValue()
+                    + " ." + e.getMessage(), e);
+        } catch (Throwable t) {
+            log.error("Unable to register business " + business.getName().get(0).getValue()
+                    + " ." + t.getMessage(), t);
+        }
+        return businessEntity;
+    }
+
+    public void unRegisterBusiness(String businessKey) {
+        unRegisterBusiness(businessKey, this.getUDDINode().getApiNode());
+    }
+
+    /**
+     * Unregisters the service with specified serviceKey.
+     *
+     * @param service
+     */
+    public void unRegisterBusiness(String businessKey, Node node) {
+        log.info("UnRegistering the business " + businessKey);
+        try {
+            String authToken = getAuthToken(node.getSecurityUrl());
+            DeleteBusiness deleteBusiness = new DeleteBusiness();
+            deleteBusiness.setAuthInfo(authToken);
+            deleteBusiness.getBusinessKey().add(businessKey);
+            getUDDINode().getTransport().getUDDIPublishService(node.getPublishUrl()).deleteBusiness(deleteBusiness);
+        } catch (Exception e) {
+            log.error("Unable to register service " + businessKey
+                    + " ." + e.getMessage(), e);
+        }
+    }
+
+    public void unRegisterService(String serviceKey) {
+        unRegisterService(serviceKey, this.getUDDINode().getApiNode());
+    }
+
+    /**
+     * 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);
+        }
+    }
+
+    public void unRegisterBinding(String bindingKey) {
+        unRegisterBinding(bindingKey, this.getUDDINode().getApiNode());
+    }
+
+    /**
+     * 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 void unRegisterTModel(String tModelKey) {
+        unRegisterTModel(tModelKey, this.getUDDINode().getApiNode());
+    }
+
+    /**
+     * Unregisters the BindingTemplate with specified bindingKey.
+     *
+     * @param bindingTemplate
+     * @param node
+     */
+    public void unRegisterTModel(String tModelKey, Node node) {
+        log.info("UnRegistering tModel key " + tModelKey);
+        try {
+            String authToken = getAuthToken(node.getSecurityUrl());
+            DeleteTModel deleteTModel = new DeleteTModel();
+            deleteTModel.setAuthInfo(authToken);
+            deleteTModel.getTModelKey().add(tModelKey);
+            getUDDINode().getTransport().getUDDIPublishService(node.getPublishUrl()).deleteTModel(deleteTModel);
+        } catch (Exception e) {
+            log.error("Unable to unregister tModelkey " + tModelKey
+                    + " ." + e.getMessage(), e);
+        }
+    }
+
+    public void unRegisterSubscription(String subscriptionKey) {
+        unRegisterSubscription(subscriptionKey, this.getUDDINode().getApiNode());
+    }
+
+    public void unRegisterSubscription(String subscriptionKey, Node node) {
+        log.info("UnRegistering subscription with key " + subscriptionKey);
+        try {
+            String authToken = getAuthToken(node.getSecurityUrl());
+            DeleteSubscription deleteSubscription = new DeleteSubscription();
+            deleteSubscription.setAuthInfo(authToken);
+            deleteSubscription.getSubscriptionKey().add(subscriptionKey);
+            getUDDINode().getTransport().getUDDISubscriptionService(node.getSubscriptionUrl()).deleteSubscription(deleteSubscription);
+        } catch (Exception e) {
+            log.error("Unable to unregister subscription key " + subscriptionKey
+                    + " ." + e.getMessage(), e);
+        }
+    }
+
+    public TModelList findTModel(FindTModel findTModel) throws RemoteException, ConfigurationException, TransportException {
+        return findTModel(findTModel, this.getUDDINode().getApiNode());
+    }
+
+    public TModelList findTModel(FindTModel findTModel, Node node) throws RemoteException,
+            TransportException, ConfigurationException {
+
+        findTModel.setAuthInfo(getAuthToken(node.getSecurityUrl()));
+        try {
+            TModelList tModelList = getUDDINode().getTransport().getUDDIInquiryService(node.getInquiryUrl()).findTModel(findTModel);
+            return tModelList;
+        } catch (DispositionReportFaultMessage dr) {
+            DispositionReport report = DispositionReportFaultMessage.getDispositionReport(dr);
+            checkForErrorInDispositionReport(report, null, null);
+        } catch (SOAPFaultException sfe) {
+            DispositionReport report = DispositionReportFaultMessage.getDispositionReport(sfe);
+            checkForErrorInDispositionReport(report, null, null);
+        } catch (UndeclaredThrowableException ute) {
+            DispositionReport report = DispositionReportFaultMessage.getDispositionReport(ute);
+            checkForErrorInDispositionReport(report, null, null);
+        }
+        return null;
+    }
+
+    public TModelDetail getTModelDetail(String tModelKey) throws RemoteException, ConfigurationException, TransportException {
+        GetTModelDetail getTModelDetail = new GetTModelDetail();
+        getTModelDetail.getTModelKey().add(tModelKey);
+        return getTModelDetail(getTModelDetail);
+    }
+
+    public TModelDetail getTModelDetail(GetTModelDetail getTModelDetail) throws RemoteException, ConfigurationException, TransportException {
+        return getTModelDetail(getTModelDetail, this.getUDDINode().getApiNode());
+    }
+
+    public TModelDetail getTModelDetail(GetTModelDetail getTModelDetail, Node node) throws RemoteException,
+            TransportException, ConfigurationException {
+
+        getTModelDetail.setAuthInfo(getAuthToken(node.getSecurityUrl()));
+        try {
+            TModelDetail tModelDetail = getUDDINode().getTransport().getUDDIInquiryService(node.getInquiryUrl()).getTModelDetail(getTModelDetail);
+            return tModelDetail;
+        } catch (DispositionReportFaultMessage dr) {
+            DispositionReport report = DispositionReportFaultMessage.getDispositionReport(dr);
+            checkForErrorInDispositionReport(report, null, null);
+        } catch (SOAPFaultException sfe) {
+            DispositionReport report = DispositionReportFaultMessage.getDispositionReport(sfe);
+            checkForErrorInDispositionReport(report, null, null);
+        } catch (UndeclaredThrowableException ute) {
+            DispositionReport report = DispositionReportFaultMessage.getDispositionReport(ute);
+            checkForErrorInDispositionReport(report, null, null);
+        }
+        return null;
+    }
+
+    public BusinessService findService(String serviceKey) throws RemoteException,
+            TransportException, ConfigurationException {
+        return findService(serviceKey, this.getUDDINode().getApiNode());
+    }
+
+    public BusinessService findService(String serviceKey, Node node) throws RemoteException,
+            TransportException, ConfigurationException {
+        GetServiceDetail getServiceDetail = new GetServiceDetail();
+        getServiceDetail.getServiceKey().add(serviceKey);
+        getServiceDetail.setAuthInfo(getAuthToken(node.getSecurityUrl()));
+        try {
+            ServiceDetail sd = getUDDINode().getTransport().getUDDIInquiryService(node.getInquiryUrl()).getServiceDetail(getServiceDetail);
+            List<BusinessService> businessServiceList = sd.getBusinessService();
+            if (businessServiceList.size() == 0) {
+                throw new ConfigurationException("Could not find Service with key=" + serviceKey);
+            }
+            return businessServiceList.get(0);
+        } catch (DispositionReportFaultMessage dr) {
+            DispositionReport report = DispositionReportFaultMessage.getDispositionReport(dr);
+            checkForErrorInDispositionReport(report, DispositionReport.E_INVALID_KEY_PASSED, serviceKey);
+        } catch (SOAPFaultException sfe) {
+            DispositionReport report = DispositionReportFaultMessage.getDispositionReport(sfe);
+            checkForErrorInDispositionReport(report, DispositionReport.E_INVALID_KEY_PASSED, serviceKey);
+        } catch (UndeclaredThrowableException ute) {
+            DispositionReport report = DispositionReportFaultMessage.getDispositionReport(ute);
+            checkForErrorInDispositionReport(report, DispositionReport.E_INVALID_KEY_PASSED, serviceKey);
+        }
+        return null;
+    }
+
+    public BindingTemplate findServiceBinding(String bindingKey) throws DispositionReportFaultMessage, RemoteException,
+            TransportException, ConfigurationException {
+        return findServiceBinding(bindingKey, this.getUDDINode().getApiNode());
+    }
+
+    public BindingTemplate findServiceBinding(String bindingKey, Node node) throws DispositionReportFaultMessage, RemoteException,
+            TransportException, ConfigurationException {
+        GetBindingDetail getBindingDetail = new GetBindingDetail();
+        getBindingDetail.getBindingKey().add(bindingKey);
+        getBindingDetail.setAuthInfo(getAuthToken(node.getSecurityUrl()));
+        try {
+            BindingDetail bd = getUDDINode().getTransport().getUDDIInquiryService(node.getInquiryUrl()).getBindingDetail(getBindingDetail);
+            List<BindingTemplate> bindingTemplateList = bd.getBindingTemplate();
+            if (bindingTemplateList.size() == 0) {
+                throw new ConfigurationException("Could not find ServiceBinding with key=" + bindingKey);
+            }
+            return bindingTemplateList.get(0);
+        } catch (DispositionReportFaultMessage dr) {
+            DispositionReport report = DispositionReportFaultMessage.getDispositionReport(dr);
+            checkForErrorInDispositionReport(report, DispositionReport.E_INVALID_KEY_PASSED, bindingKey);
+        } catch (SOAPFaultException sfe) {
+            DispositionReport report = DispositionReportFaultMessage.getDispositionReport(sfe);
+            checkForErrorInDispositionReport(report, DispositionReport.E_INVALID_KEY_PASSED, bindingKey);
+        } catch (UndeclaredThrowableException ute) {
+            DispositionReport report = DispositionReportFaultMessage.getDispositionReport(ute);
+            checkForErrorInDispositionReport(report, DispositionReport.E_INVALID_KEY_PASSED, bindingKey);
+        }
+        return null;
+    }
+
+    public BusinessEntity findBusiness(String businessKey) throws RemoteException,
+            TransportException, ConfigurationException {
+        return findBusiness(businessKey, this.getUDDINode().getApiNode());
+    }
+
+    /**
+     * Looks up the BusinessEntiry in the registry, will return null if is not
+     * found.
+     *
+     * @param businessKey - the key we are looking for
+     * @param node - the node which is going to be queried
+     * @return BusinessEntity is found, or null if not found.
+     * @throws RemoteException
+     * @throws TransportException
+     * @throws ConfigurationException
+     */
+    public BusinessEntity findBusiness(String businessKey, Node node) throws RemoteException,
+            TransportException, ConfigurationException {
+        GetBusinessDetail getBusinessDetail = new GetBusinessDetail();
+        getBusinessDetail.getBusinessKey().add(businessKey);
+        getBusinessDetail.setAuthInfo(node.getSecurityUrl());
+        try {
+            BusinessDetail bd = getUDDINode().getTransport().getUDDIInquiryService(node.getInquiryUrl()).getBusinessDetail(getBusinessDetail);
+            return bd.getBusinessEntity().get(0);
+        } catch (DispositionReportFaultMessage dr) {
+            DispositionReport report = DispositionReportFaultMessage.getDispositionReport(dr);
+            checkForErrorInDispositionReport(report, DispositionReport.E_INVALID_KEY_PASSED, businessKey);
+        } catch (SOAPFaultException sfe) {
+            DispositionReport report = DispositionReportFaultMessage.getDispositionReport(sfe);
+            checkForErrorInDispositionReport(report, DispositionReport.E_INVALID_KEY_PASSED, businessKey);
+        } catch (UndeclaredThrowableException ute) {
+            DispositionReport report = DispositionReportFaultMessage.getDispositionReport(ute);
+            checkForErrorInDispositionReport(report, DispositionReport.E_INVALID_KEY_PASSED, businessKey);
+        }
+        return null;
+    }
+
+    /**
+     * Looks up the BusinessEntiry in the registry, will return null if is not
+     * found.
+     *
+     * @param businessKey - the key we are looking for
+     * @param node - the node which is going to be queried
+     * @return BusinessEntity is found, or null if not found.
+     * @throws RemoteException
+     * @throws TransportException
+     * @throws ConfigurationException
+     */
+    public RelatedBusinessesList findRelatedBusinesses(String businessKey, Node node) throws RemoteException,
+            TransportException, ConfigurationException {
+        FindRelatedBusinesses findRelatedBusinesses = new FindRelatedBusinesses();
+        findRelatedBusinesses.setBusinessKey(businessKey);
+        findRelatedBusinesses.setAuthInfo(node.getSecurityUrl());
+        try {
+            RelatedBusinessesList rbl = getUDDINode().getTransport().getUDDIInquiryService(node.getInquiryUrl()).findRelatedBusinesses(findRelatedBusinesses);
+            return rbl;
+        } catch (DispositionReportFaultMessage dr) {
+            DispositionReport report = DispositionReportFaultMessage.getDispositionReport(dr);
+            checkForErrorInDispositionReport(report, DispositionReport.E_INVALID_KEY_PASSED, businessKey);
+        } catch (SOAPFaultException sfe) {
+            DispositionReport report = DispositionReportFaultMessage.getDispositionReport(sfe);
+            checkForErrorInDispositionReport(report, DispositionReport.E_INVALID_KEY_PASSED, businessKey);
+        } catch (UndeclaredThrowableException ute) {
+            DispositionReport report = DispositionReportFaultMessage.getDispositionReport(ute);
+            checkForErrorInDispositionReport(report, DispositionReport.E_INVALID_KEY_PASSED, businessKey);
+        }
+        return null;
+    }
+
+    private void checkForErrorInDispositionReport(DispositionReport report, String Error, String entityKey) {
+
+        if (entityKey != null && report != null && report.countainsErrorCode(DispositionReport.E_INVALID_KEY_PASSED)) {
+            log.info("entityKey " + entityKey + " was not found in the registry");
+        } else {
+            if (report == null) {
+                log.info("Missing DispositionReport");
+            } else {
+                for (Result result : report.getResult()) {
+                    log.error(result.getErrInfo().getErrCode() + " " + result.getErrInfo().getValue());
+                }
+            }
+        }
+    }
+
+    private String getAuthToken(String endpointURL) throws TransportException, DispositionReportFaultMessage, RemoteException {
+        //if the token is older then 10 minutes discard it, and create a new one.
+        if ((authToken != null && !"".equals(authToken)) && (tokenBirthDate != null && System.currentTimeMillis() > tokenBirthDate.getTime() + 600000)) {
+            DiscardAuthToken discardAuthToken = new DiscardAuthToken();
+            discardAuthToken.setAuthInfo(authToken);
+            getUDDINode().getTransport().getUDDISecurityService(endpointURL).discardAuthToken(discardAuthToken);
+            authToken = null;
+        }
+        if (authToken == null || "".equals(authToken)) {
+            tokenBirthDate = new Date();
+            GetAuthToken getAuthToken = new GetAuthToken();
+            getAuthToken.setUserID(getPublisher());
+            getAuthToken.setCred(getPassword());
+            authToken = getUDDINode().getTransport().getUDDISecurityService(endpointURL).getAuthToken(getAuthToken).getAuthInfo();
+        }
+        return authToken;
+    }
+
+    public NodeDetail saveNode(Node node) {
+        NodeDetail nodeDetail = null;
+        try {
+            log.info("Sending Node " + node.getName() + " info to jUDDI " + getUDDINode().getName());
+            SaveNode saveNode = new SaveNode();
+            saveNode.setAuthInfo(getAuthToken(node.getSecurityUrl()));
+            saveNode.getNode().add(node);
+            nodeDetail = getUDDINode().getTransport().getJUDDIApiService(node.getJuddiApiUrl()).saveNode(saveNode);
+        } catch (Exception e) {
+            log.error("Unable to save node " + node.getName()
+                    + " ." + e.getMessage(), e);
+        } catch (Throwable t) {
+            log.error("Unable to save node " + node.getName()
+                    + " ." + t.getMessage(), t);
+        }
+        return nodeDetail;
+    }
+
+    public ClerkDetail saveClerk(UDDIClerk senderClerk) {
+        ClerkDetail clerkDetail = null;
+        try {
+            log.debug("Sending Clerk " + senderClerk.getName() + " info to jUDDI " + getUDDINode().getName());
+            SaveClerk saveClerk = new SaveClerk();
+            saveClerk.setAuthInfo(getAuthToken(senderClerk.getUDDINode().getSecurityUrl()));
+            saveClerk.getClerk().add(getApiClerk());
+            clerkDetail = getUDDINode().getTransport().getJUDDIApiService(senderClerk.getUDDINode().getJuddiApiUrl()).saveClerk(saveClerk);
+        } catch (Exception e) {
+            log.error("Unable to save clerk " + getName()
+                    + " ." + e.getMessage(), e);
+        } catch (Throwable t) {
+            log.error("Unable to save clerk " + getName()
+                    + " ." + t.getMessage(), t);
+        }
+        return clerkDetail;
+    }
+
+    public Clerk getApiClerk() {
+        Clerk apiClerk = new Clerk();
+        apiClerk.setName(name);
+        apiClerk.setNode(uddiNode.getApiNode());
+        apiClerk.setPassword(password);
+        apiClerk.setPublisher(publisher);
+        return apiClerk;
+    }
+
+    public UDDINode getUDDINode() {
+        return uddiNode;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public void setUDDINode(UDDINode uddiNode) {
+        this.uddiNode = uddiNode;
+    }
+
+    public String getPublisher() {
+        return publisher;
+    }
+
+    public void setPublisher(String publisher) {
+        this.publisher = publisher;
+    }
+
+    public String getPassword() {
+        return password;
+    }
+
+    public void setPassword(String password) {
+        this.password = password;
+    }
+
+    public WSDL[] getWsdls() {
+        return wsdls;
+    }
+
+    public void setWsdls(WSDL[] wsdls) {
+        this.wsdls = wsdls;
+    }
+
+    public class WSDL {
+
+        private String businessKey;
+        private String keyDomain;
+        private String fileName;
+
+        public String getBusinessKey() {
+            return businessKey;
+        }
+
+        public void setBusinessKey(String businessKey) {
+            this.businessKey = businessKey;
+        }
+
+        public String getFileName() {
+            return fileName;
+        }
+
+        public void setFileName(String fileName) {
+            this.fileName = fileName;
+        }
+
+        public String getKeyDomain() {
+            return keyDomain;
+        }
+
+        public void setKeyDomain(String keyDomain) {
+            this.keyDomain = keyDomain;
+        }
+    }
+
+    /**
+     *
+     * @param partitionName
+     * @param DescriptiveName required. max length is 255 char
+     * @param DescriptiveNameLanguage optional, max length is 26 char
+     * @return a populated tModel entity representing a tModel key generator. No changes are made to any connect UDDI service
+     * @since 3.2
+     */
+    public static TModel createKeyGenator(String partitionName, String DescriptiveName, String DescriptiveNameLanguage) {
+        if (partitionName == null || partitionName.length() == 0) {
+            throw new IllegalArgumentException();
+        }
+        if (DescriptiveName == null || DescriptiveName.length() == 0) {
+            throw new IllegalArgumentException();
+        }
+        if (!partitionName.startsWith("uddi:")) {
+            throw new IllegalArgumentException("partitionName must have a 'uddi:' prefix");
+
+        }
+        if (!partitionName.endsWith(":keygenerator")) {
+            throw new IllegalArgumentException("partitionName must have a ':keyGenerator' postfix");
+        }
+        TModel tm = new TModel();
+        tm.setName(new Name());
+        tm.getName().setValue(DescriptiveName);
+        tm.getName().setLang(DescriptiveNameLanguage);
+        tm.setCategoryBag(new CategoryBag());
+        KeyedReference kr = new KeyedReference();
+        kr.setTModelKey(UDDIConstants.KEY_GENERATOR_TMODEL);
+        kr.setKeyName(UDDIConstants.KEY_GENERATOR);
+        kr.setKeyValue(UDDIConstants.KEY_GENERATOR_VALUE);
+        tm.getCategoryBag().getKeyedReference().add(kr);
+        OverviewDoc overviewDoc = new OverviewDoc();
+        OverviewURL overviewUrl = new OverviewURL();
+        overviewUrl.setUseType("text");
+        overviewUrl.setValue("http://uddi.org/pubs/uddi_v3.htm#keyGen");
+        overviewDoc.setOverviewURL(overviewUrl);
+        tm.getOverviewDoc().add(overviewDoc);
+        tm.setTModelKey(partitionName.toLowerCase());
+        return tm;
+    }
 }

Modified: juddi/branches/juddi-3.2.x/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDIClerkManager.java
URL: http://svn.apache.org/viewvc/juddi/branches/juddi-3.2.x/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDIClerkManager.java?rev=1481240&r1=1481239&r2=1481240&view=diff
==============================================================================
--- juddi/branches/juddi-3.2.x/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDIClerkManager.java (original)
+++ juddi/branches/juddi-3.2.x/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDIClerkManager.java Sat May 11 00:27:33 2013
@@ -16,6 +16,8 @@
  */
 package org.apache.juddi.v3.client.config;
 
+import java.net.MalformedURLException;
+import java.net.URL;
 import java.rmi.RemoteException;
 import java.util.Collection;
 import java.util.List;
@@ -23,18 +25,26 @@ import java.util.Map;
 import java.util.Properties;
 import java.util.Set;
 
+import javax.wsdl.Definition;
+import javax.wsdl.WSDLException;
+
 import org.apache.commons.configuration.ConfigurationException;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.juddi.v3.client.embed.EmbeddedRegistry;
 import org.apache.juddi.v3.annotations.AnnotationProcessor;
 import org.apache.juddi.v3.client.ClassUtil;
+import org.apache.juddi.v3.client.mapping.ReadWSDL;
+import org.apache.juddi.v3.client.mapping.URLLocalizerDefaultImpl;
+import org.apache.juddi.v3.client.mapping.WSDL2UDDI;
 import org.apache.juddi.v3.client.transport.InVMTransport;
 import org.apache.juddi.v3.client.transport.Transport;
 import org.apache.juddi.v3.client.transport.TransportException;
 import org.uddi.api_v3.BindingTemplate;
 import org.uddi.api_v3.BusinessService;
 
+import com.ibm.wsdl.util.IOUtils;
+
 public class UDDIClerkManager {
 	
 	private static Log log = LogFactory.getLog(UDDIClerkManager.class);
@@ -45,7 +55,7 @@ public class UDDIClerkManager {
     public UDDIClerkManager() throws ConfigurationException {
     	super();
 		clientConfig = new ClientConfig(CONFIG_FILE, properties);
-		
+		UDDIClientContainer.addClerkManager(this);
     }
 	/**
 	 * Manages the clerks. Initiates reading the client configuration from the uddi.xml.
@@ -54,6 +64,7 @@ public class UDDIClerkManager {
 	public UDDIClerkManager(String configurationFile) throws ConfigurationException {
 		super();
 		clientConfig = new ClientConfig(configurationFile);
+		UDDIClientContainer.addClerkManager(this);
 	}
 	/**
 	 * Manages the clerks. Initiates reading the client configuration from the uddi.xml.
@@ -62,6 +73,7 @@ public class UDDIClerkManager {
 	public UDDIClerkManager(String configurationFile, Properties properties) throws ConfigurationException {
 		super();
 		clientConfig = new ClientConfig(configurationFile, properties);
+		UDDIClientContainer.addClerkManager(this);
 	}
 	/**
 	 * Stops the clerks.
@@ -81,7 +93,10 @@ public class UDDIClerkManager {
 	}
 	
 	private void releaseResources() {
-		unRegisterBindingsOfAnnotatedServices(true);
+		if (this.clientConfig.isRegisterOnStartup()) {
+			unRegisterWSDLs();
+			unRegisterBindingsOfAnnotatedServices(true);
+		}
 	}
  	/**
 	 * Initializes the UDDI Clerk.
@@ -95,10 +110,11 @@ public class UDDIClerkManager {
 				log.info("Starting embedded Server");
 				startEmbeddedServer();
 			}
-			
-			Runnable runnable = new BackGroundRegistration(this);
-			Thread thread = new Thread(runnable);
-			thread.start();
+			if (this.clientConfig.isRegisterOnStartup()) {
+				Runnable runnable = new BackGroundRegistration(this);
+				Thread thread = new Thread(runnable);
+				thread.start();
+			}
 		}
  	}
 	
@@ -290,7 +306,8 @@ public class UDDIClerkManager {
 			String managerName = clientConfig.getManagerName();
 			Class<?> transportClass = ClassUtil.forName(clazz, UDDIClerkManager.class);
 			if (transportClass!=null) {
-				Transport transport = (Transport) transportClass.getConstructor(String.class,String.class).newInstance(managerName,nodeName);
+				Transport transport = (Transport) 
+						transportClass.getConstructor(String.class,String.class).newInstance(managerName,nodeName);
 				return transport;
 			} else {
 				throw new ConfigurationException ("ProxyTransport was not defined in the " + clientConfig.getConfigurationFile());
@@ -300,5 +317,35 @@ public class UDDIClerkManager {
 		}
 	}
 	
+	public UDDIClerk getClerk(String clerkName) {
+		return getClientConfig().getUDDIClerks().get(clerkName);
+	}
+	
+	/**
+	 * Registers services to UDDI using a clerk, and the uddi.xml
+	 * configuration.
+	 * @throws WSDLException 
+	 * @throws TransportException 
+	 * @throws ConfigurationException 
+	 * @throws RemoteException 
+	 */
+	public void registerWSDLs() {
+		Map<String,UDDIClerk> uddiClerks = clientConfig.getUDDIClerks();
+		if (uddiClerks.size() > 0) {
+			for (UDDIClerk uddiClerk : uddiClerks.values()) {
+				uddiClerk.registerWsdls();
+			}
+		}
+	}
+	
+	public void unRegisterWSDLs() {
+		Map<String,UDDIClerk> uddiClerks = clientConfig.getUDDIClerks();
+		if (uddiClerks.size() > 0) {
+			for (UDDIClerk uddiClerk : uddiClerks.values()) {
+				uddiClerk.unRegisterWsdls();
+			}
+		}
+	}
+	
 }
 

Propchange: juddi/branches/juddi-3.2.x/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDIClerkManager.java
------------------------------------------------------------------------------
  Merged /juddi/trunk/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDIClerkManager.java:r1460934-1480588

Modified: juddi/branches/juddi-3.2.x/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDIClerkServlet.java
URL: http://svn.apache.org/viewvc/juddi/branches/juddi-3.2.x/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDIClerkServlet.java?rev=1481240&r1=1481239&r2=1481240&view=diff
==============================================================================
--- juddi/branches/juddi-3.2.x/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDIClerkServlet.java (original)
+++ juddi/branches/juddi-3.2.x/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDIClerkServlet.java Sat May 11 00:27:33 2013
@@ -42,6 +42,9 @@ public class UDDIClerkServlet extends Ht
 		super.init(config);
 		try {
 			manager = WebHelper.getUDDIClerkManager(config.getServletContext());
+			if (manager.getClientConfig().isRegisterOnStartup()) {
+				manager.registerWSDLs();
+			}
 		} catch (Exception e) {
 			logger.error("UDDI-client could not be started for manager " + manager.getName() + ". "
 					+ e.getMessage(), e);

Propchange: juddi/branches/juddi-3.2.x/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDIClerkServlet.java
------------------------------------------------------------------------------
  Merged /juddi/trunk/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDIClerkServlet.java:r1460934-1480588

Modified: juddi/branches/juddi-3.2.x/juddi-client/src/main/java/org/apache/juddi/v3/client/config/WebHelper.java
URL: http://svn.apache.org/viewvc/juddi/branches/juddi-3.2.x/juddi-client/src/main/java/org/apache/juddi/v3/client/config/WebHelper.java?rev=1481240&r1=1481239&r2=1481240&view=diff
==============================================================================
--- juddi/branches/juddi-3.2.x/juddi-client/src/main/java/org/apache/juddi/v3/client/config/WebHelper.java (original)
+++ juddi/branches/juddi-3.2.x/juddi-client/src/main/java/org/apache/juddi/v3/client/config/WebHelper.java Sat May 11 00:27:33 2013
@@ -17,6 +17,8 @@
 package org.apache.juddi.v3.client.config;
 
 import java.lang.reflect.InvocationTargetException;
+import java.net.MalformedURLException;
+import java.net.URL;
 
 import javax.servlet.ServletContext;
 
@@ -88,8 +90,8 @@ public class WebHelper {
 			} else {
 				throw new ConfigurationException("A manager name needs to be specified in the client config file.");
 			}
+			
 			manager.start();
-			UDDIClientContainer.addClerkManager(manager);
 			servletContext.setAttribute(JUDDI_CLIENT_MANAGER_NAME, managerName);
 			return manager;
 		}

Modified: juddi/branches/juddi-3.2.x/juddi-client/src/main/java/org/apache/juddi/v3/client/mapping/AsyncRegistration.java
URL: http://svn.apache.org/viewvc/juddi/branches/juddi-3.2.x/juddi-client/src/main/java/org/apache/juddi/v3/client/mapping/AsyncRegistration.java?rev=1481240&r1=1481239&r2=1481240&view=diff
==============================================================================
--- juddi/branches/juddi-3.2.x/juddi-client/src/main/java/org/apache/juddi/v3/client/mapping/AsyncRegistration.java (original)
+++ juddi/branches/juddi-3.2.x/juddi-client/src/main/java/org/apache/juddi/v3/client/mapping/AsyncRegistration.java Sat May 11 00:27:33 2013
@@ -24,6 +24,7 @@ import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.juddi.v3.client.config.UDDIClerk;
 import org.uddi.api_v3.BindingTemplate;
+import org.uddi.api_v3.BusinessService;
 
 public class AsyncRegistration implements Runnable {
 
@@ -58,11 +59,11 @@ public class AsyncRegistration implement
 			}
 			if (RegistrationType.WSDL.equals(registrationInfo.getRegistrationType())) {
 				WSDL2UDDI wsdl2UDDI = new WSDL2UDDI(clerk, urlLocalizer, properties);
-				BindingTemplate binding = wsdl2UDDI.register(registrationInfo.getServiceQName(), 
+				BusinessService service = wsdl2UDDI.registerBusinessService(registrationInfo.getServiceQName(), 
 								   registrationInfo.getPortName(),
 								   registrationInfo.getServiceUrl(),
-								   registrationInfo.getWsdlDefinition());
-				serviceLocator.addService(binding.getServiceKey());
+								   registrationInfo.getWsdlDefinition()).getBusinessService();
+				serviceLocator.addService(service.getServiceKey());
 				
 			} else if (RegistrationType.BPEL.equals(registrationInfo.getRegistrationType())) {
 				BPEL2UDDI bpel2UDDI = new BPEL2UDDI(clerk, urlLocalizer, properties);

Modified: juddi/branches/juddi-3.2.x/juddi-client/src/main/java/org/apache/juddi/v3/client/mapping/BPEL2UDDI.java
URL: http://svn.apache.org/viewvc/juddi/branches/juddi-3.2.x/juddi-client/src/main/java/org/apache/juddi/v3/client/mapping/BPEL2UDDI.java?rev=1481240&r1=1481239&r2=1481240&view=diff
==============================================================================
--- juddi/branches/juddi-3.2.x/juddi-client/src/main/java/org/apache/juddi/v3/client/mapping/BPEL2UDDI.java (original)
+++ juddi/branches/juddi-3.2.x/juddi-client/src/main/java/org/apache/juddi/v3/client/mapping/BPEL2UDDI.java Sat May 11 00:27:33 2013
@@ -41,6 +41,7 @@ import org.apache.juddi.jaxb.PrintUDDI;
 import org.apache.juddi.v3.annotations.AnnotationProcessor;
 import org.apache.juddi.v3.client.config.Property;
 import org.apache.juddi.v3.client.config.UDDIClerk;
+import org.apache.juddi.v3.client.config.UDDIKeyConvention;
 import org.apache.juddi.v3.client.transport.TransportException;
 import org.uddi.api_v3.AccessPoint;
 import org.uddi.api_v3.BindingTemplate;
@@ -90,7 +91,7 @@ public class BPEL2UDDI extends Annotatio
 
 	private WSDL2UDDI wsdl2UDDI;
 	
-	public BPEL2UDDI(UDDIClerk clerk, URLLocalizer urlLocalizer, Properties properties) {
+	public BPEL2UDDI(UDDIClerk clerk, URLLocalizer urlLocalizer, Properties properties) throws ConfigurationException {
 		super();
 		
 		this.clerk = clerk;
@@ -99,7 +100,7 @@ public class BPEL2UDDI extends Annotatio
 		
 		//Obtaining values from the properties
 		this.keyDomainURI = "uddi:" + properties.getProperty("keyDomain") + ":";
-		this.businessKey = Property.getBusinessKey(properties);
+		this.businessKey = UDDIKeyConvention.getBusinessKey(properties);
 		this.lang = properties.getProperty(Property.LANG,Property.DEFAULT_LANG);
 		
 		this.wsdl2UDDI = new WSDL2UDDI(clerk, urlLocalizer, properties);
@@ -162,7 +163,7 @@ public class BPEL2UDDI extends Annotatio
 		String genericWSDLURL  = wsdlDefinition.getDocumentBaseURI();   //TODO maybe point to repository version
 		String bpelOverviewURL = "http://localhost:8080/bpel-console/"; //TODO maybe point to bpel in console
 		
-		String serviceKey = Property.getServiceKey(properties, serviceName);
+		String serviceKey = UDDIKeyConvention.getServiceKey(properties, serviceName.getLocalPart());
 		BusinessService service = lookupService(serviceKey);
 		if (service==null) {
 			List<TModel> tModels = new ArrayList<TModel>();
@@ -193,10 +194,10 @@ public class BPEL2UDDI extends Annotatio
 	
 	public String unRegister(QName serviceName, String portName, URL serviceUrl) throws RemoteException, ConfigurationException, TransportException {
 		
-		String serviceKey = Property.getServiceKey(properties, serviceName);
+		String serviceKey = UDDIKeyConvention.getServiceKey(properties, serviceName.getLocalPart());
 		BusinessService service = lookupService(serviceKey);
 		boolean isRemoveServiceIfNoTemplates = true; 
-		String bindingKey = Property.getBindingKey(properties, serviceName, portName, serviceUrl);
+		String bindingKey = UDDIKeyConvention.getBindingKey(properties, serviceName, portName, serviceUrl);
 		//check if this bindingKey is in the service's binding templates
 		for (BindingTemplate bindingTemplate : service.getBindingTemplates().getBindingTemplate()) {
 			if (bindingKey.equals(bindingTemplate.getBindingKey())) {
@@ -234,7 +235,7 @@ public class BPEL2UDDI extends Annotatio
 									if (namespaceRef!=null) namespace = namespaceRef.getKeyValue();
 									//find the bindingTModel
 									for (KeyedReference keyedReference : portTypeTModelKeys) {
-										FindTModel findBindingTModel = wsdl2UDDI.createFindBindingTModelForPortType(keyedReference.getKeyValue(), namespace);
+										FindTModel findBindingTModel = WSDL2UDDI.createFindBindingTModelForPortType(keyedReference.getKeyValue(), namespace);
 										TModelList bindingTmodels = clerk.findTModel(findBindingTModel);
 										if (bindingTmodels!=null && bindingTmodels.getTModelInfos()!=null && bindingTmodels.getTModelInfos().getTModelInfo()!=null) {
 											for (TModelInfo bindingTModelInfo : bindingTmodels.getTModelInfos().getTModelInfo()) {
@@ -283,7 +284,7 @@ public class BPEL2UDDI extends Annotatio
 		// BusinessKey
 		service.setBusinessKey(businessKey);
 		// ServiceKey
-		service.setServiceKey(Property.getServiceKey(properties, serviceName));
+		service.setServiceKey(UDDIKeyConvention.getServiceKey(properties, serviceName.getLocalPart()));
 		// Description
 		String serviceDescription = properties.getProperty(Property.SERVICE_DESCRIPTION, Property.DEFAULT_SERVICE_DESCRIPTION);
 		if (wsdlDefinition.getService(serviceName) !=null) {
@@ -362,16 +363,16 @@ public class BPEL2UDDI extends Annotatio
     	CategoryBag categoryBag = new CategoryBag();
     	
     	if (targetNamespace!=null) {
-    		KeyedReference namespaceReference = wsdl2UDDI.newKeyedReference(
+    		KeyedReference namespaceReference = WSDL2UDDI.newKeyedReference(
     			"uddi:uddi.org:xml:namespace", "uddi-org:xml:namespace", targetNamespace);
     		categoryBag.getKeyedReference().add(namespaceReference);
     	}
-    	KeyedReference typesReference = wsdl2UDDI.newKeyedReference(
+    	KeyedReference typesReference = WSDL2UDDI.newKeyedReference(
     			"uddi:uddi.org:bpel:types", "uddi-org:bpel:types", "process");
     	categoryBag.getKeyedReference().add(typesReference);
     	for (QName qName : portTypes.keySet()) {
     		String portTypeKey = keyDomainURI + qName.getLocalPart();
-	    	KeyedReference portTypeReference = wsdl2UDDI.newKeyedReference(
+	    	KeyedReference portTypeReference = WSDL2UDDI.newKeyedReference(
 	    			"uddi:uddi.org:wsdl:porttypereference", "uddi-org:wsdl:portTypeReference", portTypeKey);
 	    	categoryBag.getKeyedReference().add(portTypeReference);
     	}
@@ -389,9 +390,9 @@ public class BPEL2UDDI extends Annotatio
 		
     	BindingTemplate bindingTemplate = new BindingTemplate();
 		// Set BusinessService Key
-		bindingTemplate.setServiceKey(Property.getServiceKey(properties, serviceName));
+		bindingTemplate.setServiceKey(UDDIKeyConvention.getServiceKey(properties, serviceName.getLocalPart()));
 		// Set Binding Key
-		String bindingKey = Property.getBindingKey(properties, serviceName, portName, serviceUrl);
+		String bindingKey = UDDIKeyConvention.getBindingKey(properties, serviceName, portName, serviceUrl);
 		bindingTemplate.setBindingKey(bindingKey);
 		// Set AccessPoint
 		AccessPoint accessPoint = new AccessPoint();
@@ -495,12 +496,12 @@ public class BPEL2UDDI extends Annotatio
     	
     	String namespace = serviceName.getNamespaceURI();
     	if (namespace!=null && namespace!="") {
-    		KeyedReference namespaceReference = wsdl2UDDI.newKeyedReference(
-    			"uddi:uddi.org:xml:namespace", namespace);
+    		KeyedReference namespaceReference = WSDL2UDDI.newKeyedReference(
+    			"uddi:uddi.org:xml:namespace", "uddi-org:xml:namespace", namespace);
     		categoryBag.getKeyedReference().add(namespaceReference);
     	}
-    	KeyedReference typesReference = wsdl2UDDI.newKeyedReference(
-    			"uddi:uddi.org:bpel:types", "process");
+    	KeyedReference typesReference = WSDL2UDDI.newKeyedReference(
+    			"uddi:uddi.org:bpel:types", "uddi-org:bpel:types", "process");
     	categoryBag.getKeyedReference().add(typesReference);
     	findTModel.setCategoryBag(categoryBag);
     	
@@ -519,12 +520,12 @@ public class BPEL2UDDI extends Annotatio
     	FindTModel findTModel = new FindTModel();
     	CategoryBag categoryBag = new CategoryBag();
     	
-    	KeyedReference typesReference = wsdl2UDDI.newKeyedReference(
-    			"uddi:uddi.org:bpel:types", "process");
+    	KeyedReference typesReference = WSDL2UDDI.newKeyedReference(
+    			"uddi:uddi.org:bpel:types", "uddi-org:bpel:types", "process");
     	categoryBag.getKeyedReference().add(typesReference);
     	
-    	KeyedReference portTypeReference = wsdl2UDDI.newKeyedReference(
-    			"uddi:uddi.org:wsdl:porttypereference", portTypeKey);
+    	KeyedReference portTypeReference = WSDL2UDDI.newKeyedReference(
+    			"uddi:uddi.org:wsdl:porttypereference", "uddi-org:wsdl:portTypeReference", portTypeKey);
     	categoryBag.getKeyedReference().add(portTypeReference);
     	
     	findTModel.setCategoryBag(categoryBag);

Modified: juddi/branches/juddi-3.2.x/juddi-client/src/main/java/org/apache/juddi/v3/client/mapping/ReadWSDL.java
URL: http://svn.apache.org/viewvc/juddi/branches/juddi-3.2.x/juddi-client/src/main/java/org/apache/juddi/v3/client/mapping/ReadWSDL.java?rev=1481240&r1=1481239&r2=1481240&view=diff
==============================================================================
--- juddi/branches/juddi-3.2.x/juddi-client/src/main/java/org/apache/juddi/v3/client/mapping/ReadWSDL.java (original)
+++ juddi/branches/juddi-3.2.x/juddi-client/src/main/java/org/apache/juddi/v3/client/mapping/ReadWSDL.java Sat May 11 00:27:33 2013
@@ -31,14 +31,16 @@ import org.apache.juddi.v3.client.ClassU
 import com.ibm.wsdl.factory.WSDLFactoryImpl;
 
 /**
+ * A WSDL parser/reader
  * @author <a href="mailto:kstam@apache.org">Kurt T Stam</a>
+ * Modified for support http based credentials by Alex O'Ree
  */
 public class ReadWSDL {
 	
 	private final Log log = LogFactory.getLog(this.getClass());
 	
 	public Definition readWSDL(String fileName) throws WSDLException {
-	
+            
 		Definition wsdlDefinition = null;
 		WSDLFactory factory = WSDLFactoryImpl.newInstance();
 		WSDLReader reader = factory.newWSDLReader();
@@ -53,6 +55,41 @@ public class ReadWSDL {
 		return wsdlDefinition;
 	}
 	
+        /**
+         * Reads a WSDL file, assumes that credentials are required. This is useful for when the WSDL document itself
+         * is protected by HTTP based authentication mechanisms
+         * @param wsdlUrl
+         * @param username
+         * @param password
+         * @param domain
+         * @return a Definition object representing the WSDL
+         * @throws WSDLException 
+         */
+        public Definition readWSDL(URL wsdlUrl, String username, String password, String domain) throws WSDLException {
+	
+		Definition wsdlDefinition = null;
+		WSDLFactory factory = WSDLFactoryImpl.newInstance();
+		WSDLReader reader = factory.newWSDLReader();
+		try {
+			URI uri = wsdlUrl.toURI();
+			WSDLLocator locator = new WSDLLocatorImpl(uri);
+			wsdlDefinition = reader.readWSDL(locator);
+		} catch (URISyntaxException e) {
+			log.error(e.getMessage(),e);
+		}
+		return wsdlDefinition;
+	}
+        /**
+         * Reads a WSDL file, assumes that credentials are not required. This is a convenience wrapper for
+         * readWSDL(URL wsdlUrl, null, null, null)
+         * @param wsdlUrl
+         * @return a Definition object representing the WSDL
+         * @throws WSDLException 
+         */
+	public Definition readWSDL(URL wsdlUrl) throws WSDLException {
+		return readWSDL(wsdlUrl, null, null, null);
+	}
+	
 	
 	
 	

Modified: juddi/branches/juddi-3.2.x/juddi-client/src/main/java/org/apache/juddi/v3/client/mapping/ServiceLocator.java
URL: http://svn.apache.org/viewvc/juddi/branches/juddi-3.2.x/juddi-client/src/main/java/org/apache/juddi/v3/client/mapping/ServiceLocator.java?rev=1481240&r1=1481239&r2=1481240&view=diff
==============================================================================
--- juddi/branches/juddi-3.2.x/juddi-client/src/main/java/org/apache/juddi/v3/client/mapping/ServiceLocator.java (original)
+++ juddi/branches/juddi-3.2.x/juddi-client/src/main/java/org/apache/juddi/v3/client/mapping/ServiceLocator.java Sat May 11 00:27:33 2013
@@ -31,6 +31,7 @@ import org.apache.juddi.api_v3.AccessPoi
 import org.apache.juddi.v3.client.ClassUtil;
 import org.apache.juddi.v3.client.config.Property;
 import org.apache.juddi.v3.client.config.UDDIClerk;
+import org.apache.juddi.v3.client.config.UDDIKeyConvention;
 import org.apache.juddi.v3.client.transport.TransportException;
 import org.uddi.api_v3.AccessPoint;
 import org.uddi.api_v3.BindingTemplate;
@@ -44,10 +45,7 @@ public class ServiceLocator {
 	
 	private Log log = LogFactory.getLog(this.getClass());
 	
-	private String keyDomainURI;
 	private UDDIClerk clerk;
-	//private String lang;
-	//private String businessKey;
 	private Properties properties = new Properties();
 	private UDDIServiceCache serviceCache = null;
 	private SelectionPolicy selectionPolicy = null;
@@ -58,11 +56,6 @@ public class ServiceLocator {
 		this.clerk = clerk;
 		this.properties = properties;
 		
-		//Obtaining values from the properties
-		this.keyDomainURI = "uddi:" + properties.getProperty("keyDomain") + ":";
-		//this.businessKey = Property.getBusinessKey(properties);
-		//this.lang = properties.getProperty(Property.LANG,Property.DEFAULT_LANG);
-		
 		serviceCache = new UDDIServiceCache(clerk, urlLocalizer, properties);
 		String policy = properties.getProperty("juddi.client.selection.policy", "org.apache.juddi.v3.client.mapping.PolicyLocalFirst");
 		@SuppressWarnings("unchecked")
@@ -87,7 +80,7 @@ public class ServiceLocator {
 	
 	public String lookupEndpoint(QName serviceQName, String portName) {
 		String epr =null;
-		String serviceKey = Property.getServiceKey(properties, serviceQName);
+		String serviceKey = UDDIKeyConvention.getServiceKey(properties, serviceQName.getLocalPart());
 		Topology topology = serviceCache.lookupService(serviceKey);
 		if (topology==null) {
 			topology = lookupEndpointInUDDI(serviceKey);

Modified: juddi/branches/juddi-3.2.x/juddi-client/src/main/java/org/apache/juddi/v3/client/mapping/UDDIClientSubscriptionListenerImpl.java
URL: http://svn.apache.org/viewvc/juddi/branches/juddi-3.2.x/juddi-client/src/main/java/org/apache/juddi/v3/client/mapping/UDDIClientSubscriptionListenerImpl.java?rev=1481240&r1=1481239&r2=1481240&view=diff
==============================================================================
--- juddi/branches/juddi-3.2.x/juddi-client/src/main/java/org/apache/juddi/v3/client/mapping/UDDIClientSubscriptionListenerImpl.java (original)
+++ juddi/branches/juddi-3.2.x/juddi-client/src/main/java/org/apache/juddi/v3/client/mapping/UDDIClientSubscriptionListenerImpl.java Sat May 11 00:27:33 2013
@@ -46,9 +46,6 @@ import org.uddi.v3_service.UDDISubscript
 			targetNamespace = "urn:uddi-org:v3_service")
 public class UDDIClientSubscriptionListenerImpl implements UDDISubscriptionListenerPortType {
 	
-	
-
-	private static final long serialVersionUID = 100157393329807903L;
 	private static Log logger = LogFactory.getLog(UDDIClientSubscriptionListenerImpl.class);
 	private static Map<String,UDDIServiceCache> serviceCacheMap = new ConcurrentHashMap<String,UDDIServiceCache>();
 	

Modified: juddi/branches/juddi-3.2.x/juddi-client/src/main/java/org/apache/juddi/v3/client/mapping/UDDIServiceCache.java
URL: http://svn.apache.org/viewvc/juddi/branches/juddi-3.2.x/juddi-client/src/main/java/org/apache/juddi/v3/client/mapping/UDDIServiceCache.java?rev=1481240&r1=1481239&r2=1481240&view=diff
==============================================================================
--- juddi/branches/juddi-3.2.x/juddi-client/src/main/java/org/apache/juddi/v3/client/mapping/UDDIServiceCache.java (original)
+++ juddi/branches/juddi-3.2.x/juddi-client/src/main/java/org/apache/juddi/v3/client/mapping/UDDIServiceCache.java Sat May 11 00:27:33 2013
@@ -35,6 +35,7 @@ import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.juddi.v3.client.config.Property;
 import org.apache.juddi.v3.client.config.UDDIClerk;
+import org.apache.juddi.v3.client.config.UDDIKeyConvention;
 import org.apache.juddi.v3.client.transport.TransportException;
 import org.uddi.api_v3.FindQualifiers;
 import org.uddi.api_v3.FindService;
@@ -71,7 +72,7 @@ public class UDDIServiceCache {
 		this.clerk = clerk;
 		this.urlLocalizer = urlLocalizer;
 		this.properties = properties;
-		this.subscriptionKey = Property.getSubscriptionKey(properties);
+		this.subscriptionKey = UDDIKeyConvention.getSubscriptionKey(properties);
 		
 		init();
 	}
@@ -88,13 +89,13 @@ public class UDDIServiceCache {
 			serviceUrl = new URL(url);
 			log.info("Bring up Subscription Listener for manager " + clerk.getManagerName() 
 					+ " with endpoint " + url);
-			bindingKey = Property.getBindingKey(properties, serviceQName, portName, serviceUrl);
+			bindingKey = UDDIKeyConvention.getBindingKey(properties, serviceQName, portName, serviceUrl);
 			endpoint = Endpoint.create(new UDDIClientSubscriptionListenerImpl(bindingKey,this));
 			endpoint.publish(serviceUrl.toExternalForm());
 			
 			WSDL2UDDI wsdl2UDDI = new WSDL2UDDI(clerk, urlLocalizer, properties);
 			Definition wsdlDefinition = new ReadWSDL().readWSDL("juddi_client_subscriptionlistener.wsdl");
-			bindingKey = wsdl2UDDI.register(serviceQName, portName, serviceUrl, wsdlDefinition).getBindingKey();
+			bindingKey = wsdl2UDDI.registerBusinessService(serviceQName, portName, serviceUrl, wsdlDefinition).getBindingKey();
 			
 			registerSubscription();
 		}
@@ -105,7 +106,7 @@ public class UDDIServiceCache {
 		QName serviceQName = new QName("urn:uddi-org:v3_service", "UDDIClientSubscriptionListenerService");
 		String portName = "UDDIClientSubscriptionListenerImplPort";
 		WSDL2UDDI wsdl2UDDI = new WSDL2UDDI(clerk, urlLocalizer, properties);
-		wsdl2UDDI.unRegister(serviceQName, portName, serviceUrl);
+		wsdl2UDDI.unRegisterBusinessService(serviceQName, portName, serviceUrl);
 		endpoint.stop();
 		endpoints.remove(serviceUrl.toExternalForm());
 		UDDIClientSubscriptionListenerImpl.getServiceCacheMap().remove(bindingKey);



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@juddi.apache.org
For additional commands, e-mail: commits-help@juddi.apache.org