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/12/02 01:51:48 UTC

svn commit: r1546875 [3/10] - in /juddi/branches/juddi-3.3.x: ./ juddi-client/src/main/java/org/apache/juddi/v3/client/config/ juddi-console/ juddi-core-openjpa/ juddi-core/src/main/java/org/apache/juddi/ juddi-core/src/main/java/org/apache/juddi/api/i...

Modified: juddi/branches/juddi-3.3.x/juddi-core-openjpa/pom.xml
URL: http://svn.apache.org/viewvc/juddi/branches/juddi-3.3.x/juddi-core-openjpa/pom.xml?rev=1546875&r1=1546874&r2=1546875&view=diff
==============================================================================
--- juddi/branches/juddi-3.3.x/juddi-core-openjpa/pom.xml (original)
+++ juddi/branches/juddi-3.3.x/juddi-core-openjpa/pom.xml Mon Dec  2 00:51:47 2013
@@ -35,7 +35,7 @@
 				<version>1.4.0</version>
 				<configuration>
 				<instructions>
-				<Export-Package>org.apache.juddi, org.apache.juddi.api, org.apache.juddi.api.impl, org.apache.juddi.api.impl.rest,org.apache.juddi.api.util, org.apache.juddi.config, org.apache.juddi.config, org.apache.juddi.cryptor, org.apache.juddi.keygen, org.apache.juddi.mapping, org.apache.juddi.model, org.apache.juddi.query, org.apache.juddi.query.util, org.apache.juddi.rmi, org.apache.juddi.subscription, org.apache.juddi.subscription.notify, org.apache.juddi.validation, org.apache.juddi.v3.auth, org.apache.juddi.v3.error</Export-Package>
+				<Export-Package>org.apache.juddi, org.apache.juddi.api, org.apache.juddi.api.impl, org.apache.juddi.api.impl.rest,org.apache.juddi.api.util, org.apache.juddi.config, org.apache.juddi.config, org.apache.juddi.cryptor, org.apache.juddi.keygen, org.apache.juddi.mapping, org.apache.juddi.model, org.apache.juddi.query, org.apache.juddi.query.util, org.apache.juddi.rmi, org.apache.juddi.subscription,  org.apache.juddi.replication, org.apache.juddi.subscription.notify, org.apache.juddi.validation, org.apache.juddi.v3.auth, org.apache.juddi.v3.error</Export-Package>
 				<Include-Resource>juddi_install_data=target/classes/juddi_install_data, target/classes/messages.properties</Include-Resource>
 				</instructions>
 				</configuration>

Modified: juddi/branches/juddi-3.3.x/juddi-core/src/main/java/org/apache/juddi/Registry.java
URL: http://svn.apache.org/viewvc/juddi/branches/juddi-3.3.x/juddi-core/src/main/java/org/apache/juddi/Registry.java?rev=1546875&r1=1546874&r2=1546875&view=diff
==============================================================================
--- juddi/branches/juddi-3.3.x/juddi-core/src/main/java/org/apache/juddi/Registry.java (original)
+++ juddi/branches/juddi-3.3.x/juddi-core/src/main/java/org/apache/juddi/Registry.java Mon Dec  2 00:51:47 2013
@@ -23,6 +23,7 @@ import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.juddi.config.AppConfig;
 import org.apache.juddi.config.Property;
+import org.apache.juddi.replication.ReplicationNotifier;
 import org.apache.juddi.rmi.JNDIRegistration;
 import org.apache.juddi.rmi.RMIRegistration;
 import org.apache.juddi.subscription.SubscriptionNotifier;
@@ -32,6 +33,7 @@ public class Registry {
 	private static Registry registry = null;
 	private static Log log = LogFactory.getLog(Registry.class);
 	private static SubscriptionNotifier subscriptionNotifier = null;
+        private static ReplicationNotifier replicationNotifier = null;
 	/**
 	 * Singleton.
 	 */
@@ -50,6 +52,8 @@ public class Registry {
 				subscriptionNotifier.cancel();
 				subscriptionNotifier=null;
 			}
+                        replicationNotifier.cancel();
+                        replicationNotifier = null;
 			if (AppConfig.getConfiguration().getBoolean(Property.JUDDI_JNDI_REGISTRATION, false)) {
 				try {
 					JNDIRegistration.getInstance().unregister();
@@ -69,7 +73,7 @@ public class Registry {
 		if (registry==null) {
 			log.info("Starting jUDDI registry...");
 			registry = new Registry();
-			
+			replicationNotifier = new ReplicationNotifier();
 			if (AppConfig.getConfiguration().getBoolean(Property.JUDDI_SUBSCRIPTION_NOTIFICATION, true)) {
 				subscriptionNotifier = new SubscriptionNotifier();
 			}

Modified: juddi/branches/juddi-3.3.x/juddi-core/src/main/java/org/apache/juddi/api/impl/JUDDIApiImpl.java
URL: http://svn.apache.org/viewvc/juddi/branches/juddi-3.3.x/juddi-core/src/main/java/org/apache/juddi/api/impl/JUDDIApiImpl.java?rev=1546875&r1=1546874&r2=1546875&view=diff
==============================================================================
--- juddi/branches/juddi-3.3.x/juddi-core/src/main/java/org/apache/juddi/api/impl/JUDDIApiImpl.java (original)
+++ juddi/branches/juddi-3.3.x/juddi-core/src/main/java/org/apache/juddi/api/impl/JUDDIApiImpl.java Mon Dec  2 00:51:47 2013
@@ -14,7 +14,6 @@
  * limitations under the License.
  *
  */
-
 package org.apache.juddi.api.impl;
 
 import java.io.StringWriter;
@@ -33,23 +32,26 @@ import javax.xml.bind.Marshaller;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.juddi.ClassUtil;
+import org.apache.juddi.api_v3.AdminSaveBusinessWrapper;
+import org.apache.juddi.api_v3.AdminSaveTModelWrapper;
 import org.apache.juddi.api_v3.Clerk;
 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.GetAllClientSubscriptionInfoDetail;
 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.Node;
 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.SaveClerkInfo;
 import org.apache.juddi.api_v3.SaveClientSubscriptionInfo;
-import org.apache.juddi.api_v3.SaveNode;
+import org.apache.juddi.api_v3.SaveNodeInfo;
 import org.apache.juddi.api_v3.SavePublisher;
+import org.apache.juddi.api_v3.SubscriptionWrapper;
 import org.apache.juddi.api_v3.SyncSubscription;
 import org.apache.juddi.api_v3.SyncSubscriptionDetail;
+import org.apache.juddi.api_v3.ValidValues;
 import org.apache.juddi.config.PersistenceManager;
 import org.apache.juddi.mapping.MappingApiToModel;
 import org.apache.juddi.mapping.MappingModelToApi;
@@ -59,6 +61,7 @@ import org.apache.juddi.model.UddiEntity
 import org.apache.juddi.subscription.NotificationList;
 import org.apache.juddi.v3.client.transport.Transport;
 import org.apache.juddi.v3.error.ErrorMessage;
+import org.apache.juddi.v3.error.FatalErrorException;
 import org.apache.juddi.v3.error.InvalidKeyPassedException;
 import org.apache.juddi.v3_service.JUDDIApiPortType;
 import org.apache.juddi.validation.ValidateClerk;
@@ -67,526 +70,622 @@ import org.apache.juddi.validation.Valid
 import org.apache.juddi.validation.ValidatePublish;
 import org.apache.juddi.validation.ValidatePublisher;
 import org.uddi.api_v3.DeleteTModel;
+import org.uddi.api_v3.DispositionReport;
+import org.uddi.repl_v3.ReplicationConfiguration;
 import org.uddi.sub_v3.GetSubscriptionResults;
+import org.uddi.sub_v3.Subscription;
 import org.uddi.sub_v3.SubscriptionResultsList;
 import org.uddi.v3_service.DispositionReportFaultMessage;
 import org.uddi.v3_service.UDDISubscriptionPortType;
 
 /**
+ * Implements the jUDDI API service
+ * 
+ * As of 3.3, this interface and implementation has significantly changed and is not backwards compatible.
  * @author <a href="mailto:jfaath@apache.org">Jeff Faath</a>
  * @author <a href="mailto:kstam@apache.org">Kurt T Stam</a>
+ * @author <a href="mailto:alexoree@apache.org">Alex O'Ree</a>
  */
-@WebService(serviceName="JUDDIApiService", 
-			endpointInterface="org.apache.juddi.v3_service.JUDDIApiPortType",
-			targetNamespace = "urn:juddi-apache-org:v3_service")
+@WebService(serviceName = "JUDDIApiService",
+        endpointInterface = "org.apache.juddi.v3_service.JUDDIApiPortType",
+        targetNamespace = "urn:juddi-apache-org:v3_service")
 public class JUDDIApiImpl extends AuthenticatedService implements JUDDIApiPortType {
 
-	private Log log = LogFactory.getLog(this.getClass());
-	
-	/**
-	 * Saves publisher(s) to the persistence layer.  This method is specific to jUDDI.
-	 */
-	public PublisherDetail savePublisher(SavePublisher body)
-			throws DispositionReportFaultMessage {
-
-		EntityManager em = PersistenceManager.getEntityManager();
-		EntityTransaction tx = em.getTransaction();
-		try {
-			tx.begin();
-	
-			UddiEntityPublisher publisher = this.getEntityPublisher(em, body.getAuthInfo());
-			
-			new ValidatePublish(publisher).validateSavePublisher(em, body);
-			
-			PublisherDetail result = new PublisherDetail();
-	
-			List<org.apache.juddi.api_v3.Publisher> apiPublisherList = body.getPublisher();
-			for (org.apache.juddi.api_v3.Publisher apiPublisher : apiPublisherList) {
-				
-				org.apache.juddi.model.Publisher modelPublisher = new org.apache.juddi.model.Publisher();
-				
-				MappingApiToModel.mapPublisher(apiPublisher, modelPublisher);
-				
-				Object existingUddiEntity = em.find(modelPublisher.getClass(), modelPublisher.getAuthorizedName());
-				if (existingUddiEntity != null)
-					em.remove(existingUddiEntity);
-				
-				em.persist(modelPublisher);
-				
-				result.getPublisher().add(apiPublisher);
-			}
-	
-			tx.commit();
-			return result;
-		} finally {
-			if (tx.isActive()) {
-				tx.rollback();
-			}
-			em.close();
-		}
-	}
-
-	/**
-	 * Deletes publisher(s) from the persistence layer.  This method is specific to jUDDI.
-	 */
-	public void deletePublisher(DeletePublisher body)
-			throws DispositionReportFaultMessage {
-
-		EntityManager em = PersistenceManager.getEntityManager();
-		EntityTransaction tx = em.getTransaction();
-		try {
-			tx.begin();
-	
-			UddiEntityPublisher publisher = this.getEntityPublisher(em, body.getAuthInfo());
-			
-			new ValidatePublish(publisher).validateDeletePublisher(em, body);
-	
-			List<String> entityKeyList = body.getPublisherId();
-			for (String entityKey : entityKeyList) {
-				Object obj = em.find(org.apache.juddi.model.Publisher.class, entityKey);
-				em.remove(obj);
-			}
-	
-			tx.commit();
-		} finally {
-			if (tx.isActive()) {
-				tx.rollback();
-			}
-			em.close();
-		}
-	}
-	
-	/**
-	 * Retrieves publisher(s) from the persistence layer.  This method is specific to jUDDI.
-	 */
-	public PublisherDetail getPublisherDetail(GetPublisherDetail body)
-			throws DispositionReportFaultMessage {
-
-		new ValidatePublisher(null).validateGetPublisherDetail(body);
-
-		EntityManager em = PersistenceManager.getEntityManager();
-		EntityTransaction tx = em.getTransaction();
-		try {
-			tx.begin();
-	
-			this.getEntityPublisher(em, body.getAuthInfo());
-			
-			PublisherDetail result = new PublisherDetail();
-			
-			List<String> publisherIdList = body.getPublisherId();
-			for (String publisherId : publisherIdList) {
-				org.apache.juddi.model.Publisher modelPublisher = null;
-				try {
-					modelPublisher = em.find(org.apache.juddi.model.Publisher.class, publisherId);
-				} catch (ClassCastException e) {}
-					if (modelPublisher == null) {
-					throw new InvalidKeyPassedException(new ErrorMessage("errors.invalidkey.PublisherNotFound", publisherId));
-				}
-				
-				org.apache.juddi.api_v3.Publisher apiPublisher = new org.apache.juddi.api_v3.Publisher();
-				
-				MappingModelToApi.mapPublisher(modelPublisher, apiPublisher);
-				
-				result.getPublisher().add(apiPublisher);
-			}
-	
-			tx.commit();
-			return result;
-		} finally {
-			if (tx.isActive()) {
-				tx.rollback();
-			}
-			em.close();
-		}
-
-	}
-
-	@SuppressWarnings("unchecked")
-	public PublisherDetail getAllPublisherDetail(GetAllPublisherDetail body)
-			throws DispositionReportFaultMessage, RemoteException {
-		
-		new ValidatePublisher(null).validateGetAllPublisherDetail(body);
-
-		EntityManager em = PersistenceManager.getEntityManager();
-		EntityTransaction tx = em.getTransaction();
-		try {
-			tx.begin();
-	
-			this.getEntityPublisher(em, body.getAuthInfo());
-			
-			PublisherDetail result = new PublisherDetail();
-			
-			Query query = em.createQuery("SELECT p from Publisher as p");
-			List<Publisher> modelPublisherList = query.getResultList();
-			
-			for (Publisher modelPublisher : modelPublisherList) {
-				
-				org.apache.juddi.api_v3.Publisher apiPublisher = new org.apache.juddi.api_v3.Publisher();
-				
-				MappingModelToApi.mapPublisher(modelPublisher, apiPublisher);
-				
-				result.getPublisher().add(apiPublisher);
-			}
-	
-			tx.commit();
-			return result;
-		} finally {
-			if (tx.isActive()) {
-				tx.rollback();
-			}
-			em.close();
-		}
-	}
-
-	public void adminDeleteTModel(DeleteTModel body)
-			throws DispositionReportFaultMessage {
-
-		EntityManager em = PersistenceManager.getEntityManager();
-		EntityTransaction tx = em.getTransaction();
-		try {
-			tx.begin();
-		
-			UddiEntityPublisher publisher = this.getEntityPublisher(em, body.getAuthInfo());
-			
-			new ValidatePublish(publisher).validateAdminDeleteTModel(em, body);
-			
-			List<String> entityKeyList = body.getTModelKey();
-			for (String entityKey : entityKeyList) {
-				Object obj = em.find(org.apache.juddi.model.Tmodel.class, entityKey);
-				em.remove(obj);
-			}
-		
-			tx.commit();
-		} finally {
-			if (tx.isActive()) {
-				tx.rollback();
-			}
-			em.close();
-		}
-}
+        private Log log = LogFactory.getLog(this.getClass());
+
+        /**
+         * Saves publisher(s) to the persistence layer. This method is specific
+         * to jUDDI.
+         */
+        @Override
+        public PublisherDetail savePublisher(SavePublisher body)
+                throws DispositionReportFaultMessage {
+
+                EntityManager em = PersistenceManager.getEntityManager();
+                EntityTransaction tx = em.getTransaction();
+                try {
+                        tx.begin();
+
+                        UddiEntityPublisher publisher = this.getEntityPublisher(em, body.getAuthInfo());
+
+                        new ValidatePublish(publisher).validateSavePublisher(em, body);
+
+                        PublisherDetail result = new PublisherDetail();
+
+                        List<org.apache.juddi.api_v3.Publisher> apiPublisherList = body.getPublisher();
+                        for (org.apache.juddi.api_v3.Publisher apiPublisher : apiPublisherList) {
+
+                                org.apache.juddi.model.Publisher modelPublisher = new org.apache.juddi.model.Publisher();
+
+                                MappingApiToModel.mapPublisher(apiPublisher, modelPublisher);
+
+                                Object existingUddiEntity = em.find(modelPublisher.getClass(), modelPublisher.getAuthorizedName());
+                                if (existingUddiEntity != null) {
+                                        em.remove(existingUddiEntity);
+                                }
+
+                                em.persist(modelPublisher);
+
+                                result.getPublisher().add(apiPublisher);
+                        }
+
+                        tx.commit();
+                        return result;
+                } finally {
+                        if (tx.isActive()) {
+                                tx.rollback();
+                        }
+                        em.close();
+                }
+        }
+
+        /**
+         * Deletes publisher(s) from the persistence layer. This method is
+         * specific to jUDDI.
+         */
+        @Override
+        public void deletePublisher(DeletePublisher body)
+                throws DispositionReportFaultMessage {
+
+                EntityManager em = PersistenceManager.getEntityManager();
+                EntityTransaction tx = em.getTransaction();
+                try {
+                        tx.begin();
+
+                        UddiEntityPublisher publisher = this.getEntityPublisher(em, body.getAuthInfo());
+
+                        new ValidatePublish(publisher).validateDeletePublisher(em, body);
+
+                        List<String> entityKeyList = body.getPublisherId();
+                        for (String entityKey : entityKeyList) {
+                                Object obj = em.find(org.apache.juddi.model.Publisher.class, entityKey);
+                                em.remove(obj);
+                        }
+
+                        tx.commit();
+                } finally {
+                        if (tx.isActive()) {
+                                tx.rollback();
+                        }
+                        em.close();
+                }
+        }
+
+        /**
+         * Retrieves publisher(s) from the persistence layer. This method is
+         * specific to jUDDI.
+         */
+        @Override
+        public PublisherDetail getPublisherDetail(GetPublisherDetail body)
+                throws DispositionReportFaultMessage {
+
+                new ValidatePublisher(null).validateGetPublisherDetail(body);
+
+                EntityManager em = PersistenceManager.getEntityManager();
+                EntityTransaction tx = em.getTransaction();
+                try {
+                        tx.begin();
+
+                        this.getEntityPublisher(em, body.getAuthInfo());
+
+                        PublisherDetail result = new PublisherDetail();
+
+                        List<String> publisherIdList = body.getPublisherId();
+                        for (String publisherId : publisherIdList) {
+                                org.apache.juddi.model.Publisher modelPublisher = null;
+                                try {
+                                        modelPublisher = em.find(org.apache.juddi.model.Publisher.class, publisherId);
+                                } catch (ClassCastException e) {
+                                }
+                                if (modelPublisher == null) {
+                                        throw new InvalidKeyPassedException(new ErrorMessage("errors.invalidkey.PublisherNotFound", publisherId));
+                                }
+
+                                org.apache.juddi.api_v3.Publisher apiPublisher = new org.apache.juddi.api_v3.Publisher();
+
+                                MappingModelToApi.mapPublisher(modelPublisher, apiPublisher);
+
+                                result.getPublisher().add(apiPublisher);
+                        }
+
+                        tx.commit();
+                        return result;
+                } finally {
+                        if (tx.isActive()) {
+                                tx.rollback();
+                        }
+                        em.close();
+                }
+
+        }
+
+        @SuppressWarnings("unchecked")
+        @Override
+        public PublisherDetail getAllPublisherDetail(GetAllPublisherDetail body)
+                throws DispositionReportFaultMessage {
+
+                new ValidatePublisher(null).validateGetAllPublisherDetail(body);
+
+                EntityManager em = PersistenceManager.getEntityManager();
+                EntityTransaction tx = em.getTransaction();
+                try {
+                        tx.begin();
+
+                        this.getEntityPublisher(em, body.getAuthInfo());
+
+                        PublisherDetail result = new PublisherDetail();
+
+                        Query query = em.createQuery("SELECT p from Publisher as p");
+                        List<Publisher> modelPublisherList = query.getResultList();
+
+                        for (Publisher modelPublisher : modelPublisherList) {
+
+                                org.apache.juddi.api_v3.Publisher apiPublisher = new org.apache.juddi.api_v3.Publisher();
+
+                                MappingModelToApi.mapPublisher(modelPublisher, apiPublisher);
+
+                                result.getPublisher().add(apiPublisher);
+                        }
+
+                        tx.commit();
+                        return result;
+                } finally {
+                        if (tx.isActive()) {
+                                tx.rollback();
+                        }
+                        em.close();
+                }
+        }
+
+        @Override
+        public void adminDeleteTModel(DeleteTModel body) throws DispositionReportFaultMessage {
+        
+
+                EntityManager em = PersistenceManager.getEntityManager();
+                EntityTransaction tx = em.getTransaction();
+                try {
+                        tx.begin();
+
+                        UddiEntityPublisher publisher = this.getEntityPublisher(em, body.getAuthInfo());
+
+                        new ValidatePublish(publisher).validateAdminDeleteTModel(em, body);
+
+                        List<String> entityKeyList = body.getTModelKey();
+                        for (String entityKey : entityKeyList) {
+                                Object obj = em.find(org.apache.juddi.model.Tmodel.class, entityKey);
+                                em.remove(obj);
+                        }
+
+                        tx.commit();
+                } finally {
+                        if (tx.isActive()) {
+                                tx.rollback();
+                        }
+                        em.close();
+                }
+        }
+
+        @Override
+        public void deleteClientSubscriptionInfo(DeleteClientSubscriptionInfo body)
+                throws DispositionReportFaultMessage {
+
+                EntityManager em = PersistenceManager.getEntityManager();
+                EntityTransaction tx = em.getTransaction();
+                try {
+                        tx.begin();
+
+                        UddiEntityPublisher publisher = this.getEntityPublisher(em, body.getAuthInfo());
+
+                        new ValidateClientSubscriptionInfo(publisher).validateDeleteClientSubscriptionInfo(em, body);
+
+                        List<String> entityKeyList = body.getSubscriptionKey();
+                        for (String entityKey : entityKeyList) {
+                                Object obj = em.find(org.apache.juddi.model.ClientSubscriptionInfo.class, entityKey);
+                                em.remove(obj);
+                        }
+
+                        tx.commit();
+                } finally {
+                        if (tx.isActive()) {
+                                tx.rollback();
+                        }
+                        em.close();
+                }
+
+        }
+
+        @Override
+        public ClientSubscriptionInfoDetail saveClientSubscriptionInfo(SaveClientSubscriptionInfo body)
+                throws DispositionReportFaultMessage {
+                EntityManager em = PersistenceManager.getEntityManager();
+                EntityTransaction tx = em.getTransaction();
+                try {
+                        tx.begin();
+
+                        UddiEntityPublisher publisher = this.getEntityPublisher(em, body.getAuthInfo());
+
+                        new ValidateClientSubscriptionInfo(publisher).validateSaveClientSubscriptionInfo(em, body);
+
+                        ClientSubscriptionInfoDetail result = new ClientSubscriptionInfoDetail();
+
+                        List<org.apache.juddi.api_v3.ClientSubscriptionInfo> apiClientSubscriptionInfoList = body.getClientSubscriptionInfo();
+                        for (org.apache.juddi.api_v3.ClientSubscriptionInfo apiClientSubscriptionInfo : apiClientSubscriptionInfoList) {
+
+                                org.apache.juddi.model.ClientSubscriptionInfo modelClientSubscriptionInfo = new org.apache.juddi.model.ClientSubscriptionInfo();
+
+                                MappingApiToModel.mapClientSubscriptionInfo(apiClientSubscriptionInfo, modelClientSubscriptionInfo);
+
+                                Object existingUddiEntity = em.find(modelClientSubscriptionInfo.getClass(), modelClientSubscriptionInfo.getSubscriptionKey());
+                                if (existingUddiEntity != null) {
+                                        em.remove(existingUddiEntity);
+                                }
+
+                                em.persist(modelClientSubscriptionInfo);
+
+                                result.getClientSubscriptionInfo().add(apiClientSubscriptionInfo);
+                        }
+
+                        tx.commit();
+                        return result;
+                } finally {
+                        if (tx.isActive()) {
+                                tx.rollback();
+                        }
+                        em.close();
+                }
+        }
+
+        @SuppressWarnings("unchecked")
+        @Override
+        public List<SubscriptionWrapper> getAllClientSubscriptionInfo(String authInfo) throws DispositionReportFaultMessage {
+                throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+        }
+        private ClientSubscriptionInfoDetail getAllClientSubscriptionInfoDetail(String authinfo)
+                throws DispositionReportFaultMessage {
+
+                new ValidateClientSubscriptionInfo(null).validateGetAllClientSubscriptionDetail(authinfo);
+
+                EntityManager em = PersistenceManager.getEntityManager();
+                EntityTransaction tx = em.getTransaction();
+                try {
+                        tx.begin();
+
+                        this.getEntityPublisher(em,authinfo);
+
+                        ClientSubscriptionInfoDetail result = new ClientSubscriptionInfoDetail();
+
+                        Query query = em.createQuery("SELECT cs from ClientSubscriptionInfo as cs");
+                        List<org.apache.juddi.model.ClientSubscriptionInfo> modelClientSubscriptionInfoList = query.getResultList();
+
+                        for (ClientSubscriptionInfo modelClientSubscriptionInfo : modelClientSubscriptionInfoList) {
+
+                                org.apache.juddi.api_v3.ClientSubscriptionInfo apiClientSubscriptionInfo = new org.apache.juddi.api_v3.ClientSubscriptionInfo();
+
+                                MappingModelToApi.mapClientSubscriptionInfo(modelClientSubscriptionInfo, apiClientSubscriptionInfo);
+
+                                result.getClientSubscriptionInfo().add(apiClientSubscriptionInfo);
+                        }
+
+                        tx.commit();
+                        return result;
+                } finally {
+                        if (tx.isActive()) {
+                                tx.rollback();
+                        }
+                        em.close();
+                }
+
+        }
+
+        /**
+         * Retrieves clientSubscriptionKey(s) from the persistence layer. This
+         * method is specific to jUDDI.
+         * 
+         * This is in a test case, but not exposed as a web service
+         */
+        public ClientSubscriptionInfoDetail getClientSubscriptionInfoDetail(String authinfo,  List<String>  key)
+                throws DispositionReportFaultMessage {
+
+               new ValidateClientSubscriptionInfo(null).validateGetClientSubscriptionInfoDetail( authinfo,  key);
+
+                EntityManager em = PersistenceManager.getEntityManager();
+                EntityTransaction tx = em.getTransaction();
+                try {
+                        tx.begin();
+
+                        this.getEntityPublisher(em, authinfo);
+
+                        ClientSubscriptionInfoDetail result = new ClientSubscriptionInfoDetail();
+
+                        List<String> subscriptionKeyList = key;
+                        for (String subscriptionKey : subscriptionKeyList) {
+
+                                org.apache.juddi.model.ClientSubscriptionInfo modelClientSubscriptionInfo = null;
+                                try {
+                                        modelClientSubscriptionInfo = em.find(org.apache.juddi.model.ClientSubscriptionInfo.class, subscriptionKey);
+                                } catch (ClassCastException e) {
+                                }
+                                if (modelClientSubscriptionInfo == null) {
+                                        throw new InvalidKeyPassedException(new ErrorMessage("errors.invalidkey.SubscripKeyNotFound", subscriptionKey));
+                                }
+
+                                org.apache.juddi.api_v3.ClientSubscriptionInfo apiClientSubscriptionInfo = new org.apache.juddi.api_v3.ClientSubscriptionInfo();
+
+                                MappingModelToApi.mapClientSubscriptionInfo(modelClientSubscriptionInfo, apiClientSubscriptionInfo);
+
+                                result.getClientSubscriptionInfo().add(apiClientSubscriptionInfo);
+                        }
+
+                        tx.commit();
+                        return result;
+                } finally {
+                        if (tx.isActive()) {
+                                tx.rollback();
+                        }
+                        em.close();
+                }
+
+        }
+
+        /**
+         * Saves clerk(s) to the persistence layer. This method is specific to
+         * jUDDI.
+         */
+        @Override
+        public ClerkDetail saveClerk(SaveClerkInfo 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.
+         */
+        @Override
+        public NodeDetail saveNode(SaveNodeInfo 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();
+                }
+        }
+
+        /**
+         * Instructs the registry to perform a synchronous subscription
+         * response.
+         */
+        @SuppressWarnings("unchecked")
+        @Override
+        public SyncSubscriptionDetail invokeSyncSubscription(
+               SyncSubscription body) throws DispositionReportFaultMessage {
+
+                //validate
+
+                SyncSubscriptionDetail syncSubscriptionDetail = new SyncSubscriptionDetail();
+
+                Map<String, org.apache.juddi.api_v3.ClientSubscriptionInfo> clientSubscriptionInfoMap = new HashMap<String, org.apache.juddi.api_v3.ClientSubscriptionInfo>();
+                //find the clerks to go with these subscriptions
+                EntityManager em = PersistenceManager.getEntityManager();
+                EntityTransaction tx = em.getTransaction();
+                try {
+                        tx.begin();
+
+                        this.getEntityPublisher(em, body.getAuthInfo());
+                        for (GetSubscriptionResults getSubscriptionResult : body.getList()) {
+                                String subscriptionKey = getSubscriptionResult.getSubscriptionKey();
+                                org.apache.juddi.model.ClientSubscriptionInfo modelClientSubscriptionInfo = null;
+                                try {
+                                        modelClientSubscriptionInfo = em.find(org.apache.juddi.model.ClientSubscriptionInfo.class, subscriptionKey);
+                                } catch (ClassCastException e) {
+                                }
+                                if (modelClientSubscriptionInfo == null) {
+                                        throw new InvalidKeyPassedException(new ErrorMessage("errors.invalidkey.SubscripKeyNotFound", subscriptionKey));
+                                }
+                                org.apache.juddi.api_v3.ClientSubscriptionInfo apiClientSubscriptionInfo = new org.apache.juddi.api_v3.ClientSubscriptionInfo();
+                                MappingModelToApi.mapClientSubscriptionInfo(modelClientSubscriptionInfo, apiClientSubscriptionInfo);
+                                clientSubscriptionInfoMap.put(apiClientSubscriptionInfo.getSubscriptionKey(), apiClientSubscriptionInfo);
+                        }
+
+                        tx.commit();
+                } finally {
+                        if (tx.isActive()) {
+                                tx.rollback();
+                        }
+                        em.close();
+                }
+
+                for (GetSubscriptionResults getSubscriptionResult : body.getList()) {
+                        try {
+                                String subscriptionKey = getSubscriptionResult.getSubscriptionKey();
+                                Clerk fromClerk = clientSubscriptionInfoMap.get(subscriptionKey).getFromClerk();
+                                Clerk toClerk = clientSubscriptionInfoMap.get(subscriptionKey).getToClerk();
+                                String clazz = fromClerk.getNode().getProxyTransport();
+                                Class<?> transportClass = ClassUtil.forName(clazz, this.getClass());
+                                Transport transport = (Transport) transportClass.getConstructor(String.class).newInstance(fromClerk.getNode().getName());
+                                UDDISubscriptionPortType subscriptionService = transport.getUDDISubscriptionService(fromClerk.getNode().getSubscriptionUrl());
+                                SubscriptionResultsList listr = subscriptionService.getSubscriptionResults(getSubscriptionResult);
+
+                                JAXBContext context = JAXBContext.newInstance(listr.getClass());
+                                Marshaller marshaller = context.createMarshaller();
+                                StringWriter sw = new StringWriter();
+                                marshaller.marshal(listr, sw);
+
+                                log.info("Notification received by UDDISubscriptionListenerService : " + sw.toString());
+
+                                NotificationList<String> nl = NotificationList.getInstance();
+                                nl.getNotifications().add(sw.toString());
+
+                                //update the registry with the notification list.
+                                XRegisterHelper.handle(fromClerk, toClerk, listr);
+
+                                syncSubscriptionDetail.getList().add(listr);
+                        } catch (Exception ce) {
+                                log.error(ce.getMessage(), ce);
+                                if (ce instanceof DispositionReportFaultMessage) {
+                                        throw (DispositionReportFaultMessage) ce;
+                                }
+                                if (ce instanceof RemoteException) {
+                                        DispositionReportFaultMessage x = new FatalErrorException(new ErrorMessage("errors.subscriptionnotifier.client",ce.getMessage()));
+                                        throw x;
+                                }
+                        }
+                }
+                //for now sending a clean object back
+
+                return syncSubscriptionDetail;
+        }
+
+       
+        
+
+        
+
+        @Override
+        public List<Node> getAllNodes(String authInfo) throws DispositionReportFaultMessage {
+                throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+        }
+
+        @Override
+        public List<Clerk> getAllClerks(String authInfo) throws DispositionReportFaultMessage {
+                throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+        }
+
+        @Override
+        public DispositionReport deleteNode(String authInfo, String nodeID) throws DispositionReportFaultMessage {
+                throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+        }
+
+        @Override
+        public DispositionReport deleteClerk(String authInfo, String clerkID) throws DispositionReportFaultMessage {
+                throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+        }
+
+        @Override
+        public DispositionReport adminSaveBusiness(String authInfo, List<AdminSaveBusinessWrapper> values) throws DispositionReportFaultMessage {
+                throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+        }
+
+        @Override
+        public DispositionReport adminSaveTModel(String authInfo, List<AdminSaveTModelWrapper> values) throws DispositionReportFaultMessage {
+                throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+        }
+
+        @Override
+        public ReplicationConfiguration getReplicationNodes(String authInfo) throws DispositionReportFaultMessage {
+                throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+        }
+
+        @Override
+        public DispositionReport setReplicationNodes(String authInfo, ReplicationConfiguration replicationConfiguration) throws DispositionReportFaultMessage {
+                throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+        }
+     
+
+        @Override
+        public DispositionReport setAllValidValues(String authInfo, List<ValidValues> values) throws DispositionReportFaultMessage {
+                throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+        }
+
+        @Override
+        public void adminDeleteSubscription(String authInfo, List<String> subscriptionKey) throws DispositionReportFaultMessage {
+                throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+        }
+
+        @Override
+        public void adminSaveSubscription(String authInfo, String publisherOrUsername, List<Subscription> subscriptions) throws DispositionReportFaultMessage {
+                throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+        }
+
+        
 
-	public void deleteClientSubscriptionInfo(DeleteClientSubscriptionInfo body)
-			throws DispositionReportFaultMessage, RemoteException {
-		
-		EntityManager em = PersistenceManager.getEntityManager();
-		EntityTransaction tx = em.getTransaction();
-		try {
-			tx.begin();
-	
-			UddiEntityPublisher publisher = this.getEntityPublisher(em, body.getAuthInfo());
-			
-			new ValidateClientSubscriptionInfo(publisher).validateDeleteClientSubscriptionInfo(em, body);
-	
-			List<String> entityKeyList = body.getSubscriptionKey();
-			for (String entityKey : entityKeyList) {
-				Object obj = em.find(org.apache.juddi.model.ClientSubscriptionInfo.class, entityKey);
-				em.remove(obj);
-			}
-	
-			tx.commit();
-		} finally {
-			if (tx.isActive()) {
-				tx.rollback();
-			}
-			em.close();
-		}
-		
-	}
-
-	public ClientSubscriptionInfoDetail saveClientSubscriptionInfo(SaveClientSubscriptionInfo body)
-			throws DispositionReportFaultMessage, RemoteException {
-		EntityManager em = PersistenceManager.getEntityManager();
-		EntityTransaction tx = em.getTransaction();
-		try {
-			tx.begin();
-	
-			UddiEntityPublisher publisher = this.getEntityPublisher(em, body.getAuthInfo());
-			
-			new ValidateClientSubscriptionInfo(publisher).validateSaveClientSubscriptionInfo(em, body);
-			
-			ClientSubscriptionInfoDetail result = new ClientSubscriptionInfoDetail();
-	
-			List<org.apache.juddi.api_v3.ClientSubscriptionInfo> apiClientSubscriptionInfoList = body.getClientSubscriptionInfo();
-			for (org.apache.juddi.api_v3.ClientSubscriptionInfo apiClientSubscriptionInfo : apiClientSubscriptionInfoList) {
-				
-				org.apache.juddi.model.ClientSubscriptionInfo modelClientSubscriptionInfo = new org.apache.juddi.model.ClientSubscriptionInfo();
-				
-				MappingApiToModel.mapClientSubscriptionInfo(apiClientSubscriptionInfo, modelClientSubscriptionInfo);
-				
-				Object existingUddiEntity = em.find(modelClientSubscriptionInfo.getClass(), modelClientSubscriptionInfo.getSubscriptionKey());
-				if (existingUddiEntity != null)
-					em.remove(existingUddiEntity);
-				
-				em.persist(modelClientSubscriptionInfo);
-				
-				result.getClientSubscriptionInfo().add(apiClientSubscriptionInfo);
-			}
-	
-			tx.commit();
-			return result;
-		} finally {
-			if (tx.isActive()) {
-				tx.rollback();
-			}
-			em.close();
-		}
-	}
-	
-	@SuppressWarnings("unchecked")
-	public ClientSubscriptionInfoDetail getAllClientSubscriptionInfoDetail(GetAllClientSubscriptionInfoDetail body) 
-		throws DispositionReportFaultMessage {
-		
-		new ValidateClientSubscriptionInfo(null).validateGetAllClientSubscriptionDetail(body);
-
-		EntityManager em = PersistenceManager.getEntityManager();
-		EntityTransaction tx = em.getTransaction();
-		try {
-			tx.begin();
-	
-			this.getEntityPublisher(em, body.getAuthInfo());
-			
-			ClientSubscriptionInfoDetail result = new ClientSubscriptionInfoDetail();
-			
-			Query query = em.createQuery("SELECT cs from ClientSubscriptionInfo as cs");
-			List<org.apache.juddi.model.ClientSubscriptionInfo> modelClientSubscriptionInfoList = query.getResultList();
-			
-			for (ClientSubscriptionInfo modelClientSubscriptionInfo : modelClientSubscriptionInfoList) {
-				
-				org.apache.juddi.api_v3.ClientSubscriptionInfo apiClientSubscriptionInfo = new org.apache.juddi.api_v3.ClientSubscriptionInfo();
-				
-				MappingModelToApi.mapClientSubscriptionInfo(modelClientSubscriptionInfo, apiClientSubscriptionInfo);
-				
-				result.getClientSubscriptionInfo().add(apiClientSubscriptionInfo);
-			}
-	
-			tx.commit();
-			return result;
-		} finally {
-			if (tx.isActive()) {
-				tx.rollback();
-			}
-			em.close();
-		}
-		
-	}
-	
-	/**
-	 * Retrieves clientSubscriptionKey(s) from the persistence layer.  This method is specific to jUDDI.
-	 */
-	public ClientSubscriptionInfoDetail getClientSubscriptionInfoDetail(GetClientSubscriptionInfoDetail body)
-			throws DispositionReportFaultMessage {
-
-		new ValidateClientSubscriptionInfo(null).validateGetClientSubscriptionInfoDetail(body);
-
-		EntityManager em = PersistenceManager.getEntityManager();
-		EntityTransaction tx = em.getTransaction();
-		try {
-			tx.begin();
-	
-			this.getEntityPublisher(em, body.getAuthInfo());
-			
-			ClientSubscriptionInfoDetail result = new ClientSubscriptionInfoDetail();
-			
-			List<String> subscriptionKeyList = body.getClientSubscriptionKey();
-			for (String subscriptionKey : subscriptionKeyList) {
-				
-				org.apache.juddi.model.ClientSubscriptionInfo modelClientSubscriptionInfo = null;
-				try {
-					modelClientSubscriptionInfo = em.find(org.apache.juddi.model.ClientSubscriptionInfo.class, subscriptionKey);
-				} catch (ClassCastException e) {}
-				if (modelClientSubscriptionInfo == null) {
-					throw new InvalidKeyPassedException(new ErrorMessage("errors.invalidkey.SubscripKeyNotFound", subscriptionKey));
-				}
-				
-				org.apache.juddi.api_v3.ClientSubscriptionInfo apiClientSubscriptionInfo = new org.apache.juddi.api_v3.ClientSubscriptionInfo();
-				
-				MappingModelToApi.mapClientSubscriptionInfo(modelClientSubscriptionInfo, apiClientSubscriptionInfo);
-				
-				result.getClientSubscriptionInfo().add(apiClientSubscriptionInfo);
-			}
-	
-			tx.commit();
-			return result;
-		} finally {
-			if (tx.isActive()) {
-				tx.rollback();
-			}
-			em.close();
-		}
-
-	}
-	
-	/**
-	 * 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();
-		}
-	}
-
-	/**
-	 * Instructs the registry to perform a synchronous subscription response.
-	 */
-	@SuppressWarnings("unchecked")
-	public SyncSubscriptionDetail invokeSyncSubscription(
-			SyncSubscription body) throws DispositionReportFaultMessage,
-			RemoteException {
-		
-		//validate
-		
-		SyncSubscriptionDetail syncSubscriptionDetail = new SyncSubscriptionDetail();
-		
-		Map<String,org.apache.juddi.api_v3.ClientSubscriptionInfo> clientSubscriptionInfoMap 
-				= new HashMap<String,org.apache.juddi.api_v3.ClientSubscriptionInfo>();
-		//find the clerks to go with these subscriptions
-		EntityManager em = PersistenceManager.getEntityManager();
-		EntityTransaction tx = em.getTransaction();
-		try {
-			tx.begin();
-	
-			this.getEntityPublisher(em, body.getAuthInfo());
-			for (GetSubscriptionResults getSubscriptionResult : body.getGetSubscriptionResultsList()) {
-				String subscriptionKey = getSubscriptionResult.getSubscriptionKey();
-				org.apache.juddi.model.ClientSubscriptionInfo modelClientSubscriptionInfo = null;
-				try {
-					modelClientSubscriptionInfo = em.find(org.apache.juddi.model.ClientSubscriptionInfo.class, subscriptionKey);
-				} catch (ClassCastException e) {}
-				if (modelClientSubscriptionInfo == null) {
-					throw new InvalidKeyPassedException(new ErrorMessage("errors.invalidkey.SubscripKeyNotFound", subscriptionKey));
-				}
-				org.apache.juddi.api_v3.ClientSubscriptionInfo apiClientSubscriptionInfo = new org.apache.juddi.api_v3.ClientSubscriptionInfo();
-				MappingModelToApi.mapClientSubscriptionInfo(modelClientSubscriptionInfo, apiClientSubscriptionInfo);
-				clientSubscriptionInfoMap.put(apiClientSubscriptionInfo.getSubscriptionKey(),apiClientSubscriptionInfo);
-			}
-	
-			tx.commit();
-		} finally {
-			if (tx.isActive()) {
-				tx.rollback();
-			}
-			em.close();
-		}
-		
-		for (GetSubscriptionResults getSubscriptionResult : body.getGetSubscriptionResultsList()) {
-			try {
-				String subscriptionKey = getSubscriptionResult.getSubscriptionKey();
-				Clerk fromClerk = clientSubscriptionInfoMap.get(subscriptionKey).getFromClerk();
-				Clerk toClerk = clientSubscriptionInfoMap.get(subscriptionKey).getToClerk();
-				String clazz = fromClerk.getNode().getProxyTransport();
-				Class<?> transportClass = ClassUtil.forName(clazz, this.getClass());
-				Transport transport = (Transport) transportClass.getConstructor(String.class).newInstance(fromClerk.getNode().getName()); 
-				UDDISubscriptionPortType subscriptionService = transport.getUDDISubscriptionService(fromClerk.getNode().getSubscriptionUrl());
-				SubscriptionResultsList list = subscriptionService.getSubscriptionResults(getSubscriptionResult);
-				
-				JAXBContext context = JAXBContext.newInstance(list.getClass());
-				Marshaller marshaller = context.createMarshaller();
-				StringWriter sw = new StringWriter();
-				marshaller.marshal(list, sw);
-
-				log.info("Notification received by UDDISubscriptionListenerService : " + sw.toString());
-				
-				NotificationList<String> nl = NotificationList.getInstance();
-				nl.getNotifications().add(sw.toString());
-				
-				//update the registry with the notification list.
-				XRegisterHelper.handle(fromClerk, toClerk, list);
-				
-				syncSubscriptionDetail.getSubscriptionResultsList().add(list);
-			} catch (Exception ce) {
-				log.error(ce.getMessage(),ce);
-				if (ce instanceof DispositionReportFaultMessage) {
-					throw (DispositionReportFaultMessage) ce;
-				}
-				if (ce instanceof RemoteException) {
-					throw (RemoteException) ce;
-				}
-			}
-		}
-		//for now sending a clean object back
-		
-		return syncSubscriptionDetail;
-	}
 
-	
-	
 }

Modified: juddi/branches/juddi-3.3.x/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIReplicationImpl.java
URL: http://svn.apache.org/viewvc/juddi/branches/juddi-3.3.x/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIReplicationImpl.java?rev=1546875&r1=1546874&r2=1546875&view=diff
==============================================================================
--- juddi/branches/juddi-3.3.x/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIReplicationImpl.java (original)
+++ juddi/branches/juddi-3.3.x/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIReplicationImpl.java Mon Dec  2 00:51:47 2013
@@ -14,19 +14,31 @@
  * limitations under the License.
  *
  */
-
 package org.apache.juddi.api.impl;
 
 import java.math.BigInteger;
+import java.util.HashMap;
 import java.util.List;
-
-import javax.jws.WebService;
+import java.util.Map;
+import javax.persistence.EntityManager;
+import javax.persistence.EntityTransaction;
+import javax.xml.ws.BindingProvider;
+import org.apache.commons.configuration.ConfigurationException;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.juddi.api.util.QueryStatus;
 import org.apache.juddi.api.util.ReplicationQuery;
+import org.apache.juddi.config.AppConfig;
+import org.apache.juddi.config.PersistenceManager;
+import org.apache.juddi.config.Property;
+import org.apache.juddi.model.Node;
+import org.apache.juddi.v3.client.UDDIService;
+import org.apache.juddi.v3.error.ErrorMessage;
+import org.apache.juddi.v3.error.FatalErrorException;
 import org.apache.juddi.validation.ValidateReplication;
+import org.uddi.api_v3.DispositionReport;
+import org.uddi.api_v3.Result;
 import org.uddi.repl_v3.ChangeRecord;
 import org.uddi.repl_v3.ChangeRecordIDType;
 import org.uddi.repl_v3.DoPing;
@@ -39,70 +51,121 @@ import org.uddi.v3_service.UDDIReplicati
 //@WebService(serviceName="UDDIReplicationService", 
 //			endpointInterface="org.uddi.v3_service.UDDIReplicationPortType",
 //			targetNamespace = "urn:uddi-org:v3_service")
+/**
+ * UDDI Replication defines four APIs. The first two presented here are used to
+ * perform replication and issue notifications. The latter ancillary APIs
+ * provide support for other aspects of UDDI Replication.
+ * <ul><li>get_changeRecords</li>
+ * <li>notify_changeRecordsAvailable</li>
+ * <li>do_ping</li>
+ * <li>get_highWaterMarks</li>
+ *
+ * @author <a href="mailto:alexoree@apache.org">Alex O'Ree<a/>
+ */
 public class UDDIReplicationImpl extends AuthenticatedService implements UDDIReplicationPortType {
+
         private static Log log = LogFactory.getLog(UDDIReplicationImpl.class);
         private UDDIServiceCounter serviceCounter;
 
         public UDDIReplicationImpl() {
-            super();
-            serviceCounter = ServiceCounterLifecycleResource.getServiceCounter(UDDIReplicationImpl.class);
+                super();
+                serviceCounter = ServiceCounterLifecycleResource.getServiceCounter(UDDIReplicationImpl.class);
+
         }
 
+        private synchronized UDDIReplicationPortType getReplicationClient(String node) {
+                if (cache.containsKey(node)) {
+                        return cache.get(node);
+                }
+                UDDIService svc = new UDDIService();
+                UDDIReplicationPortType replicationClient = svc.getUDDIReplicationPort();
+                EntityManager em = PersistenceManager.getEntityManager();
+                EntityTransaction tx = em.getTransaction();
+                try {
+                        Node find = em.find(org.apache.juddi.model.Node.class, node);
+                        ((BindingProvider) replicationClient).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, find.getReplicationUrl());
+                        cache.put(node, replicationClient);
+                        return replicationClient;
+                } catch (Exception ex) {
+                        log.fatal("Node not found!" + node, ex);
+                } finally {
+                        if (tx.isActive()) {
+                                tx.rollback();
+                        }
+                        em.close();
+                }
+                em.close();
+                return null;
 
-	public String doPing(DoPing body) throws DispositionReportFaultMessage {
-	        long startTime = System.currentTimeMillis();
+        }
+        private Map<String, UDDIReplicationPortType> cache = new HashMap<String, UDDIReplicationPortType>();
+
+        /**
+         * @since 3.3
+         * @param body
+         * @return
+         * @throws DispositionReportFaultMessage
+         */
+        public String doPing(DoPing body) throws DispositionReportFaultMessage {
+                long startTime = System.currentTimeMillis();
                 long procTime = System.currentTimeMillis() - startTime;
                 serviceCounter.update(ReplicationQuery.DO_PING, QueryStatus.SUCCESS, procTime);
+                try {
+                        return AppConfig.getConfiguration().getString(Property.JUDDI_NODE_ROOT_BUSINESS);
+                } catch (ConfigurationException ex) {
+                        log.fatal("Unable to load configuration!", ex);
+                }
+                DispositionReport f = new DispositionReport();
+                f.getResult().add(new Result());
+                throw new FatalErrorException(new ErrorMessage("errors.configuration.Retrieval"));
+        }
+
+        public List<ChangeRecord> getChangeRecords(String requestingNode,
+                HighWaterMarkVectorType changesAlreadySeen,
+                BigInteger responseLimitCount,
+                HighWaterMarkVectorType responseLimitVector)
+                throws DispositionReportFaultMessage {
+                long startTime = System.currentTimeMillis();
+                long procTime = System.currentTimeMillis() - startTime;
+                serviceCounter.update(ReplicationQuery.GET_CHANGERECORDS,
+                        QueryStatus.SUCCESS, procTime);
+
+                //TODO fetch all records that have changed since changesAlreadySeen
+                ValidateReplication.unsupportedAPICall();
+                return null;
+        }
 
-		ValidateReplication.unsupportedAPICall();
-		return null;
-	}
+        public List<ChangeRecordIDType> getHighWaterMarks()
+                throws DispositionReportFaultMessage {
+                long startTime = System.currentTimeMillis();
+                long procTime = System.currentTimeMillis() - startTime;
+                serviceCounter.update(ReplicationQuery.GET_HIGHWATERMARKS, QueryStatus.SUCCESS, procTime);
 
+                //fetch from database the highest known watermark
+                ValidateReplication.unsupportedAPICall();
+                return null;
+        }
 
-	public List<ChangeRecord> getChangeRecords(String requestingNode,
-			HighWaterMarkVectorType changesAlreadySeen,
-			BigInteger responseLimitCount,
-			HighWaterMarkVectorType responseLimitVector)
-			throws DispositionReportFaultMessage {
-	        long startTime = System.currentTimeMillis();
+        public void notifyChangeRecordsAvailable(NotifyChangeRecordsAvailable body)
+                throws DispositionReportFaultMessage {
+                long startTime = System.currentTimeMillis();
                 long procTime = System.currentTimeMillis() - startTime;
-                serviceCounter.update(ReplicationQuery.GET_CHANGERECORDS, 
+                serviceCounter.update(ReplicationQuery.NOTIFY_CHANGERECORDSAVAILABLE,
                         QueryStatus.SUCCESS, procTime);
+                //some other node just told us there's new records available, call
+                //getChangeRecords from the remote node asynch
 
-		ValidateReplication.unsupportedAPICall();
-		return null;
-	}
-
+                ValidateReplication.unsupportedAPICall();
+        }
 
-	public List<ChangeRecordIDType> getHighWaterMarks()
-			throws DispositionReportFaultMessage {
-	        long startTime = System.currentTimeMillis();
+        public void transferCustody(TransferCustody body)
+                throws DispositionReportFaultMessage {
+                long startTime = System.currentTimeMillis();
                 long procTime = System.currentTimeMillis() - startTime;
-                serviceCounter.update(ReplicationQuery.GET_HIGHWATERMARKS, QueryStatus.SUCCESS, procTime);
+                serviceCounter.update(ReplicationQuery.TRANSFER_CUSTODY,
+                        QueryStatus.SUCCESS, procTime);
 
-		ValidateReplication.unsupportedAPICall();
-		return null;
-	}
-
-
-	public void notifyChangeRecordsAvailable(NotifyChangeRecordsAvailable body)
-			throws DispositionReportFaultMessage {
-            long startTime = System.currentTimeMillis();
-            long procTime = System.currentTimeMillis() - startTime;
-            serviceCounter.update(ReplicationQuery.NOTIFY_CHANGERECORDSAVAILABLE, 
-                    QueryStatus.SUCCESS, procTime);
-
-	    ValidateReplication.unsupportedAPICall();
-	}
-
-
-	public void transferCustody(TransferCustody body)
-			throws DispositionReportFaultMessage {
-	    long startTime = System.currentTimeMillis();
-            long procTime = System.currentTimeMillis() - startTime;
-            serviceCounter.update(ReplicationQuery.TRANSFER_CUSTODY, 
-                    QueryStatus.SUCCESS, procTime);
 
-	    ValidateReplication.unsupportedAPICall();
-	}
+                ValidateReplication.unsupportedAPICall();
+        }
 }

Modified: juddi/branches/juddi-3.3.x/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDISecurityImpl.java
URL: http://svn.apache.org/viewvc/juddi/branches/juddi-3.3.x/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDISecurityImpl.java?rev=1546875&r1=1546874&r2=1546875&view=diff
==============================================================================
--- juddi/branches/juddi-3.3.x/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDISecurityImpl.java (original)
+++ juddi/branches/juddi-3.3.x/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDISecurityImpl.java Mon Dec  2 00:51:47 2013
@@ -23,9 +23,7 @@ import java.util.UUID;
 import javax.jws.WebService;
 import javax.persistence.EntityManager;
 import javax.persistence.EntityTransaction;
-import javax.servlet.http.HttpServletRequest;
 import javax.xml.ws.WebServiceContext;
-import javax.xml.ws.handler.MessageContext;
 
 import org.uddi.api_v3.AuthToken;
 import org.uddi.api_v3.DiscardAuthToken;
@@ -33,13 +31,12 @@ import org.uddi.api_v3.GetAuthToken;
 import org.uddi.v3_service.DispositionReportFaultMessage;
 import org.uddi.v3_service.UDDISecurityPortType;
 
-import org.apache.juddi.api.util.PublicationQuery;
 import org.apache.juddi.api.util.QueryStatus;
-import org.apache.juddi.api.util.ReplicationQuery;
 import org.apache.juddi.api.util.SecurityQuery;
 import org.apache.juddi.config.PersistenceManager;
 import org.apache.juddi.mapping.MappingModelToApi;
 import org.apache.juddi.model.Publisher;
+import org.apache.juddi.replication.ReplicationNotifier;
 import org.apache.juddi.v3.auth.Authenticator;
 import org.apache.juddi.v3.auth.AuthenticatorFactory;
 import org.apache.juddi.v3.error.ErrorMessage;



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