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 2009/10/13 21:55:24 UTC

svn commit: r824896 - in /webservices/juddi/trunk: juddi-client/src/main/java/org/apache/juddi/v3/client/config/ juddi-core/src/main/java/org/apache/juddi/api/impl/ juddi-core/src/main/java/org/apache/juddi/mapping/ juddi-core/src/main/java/org/apache/...

Author: kstam
Date: Tue Oct 13 19:55:23 2009
New Revision: 824896

URL: http://svn.apache.org/viewvc?rev=824896&view=rev
Log:
JUDDI-240 adding saving Clerk and Node Info on client start.

Added:
    webservices/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/validation/ValidateClerk.java
    webservices/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/validation/ValidateNode.java
    webservices/juddi/trunk/uddi-ws/src/main/java/org/apache/juddi/api_v3/ClerkDetail.java
    webservices/juddi/trunk/uddi-ws/src/main/java/org/apache/juddi/api_v3/NodeDetail.java
    webservices/juddi/trunk/uddi-ws/src/main/java/org/apache/juddi/api_v3/SaveClerk.java
    webservices/juddi/trunk/uddi-ws/src/main/java/org/apache/juddi/api_v3/SaveNode.java
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-client/src/main/java/org/apache/juddi/v3/client/config/UDDINode.java
    webservices/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/api/impl/JUDDIApiImpl.java
    webservices/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/mapping/MappingApiToModel.java
    webservices/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/model/Clerk.java
    webservices/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/model/ClientSubscriptionInfo.java
    webservices/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/rmi/JUDDIApiService.java
    webservices/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/validation/ValidateClientSubscriptionInfo.java
    webservices/juddi/trunk/juddi-core/src/main/resources/messages.properties
    webservices/juddi/trunk/juddi-core/src/main/resources/persistence/hibernate-persistence.xml
    webservices/juddi/trunk/juddi-core/src/test/java/org/apache/juddi/api/impl/API_100_ClientSubscriptionInfoTest.java
    webservices/juddi/trunk/uddi-ws/src/main/java/org/apache/juddi/v3_service/JUDDIApiPortType.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=824896&r1=824895&r2=824896&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 13 19:55:23 2009
@@ -8,6 +8,12 @@
 import java.util.Properties;
 
 import org.apache.commons.configuration.ConfigurationException;
+import org.apache.juddi.api_v3.Clerk;
+import org.apache.juddi.api_v3.ClerkDetail;
+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.transport.TransportException;
 import org.apache.log4j.Logger;
 import org.uddi.api_v3.BindingDetail;
@@ -137,6 +143,49 @@
 		return authToken;
 	}
 	
+	public NodeDetail saveNode(Node node)  {
+		NodeDetail nodeDetail = null;
+		try {
+			SaveNode saveNode = new SaveNode();
+			saveNode.setAuthInfo(getAuthToken());
+			saveNode.getNode().add(node);
+			nodeDetail =getUDDINode().getTransport().getJUDDIApiService().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 {
+			SaveClerk saveClerk = new SaveClerk();
+			saveClerk.setAuthInfo(getAuthToken());
+			saveClerk.getClerk().add(getApiClerk());
+			clerkDetail = senderClerk.getUDDINode().getTransport().getJUDDIApiService().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;
+	}
+	
+	private 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;
 	}

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=824896&r1=824895&r2=824896&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 13 19:55:23 2009
@@ -6,6 +6,7 @@
 
 import org.apache.commons.configuration.ConfigurationException;
 import org.apache.juddi.v3.annotations.AnnotationProcessor;
+import org.apache.juddi.v3.client.transport.Transport;
 import org.apache.log4j.Logger;
 import org.uddi.api_v3.BusinessService;
 
@@ -56,6 +57,7 @@
 			manager = new UDDIClerkManager();
 		}
 		if (manager.clientConfig.isRegisterOnStartup()) {
+			manager.saveClerkAndNodeInfo();
 			manager.registerAnnotatedServices();
 			manager.xRegister();
 		}
@@ -75,6 +77,26 @@
 			log.info("Clerks restarted succesfully for manager " + manager.clientConfig.getManagerName());
 		}
  	}
+	/**
+	 * Saves the clerk and node info from the uddi.xml to the jUDDI registry.
+	 */
+	public void saveClerkAndNodeInfo() {
+		
+		Map<String,UDDIClerk> uddiClerks = clientConfig.getUDDIClerks();
+		if (uddiClerks.size() > 0) {
+			for (UDDIClerk defaultClerk : uddiClerks.values()) {
+				if (Transport.DEFAULT_NODE_NAME.equals(defaultClerk.uddiNode.getName())) {
+					for (UDDINode uddiNode : clientConfig.getUDDINodes().values()) {
+						defaultClerk.saveNode(uddiNode.getApiNode());
+					}
+					for (UDDIClerk uddiClerk : clientConfig.getUDDIClerks().values()) {
+						defaultClerk.saveClerk(uddiClerk);
+					}
+					break;
+				}
+			}
+		}	
+	}
 	
 	/**
 	 * X-Register services listed in the uddi.xml
@@ -96,11 +118,11 @@
 		Map<String,UDDIClerk> uddiClerks = clientConfig.getUDDIClerks();
 		if (uddiClerks.size() > 0) {
 			AnnotationProcessor ap = new AnnotationProcessor();
-			for (UDDIClerk uddiCerk : uddiClerks.values()) {
+			for (UDDIClerk uddiClerk : uddiClerks.values()) {
 				Collection<BusinessService> services = ap.readServiceAnnotations(
-						uddiCerk.getClassWithAnnotations(),uddiCerk.getUDDINode().getProperties());
+						uddiClerk.getClassWithAnnotations(),uddiClerk.getUDDINode().getProperties());
 				for (BusinessService businessService : services) {
-					uddiCerk.register(businessService);
+					uddiClerk.register(businessService);
 				}
 			}
 		}

Modified: webservices/juddi/trunk/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDINode.java
URL: http://svn.apache.org/viewvc/webservices/juddi/trunk/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDINode.java?rev=824896&r1=824895&r2=824896&view=diff
==============================================================================
--- webservices/juddi/trunk/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDINode.java (original)
+++ webservices/juddi/trunk/juddi-client/src/main/java/org/apache/juddi/v3/client/config/UDDINode.java Tue Oct 13 19:55:23 2009
@@ -3,6 +3,7 @@
 import java.io.Serializable;
 import java.util.Properties;
 
+import org.apache.juddi.api_v3.Node;
 import org.apache.juddi.v3.client.transport.Transport;
 import org.apache.juddi.v3.client.transport.TransportException;
 import org.apache.log4j.helpers.Loader;
@@ -35,6 +36,23 @@
 		this.properties = properties;
 	}
 	
+	public Node getApiNode() {
+		Node apiNode = new Node();
+		apiNode.setCustodyTransferUrl(custodyTransferUrl);
+		apiNode.setDescription(description);
+		apiNode.setFactoryInitial(factoryInitial);
+		apiNode.setFactoryNamingProvider(factoryNamingProvider);
+		apiNode.setFactoryURLPkgs(factoryURLPkgs);
+		apiNode.setInquiryUrl(inquiryUrl);
+		apiNode.setJuddiApiUrl(juddiApiUrl);
+		apiNode.setName(name);
+		apiNode.setProxyTransport(proxyTransport);
+		apiNode.setPublishUrl(publishUrl);
+		apiNode.setSecurityUrl(securityUrl);
+		apiNode.setSubscriptionUrl(subscriptionUrl);
+		return apiNode;
+	}
+	
 	
 	public Transport getTransport() throws TransportException {
 		if (transport==null) {

Modified: webservices/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/api/impl/JUDDIApiImpl.java
URL: http://svn.apache.org/viewvc/webservices/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/api/impl/JUDDIApiImpl.java?rev=824896&r1=824895&r2=824896&view=diff
==============================================================================
--- webservices/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/api/impl/JUDDIApiImpl.java (original)
+++ webservices/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/api/impl/JUDDIApiImpl.java Tue Oct 13 19:55:23 2009
@@ -25,6 +25,7 @@
 import javax.persistence.EntityTransaction;
 import javax.persistence.Query;
 
+import org.apache.juddi.api_v3.ClerkDetail;
 import org.apache.juddi.api_v3.ClientSubscriptionInfoDetail;
 import org.apache.juddi.api_v3.DeleteClientSubscriptionInfo;
 import org.apache.juddi.api_v3.DeletePublisher;
@@ -32,8 +33,11 @@
 import org.apache.juddi.api_v3.GetAllPublisherDetail;
 import org.apache.juddi.api_v3.GetClientSubscriptionInfoDetail;
 import org.apache.juddi.api_v3.GetPublisherDetail;
+import org.apache.juddi.api_v3.NodeDetail;
 import org.apache.juddi.api_v3.PublisherDetail;
+import org.apache.juddi.api_v3.SaveClerk;
 import org.apache.juddi.api_v3.SaveClientSubscriptionInfo;
+import org.apache.juddi.api_v3.SaveNode;
 import org.apache.juddi.api_v3.SavePublisher;
 import org.apache.juddi.config.PersistenceManager;
 import org.apache.juddi.error.ErrorMessage;
@@ -44,7 +48,9 @@
 import org.apache.juddi.model.Publisher;
 import org.apache.juddi.model.UddiEntityPublisher;
 import org.apache.juddi.v3_service.JUDDIApiPortType;
+import org.apache.juddi.validation.ValidateClerk;
 import org.apache.juddi.validation.ValidateClientSubscriptionInfo;
+import org.apache.juddi.validation.ValidateNode;
 import org.apache.juddi.validation.ValidatePublish;
 import org.apache.juddi.validation.ValidatePublisher;
 import org.uddi.api_v3.DeleteTModel;
@@ -387,6 +393,94 @@
 		}
 
 	}
+	
+	/**
+	 * Saves clerk(s) to the persistence layer.  This method is specific to jUDDI.
+	 */
+	public ClerkDetail saveClerk(SaveClerk body)
+			throws DispositionReportFaultMessage {
+
+		EntityManager em = PersistenceManager.getEntityManager();
+		EntityTransaction tx = em.getTransaction();
+		try {
+			tx.begin();
+	
+			UddiEntityPublisher publisher = this.getEntityPublisher(em, body.getAuthInfo());
+			
+			new ValidateClerk(publisher).validateSaveClerk(em, body);
+			
+			ClerkDetail result = new ClerkDetail();
+	
+			List<org.apache.juddi.api_v3.Clerk> apiClerkList = body.getClerk();;
+			for (org.apache.juddi.api_v3.Clerk apiClerk : apiClerkList) {
+				
+				org.apache.juddi.model.Clerk modelClerk = new org.apache.juddi.model.Clerk();
+				
+				MappingApiToModel.mapClerk(apiClerk, modelClerk);
+				
+				Object existingUddiEntity = em.find(modelClerk.getClass(), modelClerk.getClerkName());
+				if (existingUddiEntity != null) {
+					em.merge(modelClerk);
+				} else {
+					em.persist(modelClerk);
+				}
+				
+				result.getClerk().add(apiClerk);
+			}
+	
+			tx.commit();
+			return result;
+		} finally {
+			if (tx.isActive()) {
+				tx.rollback();
+			}
+			em.close();
+		}
+	}
+	
+	/**
+	 * Saves nodes(s) to the persistence layer.  This method is specific to jUDDI.
+	 */
+	public NodeDetail saveNode(SaveNode body)
+			throws DispositionReportFaultMessage {
+
+		EntityManager em = PersistenceManager.getEntityManager();
+		EntityTransaction tx = em.getTransaction();
+		try {
+			tx.begin();
+	
+			UddiEntityPublisher publisher = this.getEntityPublisher(em, body.getAuthInfo());
+			
+			new ValidateNode(publisher).validateSaveNode(em, body);
+			
+			NodeDetail result = new NodeDetail();
+	
+			List<org.apache.juddi.api_v3.Node> apiNodeList = body.getNode();;
+			for (org.apache.juddi.api_v3.Node apiNode : apiNodeList) {
+				
+				org.apache.juddi.model.Node modelNode = new org.apache.juddi.model.Node();
+				
+				MappingApiToModel.mapNode(apiNode, modelNode);
+				
+				Object existingUddiEntity = em.find(modelNode.getClass(), modelNode.getName());
+				if (existingUddiEntity != null) {
+					em.merge(modelNode);
+				} else {
+				    em.persist(modelNode);
+				}
+				
+				result.getNode().add(apiNode);
+			}
+	
+			tx.commit();
+			return result;
+		} finally {
+			if (tx.isActive()) {
+				tx.rollback();
+			}
+			em.close();
+		}
+	}
 
 	
 	

Modified: webservices/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/mapping/MappingApiToModel.java
URL: http://svn.apache.org/viewvc/webservices/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/mapping/MappingApiToModel.java?rev=824896&r1=824895&r2=824896&view=diff
==============================================================================
--- webservices/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/mapping/MappingApiToModel.java (original)
+++ webservices/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/mapping/MappingApiToModel.java Tue Oct 13 19:55:23 2009
@@ -603,6 +603,7 @@
 		if (apiClientSubscriptionInfo.getClerk()!=null) {
 			org.apache.juddi.model.Clerk modelClerk = new org.apache.juddi.model.Clerk();
 			mapClerk(apiClientSubscriptionInfo.getClerk(), modelClerk);
+			modelClientSubscriptionInfo.setClerk(modelClerk);
 		}
 		
 	}
@@ -616,6 +617,7 @@
 			if (apiClerk.getNode()!=null) {
 				org.apache.juddi.model.Node modelNode = new org.apache.juddi.model.Node();
 				mapNode(apiClerk.getNode(), modelNode);
+				modelClerk.setNode(modelNode);
 			}
 		}
 	}
@@ -623,7 +625,7 @@
 	public static void mapNode(org.apache.juddi.api_v3.Node apiNode,org.apache.juddi.model.Node modelNode) {
 		if (apiNode!=null) {
 			
-			modelNode.setCustodyTransferUrl(modelNode.getCustodyTransferUrl());
+			modelNode.setCustodyTransferUrl(apiNode.getCustodyTransferUrl());
 			modelNode.setInquiryUrl(apiNode.getInquiryUrl());
 			modelNode.setJuddiApiUrl(apiNode.getJuddiApiUrl());
 			modelNode.setName(apiNode.getName());

Modified: webservices/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/model/Clerk.java
URL: http://svn.apache.org/viewvc/webservices/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/model/Clerk.java?rev=824896&r1=824895&r2=824896&view=diff
==============================================================================
--- webservices/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/model/Clerk.java (original)
+++ webservices/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/model/Clerk.java Tue Oct 13 19:55:23 2009
@@ -38,9 +38,9 @@
 	private String clerkName;
 	@Column(name="publisher_id", nullable = false, length=255)
 	private String publisherId;
-	@ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
+	@ManyToOne(cascade = CascadeType.MERGE, fetch = FetchType.EAGER)
 	private Node node;
-	@Column(name="cred", nullable = false, length=255)
+	@Column(name="cred", length=255)
 	private String cred;
 	
 	public Clerk() {}

Modified: webservices/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/model/ClientSubscriptionInfo.java
URL: http://svn.apache.org/viewvc/webservices/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/model/ClientSubscriptionInfo.java?rev=824896&r1=824895&r2=824896&view=diff
==============================================================================
--- webservices/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/model/ClientSubscriptionInfo.java (original)
+++ webservices/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/model/ClientSubscriptionInfo.java Tue Oct 13 19:55:23 2009
@@ -17,7 +17,6 @@
 
 import java.util.Date;
 
-import javax.persistence.CascadeType;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.FetchType;
@@ -41,7 +40,7 @@
 	@Id()
 	@Column(name="subscription_key", nullable = false, length=255)
 	private String subscriptionKey;
-	@ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
+	@ManyToOne(fetch = FetchType.EAGER)
 	private Clerk clerk;
 	@Temporal(TemporalType.TIMESTAMP)
 	@Column(name="last_notified", length = 29)

Modified: webservices/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/rmi/JUDDIApiService.java
URL: http://svn.apache.org/viewvc/webservices/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/rmi/JUDDIApiService.java?rev=824896&r1=824895&r2=824896&view=diff
==============================================================================
--- webservices/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/rmi/JUDDIApiService.java (original)
+++ webservices/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/rmi/JUDDIApiService.java Tue Oct 13 19:55:23 2009
@@ -20,13 +20,17 @@
 import java.rmi.server.UnicastRemoteObject;
 
 import org.apache.juddi.api.impl.JUDDIApiImpl;
+import org.apache.juddi.api_v3.ClerkDetail;
 import org.apache.juddi.api_v3.ClientSubscriptionInfoDetail;
 import org.apache.juddi.api_v3.DeleteClientSubscriptionInfo;
 import org.apache.juddi.api_v3.DeletePublisher;
 import org.apache.juddi.api_v3.GetAllPublisherDetail;
 import org.apache.juddi.api_v3.GetPublisherDetail;
+import org.apache.juddi.api_v3.NodeDetail;
 import org.apache.juddi.api_v3.PublisherDetail;
+import org.apache.juddi.api_v3.SaveClerk;
 import org.apache.juddi.api_v3.SaveClientSubscriptionInfo;
+import org.apache.juddi.api_v3.SaveNode;
 import org.apache.juddi.api_v3.SavePublisher;
 import org.apache.juddi.v3_service.JUDDIApiPortType;
 import org.uddi.api_v3.DeleteTModel;
@@ -82,6 +86,18 @@
 		
 	}
 	
+	public ClerkDetail saveClerk(SaveClerk body)
+			throws DispositionReportFaultMessage, RemoteException {
+		return juddiAPI.saveClerk(body);
+
+	}
+	
+	public NodeDetail saveNode(SaveNode body)
+			throws DispositionReportFaultMessage, RemoteException {
+		return juddiAPI.saveNode(body);
+	
+	}
+	
 	
 
 

Added: webservices/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/validation/ValidateClerk.java
URL: http://svn.apache.org/viewvc/webservices/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/validation/ValidateClerk.java?rev=824896&view=auto
==============================================================================
--- webservices/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/validation/ValidateClerk.java (added)
+++ webservices/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/validation/ValidateClerk.java Tue Oct 13 19:55:23 2009
@@ -0,0 +1,98 @@
+/*
+ * Copyright 2001-2008 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.juddi.validation;
+
+import java.util.List;
+
+import javax.persistence.EntityManager;
+
+import org.apache.juddi.api_v3.Clerk;
+import org.apache.juddi.api_v3.Node;
+import org.apache.juddi.error.ErrorMessage;
+import org.apache.juddi.error.FatalErrorException;
+import org.apache.juddi.error.InvalidKeyPassedException;
+import org.apache.juddi.error.ValueNotAllowedException;
+import org.apache.juddi.model.UddiEntityPublisher;
+import org.uddi.v3_service.DispositionReportFaultMessage;
+
+
+/**
+ * @author <a href="mailto:jfaath@apache.org">Jeff Faath</a>
+ */
+public class ValidateClerk extends ValidateUDDIApi {
+
+	public ValidateClerk(UddiEntityPublisher publisher) {
+		super(publisher);
+	}
+
+	
+	
+	/*-------------------------------------------------------------------
+	 ClientSubscriptionInf functions are specific to jUDDI.
+	 --------------------------------------------------------------------*/
+
+
+	public void validateSaveClerk(EntityManager em, org.apache.juddi.api_v3.SaveClerk body) throws DispositionReportFaultMessage {
+
+		if (body == null)
+			throw new FatalErrorException(new ErrorMessage("errors.NullInput"));
+		
+		// No null or empty list
+		List<Clerk> clerks = body.getClerk();
+		if (clerks == null)
+			throw new ValueNotAllowedException(new ErrorMessage("errors.saveClerk.NoInput"));
+		
+		for (Clerk clerk : body.getClerk()) {
+			validateClerk(em, clerk);
+		}
+
+	}
+	
+	public void validateClerk(EntityManager em, org.apache.juddi.api_v3.Clerk clerk) throws DispositionReportFaultMessage {
+
+		// No null input
+		if (clerk == null)
+			throw new ValueNotAllowedException(new ErrorMessage("errors.clerk.NullInput"));
+		
+		String name = clerk.getName();
+		if (name == null || name.length() == 0)
+			throw new ValueNotAllowedException(new ErrorMessage("errors.clerk.NoName"));
+	
+		String publisherName = clerk.getPublisher();
+		if (publisherName == null || publisherName.length() == 0)
+			throw new ValueNotAllowedException(new ErrorMessage("errors.clerk.NoPublisherName"));
+		
+		Node node = clerk.getNode();
+		if (node == null) 
+			throw new ValueNotAllowedException(new ErrorMessage("errors.clerk.NullNodeInput"));
+		
+		String nodeName = node.getName();
+		if (nodeName == null || nodeName.length() == 0)
+			throw new ValueNotAllowedException(new ErrorMessage("errors.node.NoName"));
+		
+		//make sure node exists
+		Object obj = em.find(org.apache.juddi.model.Node.class, nodeName);
+		if (obj == null)
+			throw new InvalidKeyPassedException(new ErrorMessage("errors.invalidkey.NodeNotFound", nodeName));
+
+	}
+	
+	
+	
+	
+}

Modified: webservices/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/validation/ValidateClientSubscriptionInfo.java
URL: http://svn.apache.org/viewvc/webservices/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/validation/ValidateClientSubscriptionInfo.java?rev=824896&r1=824895&r2=824896&view=diff
==============================================================================
--- webservices/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/validation/ValidateClientSubscriptionInfo.java (original)
+++ webservices/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/validation/ValidateClientSubscriptionInfo.java Tue Oct 13 19:55:23 2009
@@ -26,8 +26,6 @@
 import org.apache.juddi.api_v3.DeleteClientSubscriptionInfo;
 import org.apache.juddi.api_v3.GetAllClientSubscriptionInfoDetail;
 import org.apache.juddi.api_v3.GetClientSubscriptionInfoDetail;
-//import org.apache.juddi.api_v3.GetPublisherDetail;
-import org.apache.juddi.api_v3.Node;
 import org.apache.juddi.api_v3.SaveClientSubscriptionInfo;
 import org.apache.juddi.error.ErrorMessage;
 import org.apache.juddi.error.FatalErrorException;
@@ -104,15 +102,11 @@
 		String name = clerk.getName();
 		if (name == null || name.length() == 0)
 			throw new ValueNotAllowedException(new ErrorMessage("errors.clerk.NoName"));
-	
-		String publisherName = clerk.getPublisher();
-		if (publisherName == null || publisherName.length() == 0)
-			throw new ValueNotAllowedException(new ErrorMessage("errors.clerk.NoPublisherName"));
-		
-		Node node = clerk.getNode();
-		if (node == null) 
-			throw new ValueNotAllowedException(new ErrorMessage("errors.clerk.NullNodeInput"));
-
+		
+		//make sure clerk exists
+		Object obj = em.find(org.apache.juddi.model.Clerk.class, name);
+		if (obj == null)
+			throw new InvalidKeyPassedException(new ErrorMessage("errors.invalidkey.ClerkNotFound", name));
 	}
 	
 	public void validateGetClientSubscriptionInfoDetail(GetClientSubscriptionInfoDetail body) throws DispositionReportFaultMessage {

Added: webservices/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/validation/ValidateNode.java
URL: http://svn.apache.org/viewvc/webservices/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/validation/ValidateNode.java?rev=824896&view=auto
==============================================================================
--- webservices/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/validation/ValidateNode.java (added)
+++ webservices/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/validation/ValidateNode.java Tue Oct 13 19:55:23 2009
@@ -0,0 +1,81 @@
+/*
+ * Copyright 2001-2008 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.juddi.validation;
+
+import java.util.List;
+
+import javax.persistence.EntityManager;
+
+import org.apache.juddi.api_v3.Node;
+import org.apache.juddi.error.ErrorMessage;
+import org.apache.juddi.error.FatalErrorException;
+import org.apache.juddi.error.ValueNotAllowedException;
+import org.apache.juddi.model.UddiEntityPublisher;
+import org.uddi.v3_service.DispositionReportFaultMessage;
+
+
+/**
+ * @author <a href="mailto:kstam@apache.org">Kurt T Stam</a>
+ */
+public class ValidateNode extends ValidateUDDIApi {
+
+	public ValidateNode(UddiEntityPublisher publisher) {
+		super(publisher);
+	}
+
+	
+	
+	/*-------------------------------------------------------------------
+	 ClientSubscriptionInf functions are specific to jUDDI.
+	 --------------------------------------------------------------------*/
+
+
+	public void validateSaveNode(EntityManager em, org.apache.juddi.api_v3.SaveNode body) throws DispositionReportFaultMessage {
+
+		if (body == null)
+			throw new FatalErrorException(new ErrorMessage("errors.NullInput"));
+		
+		// No null or empty list
+		List<Node> nodes = body.getNode();
+		if (nodes == null)
+			throw new ValueNotAllowedException(new ErrorMessage("errors.saveNodes.NoInput"));
+		
+		for (Node clerk : body.getNode()) {
+			validateNode(clerk);
+		}
+
+	}
+	
+	public void validateNode(org.apache.juddi.api_v3.Node node) throws DispositionReportFaultMessage {
+
+		// No null input
+		if (node == null)
+			throw new ValueNotAllowedException(new ErrorMessage("errors.node.NullInput"));
+		
+		String name = node.getName();
+		if (name == null || name.length() == 0)
+			throw new ValueNotAllowedException(new ErrorMessage("errors.node.NoName"));
+	
+		//TODO could check we have all the urls
+	
+	}
+	
+	
+	
+	
+}

Modified: webservices/juddi/trunk/juddi-core/src/main/resources/messages.properties
URL: http://svn.apache.org/viewvc/webservices/juddi/trunk/juddi-core/src/main/resources/messages.properties?rev=824896&r1=824895&r2=824896&view=diff
==============================================================================
--- webservices/juddi/trunk/juddi-core/src/main/resources/messages.properties (original)
+++ webservices/juddi/trunk/juddi-core/src/main/resources/messages.properties Tue Oct 13 19:55:23 2009
@@ -71,6 +71,7 @@
 errors.invalidkey.MalformedKey=The passed key does not conform to UDDI v3 rules
 errors.invalidkey.KeyGenSuffix=The passed key generator key does not end with the appropriate suffix
 errors.invalidkey.NoKeys=No keys passed.  At least one key must be passed
+errors.invalidkey.ClerkNotFound=The clerk was not found for the given name
 errors.invalidkey.DuplicateKey=A duplicate key was passed.  No duplicates are allowed
 errors.invalidkey.PublisherNotFound=The publisher was not found for the given id
 errors.invalidkey.EntityNotFound=The entity was not found for the given id
@@ -96,7 +97,8 @@
 errors.saveservice.NoInput=At least one BusinessService must be provided
 errors.savebinding.NoInput=At least one BindingTemplate must be provided
 errors.saveclientsubscriptionKey.NoInput=The SubscriptionKey must be provided
-errors.saveclientClerk.NoInput=The Clerk structure cannot be blank
+errors.saveClerk.NoInput=At least one Clerk must be provided
+errors.saveNodes.NoInput=At least one Node must be provided
 errors.savetmodel.NoInput=At least one tModel must be provided
 errors.addpublisherassertions.NoInput=At least one publisherAssertion must be provided
 errors.businessentity.NullInput=The businessEntity structure cannot be blank
@@ -182,6 +184,8 @@
 errors.clerk.NullNodeInput=The Node structure on Clerk cannot be blank
 errors.clerk.NoName=A valid clerk name was not specified
 errors.clerk.NoPublisherName=A valid publisher name was not specified
+errors.node.NullInput=The Node structure cannot be blank
+errors.node.NoNameA valid node name was not specified
 
 #-- Authentication error messages
 errors.auth.AuthRequired=Authentication is required for this API call

Modified: webservices/juddi/trunk/juddi-core/src/main/resources/persistence/hibernate-persistence.xml
URL: http://svn.apache.org/viewvc/webservices/juddi/trunk/juddi-core/src/main/resources/persistence/hibernate-persistence.xml?rev=824896&r1=824895&r2=824896&view=diff
==============================================================================
--- webservices/juddi/trunk/juddi-core/src/main/resources/persistence/hibernate-persistence.xml (original)
+++ webservices/juddi/trunk/juddi-core/src/main/resources/persistence/hibernate-persistence.xml Tue Oct 13 19:55:23 2009
@@ -15,21 +15,21 @@
       <property name="hibernate.hbm2ddl.auto" value="update"/>
       <property name="hibernate.show_sql" value="false"/>
 
-      <!-- derby connection properties -->
+      <!-- derby connection properties 
       <property name="hibernate.dialect" value="org.hibernate.dialect.DerbyDialect"/>
       <property name="hibernate.connection.driver_class" value="org.apache.derby.jdbc.EmbeddedDriver"/>
       <property name="hibernate.connection.url" value="jdbc:derby:target/juddi-derby-test-db;create=true"/>
       <property name="hibernate.connection.username" value=""/>
       <property name="hibernate.connection.password" value=""/>
-
+-->
  	  <!--  mysql connection properties -->
-<!--
+
       <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
       <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" />
       <property name="hibernate.connection.username" value="juddiv3" />
       <property name="hibernate.connection.password" value="" />
       <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/juddiv3" />
---> 
+
       
       <!-- connection pool properties -->
       <property name="hibernate.dbcp.maxActive" value="100"/>

Modified: webservices/juddi/trunk/juddi-core/src/test/java/org/apache/juddi/api/impl/API_100_ClientSubscriptionInfoTest.java
URL: http://svn.apache.org/viewvc/webservices/juddi/trunk/juddi-core/src/test/java/org/apache/juddi/api/impl/API_100_ClientSubscriptionInfoTest.java?rev=824896&r1=824895&r2=824896&view=diff
==============================================================================
--- webservices/juddi/trunk/juddi-core/src/test/java/org/apache/juddi/api/impl/API_100_ClientSubscriptionInfoTest.java (original)
+++ webservices/juddi/trunk/juddi-core/src/test/java/org/apache/juddi/api/impl/API_100_ClientSubscriptionInfoTest.java Tue Oct 13 19:55:23 2009
@@ -19,12 +19,16 @@
 import org.apache.commons.configuration.ConfigurationException;
 import org.apache.juddi.Registry;
 import org.apache.juddi.api_v3.Clerk;
+import org.apache.juddi.api_v3.ClerkDetail;
 import org.apache.juddi.api_v3.ClientSubscriptionInfo;
 import org.apache.juddi.api_v3.ClientSubscriptionInfoDetail;
 import org.apache.juddi.api_v3.DeleteClientSubscriptionInfo;
 import org.apache.juddi.api_v3.GetClientSubscriptionInfoDetail;
 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.SaveClientSubscriptionInfo;
+import org.apache.juddi.api_v3.SaveNode;
 import org.apache.juddi.error.InvalidKeyPassedException;
 import org.apache.juddi.v3.tck.TckPublisher;
 import org.apache.juddi.v3.tck.TckSecurity;
@@ -71,12 +75,43 @@
 		
 		Node node = new Node();
 		node.setSecurityUrl("http://localhost:8080/services/securityUrl");
+		node.setCustodyTransferUrl("http://localhost:8080/services/securityUrl");
+		node.setDescription("description");
+		node.setInquiryUrl("http://localhost:8080/services/securityUrl");
+		node.setPublishUrl("http://localhost:8080/services/securityUrl");
+		node.setProxyTransport("class");
+		node.setSubscriptionUrl("http://localhost:8080/services/securityUrl");
 		node.setName("default");
+		SaveNode saveNode = new SaveNode();
+		saveNode.setAuthInfo(authInfoJoe);
+		saveNode.getNode().add(node);
 		
 		Clerk clerk = new Clerk();
 		clerk.setName("clerkName");
 		clerk.setPublisher("root");
 		clerk.setNode(node);
+		SaveClerk saveClerk = new SaveClerk();
+		saveClerk.setAuthInfo(authInfoJoe);
+		saveClerk.getClerk().add(clerk);
+		
+		clientSubscriptionInfo.setClerk(clerk);
+		
+		Node node2 = new Node();
+		node2.setSecurityUrl("http://localhost:8080/services/securityUrl2");
+		node2.setCustodyTransferUrl("https://localhost:8080/services/securityUrl2");
+		node2.setDescription("description2");
+		node2.setInquiryUrl("http://localhost:8080/services/securityUrl2");
+		node2.setPublishUrl("http://localhost:8080/services/securityUrl2");
+		node2.setProxyTransport("class2");
+		node2.setSubscriptionUrl("http://localhost:8080/services/securityUrl2");
+		node2.setName("default2");
+		saveNode.getNode().add(node2);
+		
+		Clerk clerk2 = new Clerk();
+		clerk2.setName("clerkName2");
+		clerk2.setPublisher("root");
+		clerk2.setNode(node2);
+		saveClerk.getClerk().add(clerk2);
 		
 		clientSubscriptionInfo.setClerk(clerk);
 		
@@ -86,15 +121,25 @@
 		saveClientSubscriptionInfo.setAuthInfo(authInfoJoe);
 		saveClientSubscriptionInfo.getClientSubscriptionInfo().add(clientSubscriptionInfo);
 		
+		ClientSubscriptionInfo clientSubscriptionInfo2 = new ClientSubscriptionInfo();
+		clientSubscriptionInfo2.setSubscriptionKey("mykey2");
+		clientSubscriptionInfo2.setClerk(clerk2);
+		saveClientSubscriptionInfo.getClientSubscriptionInfo().add(clientSubscriptionInfo2);
+		
 		try {
+
+			NodeDetail nodeDetail = publisher.saveNode(saveNode);
+			ClerkDetail clerkDetail = publisher.saveClerk(saveClerk);
+			Assert.assertEquals(2,nodeDetail.getNode().size());
+			Assert.assertEquals(2,clerkDetail.getClerk().size());
+			
 			ClientSubscriptionInfoDetail detail = publisher.saveClientSubscriptionInfo(saveClientSubscriptionInfo);
-		
+			Assert.assertEquals("mykey", detail.getClientSubscriptionInfo().get(0).getSubscriptionKey());
+			
 			GetClientSubscriptionInfoDetail getDetail = new GetClientSubscriptionInfoDetail();
 			getDetail.setAuthInfo(authInfoJoe);
 			getDetail.getClientSubscriptionKey().add("mykey");
 			
-			Assert.assertEquals("mykey", detail.getClientSubscriptionInfo().get(0).getSubscriptionKey());
-			
 			ClientSubscriptionInfoDetail detail2 = publisher.getClientSubscriptionInfoDetail(getDetail);
 			Assert.assertEquals("mykey", detail2.getClientSubscriptionInfo().get(0).getSubscriptionKey());
 	

Added: webservices/juddi/trunk/uddi-ws/src/main/java/org/apache/juddi/api_v3/ClerkDetail.java
URL: http://svn.apache.org/viewvc/webservices/juddi/trunk/uddi-ws/src/main/java/org/apache/juddi/api_v3/ClerkDetail.java?rev=824896&view=auto
==============================================================================
--- webservices/juddi/trunk/uddi-ws/src/main/java/org/apache/juddi/api_v3/ClerkDetail.java (added)
+++ webservices/juddi/trunk/uddi-ws/src/main/java/org/apache/juddi/api_v3/ClerkDetail.java Tue Oct 13 19:55:23 2009
@@ -0,0 +1,54 @@
+/*
+ * Copyright 2001-2008 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+
+package org.apache.juddi.api_v3;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for publisherDetail type. Specific to juddi.
+ * 
+ * @author <a href="mailto:kstam@apache.org">Kurt T Stam</a>
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "clerkDetail", propOrder = {
+    "clerk"
+})
+public class ClerkDetail implements Serializable{
+	
+	@XmlTransient
+	private static final long serialVersionUID = -3428846191158232914L;
+	protected List<Clerk> clerk;
+
+    public List<Clerk> getClerk() {
+        if (clerk == null) {
+        	clerk = new ArrayList<Clerk>();
+        }
+        return this.clerk;
+    }
+
+    
+}
+
\ No newline at end of file

Added: webservices/juddi/trunk/uddi-ws/src/main/java/org/apache/juddi/api_v3/NodeDetail.java
URL: http://svn.apache.org/viewvc/webservices/juddi/trunk/uddi-ws/src/main/java/org/apache/juddi/api_v3/NodeDetail.java?rev=824896&view=auto
==============================================================================
--- webservices/juddi/trunk/uddi-ws/src/main/java/org/apache/juddi/api_v3/NodeDetail.java (added)
+++ webservices/juddi/trunk/uddi-ws/src/main/java/org/apache/juddi/api_v3/NodeDetail.java Tue Oct 13 19:55:23 2009
@@ -0,0 +1,53 @@
+/*
+ * Copyright 2001-2008 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+
+package org.apache.juddi.api_v3;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for publisherDetail type. Specific to juddi.
+ * 
+ * @author <a href="mailto:kstam@apache.org">Kurt T Stam</a>
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "nodeDetail", propOrder = {
+    "node"
+})
+public class NodeDetail implements Serializable{
+	
+	@XmlTransient
+	private static final long serialVersionUID = -2223079896071967732L;
+	protected List<Node> node;
+
+    public List<Node> getNode() {
+        if (node == null) {
+        	node = new ArrayList<Node>();
+        }
+        return this.node;
+    }
+
+}
+
\ No newline at end of file

Added: webservices/juddi/trunk/uddi-ws/src/main/java/org/apache/juddi/api_v3/SaveClerk.java
URL: http://svn.apache.org/viewvc/webservices/juddi/trunk/uddi-ws/src/main/java/org/apache/juddi/api_v3/SaveClerk.java?rev=824896&view=auto
==============================================================================
--- webservices/juddi/trunk/uddi-ws/src/main/java/org/apache/juddi/api_v3/SaveClerk.java (added)
+++ webservices/juddi/trunk/uddi-ws/src/main/java/org/apache/juddi/api_v3/SaveClerk.java Tue Oct 13 19:55:23 2009
@@ -0,0 +1,68 @@
+/*
+ * Copyright 2001-2008 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.juddi.api_v3;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for save_subscriptionInfo type.  Specific to juddi.
+ * 
+ * @author <a href="mailto:kstam@apache.org">Kurt T Stam</a>
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "save_clerkInfo", propOrder = {
+	"authInfo",
+    "clerk"
+})
+public class SaveClerk implements Serializable{
+	
+	@XmlTransient
+	private static final long serialVersionUID = 2909722102936229047L;
+	protected String authInfo;
+    @XmlElement(required = true)
+    protected List<Clerk> clerk;
+    
+	public String getAuthInfo() {
+		return authInfo;
+	}
+	
+	public void setAuthInfo(String authInfo) {
+		this.authInfo = authInfo;
+	}
+	
+	public List<Clerk> getClerk() {
+		if (clerk == null) {
+			clerk = new ArrayList<Clerk>();
+		}
+		return clerk;
+	}
+	
+	
+
+}
+
\ No newline at end of file

Added: webservices/juddi/trunk/uddi-ws/src/main/java/org/apache/juddi/api_v3/SaveNode.java
URL: http://svn.apache.org/viewvc/webservices/juddi/trunk/uddi-ws/src/main/java/org/apache/juddi/api_v3/SaveNode.java?rev=824896&view=auto
==============================================================================
--- webservices/juddi/trunk/uddi-ws/src/main/java/org/apache/juddi/api_v3/SaveNode.java (added)
+++ webservices/juddi/trunk/uddi-ws/src/main/java/org/apache/juddi/api_v3/SaveNode.java Tue Oct 13 19:55:23 2009
@@ -0,0 +1,68 @@
+/*
+ * Copyright 2001-2008 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.juddi.api_v3;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for save_subscriptionInfo type.  Specific to juddi.
+ * 
+ * @author <a href="mailto:kstam@apache.org">Kurt T Stam</a>
+ * 
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "save_noodeInfo", propOrder = {
+	"authInfo",
+    "node"
+})
+public class SaveNode implements Serializable{
+
+	@XmlTransient
+	private static final long serialVersionUID = -6248775964378910950L;
+	protected String authInfo;
+    @XmlElement(required = true)
+    protected List<Node> node;
+    
+	public String getAuthInfo() {
+		return authInfo;
+	}
+	
+	public void setAuthInfo(String authInfo) {
+		this.authInfo = authInfo;
+	}
+	
+	public List<Node> getNode() {
+		if (node == null) {
+			node = new ArrayList<Node>();
+		}
+		return node;
+	}
+	
+	
+
+}
+
\ No newline at end of file

Modified: webservices/juddi/trunk/uddi-ws/src/main/java/org/apache/juddi/v3_service/JUDDIApiPortType.java
URL: http://svn.apache.org/viewvc/webservices/juddi/trunk/uddi-ws/src/main/java/org/apache/juddi/v3_service/JUDDIApiPortType.java?rev=824896&r1=824895&r2=824896&view=diff
==============================================================================
--- webservices/juddi/trunk/uddi-ws/src/main/java/org/apache/juddi/v3_service/JUDDIApiPortType.java (original)
+++ webservices/juddi/trunk/uddi-ws/src/main/java/org/apache/juddi/v3_service/JUDDIApiPortType.java Tue Oct 13 19:55:23 2009
@@ -28,13 +28,17 @@
 import javax.jws.soap.SOAPBinding;
 import javax.xml.bind.annotation.XmlSeeAlso;
 
+import org.apache.juddi.api_v3.ClerkDetail;
 import org.apache.juddi.api_v3.ClientSubscriptionInfoDetail;
 import org.apache.juddi.api_v3.DeleteClientSubscriptionInfo;
 import org.apache.juddi.api_v3.DeletePublisher;
 import org.apache.juddi.api_v3.GetAllPublisherDetail;
 import org.apache.juddi.api_v3.GetPublisherDetail;
+import org.apache.juddi.api_v3.NodeDetail;
 import org.apache.juddi.api_v3.PublisherDetail;
+import org.apache.juddi.api_v3.SaveClerk;
 import org.apache.juddi.api_v3.SaveClientSubscriptionInfo;
+import org.apache.juddi.api_v3.SaveNode;
 import org.apache.juddi.api_v3.SavePublisher;
 import org.uddi.api_v3.DeleteTModel;
 import org.uddi.v3_service.DispositionReportFaultMessage;
@@ -143,5 +147,31 @@
         throws DispositionReportFaultMessage, RemoteException
     ;
     
+    /**
+     * @param body
+     * @throws DispositionReportFaultMessage, RemoteException
+     */
+    @WebMethod(operationName = "save_Clerk", action = "save_Clerk")
+    @SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
+    public ClerkDetail saveClerk(
+		@WebParam(name = "save_Clerk", targetNamespace = "urn:juddi-apache-org:api_v3", partName = "body")
+        SaveClerk body)
+        throws DispositionReportFaultMessage, RemoteException
+    ;
+    
+    /**
+     * @param body
+     * @throws DispositionReportFaultMessage, RemoteException
+     */
+    @WebMethod(operationName = "save_Node", action = "save_Node")
+    @SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
+    public NodeDetail saveNode(
+		@WebParam(name = "save_Node", targetNamespace = "urn:juddi-apache-org:api_v3", partName = "body")
+        SaveNode body)
+        throws DispositionReportFaultMessage, RemoteException
+    ;
+    
+    
+    
 }
 
\ No newline at end of file



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