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/31 16:35:28 UTC

svn commit: r1554543 [1/4] - in /juddi/branches/juddi-3.3.x: juddi-core-openjpa/src/test/resources/META-INF/ juddi-core/ 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...

Author: alexoree
Date: Tue Dec 31 15:35:27 2013
New Revision: 1554543

URL: http://svn.apache.org/r1554543
Log:
JUDDI-241 adding persistence layer for replication configuration. added queuing mechanism

Added:
    juddi/branches/juddi-3.3.x/juddi-core/src/main/java/org/apache/juddi/model/ChangeRecord.java
    juddi/branches/juddi-3.3.x/juddi-core/src/main/java/org/apache/juddi/model/CommunicationGraph.java
    juddi/branches/juddi-3.3.x/juddi-core/src/main/java/org/apache/juddi/model/ControlMessage.java
    juddi/branches/juddi-3.3.x/juddi-core/src/main/java/org/apache/juddi/model/Edge.java
    juddi/branches/juddi-3.3.x/juddi-core/src/main/java/org/apache/juddi/model/Operator.java
    juddi/branches/juddi-3.3.x/juddi-core/src/main/java/org/apache/juddi/model/OperatorStatusType.java
    juddi/branches/juddi-3.3.x/juddi-core/src/main/java/org/apache/juddi/model/ReplicationConfiguration.java
    juddi/branches/juddi-3.3.x/juddi-core/src/main/java/org/apache/juddi/model/ReplicationMessage.java
Modified:
    juddi/branches/juddi-3.3.x/juddi-core-openjpa/src/test/resources/META-INF/persistence.xml
    juddi/branches/juddi-3.3.x/juddi-core/pom.xml
    juddi/branches/juddi-3.3.x/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIPublicationImpl.java
    juddi/branches/juddi-3.3.x/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIReplicationImpl.java
    juddi/branches/juddi-3.3.x/juddi-core/src/main/java/org/apache/juddi/mapping/MappingModelToApi.java
    juddi/branches/juddi-3.3.x/juddi-core/src/main/java/org/apache/juddi/model/KeyDataValue.java
    juddi/branches/juddi-3.3.x/juddi-core/src/main/java/org/apache/juddi/model/KeyInfo.java
    juddi/branches/juddi-3.3.x/juddi-core/src/main/java/org/apache/juddi/model/Signature.java
    juddi/branches/juddi-3.3.x/juddi-core/src/main/java/org/apache/juddi/replication/ReplicationNotifier.java
    juddi/branches/juddi-3.3.x/juddi-core/src/test/resources/META-INF/persistence.xml
    juddi/branches/juddi-3.3.x/juddi-examples/hello-world-embedded/src/main/resources/META-INF/persistence.xml
    juddi/branches/juddi-3.3.x/juddi-rest-cxf/src/test/resources/META-INF/persistence.xml
    juddi/branches/juddi-3.3.x/juddiv3-war/JPA/Hibernate-JBoss/WEB-INF/classes/META-INF/persistence.xml
    juddi/branches/juddi-3.3.x/juddiv3-war/JPA/Hibernate/WEB-INF/classes/META-INF/persistence.xml
    juddi/branches/juddi-3.3.x/juddiv3-war/JPA/OpenJPA-JBossAS7Up/WEB-INF/classes/META-INF/persistence.xml
    juddi/branches/juddi-3.3.x/juddiv3-war/JPA/OpenJPA/WEB-INF/classes/META-INF/persistence.xml

Modified: juddi/branches/juddi-3.3.x/juddi-core-openjpa/src/test/resources/META-INF/persistence.xml
URL: http://svn.apache.org/viewvc/juddi/branches/juddi-3.3.x/juddi-core-openjpa/src/test/resources/META-INF/persistence.xml?rev=1554543&r1=1554542&r2=1554543&view=diff
==============================================================================
--- juddi/branches/juddi-3.3.x/juddi-core-openjpa/src/test/resources/META-INF/persistence.xml (original)
+++ juddi/branches/juddi-3.3.x/juddi-core-openjpa/src/test/resources/META-INF/persistence.xml Tue Dec 31 15:35:27 2013
@@ -72,6 +72,13 @@
     <class>org.apache.juddi.model.UddiEntityPublisher</class>
 	<class>org.apache.juddi.model.ValueSetValues</class>
 	<class>org.apache.juddi.model.ValueSetValue</class>
+	<class>org.apache.juddi.model.ChangeRecord</class>
+	<class>org.apache.juddi.model.CommunicationGraph</class>
+	<class>org.apache.juddi.model.Operator</class>
+	<class>org.apache.juddi.model.ReplicationConfiguration</class>
+	<class>org.apache.juddi.model.Edge</class>
+	<class>org.apache.juddi.model.ControlMessage</class>
+	<class>org.apache.juddi.model.ReplicationMessage</class>
     
     <properties>
       <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(SchemaAction='dropDB,add')"/>

Modified: juddi/branches/juddi-3.3.x/juddi-core/pom.xml
URL: http://svn.apache.org/viewvc/juddi/branches/juddi-3.3.x/juddi-core/pom.xml?rev=1554543&r1=1554542&r2=1554543&view=diff
==============================================================================
--- juddi/branches/juddi-3.3.x/juddi-core/pom.xml (original)
+++ juddi/branches/juddi-3.3.x/juddi-core/pom.xml Tue Dec 31 15:35:27 2013
@@ -121,7 +121,7 @@
         <dependency>
             <groupId>org.hibernate</groupId>
             <artifactId>hibernate</artifactId>
-            <version>3.2.5.ga</version>
+            <version>3.2.7.ga</version>
             <exclusions>
                 <exclusion>
                     <groupId>cglib</groupId>
@@ -132,7 +132,7 @@
         <dependency>
             <groupId>org.hibernate</groupId>
             <artifactId>hibernate-entitymanager</artifactId>
-            <version>3.3.1.ga</version>
+            <version>3.3.2.GA</version>
         </dependency>
         <dependency>
             <groupId>cglib</groupId>

Modified: juddi/branches/juddi-3.3.x/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIPublicationImpl.java
URL: http://svn.apache.org/viewvc/juddi/branches/juddi-3.3.x/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIPublicationImpl.java?rev=1554543&r1=1554542&r2=1554543&view=diff
==============================================================================
--- juddi/branches/juddi-3.3.x/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIPublicationImpl.java (original)
+++ juddi/branches/juddi-3.3.x/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIPublicationImpl.java Tue Dec 31 15:35:27 2013
@@ -14,7 +14,6 @@
  * limitations under the License.
  *
  */
-
 package org.apache.juddi.api.impl;
 
 import java.util.Date;
@@ -70,856 +69,888 @@ import org.apache.juddi.api.util.QuerySt
 import org.apache.juddi.config.AppConfig;
 import org.apache.juddi.config.PersistenceManager;
 import org.apache.juddi.config.Property;
-import org.apache.juddi.model.Tmodel;
-import org.apache.juddi.model.UddiEntity;
 import org.apache.juddi.query.util.DynamicQuery;
 import org.apache.juddi.query.util.FindQualifiers;
+import org.apache.juddi.replication.ReplicationNotifier;
 
 /**
  * This class implements the UDDI Publication Service
- * @author <a href="mailto:jfaath@apache.org">Jeff Faath</a> (and many others)
+ *
+ * @author <a href="mailto:jfaath@apache.org">Jeff Faath</a>
+ * @author <a href="mailto:alexoree@apache.org">Alex O'Ree</a>
  */
-@WebService(serviceName="UDDIPublicationService", 
-			endpointInterface="org.uddi.v3_service.UDDIPublicationPortType",
-			targetNamespace = "urn:uddi-org:v3_service")
+@WebService(serviceName = "UDDIPublicationService",
+        endpointInterface = "org.uddi.v3_service.UDDIPublicationPortType",
+        targetNamespace = "urn:uddi-org:v3_service")
 public class UDDIPublicationImpl extends AuthenticatedService implements UDDIPublicationPortType {
 
         private static Log log = LogFactory.getLog(UDDIInquiryImpl.class);
         private UDDIServiceCounter serviceCounter;
-    
+
         public UDDIPublicationImpl() {
-            super();
-            serviceCounter = ServiceCounterLifecycleResource.getServiceCounter(UDDIPublicationImpl.class);
+                super();
+                serviceCounter = ServiceCounterLifecycleResource.getServiceCounter(UDDIPublicationImpl.class);
+        }
+
+        @Override
+        public void addPublisherAssertions(AddPublisherAssertions body)
+                throws DispositionReportFaultMessage {
+                long startTime = System.currentTimeMillis();
+
+                EntityManager em = PersistenceManager.getEntityManager();
+                EntityTransaction tx = em.getTransaction();
+                try {
+                        tx.begin();
+
+                        UddiEntityPublisher publisher = this.getEntityPublisher(em, body.getAuthInfo());
+
+                        new ValidatePublish(publisher).validateAddPublisherAssertions(em, body);
+
+                        List<org.uddi.api_v3.PublisherAssertion> apiPubAssertionList = body.getPublisherAssertion();
+                        for (org.uddi.api_v3.PublisherAssertion apiPubAssertion : apiPubAssertionList) {
+
+                                org.apache.juddi.model.PublisherAssertion modelPubAssertion = new org.apache.juddi.model.PublisherAssertion();
+
+                                MappingApiToModel.mapPublisherAssertion(apiPubAssertion, modelPubAssertion);
+
+                                org.apache.juddi.model.PublisherAssertion existingPubAssertion = em.find(modelPubAssertion.getClass(), modelPubAssertion.getId());
+                                boolean persistNewAssertion = true;
+                                if (existingPubAssertion != null) {
+                                        if (modelPubAssertion.getTmodelKey().equalsIgnoreCase(existingPubAssertion.getTmodelKey())
+                                                && modelPubAssertion.getKeyName().equalsIgnoreCase(existingPubAssertion.getKeyName())
+                                                && modelPubAssertion.getKeyValue().equalsIgnoreCase(existingPubAssertion.getKeyValue())) {
+                                                // This pub assertion is already been "asserted".  Simply need to set the "check" value on the existing (and persistent) assertion
+                                                if (publisher.isOwner(existingPubAssertion.getBusinessEntityByFromKey())) {
+                                                        existingPubAssertion.setFromCheck("true");
+                                                }
+                                                if (publisher.isOwner(existingPubAssertion.getBusinessEntityByToKey())) {
+                                                        existingPubAssertion.setToCheck("true");
+                                                }
+
+                                                persistNewAssertion = false;
+                                        } else {
+                                                // Otherwise, it is a new relationship between these entities.  Remove the old one so the new one can be added.
+                                                // TODO: the model only seems to allow one assertion per two business (primary key is fromKey and toKey). Spec seems to imply as 
+                                                // many relationships as desired (the differentiator would be the keyedRef values).
+                                                em.remove(existingPubAssertion);
+                                        }
+                                }
+
+                                if (persistNewAssertion) {
+                                        org.apache.juddi.model.BusinessEntity beFrom = em.find(org.apache.juddi.model.BusinessEntity.class, modelPubAssertion.getId().getFromKey());
+                                        org.apache.juddi.model.BusinessEntity beTo = em.find(org.apache.juddi.model.BusinessEntity.class, modelPubAssertion.getId().getToKey());
+                                        modelPubAssertion.setBusinessEntityByFromKey(beFrom);
+                                        modelPubAssertion.setBusinessEntityByToKey(beTo);
+
+                                        modelPubAssertion.setFromCheck("false");
+                                        modelPubAssertion.setToCheck("false");
+
+                                        em.persist(modelPubAssertion);
+
+                                        if (publisher.isOwner(modelPubAssertion.getBusinessEntityByFromKey())) {
+                                                modelPubAssertion.setFromCheck("true");
+                                        }
+                                        if (publisher.isOwner(modelPubAssertion.getBusinessEntityByToKey())) {
+                                                modelPubAssertion.setToCheck("true");
+                                        }
+                                }
+
+                        }
+
+                        tx.commit();
+                        long procTime = System.currentTimeMillis() - startTime;
+                        serviceCounter.update(PublicationQuery.ADD_PUBLISHERASSERTIONS,
+                                QueryStatus.SUCCESS, procTime);
+                        ReplicationNotifier.Enqueue(body);
+                } catch (DispositionReportFaultMessage drfm) {
+                        long procTime = System.currentTimeMillis() - startTime;
+                        serviceCounter.update(PublicationQuery.ADD_PUBLISHERASSERTIONS, QueryStatus.FAILED, procTime);
+                        throw drfm;
+                } finally {
+                        if (tx.isActive()) {
+                                tx.rollback();
+                        }
+                        em.close();
+                }
+        }
+
+        @Override
+        public void deleteBinding(DeleteBinding body)
+                throws DispositionReportFaultMessage {
+                long startTime = System.currentTimeMillis();
+
+                EntityManager em = PersistenceManager.getEntityManager();
+                EntityTransaction tx = em.getTransaction();
+                try {
+                        tx.begin();
+
+                        UddiEntityPublisher publisher = this.getEntityPublisher(em, body.getAuthInfo());
+
+                        new ValidatePublish(publisher).validateDeleteBinding(em, body);
+
+                        List<String> entityKeyList = body.getBindingKey();
+                        for (String entityKey : entityKeyList) {
+                                Object obj = em.find(org.apache.juddi.model.BindingTemplate.class, entityKey);
+
+                                ((org.apache.juddi.model.BindingTemplate) obj).getBusinessService().setModifiedIncludingChildren(new Date());
+                                // JUDDI-421:  now the businessEntity parent will have it's modifiedIncludingChildren set
+                                ((org.apache.juddi.model.BindingTemplate) obj).getBusinessService().getBusinessEntity().setModifiedIncludingChildren(new Date());
+
+                                em.remove(obj);
+                        }
+
+                        tx.commit();
+                        long procTime = System.currentTimeMillis() - startTime;
+                        serviceCounter.update(PublicationQuery.DELETE_BINDING,
+                                QueryStatus.SUCCESS, procTime);
+                        ReplicationNotifier.Enqueue(body);
+                } catch (DispositionReportFaultMessage drfm) {
+                        long procTime = System.currentTimeMillis() - startTime;
+                        serviceCounter.update(PublicationQuery.DELETE_BINDING, QueryStatus.FAILED, procTime);
+                        throw drfm;
+                } finally {
+                        if (tx.isActive()) {
+                                tx.rollback();
+                        }
+                        em.close();
+                }
+        }
+
+        @Override
+        public void deleteBusiness(DeleteBusiness body)
+                throws DispositionReportFaultMessage {
+                long startTime = System.currentTimeMillis();
+
+                EntityManager em = PersistenceManager.getEntityManager();
+                EntityTransaction tx = em.getTransaction();
+                try {
+                        tx.begin();
+
+                        UddiEntityPublisher publisher = this.getEntityPublisher(em, body.getAuthInfo());
+
+                        new ValidatePublish(publisher).validateDeleteBusiness(em, body);
+
+                        List<String> entityKeyList = body.getBusinessKey();
+                        for (String entityKey : entityKeyList) {
+                                Object obj = em.find(org.apache.juddi.model.BusinessEntity.class, entityKey);
+                                em.remove(obj);
+                        }
+
+                        tx.commit();
+                        long procTime = System.currentTimeMillis() - startTime;
+                        serviceCounter.update(PublicationQuery.DELETE_BUSINESS, QueryStatus.SUCCESS, procTime);
+                        ReplicationNotifier.Enqueue(body);
+                } catch (DispositionReportFaultMessage drfm) {
+                        long procTime = System.currentTimeMillis() - startTime;
+                        serviceCounter.update(PublicationQuery.DELETE_BUSINESS, QueryStatus.FAILED, procTime);
+                        throw drfm;
+                } finally {
+                        if (tx.isActive()) {
+                                tx.rollback();
+                        }
+                        em.close();
+                }
         }
-	
-        
-        
-	public void addPublisherAssertions(AddPublisherAssertions body)
-			throws DispositionReportFaultMessage {
-	        long startTime = System.currentTimeMillis();
-
-		EntityManager em = PersistenceManager.getEntityManager();
-		EntityTransaction tx = em.getTransaction();
-		try {
-			tx.begin();
-			
-			UddiEntityPublisher publisher = this.getEntityPublisher(em, body.getAuthInfo());
-			
-			new ValidatePublish(publisher).validateAddPublisherAssertions(em, body);
-	
-			List<org.uddi.api_v3.PublisherAssertion> apiPubAssertionList = body.getPublisherAssertion();
-			for (org.uddi.api_v3.PublisherAssertion apiPubAssertion : apiPubAssertionList) {
-				
-				org.apache.juddi.model.PublisherAssertion modelPubAssertion = new org.apache.juddi.model.PublisherAssertion();
-				
-				MappingApiToModel.mapPublisherAssertion(apiPubAssertion, modelPubAssertion);
-				
-				org.apache.juddi.model.PublisherAssertion existingPubAssertion = em.find(modelPubAssertion.getClass(), modelPubAssertion.getId());
-				boolean persistNewAssertion = true;
-				if (existingPubAssertion != null) {
-					if (modelPubAssertion.getTmodelKey().equalsIgnoreCase(existingPubAssertion.getTmodelKey()) &&
-						modelPubAssertion.getKeyName().equalsIgnoreCase(existingPubAssertion.getKeyName()) &&
-						modelPubAssertion.getKeyValue().equalsIgnoreCase(existingPubAssertion.getKeyValue())) {
-						// This pub assertion is already been "asserted".  Simply need to set the "check" value on the existing (and persistent) assertion
-						if (publisher.isOwner(existingPubAssertion.getBusinessEntityByFromKey()))
-							existingPubAssertion.setFromCheck("true");
-						if (publisher.isOwner(existingPubAssertion.getBusinessEntityByToKey()))
-							existingPubAssertion.setToCheck("true");
-						
-						persistNewAssertion = false;
-					}
-					else {
-						// Otherwise, it is a new relationship between these entities.  Remove the old one so the new one can be added.
-						// TODO: the model only seems to allow one assertion per two business (primary key is fromKey and toKey). Spec seems to imply as 
-						// many relationships as desired (the differentiator would be the keyedRef values).
-						em.remove(existingPubAssertion);
-					}
-				}
-	
-				if (persistNewAssertion) {
-					org.apache.juddi.model.BusinessEntity beFrom = em.find(org.apache.juddi.model.BusinessEntity.class, modelPubAssertion.getId().getFromKey());
-					org.apache.juddi.model.BusinessEntity beTo = em.find(org.apache.juddi.model.BusinessEntity.class, modelPubAssertion.getId().getToKey());
-					modelPubAssertion.setBusinessEntityByFromKey(beFrom);
-					modelPubAssertion.setBusinessEntityByToKey(beTo);
-	
-					modelPubAssertion.setFromCheck("false");
-					modelPubAssertion.setToCheck("false");
-	
-					em.persist(modelPubAssertion);
-					
-					if (publisher.isOwner(modelPubAssertion.getBusinessEntityByFromKey()))
-						modelPubAssertion.setFromCheck("true");
-					if (publisher.isOwner(modelPubAssertion.getBusinessEntityByToKey()))
-						modelPubAssertion.setToCheck("true");
-				}
-				
-			}
-	
-			tx.commit();
-                        long procTime = System.currentTimeMillis() - startTime;
-                        serviceCounter.update(PublicationQuery.ADD_PUBLISHERASSERTIONS, 
-                                QueryStatus.SUCCESS, procTime);			
-                } catch (DispositionReportFaultMessage drfm) {
-                    long procTime = System.currentTimeMillis() - startTime;
-                    serviceCounter.update(PublicationQuery.ADD_PUBLISHERASSERTIONS, QueryStatus.FAILED, procTime);                      
-                    throw drfm;
-                } finally {
-			if (tx.isActive()) {
-				tx.rollback();
-			}
-			em.close();
-		}
-	}
-
-	public void deleteBinding(DeleteBinding body)
-			throws DispositionReportFaultMessage {
-	        long startTime = System.currentTimeMillis();
-
-		EntityManager em = PersistenceManager.getEntityManager();
-		EntityTransaction tx = em.getTransaction();
-		try {
-			tx.begin();
-	
-			UddiEntityPublisher publisher = this.getEntityPublisher(em, body.getAuthInfo());
-			
-			new ValidatePublish(publisher).validateDeleteBinding(em, body);
-			
-			List<String> entityKeyList = body.getBindingKey();
-			for (String entityKey : entityKeyList) {
-				Object obj = em.find(org.apache.juddi.model.BindingTemplate.class, entityKey);
-	
-				((org.apache.juddi.model.BindingTemplate)obj).getBusinessService().setModifiedIncludingChildren(new Date());
-				// JUDDI-421:  now the businessEntity parent will have it's modifiedIncludingChildren set
-				((org.apache.juddi.model.BindingTemplate)obj).getBusinessService().getBusinessEntity().setModifiedIncludingChildren(new Date());
-				
-				em.remove(obj);
-			}
-	
-			tx.commit();
-                        long procTime = System.currentTimeMillis() - startTime;
-                        serviceCounter.update(PublicationQuery.DELETE_BINDING, 
-                                QueryStatus.SUCCESS, procTime);                      
-                } catch (DispositionReportFaultMessage drfm) {
-                    long procTime = System.currentTimeMillis() - startTime;
-                    serviceCounter.update(PublicationQuery.DELETE_BINDING, QueryStatus.FAILED, procTime);                      
-                    throw drfm;
-		} finally {
-			if (tx.isActive()) {
-				tx.rollback();
-			}
-			em.close();
-		}
-	}
-
-	public void deleteBusiness(DeleteBusiness body)
-			throws DispositionReportFaultMessage {
-	        long startTime = System.currentTimeMillis();
-
-		EntityManager em = PersistenceManager.getEntityManager();
-		EntityTransaction tx = em.getTransaction();
-		try {
-			tx.begin();
-	
-			UddiEntityPublisher publisher = this.getEntityPublisher(em, body.getAuthInfo());
-	
-			new ValidatePublish(publisher).validateDeleteBusiness(em, body);
-			
-			List<String> entityKeyList = body.getBusinessKey();
-			for (String entityKey : entityKeyList) {
-				Object obj = em.find(org.apache.juddi.model.BusinessEntity.class, entityKey);
-				em.remove(obj);
-			}
-	
-			tx.commit();
-                        long procTime = System.currentTimeMillis() - startTime;
-                        serviceCounter.update(PublicationQuery.DELETE_BUSINESS, QueryStatus.SUCCESS, procTime);               
-                } catch (DispositionReportFaultMessage drfm) {
-                    long procTime = System.currentTimeMillis() - startTime;
-                    serviceCounter.update(PublicationQuery.DELETE_BUSINESS, QueryStatus.FAILED, procTime);                      
-                    throw drfm;
-		} finally {
-			if (tx.isActive()) {
-				tx.rollback();
-			}
-			em.close();
-		}
-	}
-
-	public void deletePublisherAssertions(DeletePublisherAssertions body)
-			throws DispositionReportFaultMessage {
-	        long startTime = System.currentTimeMillis();
-
-		EntityManager em = PersistenceManager.getEntityManager();
-		EntityTransaction tx = em.getTransaction();
-		try {
-			tx.begin();
-	
-			UddiEntityPublisher publisher = this.getEntityPublisher(em, body.getAuthInfo());
-	
-			new ValidatePublish(publisher).validateDeletePublisherAssertions(em, body);
-			
-			List<org.uddi.api_v3.PublisherAssertion> entityList = body.getPublisherAssertion();
-			for (org.uddi.api_v3.PublisherAssertion entity : entityList) {
-				org.apache.juddi.model.PublisherAssertionId pubAssertionId = new org.apache.juddi.model.PublisherAssertionId(entity.getFromKey(), entity.getToKey());
-				Object obj = em.find(org.apache.juddi.model.PublisherAssertion.class, pubAssertionId);
-				em.remove(obj);
-			}
-	
-			tx.commit();
-                        long procTime = System.currentTimeMillis() - startTime;
-                        serviceCounter.update(PublicationQuery.DELETE_PUBLISHERASSERTIONS, 
-                                QueryStatus.SUCCESS, procTime);
-                } catch (DispositionReportFaultMessage drfm) {
-                    long procTime = System.currentTimeMillis() - startTime;
-                    serviceCounter.update(PublicationQuery.DELETE_PUBLISHERASSERTIONS, QueryStatus.FAILED, procTime);                      
-                    throw drfm;                        
-		} finally {
-			if (tx.isActive()) {
-				tx.rollback();
-			}
-			em.close();
-		}
-	}
-
-	public void deleteService(DeleteService body)
-			throws DispositionReportFaultMessage {
-	        long startTime = System.currentTimeMillis();
-
-		EntityManager em = PersistenceManager.getEntityManager();
-		EntityTransaction tx = em.getTransaction();
-		try {
-			tx.begin();
-	
-			UddiEntityPublisher publisher = this.getEntityPublisher(em, body.getAuthInfo());
-			
-			new ValidatePublish(publisher).validateDeleteService(em, body);
-			
-			List<String> entityKeyList = body.getServiceKey();
-			for (String entityKey : entityKeyList) {
-				Object obj = em.find(org.apache.juddi.model.BusinessService.class, entityKey);
-				
-				((org.apache.juddi.model.BusinessService)obj).getBusinessEntity().setModifiedIncludingChildren(new Date());
-				
-				em.remove(obj);
-			}
-	
-			tx.commit();
-                        long procTime = System.currentTimeMillis() - startTime;
-                        serviceCounter.update(PublicationQuery.DELETE_SERVICE, 
-                                QueryStatus.SUCCESS, procTime);
-                } catch (DispositionReportFaultMessage drfm) {
-                    long procTime = System.currentTimeMillis() - startTime;
-                    serviceCounter.update(PublicationQuery.DELETE_SERVICE, QueryStatus.FAILED, procTime);                      
-                    throw drfm;                                               
-		} finally {
-			if (tx.isActive()) {
-				tx.rollback();
-			}
-			em.close();
-		}
-	}
-
-
-	public void deleteTModel(DeleteTModel body)
-			throws DispositionReportFaultMessage {
-	        long startTime = System.currentTimeMillis();
-
-		EntityManager em = PersistenceManager.getEntityManager();
-		EntityTransaction tx = em.getTransaction();
-		try {
-			tx.begin();
-	
-			UddiEntityPublisher publisher = this.getEntityPublisher(em, body.getAuthInfo());
-	
-			new ValidatePublish(publisher).validateDeleteTModel(em, body);
-	
-			// tModels are only lazily deleted!
-			List<String> entityKeyList = body.getTModelKey();
-			for (String entityKey : entityKeyList) {
-				Object obj = em.find(org.apache.juddi.model.Tmodel.class, entityKey);
-				((org.apache.juddi.model.Tmodel)obj).setDeleted(true);
-				
-			}
-			
-			tx.commit();
-                        long procTime = System.currentTimeMillis() - startTime;
-                        serviceCounter.update(PublicationQuery.DELETE_TMODEL, QueryStatus.SUCCESS, procTime);                      
-                } catch (DispositionReportFaultMessage drfm) {
-                    long procTime = System.currentTimeMillis() - startTime;
-                    serviceCounter.update(PublicationQuery.DELETE_TMODEL, QueryStatus.FAILED, procTime);                      
-                    throw drfm;                                               
-		} finally {
-			if (tx.isActive()) {
-				tx.rollback();
-			}
-			em.close();
-		}
-	}
-
-
-	public List<AssertionStatusItem> getAssertionStatusReport(String authInfo,
-			CompletionStatus completionStatus)
-			throws DispositionReportFaultMessage {
-	        long startTime = System.currentTimeMillis();
-
-		EntityManager em = PersistenceManager.getEntityManager();
-		EntityTransaction tx = em.getTransaction();
-		try {
-			tx.begin();
-	
-			UddiEntityPublisher publisher = this.getEntityPublisher(em, authInfo);
-	
-			List<org.uddi.api_v3.AssertionStatusItem> result = PublicationHelper.getAssertionStatusItemList(publisher, completionStatus, em);
-	
-			tx.commit();
-                        long procTime = System.currentTimeMillis() - startTime;
-                        serviceCounter.update(PublicationQuery.GET_ASSERTIONSTATUSREPORT, 
-                                QueryStatus.SUCCESS, procTime);                      
-
-			return result;
-                } catch (DispositionReportFaultMessage drfm) {
-                    long procTime = System.currentTimeMillis() - startTime;
-                    serviceCounter.update(PublicationQuery.GET_ASSERTIONSTATUSREPORT, QueryStatus.FAILED, procTime);                      
-                    throw drfm;                                               
-		} finally {
-			if (tx.isActive()) {
-				tx.rollback();
-			}
-			em.close();
-		}
-	}
-
-	public List<PublisherAssertion> getPublisherAssertions(String authInfo)
-			throws DispositionReportFaultMessage {
-	        long startTime = System.currentTimeMillis();
-
-		EntityManager em = PersistenceManager.getEntityManager();
-		EntityTransaction tx = em.getTransaction();
-		try {
-			tx.begin();
-	
-			UddiEntityPublisher publisher = this.getEntityPublisher(em, authInfo);
-			
-			List<org.uddi.api_v3.PublisherAssertion> result = new ArrayList<org.uddi.api_v3.PublisherAssertion>(0);
-	
-			List<?> businessKeysFound = null;
-			businessKeysFound = FindBusinessByPublisherQuery.select(em, null, publisher, businessKeysFound);
-			
-			List<org.apache.juddi.model.PublisherAssertion> pubAssertionList = FindPublisherAssertionByBusinessQuery.select(em, businessKeysFound, null);
-                        if (pubAssertionList!=null)
-			for(org.apache.juddi.model.PublisherAssertion modelPubAssertion : pubAssertionList) {
-				org.uddi.api_v3.PublisherAssertion apiPubAssertion = new org.uddi.api_v3.PublisherAssertion();
-	
-				MappingModelToApi.mapPublisherAssertion(modelPubAssertion, apiPubAssertion);
-				
-				result.add(apiPubAssertion);
-			}
-			
-			tx.commit();
-                        long procTime = System.currentTimeMillis() - startTime;
-                        serviceCounter.update(PublicationQuery.GET_PUBLISHERASSERTIONS, 
-                                QueryStatus.SUCCESS, procTime);                      
-			return result;
-                } catch (DispositionReportFaultMessage drfm) {
-                    long procTime = System.currentTimeMillis() - startTime;
-                    serviceCounter.update(PublicationQuery.GET_PUBLISHERASSERTIONS, 
-                            QueryStatus.FAILED, procTime);                      
-                    throw drfm;                                               			
-		} finally {
-			if (tx.isActive()) {
-				tx.rollback();
-			}
-			em.close();
-		}
-	}
-
-
-	public RegisteredInfo getRegisteredInfo(GetRegisteredInfo body)
-			throws DispositionReportFaultMessage {
-	        long startTime = System.currentTimeMillis();
-
-		EntityManager em = PersistenceManager.getEntityManager();
-		EntityTransaction tx = em.getTransaction();
-		try {
-			tx.begin();
-	
-			UddiEntityPublisher publisher = this.getEntityPublisher(em, body.getAuthInfo());
-			
-			new ValidatePublish(publisher).validateRegisteredInfo(body);
-
-			List<?> businessKeysFound = null;
-			businessKeysFound = FindBusinessByPublisherQuery.select(em, null, publisher, businessKeysFound);
-	
-			
-			List<?> tmodelKeysFound = null;
-
-			if (body.getInfoSelection().equals(InfoSelection.HIDDEN))
-				tmodelKeysFound = FindTModelByPublisherQuery.select(em, null, publisher, tmodelKeysFound, new DynamicQuery.Parameter(TModelQuery.ENTITY_ALIAS + ".deleted",  Boolean.TRUE, DynamicQuery.PREDICATE_EQUALS));
-			else if (body.getInfoSelection().equals(InfoSelection.VISIBLE))
-				tmodelKeysFound = FindTModelByPublisherQuery.select(em, null, publisher, tmodelKeysFound, new DynamicQuery.Parameter(TModelQuery.ENTITY_ALIAS + ".deleted",  Boolean.FALSE, DynamicQuery.PREDICATE_EQUALS));
-			else
-				tmodelKeysFound = FindTModelByPublisherQuery.select(em, null, publisher, tmodelKeysFound);
-				
-			RegisteredInfo result = new RegisteredInfo();
-			
-			// Sort and retrieve the final results
-			List<?> queryResults = FetchBusinessEntitiesQuery.select(em, new FindQualifiers(), businessKeysFound, null, null, null);
-			if (queryResults.size() > 0) {
-				result.setBusinessInfos(new org.uddi.api_v3.BusinessInfos());
-				
-				for (Object item : queryResults) {
-					org.apache.juddi.model.BusinessEntity modelBusinessEntity = (org.apache.juddi.model.BusinessEntity)item;
-					org.uddi.api_v3.BusinessInfo apiBusinessInfo = new org.uddi.api_v3.BusinessInfo();
-					
-					MappingModelToApi.mapBusinessInfo(modelBusinessEntity, apiBusinessInfo);
-					
-					result.getBusinessInfos().getBusinessInfo().add(apiBusinessInfo);
-				}
-			}
-	
-			// Sort and retrieve the final results
-			queryResults = FetchTModelsQuery.select(em, new FindQualifiers(), tmodelKeysFound, null, null, null);
-			if (queryResults.size() > 0) {
-				result.setTModelInfos(new org.uddi.api_v3.TModelInfos());
-				
-				for (Object item : queryResults) {
-					org.apache.juddi.model.Tmodel modelTModel = (org.apache.juddi.model.Tmodel)item;
-					org.uddi.api_v3.TModelInfo apiTModelInfo = new org.uddi.api_v3.TModelInfo();
-					
-					MappingModelToApi.mapTModelInfo(modelTModel, apiTModelInfo);
-					
-					result.getTModelInfos().getTModelInfo().add(apiTModelInfo);
-				}
-			}
-			
-			tx.commit();	
-                        long procTime = System.currentTimeMillis() - startTime;
-                        serviceCounter.update(PublicationQuery.GET_REGISTEREDINFO, 
-                                QueryStatus.SUCCESS, procTime);                      
-
-			return result;
-                } catch (DispositionReportFaultMessage drfm) {
-                    long procTime = System.currentTimeMillis() - startTime;
-                    serviceCounter.update(PublicationQuery.GET_REGISTEREDINFO, 
-                            QueryStatus.FAILED, procTime);                      
-                    throw drfm;                                                                 
-		} finally {
-			if (tx.isActive()) {
-				tx.rollback();
-			}
-			em.close();
-		}
-	}
-
-
-	public BindingDetail saveBinding(SaveBinding body)
-			throws DispositionReportFaultMessage {
-	        long startTime = System.currentTimeMillis();
-
-		EntityManager em = PersistenceManager.getEntityManager();
-		EntityTransaction tx = em.getTransaction();
-		try {
-			tx.begin();
-			
-			UddiEntityPublisher publisher = this.getEntityPublisher(em, body.getAuthInfo());
-			
-			ValidatePublish validator = new ValidatePublish(publisher);
-			validator.validateSaveBinding(em, body, null);
-	
-			BindingDetail result = new BindingDetail();
-			
-			List<org.uddi.api_v3.BindingTemplate> apiBindingTemplateList = body.getBindingTemplate();
-			for (org.uddi.api_v3.BindingTemplate apiBindingTemplate : apiBindingTemplateList) {
-				
-				org.apache.juddi.model.BindingTemplate modelBindingTemplate = new org.apache.juddi.model.BindingTemplate();
-                                
-				org.apache.juddi.model.BusinessService modelBusinessService = new org.apache.juddi.model.BusinessService();
-				modelBusinessService.setEntityKey(apiBindingTemplate.getServiceKey());
-				
-				MappingApiToModel.mapBindingTemplate(apiBindingTemplate, modelBindingTemplate, modelBusinessService);
-	
-				setOperationalInfo(em, modelBindingTemplate, publisher, false);
-	
-				em.persist(modelBindingTemplate);
-				
-				result.getBindingTemplate().add(apiBindingTemplate);
-				
-				validator.validateSaveBindingMax(em, modelBindingTemplate.getBusinessService().getEntityKey());
-			}
-	
-			tx.commit();
-                        long procTime = System.currentTimeMillis() - startTime;
-                        serviceCounter.update(PublicationQuery.SAVE_BINDING, 
-                                QueryStatus.SUCCESS, procTime);                      
-
-			return result;
-                } catch (DispositionReportFaultMessage drfm) {
-                    long procTime = System.currentTimeMillis() - startTime;
-                    serviceCounter.update(PublicationQuery.SAVE_BINDING, 
-                            QueryStatus.FAILED, procTime);                      
-                    throw drfm;                                                                 
-		} finally {
-			if (tx.isActive()) {
-				tx.rollback();
-			}
-			em.close();
-		}
-	}
-
-
-	public BusinessDetail saveBusiness(SaveBusiness body)
-			throws DispositionReportFaultMessage {
-	        long startTime = System.currentTimeMillis();
-               if (!body.getBusinessEntity().isEmpty()) {
-                log.debug("Inbound save business request for key " + body.getBusinessEntity().get(0).getBusinessKey());
-                 }
-                EntityManager em = PersistenceManager.getEntityManager();
-		EntityTransaction tx = em.getTransaction();
-		try {
-			tx.begin();
-			
-			UddiEntityPublisher publisher = this.getEntityPublisher(em, body.getAuthInfo());
-			
-			ValidatePublish validator = new ValidatePublish(publisher);
-			validator.validateSaveBusiness(em, body, null);
-	
-			BusinessDetail result = new BusinessDetail();
-			
-			List<org.uddi.api_v3.BusinessEntity> apiBusinessEntityList = body.getBusinessEntity();
-			for (org.uddi.api_v3.BusinessEntity apiBusinessEntity : apiBusinessEntityList) {
-				
-				org.apache.juddi.model.BusinessEntity modelBusinessEntity = new org.apache.juddi.model.BusinessEntity();
-				
-				MappingApiToModel.mapBusinessEntity(apiBusinessEntity, modelBusinessEntity);
-
-				setOperationalInfo(em, modelBusinessEntity, publisher);
-	
-				em.persist(modelBusinessEntity);
-	
-				result.getBusinessEntity().add(apiBusinessEntity);
-			}
-			
-			//check how many business this publisher owns.
-			validator.validateSaveBusinessMax(em);
-	
-			tx.commit();
-                        long procTime = System.currentTimeMillis() - startTime;
-                        serviceCounter.update(PublicationQuery.SAVE_BUSINESS, 
-                                QueryStatus.SUCCESS, procTime);                      
-
-			return result;
-                } catch (DispositionReportFaultMessage drfm) {
-                    long procTime = System.currentTimeMillis() - startTime;
-                    serviceCounter.update(PublicationQuery.SAVE_BUSINESS, 
-                            QueryStatus.FAILED, procTime);                      
-                    throw drfm;                                                                 	
-		} finally {
-			if (tx.isActive()) {
-				tx.rollback();
-			}
-			em.close();
-		}
-	}
-
-
-	public ServiceDetail saveService(SaveService body)
-			throws DispositionReportFaultMessage {
-	        long startTime = System.currentTimeMillis();
-
-		EntityManager em = PersistenceManager.getEntityManager();
-		EntityTransaction tx = em.getTransaction();
-		try {
-			tx.begin();
-	
-			UddiEntityPublisher publisher = this.getEntityPublisher(em, body.getAuthInfo());
-			
-			ValidatePublish validator = new ValidatePublish(publisher);
-			validator.validateSaveService(em, body, null);
-			
-			ServiceDetail result = new ServiceDetail();
-	
-			List<org.uddi.api_v3.BusinessService> apiBusinessServiceList = body.getBusinessService();
-			for (org.uddi.api_v3.BusinessService apiBusinessService : apiBusinessServiceList) {
-				
-				org.apache.juddi.model.BusinessService modelBusinessService = new org.apache.juddi.model.BusinessService();
-				org.apache.juddi.model.BusinessEntity modelBusinessEntity = new org.apache.juddi.model.BusinessEntity();
-				modelBusinessEntity.setEntityKey(apiBusinessService.getBusinessKey());
-				
-				MappingApiToModel.mapBusinessService(apiBusinessService, modelBusinessService, modelBusinessEntity);
-	
-				setOperationalInfo(em, modelBusinessService, publisher, false);
-
-				em.persist(modelBusinessService);
-				
-				result.getBusinessService().add(apiBusinessService);
-				
-				validator.validateSaveServiceMax(em, modelBusinessService.getBusinessEntity().getEntityKey());
-			}
-			
-			
-			tx.commit();
-                        long procTime = System.currentTimeMillis() - startTime;
-                        serviceCounter.update(PublicationQuery.SAVE_SERVICE, 
-                                QueryStatus.SUCCESS, procTime);                      
-
-			return result;
-                } catch (DispositionReportFaultMessage drfm) {
-                    long procTime = System.currentTimeMillis() - startTime;
-                    serviceCounter.update(PublicationQuery.SAVE_SERVICE, 
-                            QueryStatus.FAILED, procTime);                      
-                    throw drfm;                                                                         			
-		} finally {
-			if (tx.isActive()) {
-				tx.rollback();
-			}
-			em.close();
-		}
-	}
-
-
-	public TModelDetail saveTModel(SaveTModel body)
-			throws DispositionReportFaultMessage {
-	        long startTime = System.currentTimeMillis();
-
-		EntityManager em = PersistenceManager.getEntityManager();
-		EntityTransaction tx = em.getTransaction();
-		try {
-			tx.begin();
-	
-			UddiEntityPublisher publisher = this.getEntityPublisher(em, body.getAuthInfo());
-	
-			new ValidatePublish(publisher).validateSaveTModel(em, body, null);
-	
-			TModelDetail result = new TModelDetail();
-	
-			List<org.uddi.api_v3.TModel> apiTModelList = body.getTModel();
-			for (org.uddi.api_v3.TModel apiTModel : apiTModelList) {
-				
-				org.apache.juddi.model.Tmodel modelTModel = new org.apache.juddi.model.Tmodel();
-				
-				MappingApiToModel.mapTModel(apiTModel, modelTModel);
-	
-				setOperationalInfo(em, modelTModel, publisher);
-	
-				em.persist(modelTModel);
-				
-				result.getTModel().add(apiTModel);
-				
-			}
-	
-			tx.commit();
-                        long procTime = System.currentTimeMillis() - startTime;
-                        serviceCounter.update(PublicationQuery.SAVE_TMODEL, 
-                                QueryStatus.SUCCESS, procTime);                      
-
-			return result;
-                } catch (DispositionReportFaultMessage drfm) {
-                    long procTime = System.currentTimeMillis() - startTime;
-                    serviceCounter.update(PublicationQuery.SAVE_TMODEL, 
-                            QueryStatus.FAILED, procTime);                      
-                    throw drfm;                                                                                                 
-		} finally {
-			if (tx.isActive()) {
-				tx.rollback();
-			}
-			em.close();
-		}
-	}
-
-
-	public void setPublisherAssertions(String authInfo,
-			Holder<List<PublisherAssertion>> publisherAssertion)
-			throws DispositionReportFaultMessage {
-	        long startTime = System.currentTimeMillis();
-
-		EntityManager em = PersistenceManager.getEntityManager();
-		EntityTransaction tx = em.getTransaction();
-		try {
-			tx.begin();
-	
-			UddiEntityPublisher publisher = this.getEntityPublisher(em, authInfo);
-			
-			new ValidatePublish(publisher).validateSetPublisherAssertions(em, publisherAssertion);
-			
-			List<?> businessKeysFound = null;
-			businessKeysFound = FindBusinessByPublisherQuery.select(em, null, publisher, businessKeysFound);
-	
-			// First, wipe out all previous assertions associated with this publisher
-			DeletePublisherAssertionByBusinessQuery.delete(em, businessKeysFound);
-			
-			// Slate is clean for all assertions involving this publisher, now we simply need to add the new ones (and they will all be "new").
-			List<org.uddi.api_v3.PublisherAssertion> apiPubAssertionList = publisherAssertion.value;
-			for (org.uddi.api_v3.PublisherAssertion apiPubAssertion : apiPubAssertionList) {
-				
-				org.apache.juddi.model.PublisherAssertion modelPubAssertion = new org.apache.juddi.model.PublisherAssertion();
-				
-				MappingApiToModel.mapPublisherAssertion(apiPubAssertion, modelPubAssertion);
-				
-				org.apache.juddi.model.BusinessEntity beFrom = em.find(org.apache.juddi.model.BusinessEntity.class, modelPubAssertion.getId().getFromKey());
-				org.apache.juddi.model.BusinessEntity beTo = em.find(org.apache.juddi.model.BusinessEntity.class, modelPubAssertion.getId().getToKey());
-				modelPubAssertion.setBusinessEntityByFromKey(beFrom);
-				modelPubAssertion.setBusinessEntityByToKey(beTo);
-				
-				modelPubAssertion.setFromCheck("false");
-				modelPubAssertion.setToCheck("false");
-				
-				em.persist(modelPubAssertion);
-	
-				if (publisher.isOwner(modelPubAssertion.getBusinessEntityByFromKey()))
-					modelPubAssertion.setFromCheck("true");
-				if (publisher.isOwner(modelPubAssertion.getBusinessEntityByToKey()))
-					modelPubAssertion.setToCheck("true");
-				
-			}
-	
-			tx.commit();
-                        long procTime = System.currentTimeMillis() - startTime;
-                        serviceCounter.update(PublicationQuery.SET_PUBLISHERASSERTIONS, 
-                                QueryStatus.SUCCESS, procTime);                      
-                } catch (DispositionReportFaultMessage drfm) {
-                    long procTime = System.currentTimeMillis() - startTime;
-                    serviceCounter.update(PublicationQuery.SET_PUBLISHERASSERTIONS, 
-                            QueryStatus.FAILED, procTime);                      
-                    throw drfm;                                                                                                 
-		} finally {
-			if (tx.isActive()) {
-				tx.rollback();
-			}
-			em.close();
-		}
-	}
-
-	private void setOperationalInfo(EntityManager em, org.apache.juddi.model.BusinessEntity uddiEntity, UddiEntityPublisher publisher) throws DispositionReportFaultMessage {
-
-		uddiEntity.setAuthorizedName(publisher.getAuthorizedName());
-
-		Date now = new Date();
-		uddiEntity.setModified(now);
-		uddiEntity.setModifiedIncludingChildren(now);
-
-		String nodeId = "";
-		try 
-		{ nodeId = AppConfig.getConfiguration().getString(Property.JUDDI_NODE_ID); } 
-		catch (ConfigurationException ce) 
-		{ throw new FatalErrorException(new ErrorMessage("errors.configuration.Retrieval", Property.JUDDI_NODE_ID)); }
-		uddiEntity.setNodeId(nodeId);
-		
-		org.apache.juddi.model.BusinessEntity existingUddiEntity = em.find(uddiEntity.getClass(), uddiEntity.getEntityKey());
-		if (existingUddiEntity != null)
-			uddiEntity.setCreated(existingUddiEntity.getCreated());
-		else
-			uddiEntity.setCreated(now);
-		
-		List<org.apache.juddi.model.BusinessService> serviceList = uddiEntity.getBusinessServices();
-		for (org.apache.juddi.model.BusinessService service : serviceList)
-			setOperationalInfo(em, service, publisher, true);
-		
-		
-		if (existingUddiEntity != null)
-			em.remove(existingUddiEntity);
-		
-	}
-
-	private void setOperationalInfo(EntityManager em, org.apache.juddi.model.BusinessService uddiEntity, UddiEntityPublisher publisher, boolean isChild) throws DispositionReportFaultMessage {
-
-		uddiEntity.setAuthorizedName(publisher.getAuthorizedName());
-
-		Date now = new Date();
-		uddiEntity.setModified(now);
-		uddiEntity.setModifiedIncludingChildren(now);
-		
-		if(!isChild) {
-			org.apache.juddi.model.BusinessEntity parent = em.find(org.apache.juddi.model.BusinessEntity.class, uddiEntity.getBusinessEntity().getEntityKey());
-			parent.setModifiedIncludingChildren(now);
-			em.persist(parent);
-		}
-
-		String nodeId = "";
-		try 
-		{ nodeId = AppConfig.getConfiguration().getString(Property.JUDDI_NODE_ID); } 
-		catch (ConfigurationException ce) 
-		{ throw new FatalErrorException(new ErrorMessage("errors.configuration.Retrieval", Property.JUDDI_NODE_ID)); }
-		uddiEntity.setNodeId(nodeId);
-		
-		org.apache.juddi.model.BusinessService existingUddiEntity = em.find(uddiEntity.getClass(), uddiEntity.getEntityKey());
-		if (existingUddiEntity != null) {
-			uddiEntity.setCreated(existingUddiEntity.getCreated());
-		}
-		else
-			uddiEntity.setCreated(now);
-		
-		List<org.apache.juddi.model.BindingTemplate> bindingList = uddiEntity.getBindingTemplates();
-		for (org.apache.juddi.model.BindingTemplate binding : bindingList)
-			setOperationalInfo(em, binding, publisher, true);
-		
-		
-		if (existingUddiEntity != null)
-			em.remove(existingUddiEntity);
-		
-	}
-
-	private void setOperationalInfo(EntityManager em, org.apache.juddi.model.BindingTemplate uddiEntity, UddiEntityPublisher publisher, boolean isChild) throws DispositionReportFaultMessage {
-
-		uddiEntity.setAuthorizedName(publisher.getAuthorizedName());
-
-		Date now = new Date();
-		uddiEntity.setModified(now);
-		uddiEntity.setModifiedIncludingChildren(now);
-
-		if(!isChild) {
-			org.apache.juddi.model.BusinessService parent = em.find(org.apache.juddi.model.BusinessService.class, uddiEntity.getBusinessService().getEntityKey());
-			parent.setModifiedIncludingChildren(now);
-			em.persist(parent);
-			
-			// JUDDI-421:  now the businessEntity parent will have it's modifiedIncludingChildren set
-			org.apache.juddi.model.BusinessEntity businessParent = em.find(org.apache.juddi.model.BusinessEntity.class, parent.getBusinessEntity().getEntityKey());
-			businessParent.setModifiedIncludingChildren(now);
-			em.persist(businessParent);
-		}
-
-		String nodeId = "";
-		try 
-		{ nodeId = AppConfig.getConfiguration().getString(Property.JUDDI_NODE_ID); } 
-		catch (ConfigurationException ce) 
-		{ throw new FatalErrorException(new ErrorMessage("errors.configuration.Retrieval", Property.JUDDI_NODE_ID)); }
-		uddiEntity.setNodeId(nodeId);
-		
-		org.apache.juddi.model.BindingTemplate existingUddiEntity = em.find(uddiEntity.getClass(), uddiEntity.getEntityKey());
-		if (existingUddiEntity != null)
-			uddiEntity.setCreated(existingUddiEntity.getCreated());
-		else
-			uddiEntity.setCreated(now);
-		
-		if (existingUddiEntity != null)
-			em.remove(existingUddiEntity);
-		
-	}
-	
-	private void setOperationalInfo(EntityManager em, org.apache.juddi.model.Tmodel uddiEntity, UddiEntityPublisher publisher) throws DispositionReportFaultMessage {
-
-		uddiEntity.setAuthorizedName(publisher.getAuthorizedName());
-		
-		Date now = new Date();
-		uddiEntity.setModified(now);
-		uddiEntity.setModifiedIncludingChildren(now);
-
-		String nodeId = "";
-		try 
-		{ nodeId = AppConfig.getConfiguration().getString(Property.JUDDI_NODE_ID); } 
-		catch (ConfigurationException ce) 
-		{ throw new FatalErrorException(new ErrorMessage("errors.configuration.Retrieval", Property.JUDDI_NODE_ID)); }
-		uddiEntity.setNodeId(nodeId);
-		
-		org.apache.juddi.model.Tmodel existingUddiEntity = em.find(uddiEntity.getClass(), uddiEntity.getEntityKey());
-		if (existingUddiEntity != null)
-			uddiEntity.setCreated(existingUddiEntity.getCreated());
-		else
-			uddiEntity.setCreated(now);
-		
-		if (existingUddiEntity != null)
-			em.remove(existingUddiEntity);
-		
-	}
 
-	
+        @Override
+        public void deletePublisherAssertions(DeletePublisherAssertions body)
+                throws DispositionReportFaultMessage {
+                long startTime = System.currentTimeMillis();
+
+                EntityManager em = PersistenceManager.getEntityManager();
+                EntityTransaction tx = em.getTransaction();
+                try {
+                        tx.begin();
+
+                        UddiEntityPublisher publisher = this.getEntityPublisher(em, body.getAuthInfo());
+
+                        new ValidatePublish(publisher).validateDeletePublisherAssertions(em, body);
+
+                        List<org.uddi.api_v3.PublisherAssertion> entityList = body.getPublisherAssertion();
+                        for (org.uddi.api_v3.PublisherAssertion entity : entityList) {
+                                org.apache.juddi.model.PublisherAssertionId pubAssertionId = new org.apache.juddi.model.PublisherAssertionId(entity.getFromKey(), entity.getToKey());
+                                Object obj = em.find(org.apache.juddi.model.PublisherAssertion.class, pubAssertionId);
+                                em.remove(obj);
+                        }
+
+                        tx.commit();
+                        long procTime = System.currentTimeMillis() - startTime;
+                        serviceCounter.update(PublicationQuery.DELETE_PUBLISHERASSERTIONS,
+                                QueryStatus.SUCCESS, procTime);
+                        ReplicationNotifier.Enqueue(body);
+                } catch (DispositionReportFaultMessage drfm) {
+                        long procTime = System.currentTimeMillis() - startTime;
+                        serviceCounter.update(PublicationQuery.DELETE_PUBLISHERASSERTIONS, QueryStatus.FAILED, procTime);
+                        throw drfm;
+                } finally {
+                        if (tx.isActive()) {
+                                tx.rollback();
+                        }
+                        em.close();
+                }
+        }
+
+        @Override
+        public void deleteService(DeleteService body)
+                throws DispositionReportFaultMessage {
+                long startTime = System.currentTimeMillis();
+
+                EntityManager em = PersistenceManager.getEntityManager();
+                EntityTransaction tx = em.getTransaction();
+                try {
+                        tx.begin();
+
+                        UddiEntityPublisher publisher = this.getEntityPublisher(em, body.getAuthInfo());
+
+                        new ValidatePublish(publisher).validateDeleteService(em, body);
+
+                        List<String> entityKeyList = body.getServiceKey();
+                        for (String entityKey : entityKeyList) {
+                                Object obj = em.find(org.apache.juddi.model.BusinessService.class, entityKey);
+
+                                ((org.apache.juddi.model.BusinessService) obj).getBusinessEntity().setModifiedIncludingChildren(new Date());
+
+                                em.remove(obj);
+                        }
+
+                        tx.commit();
+                        long procTime = System.currentTimeMillis() - startTime;
+                        serviceCounter.update(PublicationQuery.DELETE_SERVICE,
+                                QueryStatus.SUCCESS, procTime);
+                        ReplicationNotifier.Enqueue(body);
+                } catch (DispositionReportFaultMessage drfm) {
+                        long procTime = System.currentTimeMillis() - startTime;
+                        serviceCounter.update(PublicationQuery.DELETE_SERVICE, QueryStatus.FAILED, procTime);
+                        throw drfm;
+                } finally {
+                        if (tx.isActive()) {
+                                tx.rollback();
+                        }
+                        em.close();
+                }
+        }
+
+        @Override
+        public void deleteTModel(DeleteTModel body)
+                throws DispositionReportFaultMessage {
+                long startTime = System.currentTimeMillis();
+
+                EntityManager em = PersistenceManager.getEntityManager();
+                EntityTransaction tx = em.getTransaction();
+                try {
+                        tx.begin();
+
+                        UddiEntityPublisher publisher = this.getEntityPublisher(em, body.getAuthInfo());
+
+                        new ValidatePublish(publisher).validateDeleteTModel(em, body);
+
+                        // tModels are only lazily deleted!
+                        List<String> entityKeyList = body.getTModelKey();
+                        for (String entityKey : entityKeyList) {
+                                Object obj = em.find(org.apache.juddi.model.Tmodel.class, entityKey);
+                                ((org.apache.juddi.model.Tmodel) obj).setDeleted(true);
+
+                        }
+
+                        tx.commit();
+                        ReplicationNotifier.Enqueue(body);
+                        long procTime = System.currentTimeMillis() - startTime;
+                        serviceCounter.update(PublicationQuery.DELETE_TMODEL, QueryStatus.SUCCESS, procTime);
+                } catch (DispositionReportFaultMessage drfm) {
+                        long procTime = System.currentTimeMillis() - startTime;
+                        serviceCounter.update(PublicationQuery.DELETE_TMODEL, QueryStatus.FAILED, procTime);
+                        throw drfm;
+                } finally {
+                        if (tx.isActive()) {
+                                tx.rollback();
+                        }
+                        em.close();
+                }
+        }
+
+        @Override
+        public List<AssertionStatusItem> getAssertionStatusReport(String authInfo,
+                CompletionStatus completionStatus)
+                throws DispositionReportFaultMessage {
+                long startTime = System.currentTimeMillis();
+
+                EntityManager em = PersistenceManager.getEntityManager();
+                EntityTransaction tx = em.getTransaction();
+                try {
+                        tx.begin();
+
+                        UddiEntityPublisher publisher = this.getEntityPublisher(em, authInfo);
+
+                        List<org.uddi.api_v3.AssertionStatusItem> result = PublicationHelper.getAssertionStatusItemList(publisher, completionStatus, em);
+
+                        tx.commit();
+                        long procTime = System.currentTimeMillis() - startTime;
+                        serviceCounter.update(PublicationQuery.GET_ASSERTIONSTATUSREPORT,
+                                QueryStatus.SUCCESS, procTime);
+
+                        return result;
+                } catch (DispositionReportFaultMessage drfm) {
+                        long procTime = System.currentTimeMillis() - startTime;
+                        serviceCounter.update(PublicationQuery.GET_ASSERTIONSTATUSREPORT, QueryStatus.FAILED, procTime);
+                        throw drfm;
+                } finally {
+                        if (tx.isActive()) {
+                                tx.rollback();
+                        }
+                        em.close();
+                }
+        }
+
+        @Override
+        public List<PublisherAssertion> getPublisherAssertions(String authInfo)
+                throws DispositionReportFaultMessage {
+                long startTime = System.currentTimeMillis();
+
+                EntityManager em = PersistenceManager.getEntityManager();
+                EntityTransaction tx = em.getTransaction();
+                try {
+                        tx.begin();
+
+                        UddiEntityPublisher publisher = this.getEntityPublisher(em, authInfo);
+
+                        List<org.uddi.api_v3.PublisherAssertion> result = new ArrayList<org.uddi.api_v3.PublisherAssertion>(0);
+
+                        List<?> businessKeysFound = null;
+                        businessKeysFound = FindBusinessByPublisherQuery.select(em, null, publisher, businessKeysFound);
+
+                        List<org.apache.juddi.model.PublisherAssertion> pubAssertionList = FindPublisherAssertionByBusinessQuery.select(em, businessKeysFound, null);
+                        if (pubAssertionList != null) {
+                                for (org.apache.juddi.model.PublisherAssertion modelPubAssertion : pubAssertionList) {
+                                        org.uddi.api_v3.PublisherAssertion apiPubAssertion = new org.uddi.api_v3.PublisherAssertion();
+
+                                        MappingModelToApi.mapPublisherAssertion(modelPubAssertion, apiPubAssertion);
+
+                                        result.add(apiPubAssertion);
+                                }
+                        }
+
+                        tx.commit();
+                        long procTime = System.currentTimeMillis() - startTime;
+                        serviceCounter.update(PublicationQuery.GET_PUBLISHERASSERTIONS,
+                                QueryStatus.SUCCESS, procTime);
+                        return result;
+                } catch (DispositionReportFaultMessage drfm) {
+                        long procTime = System.currentTimeMillis() - startTime;
+                        serviceCounter.update(PublicationQuery.GET_PUBLISHERASSERTIONS,
+                                QueryStatus.FAILED, procTime);
+                        throw drfm;
+                } finally {
+                        if (tx.isActive()) {
+                                tx.rollback();
+                        }
+                        em.close();
+                }
+        }
+
+        @Override
+        public RegisteredInfo getRegisteredInfo(GetRegisteredInfo body)
+                throws DispositionReportFaultMessage {
+                long startTime = System.currentTimeMillis();
+
+                EntityManager em = PersistenceManager.getEntityManager();
+                EntityTransaction tx = em.getTransaction();
+                try {
+                        tx.begin();
+
+                        UddiEntityPublisher publisher = this.getEntityPublisher(em, body.getAuthInfo());
+
+                        new ValidatePublish(publisher).validateRegisteredInfo(body);
+
+                        List<?> businessKeysFound = null;
+                        businessKeysFound = FindBusinessByPublisherQuery.select(em, null, publisher, businessKeysFound);
+
+
+                        List<?> tmodelKeysFound = null;
+
+                        if (body.getInfoSelection().equals(InfoSelection.HIDDEN)) {
+                                tmodelKeysFound = FindTModelByPublisherQuery.select(em, null, publisher, tmodelKeysFound, new DynamicQuery.Parameter(TModelQuery.ENTITY_ALIAS + ".deleted", Boolean.TRUE, DynamicQuery.PREDICATE_EQUALS));
+                        } else if (body.getInfoSelection().equals(InfoSelection.VISIBLE)) {
+                                tmodelKeysFound = FindTModelByPublisherQuery.select(em, null, publisher, tmodelKeysFound, new DynamicQuery.Parameter(TModelQuery.ENTITY_ALIAS + ".deleted", Boolean.FALSE, DynamicQuery.PREDICATE_EQUALS));
+                        } else {
+                                tmodelKeysFound = FindTModelByPublisherQuery.select(em, null, publisher, tmodelKeysFound);
+                        }
+
+                        RegisteredInfo result = new RegisteredInfo();
+
+                        // Sort and retrieve the final results
+                        List<?> queryResults = FetchBusinessEntitiesQuery.select(em, new FindQualifiers(), businessKeysFound, null, null, null);
+                        if (queryResults.size() > 0) {
+                                result.setBusinessInfos(new org.uddi.api_v3.BusinessInfos());
+
+                                for (Object item : queryResults) {
+                                        org.apache.juddi.model.BusinessEntity modelBusinessEntity = (org.apache.juddi.model.BusinessEntity) item;
+                                        org.uddi.api_v3.BusinessInfo apiBusinessInfo = new org.uddi.api_v3.BusinessInfo();
+
+                                        MappingModelToApi.mapBusinessInfo(modelBusinessEntity, apiBusinessInfo);
+
+                                        result.getBusinessInfos().getBusinessInfo().add(apiBusinessInfo);
+                                }
+                        }
+
+                        // Sort and retrieve the final results
+                        queryResults = FetchTModelsQuery.select(em, new FindQualifiers(), tmodelKeysFound, null, null, null);
+                        if (queryResults.size() > 0) {
+                                result.setTModelInfos(new org.uddi.api_v3.TModelInfos());
+
+                                for (Object item : queryResults) {
+                                        org.apache.juddi.model.Tmodel modelTModel = (org.apache.juddi.model.Tmodel) item;
+                                        org.uddi.api_v3.TModelInfo apiTModelInfo = new org.uddi.api_v3.TModelInfo();
+
+                                        MappingModelToApi.mapTModelInfo(modelTModel, apiTModelInfo);
+
+                                        result.getTModelInfos().getTModelInfo().add(apiTModelInfo);
+                                }
+                        }
+
+                        tx.commit();
+                        long procTime = System.currentTimeMillis() - startTime;
+                        serviceCounter.update(PublicationQuery.GET_REGISTEREDINFO,
+                                QueryStatus.SUCCESS, procTime);
+
+                        return result;
+                } catch (DispositionReportFaultMessage drfm) {
+                        long procTime = System.currentTimeMillis() - startTime;
+                        serviceCounter.update(PublicationQuery.GET_REGISTEREDINFO,
+                                QueryStatus.FAILED, procTime);
+                        throw drfm;
+                } finally {
+                        if (tx.isActive()) {
+                                tx.rollback();
+                        }
+                        em.close();
+                }
+        }
+
+        @Override
+        public BindingDetail saveBinding(SaveBinding body)
+                throws DispositionReportFaultMessage {
+                long startTime = System.currentTimeMillis();
+
+                EntityManager em = PersistenceManager.getEntityManager();
+                EntityTransaction tx = em.getTransaction();
+                try {
+                        tx.begin();
+
+                        UddiEntityPublisher publisher = this.getEntityPublisher(em, body.getAuthInfo());
+
+                        ValidatePublish validator = new ValidatePublish(publisher);
+                        validator.validateSaveBinding(em, body, null);
+
+                        BindingDetail result = new BindingDetail();
+
+                        List<org.uddi.api_v3.BindingTemplate> apiBindingTemplateList = body.getBindingTemplate();
+                        for (org.uddi.api_v3.BindingTemplate apiBindingTemplate : apiBindingTemplateList) {
+
+                                org.apache.juddi.model.BindingTemplate modelBindingTemplate = new org.apache.juddi.model.BindingTemplate();
+
+                                org.apache.juddi.model.BusinessService modelBusinessService = new org.apache.juddi.model.BusinessService();
+                                modelBusinessService.setEntityKey(apiBindingTemplate.getServiceKey());
+
+                                MappingApiToModel.mapBindingTemplate(apiBindingTemplate, modelBindingTemplate, modelBusinessService);
+
+                                setOperationalInfo(em, modelBindingTemplate, publisher, false);
+
+                                em.persist(modelBindingTemplate);
+
+                                result.getBindingTemplate().add(apiBindingTemplate);
+
+                                validator.validateSaveBindingMax(em, modelBindingTemplate.getBusinessService().getEntityKey());
+                        }
+
+                        tx.commit();
+                        long procTime = System.currentTimeMillis() - startTime;
+                        serviceCounter.update(PublicationQuery.SAVE_BINDING,
+                                QueryStatus.SUCCESS, procTime);
+
+                        ReplicationNotifier.Enqueue(result);
+                        return result;
+                } catch (DispositionReportFaultMessage drfm) {
+                        long procTime = System.currentTimeMillis() - startTime;
+                        serviceCounter.update(PublicationQuery.SAVE_BINDING,
+                                QueryStatus.FAILED, procTime);
+                        throw drfm;
+                } finally {
+                        if (tx.isActive()) {
+                                tx.rollback();
+                        }
+                        em.close();
+                }
+        }
+
+        @Override
+        public BusinessDetail saveBusiness(SaveBusiness body)
+                throws DispositionReportFaultMessage {
+                long startTime = System.currentTimeMillis();
+                if (!body.getBusinessEntity().isEmpty()) {
+                        log.debug("Inbound save business request for key " + body.getBusinessEntity().get(0).getBusinessKey());
+                }
+                EntityManager em = PersistenceManager.getEntityManager();
+                EntityTransaction tx = em.getTransaction();
+                try {
+                        tx.begin();
+
+                        UddiEntityPublisher publisher = this.getEntityPublisher(em, body.getAuthInfo());
+
+                        ValidatePublish validator = new ValidatePublish(publisher);
+                        validator.validateSaveBusiness(em, body, null);
+
+                        BusinessDetail result = new BusinessDetail();
+
+                        List<org.uddi.api_v3.BusinessEntity> apiBusinessEntityList = body.getBusinessEntity();
+                        for (org.uddi.api_v3.BusinessEntity apiBusinessEntity : apiBusinessEntityList) {
+
+                                org.apache.juddi.model.BusinessEntity modelBusinessEntity = new org.apache.juddi.model.BusinessEntity();
+
+                                MappingApiToModel.mapBusinessEntity(apiBusinessEntity, modelBusinessEntity);
+
+                                setOperationalInfo(em, modelBusinessEntity, publisher);
+
+                                em.persist(modelBusinessEntity);
+
+                                result.getBusinessEntity().add(apiBusinessEntity);
+                        }
+
+                        //check how many business this publisher owns.
+                        validator.validateSaveBusinessMax(em);
+
+                        tx.commit();
+                        long procTime = System.currentTimeMillis() - startTime;
+                        serviceCounter.update(PublicationQuery.SAVE_BUSINESS,
+                                QueryStatus.SUCCESS, procTime);
+
+                        ReplicationNotifier.Enqueue(result);
+                        return result;
+                } catch (DispositionReportFaultMessage drfm) {
+                        long procTime = System.currentTimeMillis() - startTime;
+                        serviceCounter.update(PublicationQuery.SAVE_BUSINESS,
+                                QueryStatus.FAILED, procTime);
+                        throw drfm;
+                } finally {
+                        if (tx.isActive()) {
+                                tx.rollback();
+                        }
+                        em.close();
+                }
+        }
+
+        @Override
+        public ServiceDetail saveService(SaveService body)
+                throws DispositionReportFaultMessage {
+                long startTime = System.currentTimeMillis();
+
+                EntityManager em = PersistenceManager.getEntityManager();
+                EntityTransaction tx = em.getTransaction();
+                try {
+                        tx.begin();
+
+                        UddiEntityPublisher publisher = this.getEntityPublisher(em, body.getAuthInfo());
+
+                        ValidatePublish validator = new ValidatePublish(publisher);
+                        validator.validateSaveService(em, body, null);
+
+                        ServiceDetail result = new ServiceDetail();
+
+                        List<org.uddi.api_v3.BusinessService> apiBusinessServiceList = body.getBusinessService();
+                        for (org.uddi.api_v3.BusinessService apiBusinessService : apiBusinessServiceList) {
+
+                                org.apache.juddi.model.BusinessService modelBusinessService = new org.apache.juddi.model.BusinessService();
+                                org.apache.juddi.model.BusinessEntity modelBusinessEntity = new org.apache.juddi.model.BusinessEntity();
+                                modelBusinessEntity.setEntityKey(apiBusinessService.getBusinessKey());
+
+                                MappingApiToModel.mapBusinessService(apiBusinessService, modelBusinessService, modelBusinessEntity);
+
+                                setOperationalInfo(em, modelBusinessService, publisher, false);
+
+                                em.persist(modelBusinessService);
+
+                                result.getBusinessService().add(apiBusinessService);
+
+                                validator.validateSaveServiceMax(em, modelBusinessService.getBusinessEntity().getEntityKey());
+                        }
+
+
+                        tx.commit();
+                        long procTime = System.currentTimeMillis() - startTime;
+                        serviceCounter.update(PublicationQuery.SAVE_SERVICE,
+                                QueryStatus.SUCCESS, procTime);
+                        ReplicationNotifier.Enqueue(result);
+                        return result;
+                } catch (DispositionReportFaultMessage drfm) {
+                        long procTime = System.currentTimeMillis() - startTime;
+                        serviceCounter.update(PublicationQuery.SAVE_SERVICE,
+                                QueryStatus.FAILED, procTime);
+                        throw drfm;
+                } finally {
+                        if (tx.isActive()) {
+                                tx.rollback();
+                        }
+                        em.close();
+                }
+        }
+
+        @Override
+        public TModelDetail saveTModel(SaveTModel body)
+                throws DispositionReportFaultMessage {
+                long startTime = System.currentTimeMillis();
+
+                EntityManager em = PersistenceManager.getEntityManager();
+                EntityTransaction tx = em.getTransaction();
+                try {
+                        tx.begin();
+
+                        UddiEntityPublisher publisher = this.getEntityPublisher(em, body.getAuthInfo());
+
+                        new ValidatePublish(publisher).validateSaveTModel(em, body, null);
+
+                        TModelDetail result = new TModelDetail();
+
+                        List<org.uddi.api_v3.TModel> apiTModelList = body.getTModel();
+                        for (org.uddi.api_v3.TModel apiTModel : apiTModelList) {
+
+                                org.apache.juddi.model.Tmodel modelTModel = new org.apache.juddi.model.Tmodel();
+
+                                MappingApiToModel.mapTModel(apiTModel, modelTModel);
+
+                                setOperationalInfo(em, modelTModel, publisher);
+
+                                em.persist(modelTModel);
+
+                                result.getTModel().add(apiTModel);
+
+                        }
+
+                        tx.commit();
+                        long procTime = System.currentTimeMillis() - startTime;
+                        serviceCounter.update(PublicationQuery.SAVE_TMODEL,
+                                QueryStatus.SUCCESS, procTime);
+                        ReplicationNotifier.Enqueue(result);
+                        return result;
+                } catch (DispositionReportFaultMessage drfm) {
+                        long procTime = System.currentTimeMillis() - startTime;
+                        serviceCounter.update(PublicationQuery.SAVE_TMODEL,
+                                QueryStatus.FAILED, procTime);
+                        throw drfm;
+                } finally {
+                        if (tx.isActive()) {
+                                tx.rollback();
+                        }
+                        em.close();
+                }
+        }
+
+        @Override
+        public void setPublisherAssertions(String authInfo,
+                Holder<List<PublisherAssertion>> publisherAssertion)
+                throws DispositionReportFaultMessage {
+                long startTime = System.currentTimeMillis();
+
+                EntityManager em = PersistenceManager.getEntityManager();
+                EntityTransaction tx = em.getTransaction();
+                try {
+                        tx.begin();
+
+                        UddiEntityPublisher publisher = this.getEntityPublisher(em, authInfo);
+
+                        new ValidatePublish(publisher).validateSetPublisherAssertions(em, publisherAssertion);
+
+                        List<?> businessKeysFound = null;
+                        businessKeysFound = FindBusinessByPublisherQuery.select(em, null, publisher, businessKeysFound);
+
+                        // First, wipe out all previous assertions associated with this publisher
+                        DeletePublisherAssertionByBusinessQuery.delete(em, businessKeysFound);
+
+                        // Slate is clean for all assertions involving this publisher, now we simply need to add the new ones (and they will all be "new").
+                        List<org.uddi.api_v3.PublisherAssertion> apiPubAssertionList = publisherAssertion.value;
+                        for (org.uddi.api_v3.PublisherAssertion apiPubAssertion : apiPubAssertionList) {
+
+                                org.apache.juddi.model.PublisherAssertion modelPubAssertion = new org.apache.juddi.model.PublisherAssertion();
+
+                                MappingApiToModel.mapPublisherAssertion(apiPubAssertion, modelPubAssertion);
+
+                                org.apache.juddi.model.BusinessEntity beFrom = em.find(org.apache.juddi.model.BusinessEntity.class, modelPubAssertion.getId().getFromKey());
+                                org.apache.juddi.model.BusinessEntity beTo = em.find(org.apache.juddi.model.BusinessEntity.class, modelPubAssertion.getId().getToKey());
+                                modelPubAssertion.setBusinessEntityByFromKey(beFrom);
+                                modelPubAssertion.setBusinessEntityByToKey(beTo);
+
+                                modelPubAssertion.setFromCheck("false");
+                                modelPubAssertion.setToCheck("false");
+
+                                em.persist(modelPubAssertion);
+
+                                if (publisher.isOwner(modelPubAssertion.getBusinessEntityByFromKey())) {
+                                        modelPubAssertion.setFromCheck("true");
+                                }
+                                if (publisher.isOwner(modelPubAssertion.getBusinessEntityByToKey())) {
+                                        modelPubAssertion.setToCheck("true");
+                                }
+
+                        }
+
+                        tx.commit();
+                        long procTime = System.currentTimeMillis() - startTime;
+                        serviceCounter.update(PublicationQuery.SET_PUBLISHERASSERTIONS,
+                                QueryStatus.SUCCESS, procTime);
+                        ReplicationNotifier.Enqueue(publisherAssertion);
+                } catch (DispositionReportFaultMessage drfm) {
+                        long procTime = System.currentTimeMillis() - startTime;
+                        serviceCounter.update(PublicationQuery.SET_PUBLISHERASSERTIONS,
+                                QueryStatus.FAILED, procTime);
+                        throw drfm;
+                } finally {
+                        if (tx.isActive()) {
+                                tx.rollback();
+                        }
+                        em.close();
+                }
+        }
+
+        private void setOperationalInfo(EntityManager em, org.apache.juddi.model.BusinessEntity uddiEntity, UddiEntityPublisher publisher) throws DispositionReportFaultMessage {
+
+                uddiEntity.setAuthorizedName(publisher.getAuthorizedName());
+
+                Date now = new Date();
+                uddiEntity.setModified(now);
+                uddiEntity.setModifiedIncludingChildren(now);
+
+                String nodeId = "";
+                try {
+                        nodeId = AppConfig.getConfiguration().getString(Property.JUDDI_NODE_ID);
+                } catch (ConfigurationException ce) {
+                        throw new FatalErrorException(new ErrorMessage("errors.configuration.Retrieval", Property.JUDDI_NODE_ID));
+                }
+                uddiEntity.setNodeId(nodeId);
+
+                org.apache.juddi.model.BusinessEntity existingUddiEntity = em.find(uddiEntity.getClass(), uddiEntity.getEntityKey());
+                if (existingUddiEntity != null) {
+                        uddiEntity.setCreated(existingUddiEntity.getCreated());
+                } else {
+                        uddiEntity.setCreated(now);
+                }
+
+                List<org.apache.juddi.model.BusinessService> serviceList = uddiEntity.getBusinessServices();
+                for (org.apache.juddi.model.BusinessService service : serviceList) {
+                        setOperationalInfo(em, service, publisher, true);
+                }
+
+
+                if (existingUddiEntity != null) {
+                        em.remove(existingUddiEntity);
+                }
+
+        }
+
+        private void setOperationalInfo(EntityManager em, org.apache.juddi.model.BusinessService uddiEntity, UddiEntityPublisher publisher, boolean isChild) throws DispositionReportFaultMessage {
+
+                uddiEntity.setAuthorizedName(publisher.getAuthorizedName());
+
+                Date now = new Date();
+                uddiEntity.setModified(now);
+                uddiEntity.setModifiedIncludingChildren(now);
+
+                if (!isChild) {
+                        org.apache.juddi.model.BusinessEntity parent = em.find(org.apache.juddi.model.BusinessEntity.class, uddiEntity.getBusinessEntity().getEntityKey());
+                        parent.setModifiedIncludingChildren(now);
+                        em.persist(parent);
+                }
+
+                String nodeId = "";
+                try {
+                        nodeId = AppConfig.getConfiguration().getString(Property.JUDDI_NODE_ID);
+                } catch (ConfigurationException ce) {
+                        throw new FatalErrorException(new ErrorMessage("errors.configuration.Retrieval", Property.JUDDI_NODE_ID));
+                }
+                uddiEntity.setNodeId(nodeId);
+
+                org.apache.juddi.model.BusinessService existingUddiEntity = em.find(uddiEntity.getClass(), uddiEntity.getEntityKey());
+                if (existingUddiEntity != null) {
+                        uddiEntity.setCreated(existingUddiEntity.getCreated());
+                } else {
+                        uddiEntity.setCreated(now);
+                }
+
+                List<org.apache.juddi.model.BindingTemplate> bindingList = uddiEntity.getBindingTemplates();
+                for (org.apache.juddi.model.BindingTemplate binding : bindingList) {
+                        setOperationalInfo(em, binding, publisher, true);
+                }
+
+
+                if (existingUddiEntity != null) {
+                        em.remove(existingUddiEntity);
+                }
+
+        }
+
+        private void setOperationalInfo(EntityManager em, org.apache.juddi.model.BindingTemplate uddiEntity, UddiEntityPublisher publisher, boolean isChild) throws DispositionReportFaultMessage {
+
+                uddiEntity.setAuthorizedName(publisher.getAuthorizedName());
+
+                Date now = new Date();
+                uddiEntity.setModified(now);
+                uddiEntity.setModifiedIncludingChildren(now);
+
+                if (!isChild) {
+                        org.apache.juddi.model.BusinessService parent = em.find(org.apache.juddi.model.BusinessService.class, uddiEntity.getBusinessService().getEntityKey());
+                        parent.setModifiedIncludingChildren(now);
+                        em.persist(parent);
+
+                        // JUDDI-421:  now the businessEntity parent will have it's modifiedIncludingChildren set
+                        org.apache.juddi.model.BusinessEntity businessParent = em.find(org.apache.juddi.model.BusinessEntity.class, parent.getBusinessEntity().getEntityKey());
+                        businessParent.setModifiedIncludingChildren(now);
+                        em.persist(businessParent);
+                }
+
+                String nodeId = "";
+                try {
+                        nodeId = AppConfig.getConfiguration().getString(Property.JUDDI_NODE_ID);
+                } catch (ConfigurationException ce) {
+                        throw new FatalErrorException(new ErrorMessage("errors.configuration.Retrieval", Property.JUDDI_NODE_ID));
+                }
+                uddiEntity.setNodeId(nodeId);
+
+                org.apache.juddi.model.BindingTemplate existingUddiEntity = em.find(uddiEntity.getClass(), uddiEntity.getEntityKey());
+                if (existingUddiEntity != null) {
+                        uddiEntity.setCreated(existingUddiEntity.getCreated());
+                } else {
+                        uddiEntity.setCreated(now);
+                }
+
+                if (existingUddiEntity != null) {
+                        em.remove(existingUddiEntity);
+                }
+
+        }
+
+        private void setOperationalInfo(EntityManager em, org.apache.juddi.model.Tmodel uddiEntity, UddiEntityPublisher publisher) throws DispositionReportFaultMessage {
+
+                uddiEntity.setAuthorizedName(publisher.getAuthorizedName());
+
+                Date now = new Date();
+                uddiEntity.setModified(now);
+                uddiEntity.setModifiedIncludingChildren(now);
+
+                String nodeId = "";
+                try {
+                        nodeId = AppConfig.getConfiguration().getString(Property.JUDDI_NODE_ID);
+                } catch (ConfigurationException ce) {
+                        throw new FatalErrorException(new ErrorMessage("errors.configuration.Retrieval", Property.JUDDI_NODE_ID));
+                }
+                uddiEntity.setNodeId(nodeId);
+
+                org.apache.juddi.model.Tmodel existingUddiEntity = em.find(uddiEntity.getClass(), uddiEntity.getEntityKey());
+                if (existingUddiEntity != null) {
+                        uddiEntity.setCreated(existingUddiEntity.getCreated());
+                } else {
+                        uddiEntity.setCreated(now);
+                }
+
+                if (existingUddiEntity != null) {
+                        em.remove(existingUddiEntity);
+                }
+
+        }
 }



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