You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@juddi.apache.org by jf...@apache.org on 2008/11/19 00:58:50 UTC

svn commit: r718804 [1/2] - in /webservices/juddi/branches/v3_trunk/juddi-core: ./ src/main/java/org/apache/juddi/api/impl/ src/main/java/org/apache/juddi/mapping/ src/main/java/org/apache/juddi/model/ src/main/java/org/apache/juddi/query/ src/main/jav...

Author: jfaath
Date: Tue Nov 18 15:58:49 2008
New Revision: 718804

URL: http://svn.apache.org/viewvc?rev=718804&view=rev
Log:
Finished the Publication API by completing the Publisher Assertion-related calls.  Enhanced the testing suite to a more streamlined approach.

Added:
    webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/DeletePublisherAssertionByBusinessQuery.java   (with props)
    webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/FindBusinessByPublisherQuery.java   (with props)
    webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/FindEntityByPublisherQuery.java   (with props)
    webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/FindPublisherAssertionByBusinessQuery.java   (with props)
    webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/FindTModelByPublisherQuery.java   (with props)
    webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/PublisherAssertionQuery.java   (with props)
    webservices/juddi/branches/v3_trunk/juddi-core/src/test/java/org/apache/juddi/test/JUDDITest.java   (with props)
    webservices/juddi/branches/v3_trunk/juddi-core/src/test/java/org/apache/juddi/test/PublisherAssertionTest.java   (with props)
    webservices/juddi/branches/v3_trunk/juddi-core/src/test/java/org/apache/juddi/test/jpublisher-ssyndicator_publisherAssertion.xml   (with props)
    webservices/juddi/branches/v3_trunk/juddi-core/src/test/java/org/apache/juddi/test/ssyndicator_Publisher.xml   (with props)
    webservices/juddi/branches/v3_trunk/juddi-core/src/test/java/org/apache/juddi/test/ssyndicator_businessEntity1.xml   (contents, props changed)
      - copied, changed from r713229, webservices/juddi/branches/v3_trunk/juddi-core/src/test/java/org/apache/juddi/test/businessEntity2.xml
    webservices/juddi/branches/v3_trunk/juddi-core/src/test/java/org/apache/juddi/test/ssyndicator_businessService1.xml   (contents, props changed)
      - copied, changed from r713229, webservices/juddi/branches/v3_trunk/juddi-core/src/test/java/org/apache/juddi/test/businessService2.xml
    webservices/juddi/branches/v3_trunk/juddi-core/src/test/java/org/apache/juddi/test/ssyndicator_tModelKeyGen.xml   (with props)
    webservices/juddi/branches/v3_trunk/juddi-core/src/test/resources/suite-clean.xml   (with props)
    webservices/juddi/branches/v3_trunk/juddi-core/src/test/resources/suite-delete.xml   (with props)
    webservices/juddi/branches/v3_trunk/juddi-core/src/test/resources/suite-init.xml   (with props)
    webservices/juddi/branches/v3_trunk/juddi-core/src/test/resources/suite-save.xml   (contents, props changed)
      - copied, changed from r713229, webservices/juddi/branches/v3_trunk/juddi-core/src/test/resources/suite-one.xml
Removed:
    webservices/juddi/branches/v3_trunk/juddi-core/src/test/java/org/apache/juddi/test/businessEntity2.xml
    webservices/juddi/branches/v3_trunk/juddi-core/src/test/java/org/apache/juddi/test/businessService2.xml
    webservices/juddi/branches/v3_trunk/juddi-core/src/test/resources/suite-one.xml
Modified:
    webservices/juddi/branches/v3_trunk/juddi-core/pom.xml
    webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIPublicationImpl.java
    webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/mapping/MappingApiToModel.java
    webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/mapping/MappingModelToApi.java
    webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/model/BusinessEntity.java
    webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/model/Tmodel.java
    webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/FetchBindingTemplatesQuery.java
    webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/FetchBusinessEntitiesQuery.java
    webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/FetchBusinessServicesQuery.java
    webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/FetchTModelsQuery.java
    webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/FindBindingByTModelKeyQuery.java
    webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/FindBusinessByCategoryQuery.java
    webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/FindBusinessByDiscoveryURLQuery.java
    webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/FindEntityByIdentifierQuery.java
    webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/FindEntityByNamesQuery.java
    webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/FindTModelByNameQuery.java
    webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/util/DynamicQuery.java
    webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/validation/ValidatePublish.java
    webservices/juddi/branches/v3_trunk/juddi-core/src/main/resources/messages_en.properties
    webservices/juddi/branches/v3_trunk/juddi-core/src/test/java/org/apache/juddi/test/PublisherTest.java

Modified: webservices/juddi/branches/v3_trunk/juddi-core/pom.xml
URL: http://svn.apache.org/viewvc/webservices/juddi/branches/v3_trunk/juddi-core/pom.xml?rev=718804&r1=718803&r2=718804&view=diff
==============================================================================
--- webservices/juddi/branches/v3_trunk/juddi-core/pom.xml (original)
+++ webservices/juddi/branches/v3_trunk/juddi-core/pom.xml Tue Nov 18 15:58:49 2008
@@ -47,7 +47,7 @@
         <version>2.4.2</version>
         <configuration>
           <suiteXmlFiles>
-            <suiteXmlFile>src/test/resources/suite-one.xml</suiteXmlFile>
+            <suiteXmlFile>src/test/resources/suite-init.xml,src/test/resources/suite-save.xml,src/test/resources/suite-delete.xml,src/test/resources/suite-clean.xml</suiteXmlFile>
           </suiteXmlFiles>
         </configuration>
       </plugin>

Modified: webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIPublicationImpl.java
URL: http://svn.apache.org/viewvc/webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIPublicationImpl.java?rev=718804&r1=718803&r2=718804&view=diff
==============================================================================
--- webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIPublicationImpl.java (original)
+++ webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIPublicationImpl.java Tue Nov 18 15:58:49 2008
@@ -18,7 +18,7 @@
 package org.apache.juddi.api.impl;
 
 import java.util.List;
-import java.util.Iterator;
+import java.util.ArrayList;
 
 import javax.jws.WebService;
 import javax.persistence.EntityManager;
@@ -48,15 +48,21 @@
 import org.uddi.v3_service.UDDIPublicationPortType;
 
 import org.apache.juddi.mapping.MappingApiToModel;
-import org.apache.juddi.util.JPAUtil;
+import org.apache.juddi.mapping.MappingModelToApi;
 import org.apache.juddi.validation.ValidatePublish;
+import org.apache.juddi.query.FetchBusinessEntitiesQuery;
+import org.apache.juddi.query.FetchTModelsQuery;
+import org.apache.juddi.query.FindBusinessByPublisherQuery;
+import org.apache.juddi.query.FindTModelByPublisherQuery;
+import org.apache.juddi.query.FindPublisherAssertionByBusinessQuery;
+import org.apache.juddi.query.DeletePublisherAssertionByBusinessQuery;
 import org.apache.juddi.query.PersistenceManager;
 import org.apache.juddi.model.UddiEntityPublisher;
-
 import org.apache.juddi.model.Publisher;
 import org.apache.juddi.api.datatype.PublisherDetail;
 import org.apache.juddi.api.datatype.SavePublisher;
 import org.apache.juddi.api.datatype.DeletePublisher;
+import org.apache.juddi.query.util.FindQualifiers;
 
 /**
  * @author <a href="mailto:jfaath@apache.org">Jeff Faath</a>
@@ -68,23 +74,65 @@
 	
 	public void addPublisherAssertions(AddPublisherAssertions body)
 			throws DispositionReportFaultMessage {
+
+		EntityManager em = PersistenceManager.getEntityManager();
+		EntityTransaction tx = em.getTransaction();
+		tx.begin();
 		
-		// TODO: Perform necessary authentication logic
-		String authInfo = body.getAuthInfo();
+		UddiEntityPublisher publisher = this.getEntityPublisher(em, body.getAuthInfo());
+		
+		ValidatePublish.validateAddPublisherAssertions(em, publisher, body);		
 
 		List<org.uddi.api_v3.PublisherAssertion> apiPubAssertionList = body.getPublisherAssertion();
-		Iterator<org.uddi.api_v3.PublisherAssertion> apiPubAssertionListItr = apiPubAssertionList.iterator();
-		while (apiPubAssertionListItr.hasNext()) {
-			org.uddi.api_v3.PublisherAssertion apiPubAssertion = apiPubAssertionListItr.next();
-			
-			//TODO:  Validate the input here
+		for (org.uddi.api_v3.PublisherAssertion apiPubAssertion : apiPubAssertionList) {
 			
 			org.apache.juddi.model.PublisherAssertion modelPubAssertion = new org.apache.juddi.model.PublisherAssertion();
 			
 			MappingApiToModel.mapPublisherAssertion(apiPubAssertion, modelPubAssertion);
 			
-			JPAUtil.persistEntity(modelPubAssertion, modelPubAssertion.getId());
+			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();
+		em.close();
 	}
 
 	public void deleteBinding(DeleteBinding body)
@@ -138,12 +186,12 @@
 
 		UddiEntityPublisher publisher = this.getEntityPublisher(em, body.getAuthInfo());
 
-		ValidatePublish.validateDeletePublisherAssertions(em, body);
+		ValidatePublish.validateDeletePublisherAssertions(em, publisher, 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.BusinessEntity.class, pubAssertionId);
+			Object obj = em.find(org.apache.juddi.model.PublisherAssertion.class, pubAssertionId);
 			em.remove(obj);
 		}
 
@@ -199,22 +247,113 @@
 	public List<AssertionStatusItem> getAssertionStatusReport(String authInfo,
 			CompletionStatus completionStatus)
 			throws DispositionReportFaultMessage {
-		// TODO Auto-generated method stub
+
+		EntityManager em = PersistenceManager.getEntityManager();
+		EntityTransaction tx = em.getTransaction();
+		tx.begin();
+
+		UddiEntityPublisher publisher = this.getEntityPublisher(em, authInfo);
+
+		List<org.uddi.api_v3.AssertionStatusItem> result = new ArrayList<org.uddi.api_v3.AssertionStatusItem>(0);
+
+		List<?> businessKeysFound = null;
+		businessKeysFound = FindBusinessByPublisherQuery.select(em, null, publisher, businessKeysFound);
+		
+		List<org.apache.juddi.model.PublisherAssertion> pubAssertionList = FindPublisherAssertionByBusinessQuery.select(em, businessKeysFound, completionStatus);
+		for(org.apache.juddi.model.PublisherAssertion modelPubAssertion : pubAssertionList) {
+			org.uddi.api_v3.AssertionStatusItem apiAssertionStatusItem = new org.uddi.api_v3.AssertionStatusItem();
+
+			MappingModelToApi.mapAssertionStatusItem(modelPubAssertion, apiAssertionStatusItem, businessKeysFound);
+			
+			result.add(apiAssertionStatusItem);
+		}
+
+		tx.commit();
+		em.close();
+
 		return null;
 	}
 
 
 	public List<PublisherAssertion> getPublisherAssertions(String authInfo)
 			throws DispositionReportFaultMessage {
-		// TODO Auto-generated method stub
-		return null;
+
+		EntityManager em = PersistenceManager.getEntityManager();
+		EntityTransaction tx = em.getTransaction();
+		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);
+		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();
+		em.close();
+
+		return result;
 	}
 
 
 	public RegisteredInfo getRegisteredInfo(GetRegisteredInfo body)
 			throws DispositionReportFaultMessage {
-		// TODO Auto-generated method stub
-		return null;
+
+		EntityManager em = PersistenceManager.getEntityManager();
+		EntityTransaction tx = em.getTransaction();
+		tx.begin();
+
+		UddiEntityPublisher publisher = this.getEntityPublisher(em, body.getAuthInfo());
+		
+		List<?> businessKeysFound = null;
+		businessKeysFound = FindBusinessByPublisherQuery.select(em, null, publisher, businessKeysFound);
+
+		List<?> tmodelKeysFound = null;
+		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);
+		if (queryResults != null && 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);
+		if (queryResults != null && 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();
+		em.close();
+		
+		return result;
 	}
 
 
@@ -373,8 +512,48 @@
 	public void setPublisherAssertions(String authInfo,
 			Holder<List<PublisherAssertion>> publisherAssertion)
 			throws DispositionReportFaultMessage {
-		// TODO Auto-generated method stub
 
+		EntityManager em = PersistenceManager.getEntityManager();
+		EntityTransaction tx = em.getTransaction();
+		tx.begin();
+
+		UddiEntityPublisher publisher = this.getEntityPublisher(em, authInfo);
+		
+		ValidatePublish.validateSetPublisherAssertions(em, publisher, 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();
+		em.close();
 	}
 
 	

Modified: webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/mapping/MappingApiToModel.java
URL: http://svn.apache.org/viewvc/webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/mapping/MappingApiToModel.java?rev=718804&r1=718803&r2=718804&view=diff
==============================================================================
--- webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/mapping/MappingApiToModel.java (original)
+++ webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/mapping/MappingApiToModel.java Tue Nov 18 15:58:49 2008
@@ -560,7 +560,7 @@
 		if (apiKeyedRef != null) {
 			modelPubAssertion.setTmodelKey(apiKeyedRef.getTModelKey());
 			modelPubAssertion.setKeyName(apiKeyedRef.getKeyName());
-			modelPubAssertion.setKeyValue(apiKeyedRef.getKeyName());
+			modelPubAssertion.setKeyValue(apiKeyedRef.getKeyValue());
 		}
 	}
 

Modified: webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/mapping/MappingModelToApi.java
URL: http://svn.apache.org/viewvc/webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/mapping/MappingModelToApi.java?rev=718804&r1=718803&r2=718804&view=diff
==============================================================================
--- webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/mapping/MappingModelToApi.java (original)
+++ webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/mapping/MappingModelToApi.java Tue Nov 18 15:58:49 2008
@@ -17,10 +17,13 @@
 
 package org.apache.juddi.mapping;
 
+import java.util.Collections;
 import java.util.List;
 import java.util.Set;
 
 import javax.xml.bind.JAXBElement;
+
+import org.uddi.api_v3.CompletionStatus;
 import org.uddi.api_v3.ObjectFactory;
 
 import org.uddi.v3_service.DispositionReportFaultMessage;
@@ -606,5 +609,59 @@
 	
 	}
 
+	public static void mapPublisherAssertion(org.apache.juddi.model.PublisherAssertion modelPublisherAssertion, 
+											 org.uddi.api_v3.PublisherAssertion apiPublisherAssertion) 
+				   throws DispositionReportFaultMessage {
+
+		apiPublisherAssertion.setFromKey(modelPublisherAssertion.getId().getFromKey());
+		apiPublisherAssertion.setToKey(modelPublisherAssertion.getId().getToKey());
+		
+		org.uddi.api_v3.KeyedReference keyedRef = new org.uddi.api_v3.KeyedReference();
+		keyedRef.setTModelKey(modelPublisherAssertion.getTmodelKey());
+		keyedRef.setKeyName(modelPublisherAssertion.getKeyName());
+		keyedRef.setKeyValue(modelPublisherAssertion.getKeyValue());
+		
+		apiPublisherAssertion.setKeyedReference(keyedRef);
+		
+	}
+	
+	public static void mapAssertionStatusItem(org.apache.juddi.model.PublisherAssertion modelPublisherAssertion, 
+											  org.uddi.api_v3.AssertionStatusItem apiAssertionStatusItem,
+											  List<?> businessKeys) 
+				   throws DispositionReportFaultMessage {
+
+		apiAssertionStatusItem.setFromKey(modelPublisherAssertion.getId().getFromKey());
+		apiAssertionStatusItem.setToKey(modelPublisherAssertion.getId().getToKey());
+		
+		org.uddi.api_v3.KeyedReference keyedRef = new org.uddi.api_v3.KeyedReference();
+		keyedRef.setTModelKey(modelPublisherAssertion.getTmodelKey());
+		keyedRef.setKeyName(modelPublisherAssertion.getKeyName());
+		keyedRef.setKeyValue(modelPublisherAssertion.getKeyValue());
+		
+		apiAssertionStatusItem.setKeyedReference(keyedRef);
+		
+		if ("true".equalsIgnoreCase(modelPublisherAssertion.getFromCheck()) && 
+			"true".equalsIgnoreCase(modelPublisherAssertion.getToCheck()))
+			apiAssertionStatusItem.setCompletionStatus(CompletionStatus.STATUS_COMPLETE);
+		else if(!"true".equalsIgnoreCase(modelPublisherAssertion.getFromCheck()) && 
+				"true".equalsIgnoreCase(modelPublisherAssertion.getToCheck()))
+			apiAssertionStatusItem.setCompletionStatus(CompletionStatus.STATUS_FROM_KEY_INCOMPLETE);
+		else if("true".equalsIgnoreCase(modelPublisherAssertion.getFromCheck()) && 
+				!"true".equalsIgnoreCase(modelPublisherAssertion.getToCheck()))
+			apiAssertionStatusItem.setCompletionStatus(CompletionStatus.STATUS_TO_KEY_INCOMPLETE);
+		else if(!"true".equalsIgnoreCase(modelPublisherAssertion.getFromCheck()) && 
+				!"true".equalsIgnoreCase(modelPublisherAssertion.getToCheck()))
+			apiAssertionStatusItem.setCompletionStatus(CompletionStatus.STATUS_BOTH_INCOMPLETE);
+		
+		org.uddi.api_v3.KeysOwned keysOwned = new org.uddi.api_v3.KeysOwned();
+		
+		Collections.sort((List<String>)businessKeys);
+		if (Collections.binarySearch((List<String>)businessKeys, modelPublisherAssertion.getBusinessEntityByFromKey().getBusinessKey()) >= 0)
+			keysOwned.getContent().add(new ObjectFactory().createFromKey(modelPublisherAssertion.getBusinessEntityByFromKey().getBusinessKey()));
+		
+		if (Collections.binarySearch((List<String>)businessKeys, modelPublisherAssertion.getBusinessEntityByToKey().getBusinessKey()) >= 0)
+			keysOwned.getContent().add(new ObjectFactory().createToKey(modelPublisherAssertion.getBusinessEntityByToKey().getBusinessKey()));
+		
+	}
 	
 }

Modified: webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/model/BusinessEntity.java
URL: http://svn.apache.org/viewvc/webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/model/BusinessEntity.java?rev=718804&r1=718803&r2=718804&view=diff
==============================================================================
--- webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/model/BusinessEntity.java (original)
+++ webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/model/BusinessEntity.java Tue Nov 18 15:58:49 2008
@@ -205,7 +205,7 @@
 	}
 
 	public String retrievePublisherId() {
-		return this.publisher.getPublisherId();
+		return getPublisher().getPublisherId();
 	}
 	public void assignPublisherId(String id) {
 		if (id != null) {

Modified: webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/model/Tmodel.java
URL: http://svn.apache.org/viewvc/webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/model/Tmodel.java?rev=718804&r1=718803&r2=718804&view=diff
==============================================================================
--- webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/model/Tmodel.java (original)
+++ webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/model/Tmodel.java Tue Nov 18 15:58:49 2008
@@ -170,7 +170,7 @@
 	}
 
 	public String retrievePublisherId() {
-		return this.publisher.getPublisherId();
+		return getPublisher().getPublisherId();
 	}
 	public void assignPublisherId(String id) {
 		if (id != null) {

Added: webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/DeletePublisherAssertionByBusinessQuery.java
URL: http://svn.apache.org/viewvc/webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/DeletePublisherAssertionByBusinessQuery.java?rev=718804&view=auto
==============================================================================
--- webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/DeletePublisherAssertionByBusinessQuery.java (added)
+++ webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/DeletePublisherAssertionByBusinessQuery.java Tue Nov 18 15:58:49 2008
@@ -0,0 +1,68 @@
+/*
+ * Copyright 2001-2008 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.juddi.query;
+
+import java.util.List;
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+
+import org.apache.juddi.query.util.DynamicQuery;
+import org.apache.log4j.Logger;
+
+/**
+ * 
+ * Returns the list of PublisherAssertions that contain the input businessKeys as their from or to key
+ *  * 
+ * @author <a href="mailto:jfaath@apache.org">Jeff Faath</a>
+ */
+public class DeletePublisherAssertionByBusinessQuery extends PublisherAssertionQuery {
+
+	private static Logger log = Logger.getLogger(DeletePublisherAssertionByBusinessQuery.class);
+
+	public static int delete(EntityManager em, List<?> businessKeys) {
+		if ((businessKeys == null) || (businessKeys.size() == 0))
+			return 0;
+		
+		DynamicQuery dynamicQry = new DynamicQuery(deleteSQL);
+		appendConditions(dynamicQry, businessKeys);
+		
+		log.debug(dynamicQry);
+		
+		Query qry = dynamicQry.buildJPAQuery(em);
+		int result = qry.executeUpdate();
+		
+		return result;
+	}
+	
+	/*
+	 * Appends the conditions to the query based on the businessKey list.  The keys can either be in the fromKey or toKey of the publisher assertion.
+	 */
+	public static void appendConditions(DynamicQuery qry, List<?> businessKeys) {
+		
+		qry.WHERE().pad().openParen().pad();
+		
+		qry.appendInList(ENTITY_ALIAS + "." + FROM_KEY_NAME, businessKeys);
+		qry.pad().OR().pad();
+		qry.appendInList(ENTITY_ALIAS + "." + TO_KEY_NAME, businessKeys);
+		qry.closeParen().pad();
+		
+		
+	}
+	
+	
+}

Propchange: webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/DeletePublisherAssertionByBusinessQuery.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/FetchBindingTemplatesQuery.java
URL: http://svn.apache.org/viewvc/webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/FetchBindingTemplatesQuery.java?rev=718804&r1=718803&r2=718804&view=diff
==============================================================================
--- webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/FetchBindingTemplatesQuery.java (original)
+++ webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/FetchBindingTemplatesQuery.java Tue Nov 18 15:58:49 2008
@@ -57,7 +57,7 @@
 
 		DynamicQuery dynamicQry = new DynamicQuery(selectSQL);
 		appendSortTables(dynamicQry);
-		dynamicQry.appendInList(ENTITY_ALIAS + "." + KEY_NAME, keysIn);
+		dynamicQry.appendInListWithAnd(ENTITY_ALIAS + "." + KEY_NAME, keysIn);
 		appendSortCriteria(dynamicQry, fq);
 
 		log.debug(dynamicQry);

Modified: webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/FetchBusinessEntitiesQuery.java
URL: http://svn.apache.org/viewvc/webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/FetchBusinessEntitiesQuery.java?rev=718804&r1=718803&r2=718804&view=diff
==============================================================================
--- webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/FetchBusinessEntitiesQuery.java (original)
+++ webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/FetchBusinessEntitiesQuery.java Tue Nov 18 15:58:49 2008
@@ -57,7 +57,7 @@
 
 		DynamicQuery dynamicQry = new DynamicQuery(selectSQL);
 		appendSortTables(dynamicQry);
-		dynamicQry.appendInList(ENTITY_ALIAS + "." + KEY_NAME, keysIn);
+		dynamicQry.appendInListWithAnd(ENTITY_ALIAS + "." + KEY_NAME, keysIn);
 		appendSortCriteria(dynamicQry, fq);
 
 		log.debug(dynamicQry);

Modified: webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/FetchBusinessServicesQuery.java
URL: http://svn.apache.org/viewvc/webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/FetchBusinessServicesQuery.java?rev=718804&r1=718803&r2=718804&view=diff
==============================================================================
--- webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/FetchBusinessServicesQuery.java (original)
+++ webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/FetchBusinessServicesQuery.java Tue Nov 18 15:58:49 2008
@@ -57,7 +57,7 @@
 
 		DynamicQuery dynamicQry = new DynamicQuery(selectSQL);
 		appendSortTables(dynamicQry);
-		dynamicQry.appendInList(ENTITY_ALIAS + "." + KEY_NAME, keysIn);
+		dynamicQry.appendInListWithAnd(ENTITY_ALIAS + "." + KEY_NAME, keysIn);
 		appendSortCriteria(dynamicQry, fq);
 
 		log.debug(dynamicQry);

Modified: webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/FetchTModelsQuery.java
URL: http://svn.apache.org/viewvc/webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/FetchTModelsQuery.java?rev=718804&r1=718803&r2=718804&view=diff
==============================================================================
--- webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/FetchTModelsQuery.java (original)
+++ webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/FetchTModelsQuery.java Tue Nov 18 15:58:49 2008
@@ -37,7 +37,7 @@
  * 
  * @author <a href="mailto:jfaath@apache.org">Jeff Faath</a>
  */
-public class FetchTModelsQuery extends BusinessEntityQuery {
+public class FetchTModelsQuery extends TModelQuery {
 
 	private static Logger log = Logger.getLogger(FetchTModelsQuery.class);
 
@@ -57,7 +57,7 @@
 
 		DynamicQuery dynamicQry = new DynamicQuery(selectSQL);
 		appendSortTables(dynamicQry);
-		dynamicQry.appendInList(ENTITY_ALIAS + "." + KEY_NAME, keysIn);
+		dynamicQry.appendInListWithAnd(ENTITY_ALIAS + "." + KEY_NAME, keysIn);
 		appendSortCriteria(dynamicQry, fq);
 
 		log.debug(dynamicQry);

Modified: webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/FindBindingByTModelKeyQuery.java
URL: http://svn.apache.org/viewvc/webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/FindBindingByTModelKeyQuery.java?rev=718804&r1=718803&r2=718804&view=diff
==============================================================================
--- webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/FindBindingByTModelKeyQuery.java (original)
+++ webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/FindBindingByTModelKeyQuery.java Tue Nov 18 15:58:49 2008
@@ -72,7 +72,7 @@
 			dynamicQry.AND().pad().appendGroupedAnd(restrictions);
 		
 		// TODO: Break up the IN clause into an amount that is configurable (see JUDDI-146)
-		dynamicQry.appendInList(ENTITY_ALIAS + "." + KEY_NAME, keysIn);
+		dynamicQry.appendInListWithAnd(ENTITY_ALIAS + "." + KEY_NAME, keysIn);
 		
 		log.debug(dynamicQry);
 		

Modified: webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/FindBusinessByCategoryQuery.java
URL: http://svn.apache.org/viewvc/webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/FindBusinessByCategoryQuery.java?rev=718804&r1=718803&r2=718804&view=diff
==============================================================================
--- webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/FindBusinessByCategoryQuery.java (original)
+++ webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/FindBusinessByCategoryQuery.java Tue Nov 18 15:58:49 2008
@@ -126,7 +126,7 @@
 		}
 		qry.closeParen().pad();
 		
-		qry.appendInList("bc.id.businessKey", keysIn);
+		qry.appendInListWithAnd("bc.id.businessKey", keysIn);
 	}
 	
 	public static void appendGrouping(DynamicQuery qry, FindQualifiers fq, int elemCount) {

Modified: webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/FindBusinessByDiscoveryURLQuery.java
URL: http://svn.apache.org/viewvc/webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/FindBusinessByDiscoveryURLQuery.java?rev=718804&r1=718803&r2=718804&view=diff
==============================================================================
--- webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/FindBusinessByDiscoveryURLQuery.java (original)
+++ webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/FindBusinessByDiscoveryURLQuery.java Tue Nov 18 15:58:49 2008
@@ -71,7 +71,7 @@
 			dynamicQry.AND().pad().appendGroupedAnd(restrictions);
 
 		// TODO: Break up the IN clause into an amount that is configurable (see JUDDI-146)
-		dynamicQry.appendInList(ENTITY_ALIAS + "." + KEY_NAME, keysIn);
+		dynamicQry.appendInListWithAnd(ENTITY_ALIAS + "." + KEY_NAME, keysIn);
 		
 		log.debug(dynamicQry);
 		

Added: webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/FindBusinessByPublisherQuery.java
URL: http://svn.apache.org/viewvc/webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/FindBusinessByPublisherQuery.java?rev=718804&view=auto
==============================================================================
--- webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/FindBusinessByPublisherQuery.java (added)
+++ webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/FindBusinessByPublisherQuery.java Tue Nov 18 15:58:49 2008
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2001-2008 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.juddi.query;
+
+import java.util.List;
+import javax.persistence.EntityManager;
+
+import org.apache.juddi.query.util.FindQualifiers;
+import org.apache.juddi.model.UddiEntityPublisher;
+
+/**
+ * Returns the list of business keys possessing the publisherId in the passed UddiEntityPublisher.
+ * Output is restricted by list of business keys passed in.  If null, all businesses are searched.
+ * Output is produced by building the appropriate JPA query based on input and find qualifiers.
+ *
+ *  
+ * @author <a href="mailto:jfaath@apache.org">Jeff Faath</a>
+ */
+public class FindBusinessByPublisherQuery {
+
+
+	private static FindEntityByPublisherQuery findQuery;
+	
+	static {
+		findQuery = new FindEntityByPublisherQuery(BusinessEntityQuery.ENTITY_NAME, BusinessEntityQuery.ENTITY_ALIAS, BusinessEntityQuery.KEY_NAME);
+	}
+
+	public static List<?> select(EntityManager em, FindQualifiers fq, UddiEntityPublisher publisher, List<?> keysIn) {
+		return findQuery.select(em, fq, publisher, keysIn);
+	}
+	
+}

Propchange: webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/FindBusinessByPublisherQuery.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/FindEntityByIdentifierQuery.java
URL: http://svn.apache.org/viewvc/webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/FindEntityByIdentifierQuery.java?rev=718804&r1=718803&r2=718804&view=diff
==============================================================================
--- webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/FindEntityByIdentifierQuery.java (original)
+++ webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/FindEntityByIdentifierQuery.java Tue Nov 18 15:58:49 2008
@@ -111,7 +111,7 @@
 			dynamicQry.AND().pad().appendGroupedAnd(restrictions);
 		
 		// TODO: Break up the IN clause into an amount that is configurable (see JUDDI-146)
-		dynamicQry.appendInList(entityAlias + "." + keyName, keysIn);
+		dynamicQry.appendInListWithAnd(entityAlias + "." + keyName, keysIn);
 		
 		log.debug(dynamicQry);
 		

Modified: webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/FindEntityByNamesQuery.java
URL: http://svn.apache.org/viewvc/webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/FindEntityByNamesQuery.java?rev=718804&r1=718803&r2=718804&view=diff
==============================================================================
--- webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/FindEntityByNamesQuery.java (original)
+++ webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/FindEntityByNamesQuery.java Tue Nov 18 15:58:49 2008
@@ -95,7 +95,7 @@
 			dynamicQry.AND().pad().appendGroupedAnd(restrictions);
 
 		// TODO: Break up the IN clause into an amount that is configurable (see JUDDI-146)
-		dynamicQry.appendInList(entityAlias + "." + keyName, keysIn);
+		dynamicQry.appendInListWithAnd(entityAlias + "." + keyName, keysIn);
 		
 		log.debug(dynamicQry);
 		

Added: webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/FindEntityByPublisherQuery.java
URL: http://svn.apache.org/viewvc/webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/FindEntityByPublisherQuery.java?rev=718804&view=auto
==============================================================================
--- webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/FindEntityByPublisherQuery.java (added)
+++ webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/FindEntityByPublisherQuery.java Tue Nov 18 15:58:49 2008
@@ -0,0 +1,106 @@
+/*
+ * Copyright 2001-2008 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.juddi.query;
+
+import java.util.List;
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+
+import org.apache.juddi.query.util.DynamicQuery;
+import org.apache.juddi.query.util.FindQualifiers;
+import org.apache.log4j.Logger;
+import org.apache.juddi.model.UddiEntityPublisher;
+
+/**
+ * Returns the list of "entity" keys possessing the publisher Id in the passed in UddiEntityPublisher
+ * Output is restricted by list of "entity" keys passed in.  If null, all entities are searched.
+ * Output is produced by building the appropriate JPA query based on input and find qualifiers.
+ * 
+ * @author <a href="mailto:jfaath@apache.org">Jeff Faath</a>
+ */
+public class FindEntityByPublisherQuery extends EntityQuery {
+
+	private Logger log = Logger.getLogger(FindEntityByPublisherQuery.class);
+
+	public static final String PUBLISHER_ID_FIELD = "publisher.publisherId";
+	
+	private String entityName;
+	private String entityAlias;
+	private String keyName;
+	private String selectSQL;
+	
+	public FindEntityByPublisherQuery(String entityName, String entityAlias, String keyName) {
+		this.entityName = entityName;
+		this.entityAlias = entityAlias;
+		this.keyName = keyName;
+		
+		StringBuffer sql = new StringBuffer(200);
+		sql.append("select distinct " + entityAlias + "." + keyName + " from " + entityName + " " + entityAlias + " ");
+		selectSQL = sql.toString();
+	}
+
+	public String getEntityName() {
+		return entityName;
+	}
+
+	public String getEntityAlias() {
+		return entityAlias;
+	}
+
+	public String getKeyName() {
+		return keyName;
+	}
+
+	public String getSelectSQL() {
+		return selectSQL;
+	}
+	
+	
+	public List<?> select(EntityManager em, FindQualifiers fq, UddiEntityPublisher publisher, List<?> keysIn, DynamicQuery.Parameter... restrictions) {
+		// If keysIn is not null and empty, then search is over.
+		if ((keysIn != null) && (keysIn.size() == 0))
+			return keysIn;
+		
+		if (publisher == null)
+			return keysIn;
+		
+		DynamicQuery dynamicQry = new DynamicQuery(selectSQL);
+		appendConditions(dynamicQry, fq, publisher);
+		if (restrictions != null && restrictions.length > 0)
+			dynamicQry.AND().pad().appendGroupedAnd(restrictions);
+
+		// TODO: Break up the IN clause into an amount that is configurable (see JUDDI-146)
+		dynamicQry.appendInListWithAnd(entityAlias + "." + keyName, keysIn);
+		
+		log.debug(dynamicQry);
+		
+		Query qry = dynamicQry.buildJPAQuery(em);
+		List<?> result = qry.getResultList();
+		
+		return result;
+	}
+	
+	/*
+	 * Appends the conditions to the query based on the publisher id
+	 */
+	public void appendConditions(DynamicQuery qry, FindQualifiers fq, UddiEntityPublisher publisher) {
+		qry.WHERE().pad();
+		qry.appendGroupedAnd(new DynamicQuery.Parameter(entityAlias + "." + PUBLISHER_ID_FIELD, publisher.getPublisherId(), DynamicQuery.PREDICATE_EQUALS));
+	}
+		
+}

Propchange: webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/FindEntityByPublisherQuery.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/FindPublisherAssertionByBusinessQuery.java
URL: http://svn.apache.org/viewvc/webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/FindPublisherAssertionByBusinessQuery.java?rev=718804&view=auto
==============================================================================
--- webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/FindPublisherAssertionByBusinessQuery.java (added)
+++ webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/FindPublisherAssertionByBusinessQuery.java Tue Nov 18 15:58:49 2008
@@ -0,0 +1,99 @@
+/*
+ * Copyright 2001-2008 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.juddi.query;
+
+import java.util.List;
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+
+import org.apache.juddi.query.util.DynamicQuery;
+import org.apache.log4j.Logger;
+import org.apache.juddi.model.PublisherAssertion;
+import org.uddi.api_v3.CompletionStatus;
+
+/**
+ * 
+ * Returns the list of PublisherAssertions that contain the input businessKeys as their from or to key
+ *  * 
+ * @author <a href="mailto:jfaath@apache.org">Jeff Faath</a>
+ */
+public class FindPublisherAssertionByBusinessQuery extends PublisherAssertionQuery {
+
+	private static Logger log = Logger.getLogger(FindPublisherAssertionByBusinessQuery.class);
+
+	public static List<PublisherAssertion> select(EntityManager em, List<?> businessKeys, CompletionStatus completionStatus) {
+		if ((businessKeys == null) || (businessKeys.size() == 0))
+			return null;
+		
+		DynamicQuery dynamicQry = new DynamicQuery(selectSQL);
+		appendConditions(dynamicQry, businessKeys, completionStatus);
+		
+		log.debug(dynamicQry);
+		
+		Query qry = dynamicQry.buildJPAQuery(em);
+		List<PublisherAssertion> result = qry.getResultList();
+		
+		return result;
+	}
+	
+	/*
+	 * Appends the conditions to the query based on the businessKey list.  The keys can either be in the fromKey or toKey of the publisher assertion.
+	 */
+	public static void appendConditions(DynamicQuery qry, List<?> businessKeys, CompletionStatus completionStatus) {
+		
+		qry.WHERE().pad().openParen().pad();
+		
+		qry.appendInList(ENTITY_ALIAS + "." + FROM_KEY_NAME, businessKeys);
+		qry.pad().OR().pad();
+		qry.appendInList(ENTITY_ALIAS + "." + TO_KEY_NAME, businessKeys);
+		qry.closeParen().pad();
+		
+		if (completionStatus != null) {
+			qry.AND().pad().openParen().pad();
+			
+			String fromCheckTerm = "UPPER(" + ENTITY_ALIAS + ".fromCheck)";
+			String toCheckTerm = "UPPER(" + ENTITY_ALIAS + ".toCheck)";
+			if (completionStatus == CompletionStatus.STATUS_BOTH_INCOMPLETE) {
+				qry.appendGroupedAnd(new DynamicQuery.Parameter(fromCheckTerm, "TRUE", DynamicQuery.PREDICATE_NOTEQUALS));
+				qry.AND().pad();
+				qry.appendGroupedAnd(new DynamicQuery.Parameter(toCheckTerm, "TRUE", DynamicQuery.PREDICATE_NOTEQUALS));
+			}
+			else if (completionStatus == CompletionStatus.STATUS_COMPLETE) {
+				qry.appendGroupedAnd(new DynamicQuery.Parameter(fromCheckTerm, "TRUE", DynamicQuery.PREDICATE_EQUALS));
+				qry.AND().pad();
+				qry.appendGroupedAnd(new DynamicQuery.Parameter(toCheckTerm, "TRUE", DynamicQuery.PREDICATE_EQUALS));
+			}
+			else if (completionStatus == CompletionStatus.STATUS_FROM_KEY_INCOMPLETE) {
+				qry.appendGroupedAnd(new DynamicQuery.Parameter(fromCheckTerm, "TRUE", DynamicQuery.PREDICATE_NOTEQUALS));
+				qry.AND().pad();
+				qry.appendGroupedAnd(new DynamicQuery.Parameter(toCheckTerm, "TRUE", DynamicQuery.PREDICATE_EQUALS));
+			}
+			else if (completionStatus == CompletionStatus.STATUS_TO_KEY_INCOMPLETE) {
+				qry.appendGroupedAnd(new DynamicQuery.Parameter(fromCheckTerm, "TRUE", DynamicQuery.PREDICATE_EQUALS));
+				qry.AND().pad();
+				qry.appendGroupedAnd(new DynamicQuery.Parameter(toCheckTerm, "TRUE", DynamicQuery.PREDICATE_NOTEQUALS));
+			}
+
+			qry.closeParen().pad();
+		}
+
+		
+	}
+	
+	
+}

Propchange: webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/FindPublisherAssertionByBusinessQuery.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/FindTModelByNameQuery.java
URL: http://svn.apache.org/viewvc/webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/FindTModelByNameQuery.java?rev=718804&r1=718803&r2=718804&view=diff
==============================================================================
--- webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/FindTModelByNameQuery.java (original)
+++ webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/FindTModelByNameQuery.java Tue Nov 18 15:58:49 2008
@@ -65,7 +65,7 @@
 			dynamicQry.AND().pad().appendGroupedAnd(restrictions);
 		
 		// TODO: Break up the IN clause into an amount that is configurable (see JUDDI-146)
-		dynamicQry.appendInList(ENTITY_ALIAS + "." + KEY_NAME, keysIn);
+		dynamicQry.appendInListWithAnd(ENTITY_ALIAS + "." + KEY_NAME, keysIn);
 		
 		log.debug(dynamicQry);
 		

Added: webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/FindTModelByPublisherQuery.java
URL: http://svn.apache.org/viewvc/webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/FindTModelByPublisherQuery.java?rev=718804&view=auto
==============================================================================
--- webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/FindTModelByPublisherQuery.java (added)
+++ webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/FindTModelByPublisherQuery.java Tue Nov 18 15:58:49 2008
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2001-2008 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.juddi.query;
+
+import java.util.List;
+import javax.persistence.EntityManager;
+
+import org.apache.juddi.query.util.DynamicQuery;
+import org.apache.juddi.query.util.FindQualifiers;
+import org.apache.juddi.model.UddiEntityPublisher;
+
+/**
+ * Returns the list of tModel keys possessing the publisherId in the passed UddiEntityPublisher.
+ * Output is restricted by list of tModel keys passed in.  If null, all tModels are searched.
+ * Output is produced by building the appropriate JPA query based on input and find qualifiers.
+ *  *  
+ * @author <a href="mailto:jfaath@apache.org">Jeff Faath</a>
+ */
+public class FindTModelByPublisherQuery {
+	
+	
+	private static FindEntityByPublisherQuery findQuery;
+	
+	static {
+		findQuery = new FindEntityByPublisherQuery(TModelQuery.ENTITY_NAME, TModelQuery.ENTITY_ALIAS, TModelQuery.KEY_NAME);
+	}
+	
+	public static List<?> select(EntityManager em, FindQualifiers fq, UddiEntityPublisher publisher, List<?> keysIn) {
+		return findQuery.select(em, fq, publisher, keysIn, new DynamicQuery.Parameter(TModelQuery.ENTITY_ALIAS + ".deleted", new Boolean(false), DynamicQuery.PREDICATE_EQUALS));
+	}
+	
+}

Propchange: webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/FindTModelByPublisherQuery.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/PublisherAssertionQuery.java
URL: http://svn.apache.org/viewvc/webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/PublisherAssertionQuery.java?rev=718804&view=auto
==============================================================================
--- webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/PublisherAssertionQuery.java (added)
+++ webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/PublisherAssertionQuery.java Tue Nov 18 15:58:49 2008
@@ -0,0 +1,49 @@
+/*
+ * Copyright 2001-2008 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.juddi.query;
+
+/**
+ * @author <a href="mailto:jfaath@apache.org">Jeff Faath</a>
+ */
+public class PublisherAssertionQuery extends EntityQuery {
+
+	public static final String ENTITY_NAME = "PublisherAssertion";
+	public static final String ENTITY_ALIAS = "pa";
+	public static final String FROM_KEY_NAME = "businessEntityByFromKey.businessKey";
+	public static final String TO_KEY_NAME = "businessEntityByToKey.businessKey";
+	
+	protected static String selectSQL;
+	protected static String deleteSQL;
+
+	static {
+		StringBuffer sql = new StringBuffer(200);
+		sql.append("select distinct " + ENTITY_ALIAS + " from " + ENTITY_NAME + " " + ENTITY_ALIAS + " ");
+		selectSQL = sql.toString();
+	}
+
+	static {
+		StringBuffer sql = new StringBuffer(200);
+		sql.append("delete " + ENTITY_ALIAS + " from " + ENTITY_NAME + " " + ENTITY_ALIAS + " ");
+		deleteSQL = sql.toString();
+	}
+	
+	public static String getSelectSQL() {
+		return selectSQL;
+	}
+	
+}

Propchange: webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/PublisherAssertionQuery.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/util/DynamicQuery.java
URL: http://svn.apache.org/viewvc/webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/util/DynamicQuery.java?rev=718804&r1=718803&r2=718804&view=diff
==============================================================================
--- webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/util/DynamicQuery.java (original)
+++ webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/query/util/DynamicQuery.java Tue Nov 18 15:58:49 2008
@@ -147,11 +147,20 @@
 		
 	}
 	
-	public void appendInList(String term, List<?> list) {
+	public DynamicQuery appendInListWithAnd(String term, List<?> list) {
 		if (list == null || list.size() == 0)
-			return;
+			return this;
 		
-		AND().pad().append(term).pad().IN().pad().openParen().pad();
+		AND().pad();
+		
+		return appendInList(term, list);
+	}
+	
+	public DynamicQuery appendInList(String term, List<?> list) {
+		if (list == null || list.size() == 0)
+			return this;
+		
+		append(term).pad().IN().pad().openParen().pad();
 		int count = 0;
 		for (Object item : list) {
 			param();
@@ -163,8 +172,9 @@
 			count++;
 		}
 		closeParen().pad();
+		return this;
 	}
-	
+
 	public void addValue(Object obj) {
 		this.values.addElement(obj);
 	}

Modified: webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/validation/ValidatePublish.java
URL: http://svn.apache.org/viewvc/webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/validation/ValidatePublish.java?rev=718804&r1=718803&r2=718804&view=diff
==============================================================================
--- webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/validation/ValidatePublish.java (original)
+++ webservices/juddi/branches/v3_trunk/juddi-core/src/main/java/org/apache/juddi/validation/ValidatePublish.java Tue Nov 18 15:58:49 2008
@@ -21,6 +21,7 @@
 import java.util.HashSet;
 import javax.persistence.EntityManager;
 import javax.xml.bind.JAXBElement;
+import javax.xml.ws.Holder;
 
 import org.uddi.api_v3.ObjectFactory;
 import org.uddi.api_v3.DeleteBusiness;
@@ -32,6 +33,7 @@
 import org.uddi.api_v3.SaveService;
 import org.uddi.api_v3.SaveBinding;
 import org.uddi.api_v3.SaveTModel;
+import org.uddi.api_v3.AddPublisherAssertions;
 import org.uddi.v3_service.DispositionReportFaultMessage;
 import org.apache.juddi.api.datatype.SavePublisher;
 import org.apache.juddi.api.datatype.DeletePublisher;
@@ -168,7 +170,7 @@
 		}
 	}
 
-	public static void validateDeletePublisherAssertions(EntityManager em, DeletePublisherAssertions body) throws DispositionReportFaultMessage {
+	public static void validateDeletePublisherAssertions(EntityManager em, UddiEntityPublisher publisher, DeletePublisherAssertions body) throws DispositionReportFaultMessage {
 
 		// No null input
 		if (body == null)
@@ -177,15 +179,28 @@
 		// No null or empty list
 		List<org.uddi.api_v3.PublisherAssertion> entityList = body.getPublisherAssertion();
 		if (entityList == null || entityList.size() == 0)
-			throw new AssertionNotFoundException(new ErrorMessage("errors.assertion.NoPubAssertions"));
+			throw new AssertionNotFoundException(new ErrorMessage("errors.pubassertion.NoPubAssertions"));
 
 		for (org.uddi.api_v3.PublisherAssertion entity : entityList) {
-			// TODO: duplicate check?
+			
+			validatePublisherAssertion(em, publisher, entity);
 			
 			org.apache.juddi.model.PublisherAssertionId pubAssertionId = new org.apache.juddi.model.PublisherAssertionId(entity.getFromKey(), entity.getToKey());
-			Object obj = em.find(org.apache.juddi.model.BusinessEntity.class, pubAssertionId);
+			Object obj = em.find(org.apache.juddi.model.PublisherAssertion.class, pubAssertionId);
 			if (obj == null)
-				throw new AssertionNotFoundException(new ErrorMessage("errors.assertion.AssertionNotFound", entity.getFromKey() + ", " + entity.getToKey()));
+				throw new AssertionNotFoundException(new ErrorMessage("errors.pubassertion.AssertionNotFound", entity.getFromKey() + ", " + entity.getToKey()));
+			else {
+				org.apache.juddi.model.PublisherAssertion pubAssertion = (org.apache.juddi.model.PublisherAssertion)obj;
+				org.uddi.api_v3.KeyedReference keyedRef = entity.getKeyedReference();
+				if (keyedRef == null)
+					throw new AssertionNotFoundException(new ErrorMessage("errors.pubassertion.AssertionNotFound", entity.getFromKey() + ", " + entity.getToKey()));
+
+				if (!pubAssertion.getTmodelKey().equalsIgnoreCase(keyedRef.getTModelKey()) || 
+					!pubAssertion.getKeyName().equalsIgnoreCase(keyedRef.getKeyName()) || 
+					!pubAssertion.getKeyValue().equalsIgnoreCase(keyedRef.getKeyValue()))
+					throw new AssertionNotFoundException(new ErrorMessage("errors.pubassertion.AssertionNotFound", entity.getFromKey() + ", " + entity.getToKey()));
+
+			}
 			
 		}
 	}
@@ -256,6 +271,38 @@
 		}
 	}
 
+	public static void validateAddPublisherAssertions(EntityManager em, UddiEntityPublisher publisher, AddPublisherAssertions body) throws DispositionReportFaultMessage {
+
+		// No null input
+		if (body == null)
+			throw new FatalErrorException(new ErrorMessage("errors.NullInput"));
+		
+		// No null or empty list
+		List<org.uddi.api_v3.PublisherAssertion> entityList = body.getPublisherAssertion();
+		if (entityList == null || entityList.size() == 0)
+			throw new ValueNotAllowedException(new ErrorMessage("errors.addpublisherassertions.NoInput"));
+		
+		for (org.uddi.api_v3.PublisherAssertion entity : entityList) {
+			validatePublisherAssertion(em, publisher, entity);
+		}
+	}
+	
+	public static void validateSetPublisherAssertions(EntityManager em, UddiEntityPublisher publisher, Holder<List<org.uddi.api_v3.PublisherAssertion>> body) throws DispositionReportFaultMessage {
+
+		// No null input
+		if (body == null)
+			throw new FatalErrorException(new ErrorMessage("errors.NullInput"));
+		
+		// Assertion list can be null or empty - it signifies that publisher is deleting all their assertions
+		List<org.uddi.api_v3.PublisherAssertion> entityList = body.value;
+		if (entityList != null && entityList.size() > 0) {
+		
+			for (org.uddi.api_v3.PublisherAssertion entity : entityList) {
+				validatePublisherAssertion(em, publisher, entity);
+			}
+		}
+	}
+
 	
 	public static void validateBusinessEntity(EntityManager em, UddiEntityPublisher publisher, org.uddi.api_v3.BusinessEntity businessEntity) throws DispositionReportFaultMessage {
 		
@@ -616,6 +663,43 @@
 
 	}
 	
+	public static void validatePublisherAssertion(EntityManager em, UddiEntityPublisher publisher, org.uddi.api_v3.PublisherAssertion pubAssertion) throws DispositionReportFaultMessage {
+		// A supplied publisher assertion can't be null
+		if (pubAssertion == null)
+			throw new ValueNotAllowedException(new ErrorMessage("errors.pubassertion.NullInput"));
+		
+		// The keyedRef must not be blank and every field must contain data.
+		org.uddi.api_v3.KeyedReference keyedRef = pubAssertion.getKeyedReference();
+		if (keyedRef == null || 
+			keyedRef.getTModelKey() == null || keyedRef.getTModelKey().length() == 0 ||
+			keyedRef.getKeyName() == null || keyedRef.getKeyName().length() == 0 ||
+			keyedRef.getKeyValue() == null || keyedRef.getKeyValue().length() == 0)
+			throw new ValueNotAllowedException(new ErrorMessage("errors.pubassertion.BlankKeyedRef"));
+		
+		String fromKey = pubAssertion.getFromKey();
+		if (fromKey == null || fromKey.length() == 0)
+			throw new ValueNotAllowedException(new ErrorMessage("errors.pubassertion.BlankFromKey"));
+
+		String toKey = pubAssertion.getToKey();
+		if (toKey == null || toKey.length() == 0)
+			throw new ValueNotAllowedException(new ErrorMessage("errors.pubassertion.BlankToKey"));
+		
+		if (fromKey.equals(toKey))
+			throw new ValueNotAllowedException(new ErrorMessage("errors.pubassertion.SameBusinessKey"));
+		
+		Object fromObj = em.find(org.apache.juddi.model.BusinessEntity.class, fromKey);
+		if (fromObj == null)
+			throw new InvalidKeyPassedException(new ErrorMessage("errors.invalidkey.BusinessNotFound", fromKey));
+
+		Object toObj = em.find(org.apache.juddi.model.BusinessEntity.class, pubAssertion.getToKey());
+		if (toObj == null)
+			throw new InvalidKeyPassedException(new ErrorMessage("errors.invalidkey.BusinessNotFound", toKey));
+		
+		if (!publisher.isOwner((UddiEntity)fromObj) && !publisher.isOwner((UddiEntity)toObj))
+			throw new UserMismatchException(new ErrorMessage("errors.pubassertion.UserMismatch", fromKey + " & " + toKey));
+			
+	}
+	
 	public static void validateNames(List<org.uddi.api_v3.Name> names) throws DispositionReportFaultMessage {
 		// At least one name is required
 		if (names == null || names.size() == 0)

Modified: webservices/juddi/branches/v3_trunk/juddi-core/src/main/resources/messages_en.properties
URL: http://svn.apache.org/viewvc/webservices/juddi/branches/v3_trunk/juddi-core/src/main/resources/messages_en.properties?rev=718804&r1=718803&r2=718804&view=diff
==============================================================================
--- webservices/juddi/branches/v3_trunk/juddi-core/src/main/resources/messages_en.properties (original)
+++ webservices/juddi/branches/v3_trunk/juddi-core/src/main/resources/messages_en.properties Tue Nov 18 15:58:49 2008
@@ -75,8 +75,6 @@
 errors.invalidkey.businessservice.ParentMismatch=The service being saved has a different parent business key then the one provided
 errors.invalidkey.bindingtemplate.ParentMismatch=The binding template being saved has a different parent service key then the one provided
 errors.invalidprojection.ParentMismatch=The supplied business key doesn't match the actual business key of the service being projected
-errors.assertion.NoPubAssertions=No publisher assertions were passed.  At least one assertion must be passed
-errors.assertion.AssertionNotFound=The publisher assertion was not found for the given key
 errors.usermismatch.InvalidOwner=The user is not authorized to access the given entity
 errors.usermismatch.InvalidOwnerParent=The user is not authorized to access the given parent entity
 
@@ -85,6 +83,7 @@
 errors.saveservice.NoInput=At least one BusinessService must be provided
 errors.savebinding.NoInput=At least one BindingTemplate must be provided
 errors.savetmodel.NoInput=At least one tModel must be provided
+errors.addpublisherassertions.NoInput=At least one publisherAssertion must be provided
 errors.businessentity.NullInput=The businessEntity structure cannot be blank
 errors.businessservice.NullInput=The businessService structure cannot be blank
 errors.bindingtemplate.NullInput=The bindingTemplate structure cannot be blank
@@ -92,6 +91,14 @@
 errors.tmodel.NullInput=The tModel structure cannot be blank
 errors.tmodel.NoAccessPoint=A tModel must contain a name
 errors.tmodel.keygenerator.BadCategory=A Key Generator tModel must have exactly one 'types' category whose value is 'keyGenerator'
+errors.pubassertion.NullInput=The publisherAssertion structure cannot be blank
+errors.pubassertion.BlankKeyedRef=The keyedReference of the publisherAssertion cannot be blank.  All fields must contain content.
+errors.pubassertion.BlankFromKey=The fromKey of the publisherAssertion cannot be blank.
+errors.pubassertion.BlankToKey=The toKey of the publisherAssertion cannot be blank.
+errors.pubassertion.SameBusinessKey=The fromKey and toKey refer to the same business
+errors.pubassertion.UserMismatch=The publisher does not own either referenced businessEntity of the publisherAssertion
+errors.pubassertion.NoPubAssertions=No publisher assertions were passed.  At least one assertion must be passed
+errors.pubassertion.AssertionNotFound=The publisher assertion was not found for the given key
 errors.businessservices.NoInput=A businessServices collection must contain at least one businessService
 errors.bindingtemplates.NoInput=A bindingTemplates collection must contain at least one bindingTemplate
 errors.names.NoInput=At least one name is required

Added: webservices/juddi/branches/v3_trunk/juddi-core/src/test/java/org/apache/juddi/test/JUDDITest.java
URL: http://svn.apache.org/viewvc/webservices/juddi/branches/v3_trunk/juddi-core/src/test/java/org/apache/juddi/test/JUDDITest.java?rev=718804&view=auto
==============================================================================
--- webservices/juddi/branches/v3_trunk/juddi-core/src/test/java/org/apache/juddi/test/JUDDITest.java (added)
+++ webservices/juddi/branches/v3_trunk/juddi-core/src/test/java/org/apache/juddi/test/JUDDITest.java Tue Nov 18 15:58:49 2008
@@ -0,0 +1,51 @@
+package org.apache.juddi.test;
+
+import javax.xml.bind.JAXBException;
+
+import org.testng.Assert;
+import org.testng.annotations.*;
+import org.uddi.v3_service.DispositionReportFaultMessage;
+
+
+/*
+ * This test is used to initialize and clean up after other tests.
+ */
+public class JUDDITest {
+	
+	
+	@Parameters({ "sourceDir" })
+	@Test
+	public void initializeTests(String sourceDir) {
+		try {
+			// The root publisher with admin rights must exist to publish another publisher.
+			UDDIApiTestHelper.installRootPublisher(sourceDir);
+			// Install the root Key Generator
+			UDDIApiTestHelper.installRootPublisherKeyGen(sourceDir);
+
+		}
+		catch(DispositionReportFaultMessage dr) {
+			Assert.fail("No exception should be thrown", dr);
+		}
+		catch(JAXBException je) {
+			Assert.fail("No exception should be thrown", je);
+		}
+
+	}
+
+	@Test
+	public void cleanupTests() {
+		try {
+			
+			UDDIApiTestHelper.removeRootPublisherKeyGen();
+			UDDIApiTestHelper.removeRootPublisher();
+			UDDIApiTestHelper.removeAuthTokens();
+		}
+		catch(Exception e) {
+			Assert.fail("No exception should be thrown", e);
+		}
+		
+	}
+
+	
+	
+}

Propchange: webservices/juddi/branches/v3_trunk/juddi-core/src/test/java/org/apache/juddi/test/JUDDITest.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: webservices/juddi/branches/v3_trunk/juddi-core/src/test/java/org/apache/juddi/test/PublisherAssertionTest.java
URL: http://svn.apache.org/viewvc/webservices/juddi/branches/v3_trunk/juddi-core/src/test/java/org/apache/juddi/test/PublisherAssertionTest.java?rev=718804&view=auto
==============================================================================
--- webservices/juddi/branches/v3_trunk/juddi-core/src/test/java/org/apache/juddi/test/PublisherAssertionTest.java (added)
+++ webservices/juddi/branches/v3_trunk/juddi-core/src/test/java/org/apache/juddi/test/PublisherAssertionTest.java Tue Nov 18 15:58:49 2008
@@ -0,0 +1,78 @@
+package org.apache.juddi.test;
+
+import java.util.List;
+import javax.xml.bind.JAXBException;
+
+import org.apache.juddi.api.impl.UDDIPublicationImpl;
+import org.testng.Assert;
+import org.testng.annotations.*;
+import static junit.framework.Assert.assertEquals;
+
+import org.uddi.api_v3.*;
+import org.uddi.v3_service.DispositionReportFaultMessage;
+
+public class PublisherAssertionTest {
+	private UDDIPublicationImpl publish = new UDDIPublicationImpl();
+	
+	@Parameters({ "sourceDir", "pubassertFile", "publisherId" })
+	@Test
+	public void addPublisherAssertion(String sourceDir, String pubassertFile, String publisherId) {
+		try {
+			String authInfo = UDDIApiTestHelper.getAuthToken(publisherId);
+			
+			AddPublisherAssertions ap = new AddPublisherAssertions();
+			ap.setAuthInfo(authInfo);
+
+			PublisherAssertion paIn = (PublisherAssertion)UDDIApiTestHelper.buildEntityFromDoc(sourceDir + pubassertFile, "org.uddi.api_v3");
+			ap.getPublisherAssertion().add(paIn);
+			publish.addPublisherAssertions(ap);
+	
+			// Now get the entity and check the values
+			List<PublisherAssertion> paOutList = publish.getPublisherAssertions(authInfo);
+			PublisherAssertion paOut = paOutList.get(0);
+
+			assertEquals(paIn.getFromKey(), paOut.getFromKey());
+			assertEquals(paIn.getToKey(), paOut.getToKey());
+			
+			KeyedReference keyRefIn = paIn.getKeyedReference();
+			KeyedReference keyRefOut = paOut.getKeyedReference();
+			
+			assertEquals(keyRefIn.getTModelKey(), keyRefOut.getTModelKey());
+			assertEquals(keyRefIn.getKeyName(), keyRefOut.getKeyName());
+			assertEquals(keyRefIn.getKeyValue(), keyRefOut.getKeyValue());
+			
+		}
+		catch(DispositionReportFaultMessage dr) {
+			Assert.fail("No exception should be thrown", dr);
+		}
+		catch(JAXBException je) {
+			Assert.fail("No exception should be thrown", je);
+		}
+
+	}
+
+	@Parameters({ "sourceDir", "pubassertFile", "publisherId" })
+	@Test
+	public void deletePublisherAssertion(String sourceDir, String pubassertFile, String publisherId) {
+		try {
+			String authInfo = UDDIApiTestHelper.getAuthToken(publisherId);
+			
+			// Delete the entity and make sure it is removed
+			DeletePublisherAssertions dp = new DeletePublisherAssertions();
+			dp.setAuthInfo(authInfo);
+			
+			PublisherAssertion paIn = (PublisherAssertion)UDDIApiTestHelper.buildEntityFromDoc(sourceDir + pubassertFile, "org.uddi.api_v3");
+			dp.getPublisherAssertion().add(paIn);
+			
+			publish.deletePublisherAssertions(dp);
+		}
+		catch(DispositionReportFaultMessage dr) {
+			Assert.fail("No exception should be thrown", dr);
+		}
+		catch(JAXBException je) {
+			Assert.fail("No exception should be thrown", je);
+		}
+		
+	}
+
+}

Propchange: webservices/juddi/branches/v3_trunk/juddi-core/src/test/java/org/apache/juddi/test/PublisherAssertionTest.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: webservices/juddi/branches/v3_trunk/juddi-core/src/test/java/org/apache/juddi/test/PublisherTest.java
URL: http://svn.apache.org/viewvc/webservices/juddi/branches/v3_trunk/juddi-core/src/test/java/org/apache/juddi/test/PublisherTest.java?rev=718804&r1=718803&r2=718804&view=diff
==============================================================================
--- webservices/juddi/branches/v3_trunk/juddi-core/src/test/java/org/apache/juddi/test/PublisherTest.java (original)
+++ webservices/juddi/branches/v3_trunk/juddi-core/src/test/java/org/apache/juddi/test/PublisherTest.java Tue Nov 18 15:58:49 2008
@@ -22,11 +22,6 @@
 	@Test
 	public void savePublisher(String sourceDir, String publisherFile, String publisherId) {
 		try {
-			// The root publisher with admin rights must exist to publish another publisher.
-			UDDIApiTestHelper.installRootPublisher(sourceDir);
-			// Install the root Key Generator
-			UDDIApiTestHelper.installRootPublisherKeyGen(sourceDir);
-
 			String authInfo = UDDIApiTestHelper.getAuthToken(UDDIApiTestHelper.ROOT_PUBLISHER);
 			
 			SavePublisher sp = new SavePublisher();
@@ -73,11 +68,7 @@
 			dp.setAuthInfo(authInfo);
 			
 			dp.getPublisherId().add(publisherId);
-			publish.deletePublisher(dp);
-			
-			UDDIApiTestHelper.removeRootPublisherKeyGen();
-			UDDIApiTestHelper.removeRootPublisher();
-			UDDIApiTestHelper.removeAuthTokens();
+			publish.deletePublisher(dp);			
 		}
 		catch(DispositionReportFaultMessage dr) {
 			Assert.fail("No exception should be thrown", dr);

Added: webservices/juddi/branches/v3_trunk/juddi-core/src/test/java/org/apache/juddi/test/jpublisher-ssyndicator_publisherAssertion.xml
URL: http://svn.apache.org/viewvc/webservices/juddi/branches/v3_trunk/juddi-core/src/test/java/org/apache/juddi/test/jpublisher-ssyndicator_publisherAssertion.xml?rev=718804&view=auto
==============================================================================
--- webservices/juddi/branches/v3_trunk/juddi-core/src/test/java/org/apache/juddi/test/jpublisher-ssyndicator_publisherAssertion.xml (added)
+++ webservices/juddi/branches/v3_trunk/juddi-core/src/test/java/org/apache/juddi/test/jpublisher-ssyndicator_publisherAssertion.xml Tue Nov 18 15:58:49 2008
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<publisherAssertion xmlns="urn:uddi-org:api_v3">
+  <fromKey>uddi:juddi.apache.org:joepublisher:businessone</fromKey>
+  <toKey>uddi:juddi.apache.org:samco:repository:samco</toKey>
+  <keyedReference tModelKey="uddi:uddi.org:relationships" keyName="Holding Company" keyValue="parent-child" />
+</publisherAssertion>

Propchange: webservices/juddi/branches/v3_trunk/juddi-core/src/test/java/org/apache/juddi/test/jpublisher-ssyndicator_publisherAssertion.xml
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: webservices/juddi/branches/v3_trunk/juddi-core/src/test/java/org/apache/juddi/test/ssyndicator_Publisher.xml
URL: http://svn.apache.org/viewvc/webservices/juddi/branches/v3_trunk/juddi-core/src/test/java/org/apache/juddi/test/ssyndicator_Publisher.xml?rev=718804&view=auto
==============================================================================
--- webservices/juddi/branches/v3_trunk/juddi-core/src/test/java/org/apache/juddi/test/ssyndicator_Publisher.xml (added)
+++ webservices/juddi/branches/v3_trunk/juddi-core/src/test/java/org/apache/juddi/test/ssyndicator_Publisher.xml Tue Nov 18 15:58:49 2008
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<publisher xmlns="urn:apache-org:juddi_v3" publisherId="ssyndicator">
+  <publisherName>Sam Syndicator</publisherName>
+  <emailAddress>ssyndicator@samco.com</emailAddress>
+  <isAdmin>false</isAdmin>
+  <isEnabled>TrUe</isEnabled>
+  <maxBindingsPerService>199</maxBindingsPerService>
+  <maxBusinesses>100</maxBusinesses>
+  <maxServicePerBusiness>100</maxServicePerBusiness>
+  <maxTModels>100</maxTModels>
+</publisher>

Propchange: webservices/juddi/branches/v3_trunk/juddi-core/src/test/java/org/apache/juddi/test/ssyndicator_Publisher.xml
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Copied: webservices/juddi/branches/v3_trunk/juddi-core/src/test/java/org/apache/juddi/test/ssyndicator_businessEntity1.xml (from r713229, webservices/juddi/branches/v3_trunk/juddi-core/src/test/java/org/apache/juddi/test/businessEntity2.xml)
URL: http://svn.apache.org/viewvc/webservices/juddi/branches/v3_trunk/juddi-core/src/test/java/org/apache/juddi/test/ssyndicator_businessEntity1.xml?p2=webservices/juddi/branches/v3_trunk/juddi-core/src/test/java/org/apache/juddi/test/ssyndicator_businessEntity1.xml&p1=webservices/juddi/branches/v3_trunk/juddi-core/src/test/java/org/apache/juddi/test/businessEntity2.xml&r1=713229&r2=718804&rev=718804&view=diff
==============================================================================
--- webservices/juddi/branches/v3_trunk/juddi-core/src/test/java/org/apache/juddi/test/businessEntity2.xml (original)
+++ webservices/juddi/branches/v3_trunk/juddi-core/src/test/java/org/apache/juddi/test/ssyndicator_businessEntity1.xml Tue Nov 18 15:58:49 2008
@@ -1,33 +1,30 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<businessEntity xmlns="urn:uddi-org:api_v3" xmlns:xml="http://www.w3.org/XML/1998/namespace" businessKey="uddi:businesstwo.com">
+<businessEntity xmlns="urn:uddi-org:api_v3" xmlns:xml="http://www.w3.org/XML/1998/namespace" businessKey="uddi:juddi.apache.org:samco:repository:samco">
   <discoveryURLs>
-    <discoveryURL useType="home">http://www.businesstwo.com</discoveryURL>
-    <discoveryURL useType="serviceList">http://www.businesstwo.com/services</discoveryURL>
+    <discoveryURL useType="home">http://www.samco.com</discoveryURL>
+    <discoveryURL useType="serviceList">http://www.samco.com/services</discoveryURL>
   </discoveryURLs>
-  <name xml:lang="en">The Firm</name>
-  <name xml:lang="es">Negocio Dos</name>
-  <description xml:lang="en">This is the description for Business Two.</description>
+  <name xml:lang="en">SamCo, Inc.</name>
+  <description xml:lang="en">SamCo provides a suite of digital assets.</description>
   <contacts>
     <contact useType="administrator">
-      <personName xml:lang="en">Ignatius Reilly</personName>
+      <personName xml:lang="en">Sam Syndicator</personName>
       <description xml:lang="en">This is the administrator of the service offerings.</description>
       <phtwo useType="office">123-456-7890</phtwo>
       <phtwo useType="mobile">987-654-3210</phtwo>
-      <email useType="work">ireilly@businesstwo.com</email>
+      <email useType="work">ssyndicator@samco.com</email>
       <address xml:lang="en" useType="headquarters" sortCode="1" tModelKey="uddi:tmodelKey:address">
-        <addressLine keyName="street" keyValue="street">2 Briar</addressLine>
-        <addressLine keyName="citystatezip" keyValue="citystatezip">Chicago, IL 60657</addressLine>
+        <addressLine keyName="street" keyValue="street">1515 Main St</addressLine>
+        <addressLine keyName="citystatezip" keyValue="citystatezip">Ann Arbor, MI 41804</addressLine>
         <addressLine keyName="country" keyValue="country">USA</addressLine>
       </address>
     </contact>
   </contacts>
-  <businessServices>
-  </businessServices>
   <categoryBag>
-    <keyedReference tModelKey="uddi:tmodelkey:categories:fruit" keyName="category" keyValue="apples" />
-    <keyedReference tModelKey="uddi:tmodelkey:categories:music" keyName="category" keyValue="jazz" />
-    <keyedReference tModelKey="uddi:tmodelkey:categories:music" keyName="category" keyValue="blues" />
-    <keyedReference tModelKey="uddi:tmodelkey:categories:music" keyName="category" keyValue="blues-rock" />
+    <keyedReference tModelKey="uddi:tmodelkey:categories:fruit" keyName="category" keyValue="bananas" />
+    <keyedReference tModelKey="uddi:tmodelkey:categories:fruit" keyName="category" keyValue="kiwi" />
+    <keyedReference tModelKey="uddi:tmodelkey:categories:music" keyName="category" keyValue="progressive-rock" />
+    <keyedReference tModelKey="uddi:tmodelkey:categories:music" keyName="category" keyValue="country" />
     <keyedReferenceGroup tModelKey="uddi:tmodelKey:group">
       <keyedReference tModelKey="uddi:tmodelKey:blank" keyName="blank" keyValue="blank" />
     </keyedReferenceGroup>

Propchange: webservices/juddi/branches/v3_trunk/juddi-core/src/test/java/org/apache/juddi/test/ssyndicator_businessEntity1.xml
------------------------------------------------------------------------------
    svn:mergeinfo = 

Propchange: webservices/juddi/branches/v3_trunk/juddi-core/src/test/java/org/apache/juddi/test/ssyndicator_businessEntity1.xml
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Copied: webservices/juddi/branches/v3_trunk/juddi-core/src/test/java/org/apache/juddi/test/ssyndicator_businessService1.xml (from r713229, webservices/juddi/branches/v3_trunk/juddi-core/src/test/java/org/apache/juddi/test/businessService2.xml)
URL: http://svn.apache.org/viewvc/webservices/juddi/branches/v3_trunk/juddi-core/src/test/java/org/apache/juddi/test/ssyndicator_businessService1.xml?p2=webservices/juddi/branches/v3_trunk/juddi-core/src/test/java/org/apache/juddi/test/ssyndicator_businessService1.xml&p1=webservices/juddi/branches/v3_trunk/juddi-core/src/test/java/org/apache/juddi/test/businessService2.xml&r1=713229&r2=718804&rev=718804&view=diff
==============================================================================
--- webservices/juddi/branches/v3_trunk/juddi-core/src/test/java/org/apache/juddi/test/businessService2.xml (original)
+++ webservices/juddi/branches/v3_trunk/juddi-core/src/test/java/org/apache/juddi/test/ssyndicator_businessService1.xml Tue Nov 18 15:58:49 2008
@@ -1,16 +1,16 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<businessService xmlns="urn:uddi-org:api_v3" xmlns:xml="http://www.w3.org/XML/1998/namespace" businessKey="uddi:businessone.com" serviceKey="uddi:businessone.com:services:servicetwo">
-  <name xml:lang="en">Service Two</name>
-  <name xml:lang="en">Second Service</name>
-  <description xml:lang="en">This is the description of service two.</description>
-  <description xml:lang="es">Ésta es la descripción del servicio dos.</description>
+<businessService xmlns="urn:uddi-org:api_v3" xmlns:xml="http://www.w3.org/XML/1998/namespace" businessKey="uddi:juddi.apache.org:samco:repository:samco" serviceKey="uddi:juddi.apache.org:samco:repository:listingservice">
+  <name xml:lang="en">Listing Service</name>
+  <name xml:lang="es">Servicio del listado</name>
+  <description xml:lang="en">This is the description of the listing service.</description>
+  <description xml:lang="es">Ésta es la descripción del servicio del listado.</description>
   <bindingTemplates>
-    <bindingTemplate bindingKey="uddi:businessone.com:services:servicetwo:accesspoint">
-      <description xml:lang="en">This is the access point for service two.</description>
-      <accessPoint useType="endPoint">http://businessone.com/services/servicetwo</accessPoint>
+    <bindingTemplate bindingKey="uddi:juddi.apache.org:samco:repository:listservice-accesspoint">
+      <description xml:lang="en">This is the access point for listing service.</description>
+      <accessPoint useType="endPoint">http:/samco.com/services/listingservice</accessPoint>
       <tModelInstanceDetails>
-        <tModelInstanceInfo tModelKey="uddi:businessone.com:services:servicetwo:wsdlSpec">
-          <description xml:lang="en">The wsdl for this service: service two</description>
+        <tModelInstanceInfo tModelKey="uddi:juddi.apache.org:samco:repository:listservice-wsdlSpec">
+          <description xml:lang="en">The wsdl for this service: Listing Service</description>
           <instanceDetails>
             <overviewDoc>
               <description xml:lang="en">Help document to describe the WSDL</description>
@@ -26,8 +26,8 @@
     </bindingTemplate>
   </bindingTemplates>
   <categoryBag>
-    <keyedReference tModelKey="uddi:tmodelkey:categories" keyName="category" keyValue="bananas" />
-    <keyedReference tModelKey="uddi:tmodelkey:categories" keyName="category" keyValue="strawberries" />
+    <keyedReference tModelKey="uddi:tmodelkey:categories:beer" keyName="category" keyValue="lager" />
+    <keyedReference tModelKey="uddi:tmodelkey:categories:beer" keyName="category" keyValue="pilsner" />
     <keyedReferenceGroup tModelKey="uddi:tmodelKey:group">
       <keyedReference tModelKey="uddi:tmodelKey:blank" keyName="blank" keyValue="blank" />
     </keyedReferenceGroup>

Propchange: webservices/juddi/branches/v3_trunk/juddi-core/src/test/java/org/apache/juddi/test/ssyndicator_businessService1.xml
------------------------------------------------------------------------------
    svn:mergeinfo = 

Propchange: webservices/juddi/branches/v3_trunk/juddi-core/src/test/java/org/apache/juddi/test/ssyndicator_businessService1.xml
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: webservices/juddi/branches/v3_trunk/juddi-core/src/test/java/org/apache/juddi/test/ssyndicator_tModelKeyGen.xml
URL: http://svn.apache.org/viewvc/webservices/juddi/branches/v3_trunk/juddi-core/src/test/java/org/apache/juddi/test/ssyndicator_tModelKeyGen.xml?rev=718804&view=auto
==============================================================================
--- webservices/juddi/branches/v3_trunk/juddi-core/src/test/java/org/apache/juddi/test/ssyndicator_tModelKeyGen.xml (added)
+++ webservices/juddi/branches/v3_trunk/juddi-core/src/test/java/org/apache/juddi/test/ssyndicator_tModelKeyGen.xml Tue Nov 18 15:58:49 2008
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<tModel tModelKey="uddi:juddi.apache.org:samco:repository:keygenerator" xmlns="urn:uddi-org:api_v3">
+  <name>Sam Syndicator's Key Generator</name>
+  <description>This is the key generator for Sam Syndicator's UDDI entities!</description>
+  <overviewDoc>
+    <overviewURL useType="text">
+      http://uddi.org/pubs/uddi_v3.htm#keyGen</overviewURL>
+  </overviewDoc>
+  <categoryBag>
+    <keyedReference tModelKey="uddi:uddi.org:categorization:types" keyName="uddi-org:types:keyGenerator"
+      keyValue="keyGenerator" />
+  </categoryBag>
+</tModel>

Propchange: webservices/juddi/branches/v3_trunk/juddi-core/src/test/java/org/apache/juddi/test/ssyndicator_tModelKeyGen.xml
------------------------------------------------------------------------------
    svn:mime-type = text/plain



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