juddi-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From alexo...@apache.org
Subject [04/12] JUDDI-648 adding skeleton project JUDDI-197 merging code from 3.3 into trunk JUDDI-241 merging code from 3.3 into trunk JUDDI-198 merging code from 3.3 into trunk
Date Thu, 06 Mar 2014 01:16:18 GMT
http://git-wip-us.apache.org/repos/asf/juddi/blob/215438e4/juddi-core/src/main/java/org/apache/juddi/validation/ValidatePublish.java
----------------------------------------------------------------------
diff --git a/juddi-core/src/main/java/org/apache/juddi/validation/ValidatePublish.java b/juddi-core/src/main/java/org/apache/juddi/validation/ValidatePublish.java
index 184a68e..f788ae4 100644
--- a/juddi-core/src/main/java/org/apache/juddi/validation/ValidatePublish.java
+++ b/juddi-core/src/main/java/org/apache/juddi/validation/ValidatePublish.java
@@ -19,9 +19,11 @@ package org.apache.juddi.validation;
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
+import java.util.Properties;
 
 import javax.persistence.EntityManager;
 import javax.persistence.EntityTransaction;
@@ -32,6 +34,8 @@ import org.apache.commons.configuration.ConfigurationException;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.juddi.api_v3.AccessPointType;
+import org.apache.juddi.api_v3.DeleteClerk;
+import org.apache.juddi.api_v3.DeleteNode;
 import org.apache.juddi.api_v3.DeletePublisher;
 import org.apache.juddi.api_v3.SavePublisher;
 import org.apache.juddi.config.AppConfig;
@@ -49,6 +53,7 @@ import org.apache.juddi.model.UddiEntityPublisher;
 import org.apache.juddi.query.FindBusinessByPublisherQuery;
 import org.apache.juddi.query.FindTModelByPublisherQuery;
 import org.apache.juddi.v3.client.UDDIConstants;
+import org.apache.juddi.v3.client.config.TokenResolver;
 import org.apache.juddi.v3.error.AssertionNotFoundException;
 import org.apache.juddi.v3.error.ErrorMessage;
 import org.apache.juddi.v3.error.FatalErrorException;
@@ -108,10 +113,10 @@ public class ValidatePublish extends ValidateUDDIApi {
         private Log log = LogFactory.getLog(this.getClass());
 
         public ValidatePublish(UddiEntityPublisher publisher, String nodeid) {
-                super(publisher,nodeid);
+                super(publisher, nodeid);
         }
-        
-         public ValidatePublish(UddiEntityPublisher publisher) {
+
+        public ValidatePublish(UddiEntityPublisher publisher) {
                 super(publisher);
         }
 
@@ -146,7 +151,7 @@ public class ValidatePublish extends ValidateUDDIApi {
                                 throw new InvalidKeyPassedException(new ErrorMessage("errors.invalidkey.BusinessNotFound", entityKey));
                         }
 
-                        if (!publisher.isOwner((UddiEntity) obj)&& !((Publisher) publisher).isAdmin() ) {
+                        if (!publisher.isOwner((UddiEntity) obj) && !((Publisher) publisher).isAdmin()) {
                                 throw new UserMismatchException(new ErrorMessage("errors.usermismatch.InvalidOwner", entityKey));
                         }
 
@@ -185,10 +190,9 @@ public class ValidatePublish extends ValidateUDDIApi {
                                 throw new InvalidKeyPassedException(new ErrorMessage("errors.invalidkey.ServiceNotFound", entityKey));
                         }
 
-                         //if you're are the owner, access granted
+                        //if you're are the owner, access granted
                         //if you are an admin && this item belongs to this node, access granted
                         //else denied
-                        
                         AccessCheck(obj, entityKey);
                         i++;
                 }
@@ -225,7 +229,7 @@ public class ValidatePublish extends ValidateUDDIApi {
                         if (obj == null) {
                                 throw new InvalidKeyPassedException(new ErrorMessage("errors.invalidkey.BindingTemplateNotFound", entityKey));
                         }
-                        
+
                         AccessCheck(obj, entityKey);
 
                         i++;
@@ -268,21 +272,21 @@ public class ValidatePublish extends ValidateUDDIApi {
                         i++;
                 }
         }
-        
-        private void AccessCheck(Object obj, String entityKey) throws UserMismatchException{
-                        boolean accessCheck=false; //assume access denied
-                        if (publisher.isOwner((UddiEntity) obj)){
-                           accessCheck=true;
-                                
-                        }
-                        if (((Publisher) publisher).isAdmin() && 
-                                nodeID.equals(((UddiEntity) obj).getNodeId())){
-                           accessCheck=true;
-                        }
-                
-                        if (!accessCheck ) {
-                                throw new UserMismatchException(new ErrorMessage("errors.usermismatch.InvalidOwner", entityKey));
-                        }
+
+        private void AccessCheck(Object obj, String entityKey) throws UserMismatchException {
+                boolean accessCheck = false; //assume access denied
+                if (publisher.isOwner((UddiEntity) obj)) {
+                        accessCheck = true;
+
+                }
+                if (((Publisher) publisher).isAdmin()
+                     && nodeID.equals(((UddiEntity) obj).getNodeId())) {
+                        accessCheck = true;
+                }
+
+                if (!accessCheck) {
+                        throw new UserMismatchException(new ErrorMessage("errors.usermismatch.InvalidOwner", entityKey));
+                }
 
         }
 
@@ -316,8 +320,8 @@ public class ValidatePublish extends ValidateUDDIApi {
                                 }
 
                                 if (!pubAssertion.getTmodelKey().equalsIgnoreCase(keyedRef.getTModelKey())
-                                        || !pubAssertion.getKeyName().equalsIgnoreCase(keyedRef.getKeyName())
-                                        || !pubAssertion.getKeyValue().equalsIgnoreCase(keyedRef.getKeyValue())) {
+                                     || !pubAssertion.getKeyName().equalsIgnoreCase(keyedRef.getKeyName())
+                                     || !pubAssertion.getKeyValue().equalsIgnoreCase(keyedRef.getKeyValue())) {
                                         throw new AssertionNotFoundException(new ErrorMessage("errors.pubassertion.AssertionNotFound", entity.getFromKey() + ", " + entity.getToKey()));
                                 }
 
@@ -348,6 +352,7 @@ public class ValidatePublish extends ValidateUDDIApi {
 
                 for (org.uddi.api_v3.BusinessEntity entity : entityList) {
                         validateBusinessEntity(em, entity, config, publisher);
+                        validateCheckedTModels(entity, config);
                 }
         }
 
@@ -402,6 +407,7 @@ public class ValidatePublish extends ValidateUDDIApi {
                 for (org.uddi.api_v3.BusinessService entity : entityList) {
                         // Entity specific data validation
                         validateBusinessService(em, entity, null, config, publisher);
+                        validateCheckedTModels(entity, config);
                 }
         }
 
@@ -454,6 +460,7 @@ public class ValidatePublish extends ValidateUDDIApi {
 
                 for (org.uddi.api_v3.BindingTemplate entity : entityList) {
                         validateBindingTemplate(em, entity, null, config, publisher);
+                        validateCheckedTModels(entity, config);
                 }
         }
 
@@ -506,6 +513,7 @@ public class ValidatePublish extends ValidateUDDIApi {
 
                 for (org.uddi.api_v3.TModel entity : entityList) {
                         validateTModel(em, entity, config, publisher);
+                        validateCheckedTModels(entity, config);
                 }
         }
 
@@ -581,17 +589,17 @@ public class ValidatePublish extends ValidateUDDIApi {
                 if (item.getBusinessServices() != null && !item.getSignature().isEmpty()) {
                         for (int i = 0; i < item.getBusinessServices().getBusinessService().size(); i++) {
                                 if (item.getBusinessServices().getBusinessService().get(i).getBusinessKey() == null
-                                        || item.getBusinessServices().getBusinessService().get(i).getBusinessKey().length() == 0) {
+                                     || item.getBusinessServices().getBusinessService().get(i).getBusinessKey().length() == 0) {
                                         throw new ValueNotAllowedException(new ErrorMessage("errors.entity.SignedButNoKey", "business/Service(" + i + ")/businessKey"));
                                 }
                                 if (item.getBusinessServices().getBusinessService().get(i).getServiceKey() == null
-                                        || item.getBusinessServices().getBusinessService().get(i).getServiceKey().length() == 0) {
+                                     || item.getBusinessServices().getBusinessService().get(i).getServiceKey().length() == 0) {
                                         throw new ValueNotAllowedException(new ErrorMessage("errors.entity.SignedButNoKey", "business/Service(" + i + ")/serviceKey"));
                                 }
                                 if (item.getBusinessServices().getBusinessService().get(i).getBindingTemplates() != null) {
                                         for (int k = 0; k < item.getBusinessServices().getBusinessService().get(i).getBindingTemplates().getBindingTemplate().size(); k++) {
                                                 if (item.getBusinessServices().getBusinessService().get(i).getBindingTemplates().getBindingTemplate().get(k).getBindingKey() == null
-                                                        || item.getBusinessServices().getBusinessService().get(i).getBindingTemplates().getBindingTemplate().get(k).getBindingKey().length() == 0) {
+                                                     || item.getBusinessServices().getBusinessService().get(i).getBindingTemplates().getBindingTemplate().get(k).getBindingKey().length() == 0) {
                                                         throw new ValueNotAllowedException(new ErrorMessage("errors.entity.SignedButNoKey", "business/Service(" + i + ")/bindingTemplate)" + k + ")/bindingKey"));
                                                 }
                                         }
@@ -635,15 +643,15 @@ public class ValidatePublish extends ValidateUDDIApi {
                 if (item.getBindingTemplates() != null && !item.getSignature().isEmpty()) {
                         for (int i = 0; i < item.getBindingTemplates().getBindingTemplate().size(); i++) {
                                 if (item.getBindingTemplates().getBindingTemplate().get(i).getBindingKey() == null
-                                        || item.getBindingTemplates().getBindingTemplate().get(i).getBindingKey().length() == 0) {
+                                     || item.getBindingTemplates().getBindingTemplate().get(i).getBindingKey().length() == 0) {
                                         throw new ValueNotAllowedException(new ErrorMessage("errors.entity.SignedButNoKey", "businessService/bindingTemplate(" + i + ")/bindingKey"));
                                 }
                         }
                 }
         }
 
-        public void validateBusinessEntity(EntityManager em, org.uddi.api_v3.BusinessEntity businessEntity, 
-        		Configuration config, UddiEntityPublisher publisher) throws DispositionReportFaultMessage {
+        public void validateBusinessEntity(EntityManager em, org.uddi.api_v3.BusinessEntity businessEntity,
+             Configuration config, UddiEntityPublisher publisher) throws DispositionReportFaultMessage {
 
                 // A supplied businessEntity can't be null
                 if (businessEntity == null) {
@@ -668,7 +676,7 @@ public class ValidatePublish extends ValidateUDDIApi {
 
                                 // Make sure publisher owns this entity.
                                 AccessCheck(obj, entityKey);
-                                
+
                         } else {
                                 // Inside this block, we have a key proposed by the publisher on a new entity
 
@@ -690,7 +698,6 @@ public class ValidatePublish extends ValidateUDDIApi {
 
                 // was TODO: validate "checked" categories or category groups (see section 5.2.3 of spec)? optional to support
                 //covered by ref integrity checks
-
                 validateNames(businessEntity.getName());
                 validateDiscoveryUrls(businessEntity.getDiscoveryURLs());
                 validateContacts(businessEntity.getContacts(), config);
@@ -701,9 +708,9 @@ public class ValidatePublish extends ValidateUDDIApi {
 
         }
 
-        public void validateBusinessServices(EntityManager em, org.uddi.api_v3.BusinessServices businessServices, 
-        		org.uddi.api_v3.BusinessEntity parent, Configuration config, UddiEntityPublisher publisher)
-                throws DispositionReportFaultMessage {
+        public void validateBusinessServices(EntityManager em, org.uddi.api_v3.BusinessServices businessServices,
+             org.uddi.api_v3.BusinessEntity parent, Configuration config, UddiEntityPublisher publisher)
+             throws DispositionReportFaultMessage {
                 // Business services is optional
                 if (businessServices == null) {
                         return;
@@ -719,9 +726,9 @@ public class ValidatePublish extends ValidateUDDIApi {
 
         }
 
-        public void validateBusinessService(EntityManager em, org.uddi.api_v3.BusinessService businessService, 
-        		org.uddi.api_v3.BusinessEntity parent, Configuration config, UddiEntityPublisher publisher)
-                throws DispositionReportFaultMessage {
+        public void validateBusinessService(EntityManager em, org.uddi.api_v3.BusinessService businessService,
+             org.uddi.api_v3.BusinessEntity parent, Configuration config, UddiEntityPublisher publisher)
+             throws DispositionReportFaultMessage {
 
                 // A supplied businessService can't be null
                 if (businessService == null) {
@@ -767,7 +774,6 @@ public class ValidatePublish extends ValidateUDDIApi {
                 // Projections don't require as rigorous testing as only the projected service's business key and service key are examined for validity.
                 if (isProjection) {
 
-
                         Object obj = em.find(org.apache.juddi.model.BusinessService.class, entityKey);
                         // Can't project a service that doesn't exist!
                         if (obj == null) {
@@ -803,7 +809,6 @@ public class ValidatePublish extends ValidateUDDIApi {
                                                 businessService.setBusinessKey(parentKey);
                                         }
 
-                                        
                                         // Make sure publisher owns this entity.
                                         AccessCheck(obj, entityKey);
 
@@ -851,7 +856,7 @@ public class ValidatePublish extends ValidateUDDIApi {
 
                                         // Make sure publisher owns this parent entity.
                                         AccessCheck(parentTemp, parentKey);
-                                       // if (!publisher.isOwner((UddiEntity) parentTemp)) {
+                                        // if (!publisher.isOwner((UddiEntity) parentTemp)) {
                                         //        throw new UserMismatchException(new ErrorMessage("errors.usermismatch.InvalidOwnerParent", parentKey));
                                         //}
                                 }
@@ -865,7 +870,6 @@ public class ValidatePublish extends ValidateUDDIApi {
                         }
 
                         // TODO: validate "checked" categories or category groups (see section 5.2.3 of spec)? optional to support
-
                         validateNames(businessService.getName());
                         validateCategoryBag(businessService.getCategoryBag(), config, false);
                         validateDescriptions(businessService.getDescription());
@@ -874,9 +878,9 @@ public class ValidatePublish extends ValidateUDDIApi {
 
         }
 
-        public void validateBindingTemplates(EntityManager em, org.uddi.api_v3.BindingTemplates bindingTemplates, 
-        		org.uddi.api_v3.BusinessService parent, Configuration config, UddiEntityPublisher publisher)
-                throws DispositionReportFaultMessage {
+        public void validateBindingTemplates(EntityManager em, org.uddi.api_v3.BindingTemplates bindingTemplates,
+             org.uddi.api_v3.BusinessService parent, Configuration config, UddiEntityPublisher publisher)
+             throws DispositionReportFaultMessage {
                 // Binding templates is optional
                 if (bindingTemplates == null) {
                         return;
@@ -894,8 +898,8 @@ public class ValidatePublish extends ValidateUDDIApi {
         }
 
         public void validateBindingTemplate(EntityManager em, org.uddi.api_v3.BindingTemplate bindingTemplate,
-                org.uddi.api_v3.BusinessService parent, Configuration config, UddiEntityPublisher publisher)
-                throws DispositionReportFaultMessage {
+             org.uddi.api_v3.BusinessService parent, Configuration config, UddiEntityPublisher publisher)
+             throws DispositionReportFaultMessage {
 
                 // A supplied bindingTemplate can't be null
                 if (bindingTemplate == null) {
@@ -960,10 +964,10 @@ public class ValidatePublish extends ValidateUDDIApi {
                                 }
 
                                 // Make sure publisher owns this entity.
-                                 AccessCheck(obj, entityKey);
+                                AccessCheck(obj, entityKey);
                                 //if (!publisher.isOwner((UddiEntity) obj)&& !((Publisher) publisher).isAdmin()) {
 //                                        throw new UserMismatchException(new ErrorMessage("errors.usermismatch.InvalidOwner", entityKey));
-  //                              }
+                                //                              }
 
                         } else {
                                 // Inside this block, we have a key proposed by the publisher on a new entity
@@ -992,7 +996,7 @@ public class ValidatePublish extends ValidateUDDIApi {
                                 Object parentTemp = em.find(org.apache.juddi.model.BusinessService.class, parentKey);
                                 if (parentTemp == null) {
                                         throw new InvalidKeyPassedException(new ErrorMessage("errors.invalidkey.ParentBusinessNotFound", parentKey));
-                                } else if (!(parentTemp instanceof org.apache.juddi.model.BusinessService)){
+                                } else if (!(parentTemp instanceof org.apache.juddi.model.BusinessService)) {
                                         //JUDDI-848
                                         throw new InvalidKeyPassedException(new ErrorMessage("errors.invalidkey.ParentBusinessNotFound", parentKey));
                                 }
@@ -1014,7 +1018,6 @@ public class ValidatePublish extends ValidateUDDIApi {
                 }
 
                 //was TODO validate "checked" categories or category groups (see section 5.2.3 of spec)? optional to support
-
                 //at least one must be defined
                 if (bindingTemplate.getAccessPoint() == null && bindingTemplate.getHostingRedirector() == null) {
                         throw new ValueNotAllowedException(new ErrorMessage("errors.bindingtemplate.NoAccessPoint"));
@@ -1029,6 +1032,7 @@ public class ValidatePublish extends ValidateUDDIApi {
                 validateDescriptions(bindingTemplate.getDescription());
                 validateHostingRedirector(em, bindingTemplate.getHostingRedirector(), config);
 
+                validateCheckedTModels(bindingTemplate, config);
         }
 
         public void validateTModel(EntityManager em, org.uddi.api_v3.TModel tModel, Configuration config, UddiEntityPublisher publisher) throws DispositionReportFaultMessage {
@@ -1057,7 +1061,7 @@ public class ValidatePublish extends ValidateUDDIApi {
                                 AccessCheck(obj, entityKey);
                                 //if (!publisher.isOwner((UddiEntity) obj)&& !((Publisher) publisher).isAdmin()) {
                                 //        throw new UserMismatchException(new ErrorMessage("errors.usermismatch.InvalidOwner", entityKey));
-                               // }
+                                // }
                         } else {
                                 // Inside this block, we have a key proposed by the publisher on a new entity
 
@@ -1086,11 +1090,10 @@ public class ValidatePublish extends ValidateUDDIApi {
                                         // If not a key generator, then simply validate key and then check to see that the proposed key is valid for this publisher
                                         ValidateUDDIKey.validateUDDIv3Key(entityKey);
                                         //fix for JUDDI-851
-                                        if (!entityKey.toUpperCase().startsWith("UUID:"))
-                                        {
-                                             if (!publisher.isValidPublisherKey(em, entityKey)) {
-                                                     throw new KeyUnavailableException(new ErrorMessage("errors.keyunavailable.BadPartition", entityKey));
-                                             }
+                                        if (!entityKey.toUpperCase().startsWith("UUID:")) {
+                                                if (!publisher.isValidPublisherKey(em, entityKey)) {
+                                                        throw new KeyUnavailableException(new ErrorMessage("errors.keyunavailable.BadPartition", entityKey));
+                                                }
                                         }
                                 }
                         }
@@ -1104,11 +1107,9 @@ public class ValidatePublish extends ValidateUDDIApi {
                 }
                 validateKeyLength(entityKey);
 
-
                 // TODO: validate "checked" categories or category groups (see section 5.2.3 of spec)? optional to support
-
                 if (tModel.getName() == null || tModel.getName().getValue() == null
-                        || tModel.getName().getValue().equals("")) {
+                     || tModel.getName().getValue().equals("")) {
                         throw new ValueNotAllowedException(new ErrorMessage("errors.tmodel.NoName"));
                 }
 
@@ -1135,9 +1136,9 @@ public class ValidatePublish extends ValidateUDDIApi {
                 // 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) {
+                     || 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"));
                 }
 
@@ -1397,7 +1398,6 @@ public class ValidatePublish extends ValidateUDDIApi {
                 validateKeyValue(kr.getKeyValue());
                 validateKeyName(kr.getKeyName());
 
-
                 boolean checkRef = false;
                 try {
                         checkRef = config.getBoolean(Property.JUDDI_ENFORCE_REFERENTIAL_INTEGRITY, false);
@@ -1409,7 +1409,6 @@ public class ValidatePublish extends ValidateUDDIApi {
 
                 }
 
-
                 String rootPublisherStr = config.getString(Property.JUDDI_ROOT_PUBLISHER);
                 // Per section 6.2.2.1 of the specification, no publishers (except the root) are allowed to use the node categorization tmodelKey
                 if (Constants.NODE_CATEGORY_TMODEL.equalsIgnoreCase(kr.getTModelKey())) {
@@ -1471,7 +1470,6 @@ public class ValidatePublish extends ValidateUDDIApi {
                 validateKeyLength(tmodelInstInfo.getTModelKey());
                 validateDescriptions(tmodelInstInfo.getDescription());
 
-
         }
 
         public void validateInstanceDetails(org.uddi.api_v3.InstanceDetails instDetails) throws DispositionReportFaultMessage {
@@ -1523,11 +1521,13 @@ public class ValidatePublish extends ValidateUDDIApi {
         }
 
         /**
-         * Publishing API functions are specific to jUDDI. Requires administrative privilege
+         * Publishing API functions are specific to jUDDI. Requires
+         * administrative privilege
+         *
          * @param em
          * @param body
-         * @throws DispositionReportFaultMessage 
-         */ 
+         * @throws DispositionReportFaultMessage
+         */
         public void validateDeletePublisher(EntityManager em, DeletePublisher body) throws DispositionReportFaultMessage {
 
                 // No null input
@@ -1635,7 +1635,6 @@ public class ValidatePublish extends ValidateUDDIApi {
                         //if (!publisher.isOwner((UddiEntity) obj)) {
                         //        throw new UserMismatchException(new ErrorMessage("errors.usermismatch.InvalidOwner", entityKey));
                         //}
-
                 }
         }
         ////////////////////////////////////////////////////////////////////
@@ -1671,7 +1670,6 @@ public class ValidatePublish extends ValidateUDDIApi {
                         log.debug("validateAccessPoint");
                 }
 
-
                 if (value != null) {
                         if (value.getValue().length() > ValidationConstants.MAX_accessPoint) {
                                 throw new ValueNotAllowedException(new ErrorMessage("errors.accessPoint.TooLong"));
@@ -1786,7 +1784,7 @@ public class ValidatePublish extends ValidateUDDIApi {
                         for (int i = 0; i < phone.size(); i++) {
                                 validateUseType(phone.get(i).getUseType());
                                 if (phone.get(i).getValue() == null
-                                        || phone.get(i).getValue().length() == 0) {
+                                     || phone.get(i).getValue().length() == 0) {
                                         throw new ValueNotAllowedException(new ErrorMessage("errors.phone.noinput"));
                                 }
                                 if (phone.get(i).getValue().length() > ValidationConstants.MAX_phone) {
@@ -1814,7 +1812,6 @@ public class ValidatePublish extends ValidateUDDIApi {
                         throw new ValueNotAllowedException(new ErrorMessage("errors.keyname.TooLong"));
                 }
 
-
         }
 
         private void validateDescriptions(List<Description> description) throws ValueNotAllowedException {
@@ -1976,7 +1973,6 @@ public class ValidatePublish extends ValidateUDDIApi {
                                         tx.begin();
                                         modelTModel = em.find(org.apache.juddi.model.Tmodel.class, tmodelKey);
 
-
                                         if (modelTModel != null) {
                                                 found = true;
                                                 api = new TModel();
@@ -2011,7 +2007,6 @@ public class ValidatePublish extends ValidateUDDIApi {
                         }
                 }
 
-
                 return ret;
         }
 
@@ -2032,14 +2027,12 @@ public class ValidatePublish extends ValidateUDDIApi {
                         }
                 }
 
-
                 return ret;
         }
 
         private List<String> GetBindingKeysCheckedTModelKeyedReference(Map<String, TModel> cache, BusinessEntity bt) {
                 List<String> ret = new ArrayList<String>();
 
-
                 if (bt == null) {
                         return ret;
                 }
@@ -2060,14 +2053,12 @@ public class ValidatePublish extends ValidateUDDIApi {
                         }
                 }
 
-
                 return ret;
         }
 
         private List<String> GetBindingKeysCheckedTModelKeyedReference(Map<String, TModel> cache, TModel bt) {
                 List<String> ret = new ArrayList<String>();
 
-
                 if (bt == null) {
                         return ret;
                 }
@@ -2102,7 +2093,6 @@ public class ValidatePublish extends ValidateUDDIApi {
                 if (ref != null) {
                         ret.addAll(TModelContains(UDDIConstants.IS_VALIDATED_BY, ref));
 
-
                 }
                 return ret;
         }
@@ -2148,23 +2138,215 @@ public class ValidatePublish extends ValidateUDDIApi {
          * @param addressLine
          */
         private void validatedAddressLinesIfKeyDefined(List<AddressLine> addressLine) throws ValueNotAllowedException {
-                String err="";
-                for (int i=0; i < addressLine.size(); i++){
-                        
-                        if (addressLine.get(i).getKeyName()==null||
-                             addressLine.get(i).getKeyName().trim().length()==0)
-                                err+= "addressLine(" +i + ").keyName,";
-                        if (addressLine.get(i).getKeyValue()==null||
-                             addressLine.get(i).getKeyValue().trim().length()==0)
-                                err+= "addressLine(" +i + ").keyValue,";
-                        if (addressLine.get(i).getValue()==null||
-                             addressLine.get(i).getValue().trim().length()==0)
-                                err+= "addressLine(" +i + ").value,";
-                }
-                if (err.length() > 0)
+                String err = "";
+                for (int i = 0; i < addressLine.size(); i++) {
+
+                        if (addressLine.get(i).getKeyName() == null
+                             || addressLine.get(i).getKeyName().trim().length() == 0) {
+                                err += "addressLine(" + i + ").keyName,";
+                        }
+                        if (addressLine.get(i).getKeyValue() == null
+                             || addressLine.get(i).getKeyValue().trim().length() == 0) {
+                                err += "addressLine(" + i + ").keyValue,";
+                        }
+                        if (addressLine.get(i).getValue() == null
+                             || addressLine.get(i).getValue().trim().length() == 0) {
+                                err += "addressLine(" + i + ").value,";
+                        }
+                }
+                if (err.length() > 0) {
                         throw new ValueNotAllowedException(new ErrorMessage("E_invalidValueAddressLine", err));
+                }
         }
 
+        private void validateCheckedTModels(BindingTemplate bindingTemplate, Configuration config) throws ValueNotAllowedException {
+
+                boolean checkRef = false;
+                try {
+                        checkRef = config.getBoolean(Property.JUDDI_ENFORCE_REFERENTIAL_INTEGRITY, false);
+                } catch (Exception ex) {
+                        log.warn("Error caught reading " + Property.JUDDI_ENFORCE_REFERENTIAL_INTEGRITY + " from config file", ex);
+                }
 
+                if (!checkRef) {
+                        return;
+                }
+                Map<String, TModel> cache = new HashMap<String, TModel>();
+                List<String> bindings = GetBindingKeysCheckedTModelKeyedReference(cache, bindingTemplate);
+
+                if (!bindings.isEmpty()) {
+                        //get a unique list
+                        bindings = new ArrayList(new HashSet(bindings));
+                        for (int i = 0; i < bindings.size(); i++) {
+                                //load binding from database
+                                EntityManager em = PersistenceManager.getEntityManager();
+                                org.apache.juddi.model.BindingTemplate find = em.find(org.apache.juddi.model.BindingTemplate.class, bindings.get(i));
+                                if (find != null) {
+                                        //parse endpoint
+                                        String url = find.getAccessPointUrl();
+                                        if (url == null) {
+                                                url = find.getHostingRedirector();
+                                        }
+                                        if (url != null) {
+                                                //call ValidateValuesFromWebService
+                                                //optimization for localhost?
+                                                ValidateValuesFromWebService.Validate(Rectify(url, config), bindingTemplate);
+                                        }
+
+                                }
+                        }
+                }
+        }
+
+        private void validateCheckedTModels(BusinessService obj, Configuration config) throws ValueNotAllowedException {
+                boolean checkRef = false;
+                try {
+                        checkRef = config.getBoolean(Property.JUDDI_ENFORCE_REFERENTIAL_INTEGRITY, false);
+                } catch (Exception ex) {
+                        log.warn("Error caught reading " + Property.JUDDI_ENFORCE_REFERENTIAL_INTEGRITY + " from config file", ex);
+                }
+                if (!checkRef) {
+                        return;
+                }
+                Map<String, TModel> cache = new HashMap<String, TModel>();
+                List<String> bindings = GetBindingKeysCheckedTModelKeyedReference(cache, obj);
+
+                if (!bindings.isEmpty()) {
+                        //get a unique list
+                        bindings = new ArrayList(new HashSet(bindings));
+                        for (int i = 0; i < bindings.size(); i++) {
+                                //load binding from database
+                                EntityManager em = PersistenceManager.getEntityManager();
+                                org.apache.juddi.model.BindingTemplate find = em.find(org.apache.juddi.model.BindingTemplate.class, bindings.get(i));
+                                if (find != null) {
+                                        //parse endpoint
+                                        String url = find.getAccessPointUrl();
+                                        if (url == null) {
+                                                url = find.getHostingRedirector();
+                                        }
+                                        if (url != null) {
+                                                //call ValidateValuesFromWebService
+                                                //optimization for localhost?
+                                                ValidateValuesFromWebService.Validate(Rectify(url, config), obj);
+                                        }
+
+                                }
+                        }
+                }
+        }
+
+        private void validateCheckedTModels(BusinessEntity entity, Configuration config) throws ValueNotAllowedException {
+                boolean checkRef = false;
+                try {
+                        checkRef = config.getBoolean(Property.JUDDI_ENFORCE_REFERENTIAL_INTEGRITY, false);
+                } catch (Exception ex) {
+                        log.warn("Error caught reading " + Property.JUDDI_ENFORCE_REFERENTIAL_INTEGRITY + " from config file", ex);
+                }
+                if (!checkRef) {
+                        return;
+                }
+                Map<String, TModel> cache = new HashMap<String, TModel>();
+                List<String> bindings = GetBindingKeysCheckedTModelKeyedReference(cache, entity);
+
+                if (!bindings.isEmpty()) {
+                        //get a unique list
+                        bindings = new ArrayList(new HashSet(bindings));
+                        for (int i = 0; i < bindings.size(); i++) {
+                                //load binding from database
+                                EntityManager em = PersistenceManager.getEntityManager();
+                                org.apache.juddi.model.BindingTemplate find = em.find(org.apache.juddi.model.BindingTemplate.class, bindings.get(i));
+                                if (find != null) {
+                                        //parse endpoint
+                                        String url = find.getAccessPointUrl();
+                                        if (url == null) {
+                                                url = find.getHostingRedirector();
+                                        }
+                                        if (url != null) {
+                                                //call ValidateValuesFromWebService
+                                                //optimization for localhost?
+                                                ValidateValuesFromWebService.Validate(Rectify(url, config), entity);
+                                        }
+
+                                }
+                        }
+                }
+        }
+
+        private void validateCheckedTModels(TModel entity, Configuration config) throws ValueNotAllowedException {
+                boolean checkRef = false;
+                try {
+                        checkRef = config.getBoolean(Property.JUDDI_ENFORCE_REFERENTIAL_INTEGRITY, false);
+                } catch (Exception ex) {
+                        log.warn("Error caught reading " + Property.JUDDI_ENFORCE_REFERENTIAL_INTEGRITY + " from config file", ex);
+                }
+                if (!checkRef) {
+                        return;
+                }
+                Map<String, TModel> cache = new HashMap<String, TModel>();
+                List<String> bindings = GetBindingKeysCheckedTModelKeyedReference(cache, entity);
+
+                if (!bindings.isEmpty()) {
+                        //get a unique list
+                        bindings = new ArrayList(new HashSet(bindings));
+                        for (int i = 0; i < bindings.size(); i++) {
+                                //load binding from database
+                                EntityManager em = PersistenceManager.getEntityManager();
+                                org.apache.juddi.model.BindingTemplate find = em.find(org.apache.juddi.model.BindingTemplate.class, bindings.get(i));
+                                if (find != null) {
+                                        //parse endpoint
+                                        String url = find.getAccessPointUrl();
+                                        if (url == null) {
+                                                url = find.getHostingRedirector();
+                                        }
+                                        if (url != null) {
+                                                //call ValidateValuesFromWebService
+                                                //optimization for localhost?
+                                                ValidateValuesFromWebService.Validate(Rectify(url, config), entity);
+                                        }
+
+                                }
+                        }
+                }
+        }
+
+        private String Rectify(String url, Configuration config) {
+                //${juddi.server.baseurl}
+                Properties p = new Properties();
+                p.put("juddi.server.baseurl", config.getString("juddi.server.baseurl", Property.DEFAULT_BASE_URL));
+
+                return TokenResolver.replaceTokens(url, p);
+        }
+
+        public void validateDeleteNode(EntityManager em, DeleteNode nodeID) throws DispositionReportFaultMessage {
+                if (nodeID == null) {
+                        throw new InvalidKeyPassedException(new ErrorMessage("errors.deleteClerk.NoInput"));
+                }
+                if (!((Publisher) publisher).isAdmin()) {
+                        throw new UserMismatchException(new ErrorMessage("errors.deletepublisher.AdminReqd"));
+                }
+                if (nodeID.getNodeID() == null || nodeID.getNodeID().trim().equalsIgnoreCase("")) {
+                        throw new InvalidKeyPassedException(new ErrorMessage("errors.deleteNode.NoInput"));
+                }
+
+        }
+
+        public void validateDeleteClerk(EntityManager em, DeleteClerk clerkID) throws DispositionReportFaultMessage {
+                if (clerkID == null) {
+                        throw new InvalidKeyPassedException(new ErrorMessage("errors.deleteClerk.NoInput"));
+                }
+                if (!((Publisher) publisher).isAdmin()) {
+                        throw new UserMismatchException(new ErrorMessage("errors.deletepublisher.AdminReqd"));
+                }
+                if (clerkID.getClerkID() == null || clerkID.getClerkID().trim().equalsIgnoreCase("")) {
+                        throw new InvalidKeyPassedException(new ErrorMessage("errors.deleteClerk.NoInput"));
+                }
+
+        }
+
+        public void validateGetAllNodes() throws DispositionReportFaultMessage {
+                if (!((Publisher) publisher).isAdmin()) {
+                        throw new UserMismatchException(new ErrorMessage("errors.deletepublisher.AdminReqd"));
+                }
+        }
 
 }

http://git-wip-us.apache.org/repos/asf/juddi/blob/215438e4/juddi-core/src/main/java/org/apache/juddi/validation/ValidateValueSetValidation.java
----------------------------------------------------------------------
diff --git a/juddi-core/src/main/java/org/apache/juddi/validation/ValidateValueSetValidation.java b/juddi-core/src/main/java/org/apache/juddi/validation/ValidateValueSetValidation.java
index f52a21d..897c456 100644
--- a/juddi-core/src/main/java/org/apache/juddi/validation/ValidateValueSetValidation.java
+++ b/juddi-core/src/main/java/org/apache/juddi/validation/ValidateValueSetValidation.java
@@ -14,18 +14,150 @@
  * limitations under the License.
  *
  */
+package org.apache.juddi.validation;
 
- package org.apache.juddi.validation;
-
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.persistence.EntityManager;
+import javax.persistence.EntityTransaction;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.juddi.api_v3.ValidValues;
+import org.apache.juddi.config.PersistenceManager;
+import org.apache.juddi.mapping.MappingModelToApi;
+import org.apache.juddi.model.Tmodel;
 import org.apache.juddi.model.UddiEntityPublisher;
-
+import org.apache.juddi.v3.error.ErrorMessage;
+import org.apache.juddi.v3.error.ValueNotAllowedException;
+import org.uddi.api_v3.TModel;
+import org.uddi.v3_service.DispositionReportFaultMessage;
+ 
 /**
  * @author <a href="mailto:jfaath@apache.org">Jeff Faath</a>
+ * @author <a href="mailto:alexoree@apache.org">Alex O'Ree</a>
  */
 public class ValidateValueSetValidation extends ValidateUDDIApi {
 
-	public ValidateValueSetValidation(UddiEntityPublisher publisher) {
-		super(publisher);
-	}
+        private static Log log = LogFactory.getLog(ValidateValueSetValidation.class);
+
+        public ValidateValueSetValidation(UddiEntityPublisher publisher) {
+                super(publisher);
+        }
+
+        /**
+         * called from jUDDI API SetAllValidValues
+         *
+         * @param values
+         */
+        public void validateSetAllValidValues(List<ValidValues> values) throws ValueNotAllowedException {
+                if (values == null || values.isEmpty()) {
+                        throw new ValueNotAllowedException(new ErrorMessage("errors.NullInput"));
+                }
+
+                for (int i = 0; i < values.size(); i++) {
+                        String key = values.get(i).getTModekKey();
+                        if (key == null || key.trim().length() == 0) {
+                                throw new ValueNotAllowedException(new ErrorMessage("errors.NullInput", "tModel key"));
+                        }
+                        //ensure tmodel exists
+                        Tmodel tm = GetTModel_MODEL_IfExists(values.get(i).getTModekKey());
+                        
+                        if (tm == null) {
+                                throw new ValueNotAllowedException(new ErrorMessage("errors.invalidkey.TModelNotFound", key));
+                        }
+                        //ensure caller owns the tModel
+                        if (!this.publisher.isOwner(tm)) {
+                                throw new ValueNotAllowedException(new ErrorMessage("errors.usermismatch.InvalidOwner", key ));
+                        }
+
+                        //if we have no values, it may be to simply unset any values
+
+                        /*//validate that we have values
+                         if (values.get(i).getValue() == null || values.get(i).getValue().isEmpty()) {
+                         throw new ValueNotAllowedException(new ErrorMessage("errors.NullInput", "value[]"));
+                         }
+                         //and that they aren't empty
+                         for (int k = 0; k < values.get(i).getValue().size(); k++) {
+                         if (values.get(i).getValue().get(k) == null || values.get(i).getValue().get(k).trim().length() == 0) {
+                         throw new ValueNotAllowedException(new ErrorMessage("errors.NullInput", "value[" + i + "].value"));
+                         }
+                         }*/
+                }
+        }
+
+        /**
+         * return the publisher
+         *
+         * @param tmodelKey
+         * @return
+         * @throws ValueNotAllowedException
+         */
+        public static TModel GetTModel_API_IfExists(String tmodelKey) throws ValueNotAllowedException {
+                EntityManager em = PersistenceManager.getEntityManager();
+
+                TModel apitmodel = null;
+                if (em == null) {
+                        //this is normally the Install class firing up
+                        log.warn(new ErrorMessage("errors.tmodel.ReferentialIntegrityNullEM"));
+                        return null;
+                } else {
+
+
+                        EntityTransaction tx = em.getTransaction();
+                        try {
+                                Tmodel modelTModel = null;
+                                tx.begin();
+                                modelTModel = em.find(org.apache.juddi.model.Tmodel.class, tmodelKey);
+                                if (modelTModel != null) {
+                                        apitmodel = new TModel();
+                                        try {
+                                                MappingModelToApi.mapTModel(modelTModel, apitmodel);
+                                        } catch (DispositionReportFaultMessage ex) {
+                                                log.warn(ex);
+                                                apitmodel=null;
+                                        }
+
+
+                                }
+                                tx.commit();
+                        } finally {
+                                if (tx.isActive()) {
+                                        tx.rollback();
+                                }
+                                em.close();
+                        }
+
+                }
+                return apitmodel;
+        }
+        
+        
+        public static Tmodel GetTModel_MODEL_IfExists(String tmodelKey) throws ValueNotAllowedException {
+                EntityManager em = PersistenceManager.getEntityManager();
+
+                Tmodel model = null;
+                if (em == null) {
+                        //this is normally the Install class firing up
+                        log.warn(new ErrorMessage("errors.tmodel.ReferentialIntegrityNullEM"));
+                        return null;
+                } else {
+
+
+                        EntityTransaction tx = em.getTransaction();
+                        try {
+                                
+                                tx.begin();
+                                model = em.find(org.apache.juddi.model.Tmodel.class, tmodelKey);
+                                tx.commit();
+                        } finally {
+                                if (tx.isActive()) {
+                                        tx.rollback();
+                                }
+                                em.close();
+                        }
 
+                }
+                return model;
+        }
 }

http://git-wip-us.apache.org/repos/asf/juddi/blob/215438e4/juddi-core/src/main/java/org/apache/juddi/validation/ValidateValuesFromWebService.java
----------------------------------------------------------------------
diff --git a/juddi-core/src/main/java/org/apache/juddi/validation/ValidateValuesFromWebService.java b/juddi-core/src/main/java/org/apache/juddi/validation/ValidateValuesFromWebService.java
new file mode 100644
index 0000000..bbce12e
--- /dev/null
+++ b/juddi-core/src/main/java/org/apache/juddi/validation/ValidateValuesFromWebService.java
@@ -0,0 +1,156 @@
+/*
+ * Copyright 2013 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.juddi.validation;
+
+import javax.xml.ws.BindingProvider;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.juddi.api.impl.UDDIValueSetValidationImpl;
+import org.apache.juddi.config.Property;
+import org.apache.juddi.v3.client.UDDIConstants;
+import org.apache.juddi.v3.client.UDDIService;
+import org.apache.juddi.v3.error.ErrorMessage;
+import org.apache.juddi.v3.error.ValueNotAllowedException;
+import org.uddi.api_v3.BindingTemplate;
+import org.uddi.api_v3.BusinessEntity;
+import org.uddi.api_v3.BusinessService;
+import org.uddi.api_v3.DispositionReport;
+import org.uddi.api_v3.PublisherAssertion;
+import org.uddi.api_v3.TModel;
+import org.uddi.v3_service.UDDIValueSetValidationPortType;
+import org.uddi.vs_v3.ValidateValues;
+
+/**
+ * This class handles when this UDDI server receives some kind of SaveXXX
+ * Publish API request and the request uses a tModel KeyedReference that is both
+ * "checked" and has a {@link UDDIConstants#IS_VALIDATED_BY}  property. The value of the
+ * IS_VALIDATED_BY reference points to a BindingTemplate which should in turn
+ * point to a Web Service that handles validation requests for the tModel
+ * KeyedReferences.
+ *
+ * Short Story long, this class handles the external callout. It also handles
+ * classpath:/ URLs (which is currently just jUDDI's implementation of VSV.
+ * 
+ * @author Alex O'Ree
+ * @see UDDIConstants
+ * @since 3.3
+ */
+public class ValidateValuesFromWebService {
+
+        static final Log log = LogFactory.getLog(ValidateValuesFromWebService.class);
+
+        private static UDDIValueSetValidationPortType getPort(String url) throws ValueNotAllowedException {
+                UDDIService svc = new UDDIService();
+                UDDIValueSetValidationPortType vsv = svc.getUDDIValueSetValidationPort();
+
+                if (url == null || url.trim().length() == 0) {
+                        log.error("VSV Validation Failed: Calling Url is null");
+                        ValueNotAllowedException x = new ValueNotAllowedException(new ErrorMessage("errors.valuesetvalidation.invalidurl"));
+                        throw x;
+                } else if (url.startsWith(Property.DEFAULT_BASE_URL)
+                        || url.startsWith(Property.DEFAULT_BASE_URL_SECURE)) {
+                        vsv = new UDDIValueSetValidationImpl();
+
+                } else if (url.startsWith("classpath:/")) {
+                        try {
+                                String clz = url.substring(11);
+                                Class<UDDIValueSetValidationPortType> forName = (Class<UDDIValueSetValidationPortType>) Class.forName(clz);
+                                vsv = forName.newInstance();
+                        } catch (Exception ex) {
+                                log.error("VSV Validation Failed: Cannot locate class from url " + url, ex);
+                        }
+                } else if (url.toLowerCase().startsWith("http")){
+                        //external service, stick with 
+                        log.info("Calling External VSV Service");
+                        ((BindingProvider) vsv).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, url);
+                }
+                else
+                {
+                        log.warn("Unable to figure out how to use the URL " + url  + " as a Value Set Validation Service transport mechanism.");
+                        ValueNotAllowedException x = new ValueNotAllowedException(new ErrorMessage("errors.valuesetvalidation.invalidurl", url));
+                }
+                
+                return vsv;
+        }
+
+        public static void Validate(String url, BusinessEntity obj) throws ValueNotAllowedException {
+
+                UDDIValueSetValidationPortType vsv = getPort(url);
+                ValidateValues req = new ValidateValues();
+                req.getBusinessEntity().add(obj);
+
+                try {
+                        DispositionReport validateValues = vsv.validateValues(req);
+                        //TODO parse
+                } catch (Exception ex) {
+                        log.error("VSV Validation Failed: From external service at " + url + ". Reason: " + ex.getMessage());
+                        log.debug("VSV Validation Failed: From external service at " + url + ". Reason: ", ex);
+                        ValueNotAllowedException x = new ValueNotAllowedException(new ErrorMessage("errors.valuesetvalidation.invalidcontent", ex.getMessage()));
+                        throw x;
+                }
+        }
+
+        public static void Validate(String url, TModel obj) throws ValueNotAllowedException {
+                UDDIValueSetValidationPortType vsv = getPort(url);
+                ValidateValues req = new ValidateValues();
+                req.getTModel().add(obj);
+
+                try {
+                        DispositionReport validateValues = vsv.validateValues(req);
+                } catch (Exception ex) {
+                        log.warn(ex);
+                        ValueNotAllowedException x = new ValueNotAllowedException(new ErrorMessage("errors.valuesetvalidation.invalidcontent", ex.getMessage()));
+                }
+        }
+
+        public static void Validate(String url, BusinessService obj) throws ValueNotAllowedException {
+                UDDIValueSetValidationPortType vsv = getPort(url);
+                ValidateValues req = new ValidateValues();
+                req.getBusinessService().add(obj);
+
+                try {
+                        DispositionReport validateValues = vsv.validateValues(req);
+                } catch (Exception ex) {
+                        log.warn(ex);
+                        ValueNotAllowedException x = new ValueNotAllowedException(new ErrorMessage("errors.valuesetvalidation.invalidcontent", ex.getMessage()));
+                }
+        }
+
+        public static void Validate(String url, BindingTemplate obj) throws ValueNotAllowedException {
+                UDDIValueSetValidationPortType vsv = getPort(url);
+                ValidateValues req = new ValidateValues();
+                req.getBindingTemplate().add(obj);
+
+                try {
+                        DispositionReport validateValues = vsv.validateValues(req);
+                } catch (Exception ex) {
+                        log.warn(ex);
+                        ValueNotAllowedException x = new ValueNotAllowedException(new ErrorMessage("errors.valuesetvalidation.invalidcontent", ex.getMessage()));
+                }
+        }
+
+        public static void Validate(String url, PublisherAssertion obj) throws ValueNotAllowedException {
+                UDDIValueSetValidationPortType vsv = getPort(url);
+                ValidateValues req = new ValidateValues();
+                req.getPublisherAssertion().add(obj);
+                try {
+                        DispositionReport validateValues = vsv.validateValues(req);
+                } catch (Exception ex) {
+                        log.warn(ex);
+                        ValueNotAllowedException x = new ValueNotAllowedException(new ErrorMessage("errors.valuesetvalidation.invalidcontent", ex.getMessage()));
+                }
+        }
+}

http://git-wip-us.apache.org/repos/asf/juddi/blob/215438e4/juddi-core/src/main/resources/juddi_install_data/root_BusinessEntity.xml
----------------------------------------------------------------------
diff --git a/juddi-core/src/main/resources/juddi_install_data/root_BusinessEntity.xml b/juddi-core/src/main/resources/juddi_install_data/root_BusinessEntity.xml
index b2f558f..dffe47e 100644
--- a/juddi-core/src/main/resources/juddi_install_data/root_BusinessEntity.xml
+++ b/juddi-core/src/main/resources/juddi_install_data/root_BusinessEntity.xml
@@ -518,6 +518,126 @@ See below for other fields that you may want to edit...
             <keyedReference tModelKey="uddi:uddi.org:xml:localname" keyName="uddi-org:xml:localName" keyValue="UDDISubscriptionListenerService"/>
          </categoryBag>
       </businessService>
+	
+
+	<businessService serviceKey="uddi:juddi.apache.org:services-valueset" businessKey="uddi:juddi.apache.org:businesses-asf">
+      <name xml:lang="en">UDDI Value Set API Service</name>
+      <description xml:lang="en">Web Service supporting UDDI Value Set Validation service. This service provides tModel value validation and is
+		configured using the jUDDI Publisher Service</description>
+      <bindingTemplates>
+        <bindingTemplate bindingKey="uddi:juddi.apache.org:servicebindings-valueset-ws" serviceKey="uddi:juddi.apache.org:services-valueset">
+          <description>UDDI Value Set Validation API Version 3</description>
+          <accessPoint useType="wsdlDeployment">${juddi.server.baseurl}/services/valueset-validation?wsdl</accessPoint>
+          <tModelInstanceDetails>
+            <tModelInstanceInfo tModelKey="uddi:uddi.org:v3_valuesetvalidation" />
+          </tModelInstanceDetails>
+          <categoryBag>
+            <keyedReference keyName="uddi-org:types:wsdl" keyValue="wsdlDeployment" tModelKey="uddi:uddi.org:categorization:types"/>
+          </categoryBag>
+        </bindingTemplate>
+		
+		<bindingTemplate bindingKey="uddi:juddi.apache.org:servicebindings-valueset-ws-ssl" serviceKey="uddi:juddi.apache.org:services-valueset">
+          <description>UDDI Value Set Validation API Version 3 SSL</description>
+          <accessPoint useType="wsdlDeployment">${juddi.server.baseurlsecure}/services/valueset-validation?wsdl</accessPoint>
+          <tModelInstanceDetails>
+
+            <tModelInstanceInfo tModelKey="uddi:uddi.org:v3_valuesetvalidation" />
+
+          </tModelInstanceDetails>
+          <categoryBag>
+            <keyedReference keyName="uddi-org:types:wsdl" keyValue="wsdlDeployment" tModelKey="uddi:uddi.org:categorization:types"/>
+          </categoryBag>
+        </bindingTemplate>
+		
+		<bindingTemplate bindingKey="uddi:juddi.apache.org:servicebindings-valueset-cp" serviceKey="uddi:juddi.apache.org:services-valueset">
+          <description>UDDI Value Set Validation API Version 3 using InVM Classpath Transport. Use this endpoint for Value Set Validation when
+		  located on the same instance of jUDDI.</description>
+          <accessPoint useType="classpath">classpath:/org.apache.juddi.api.impl.UDDIValueSetValidationImpl</accessPoint>
+          <tModelInstanceDetails>
+            <tModelInstanceInfo tModelKey="uddi:uddi.org:v3_valuesetvalidation" />
+          </tModelInstanceDetails>
+        </bindingTemplate>
+		
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+		
+      </bindingTemplates>
+    </businessService>
+	
+	
+	<businessService serviceKey="uddi:juddi.apache.org:services-valueset-cache" businessKey="uddi:juddi.apache.org:businesses-asf">
+      <name xml:lang="en">UDDI Value Set Caching API Service</name>
+      <description xml:lang="en">Web Service supporting UDDI Value Set Caching service. This service provides tModel value validation and is
+		configured using the jUDDI Publisher Service</description>
+      <bindingTemplates>
+        <bindingTemplate bindingKey="uddi:juddi.apache.org:servicebindings-valueset-cache-ws" serviceKey="uddi:juddi.apache.org:services-valueset-cache">
+          <description>UDDI Value Set Caching API Version 3</description>
+          <accessPoint useType="wsdlDeployment">${juddi.server.baseurl}/services/valueset-caching?wsdl</accessPoint>
+          <tModelInstanceDetails>
+            <tModelInstanceInfo tModelKey="uddi:uddi-org:valueSetCaching_v3" />
+          </tModelInstanceDetails>
+          <categoryBag>
+            <keyedReference keyName="uddi-org:types:wsdl" keyValue="wsdlDeployment" tModelKey="uddi:uddi.org:categorization:types"/>
+          </categoryBag>
+        </bindingTemplate>
+		
+		<bindingTemplate bindingKey="uddi:juddi.apache.org:servicebindings-valueset-cache-ws-ssl" serviceKey="uddi:juddi.apache.org:services-valueset-cache">
+          <description>UDDI Value Set caching API Version 3 SSL</description>
+          <accessPoint useType="wsdlDeployment">${juddi.server.baseurlsecure}/services/valueset-caching?wsdl</accessPoint>
+          <tModelInstanceDetails>
+            <tModelInstanceInfo tModelKey="uddi:uddi-org:valueSetCaching_v3" />
+          </tModelInstanceDetails>
+          <categoryBag>
+            <keyedReference keyName="uddi-org:types:wsdl" keyValue="wsdlDeployment" tModelKey="uddi:uddi.org:categorization:types"/>
+
+
+
+
+
+          </categoryBag>
+        </bindingTemplate>
+		
+      </bindingTemplates>
+    </businessService>
+	
+	
+	
+
+
+	<businessService serviceKey="uddi:juddi.apache.org:replication" businessKey="uddi:juddi.apache.org:businesses-asf">
+      <name xml:lang="en">UDDI Replication API Version 3</name>
+      <description xml:lang="en">UDDI Replication API Version 3</description>
+      <bindingTemplates>
+        <bindingTemplate bindingKey="uddi:juddi.apache.org:servicebindings-replication-ws" serviceKey="uddi:juddi.apache.org:replication">
+          <description>UDDI Value Set Validation API Version 3</description>
+          <accessPoint useType="wsdlDeployment">${juddi.server.baseurl}/services/replication?wsdl</accessPoint>
+
+         <tModelInstanceInfo
+			  tModelKey="uddi:uddi.org:v3_replication" />
+			<tModelInstanceInfo 
+			  tModelKey="uddi:uddi.org:protocol:mutualauthenticatedssl3" />
+		  
+
+          <categoryBag>
+            <keyedReference keyName="uddi-org:types:wsdl" keyValue="wsdlDeployment" tModelKey="uddi:uddi.org:categorization:types"/>
+          </categoryBag>
+        </bindingTemplate>
+      </bindingTemplates>
+    </businessService>
+	
+	
                 
       <!-- juddi api service -->
       <businessService serviceKey="uddi:juddi.apache.org:services-publisher" businessKey="uddi:juddi.apache.org:businesses-asf">

http://git-wip-us.apache.org/repos/asf/juddi/blob/215438e4/juddi-core/src/test/java/org/apache/juddi/api/impl/API_150_ValueSetValidationTest.java
----------------------------------------------------------------------
diff --git a/juddi-core/src/test/java/org/apache/juddi/api/impl/API_150_ValueSetValidationTest.java b/juddi-core/src/test/java/org/apache/juddi/api/impl/API_150_ValueSetValidationTest.java
new file mode 100644
index 0000000..d623d10
--- /dev/null
+++ b/juddi-core/src/test/java/org/apache/juddi/api/impl/API_150_ValueSetValidationTest.java
@@ -0,0 +1,233 @@
+/*
+ * Copyright 2013 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.juddi.api.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.commons.configuration.ConfigurationException;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.juddi.Registry;
+import org.apache.juddi.api_v3.ValidValues;
+import org.apache.juddi.v3.client.UDDIConstants;
+import org.apache.juddi.v3.error.ValueNotAllowedException;
+import org.apache.juddi.v3.tck.TckPublisher;
+import org.apache.juddi.v3.tck.TckSecurity;
+import org.apache.juddi.v3.tck.TckTModel;
+import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.uddi.api_v3.BindingDetail;
+import org.uddi.api_v3.BusinessEntity;
+import org.uddi.api_v3.CategoryBag;
+import org.uddi.api_v3.Description;
+import org.uddi.api_v3.GetBindingDetail;
+import org.uddi.api_v3.KeyedReference;
+import org.uddi.api_v3.Name;
+import org.uddi.api_v3.SaveBusiness;
+import org.uddi.api_v3.SaveTModel;
+import org.uddi.api_v3.TModel;
+import org.uddi.api_v3.TModelInstanceDetails;
+import org.uddi.v3_service.UDDIInquiryPortType;
+import org.uddi.v3_service.UDDIPublicationPortType;
+import org.uddi.v3_service.UDDISecurityPortType;
+
+/**
+ *
+ * @author Alex O'Ree
+ */
+public class API_150_ValueSetValidationTest {
+
+        private static Log logger = LogFactory.getLog(API_141_JIRATest.class);
+        static UDDISecurityPortType security = new UDDISecurityImpl();
+        static UDDIInquiryPortType inquiry = new UDDIInquiryImpl();
+        static UDDIPublicationPortType publication = new UDDIPublicationImpl();
+        static JUDDIApiImpl juddi = new JUDDIApiImpl();
+        static UDDIValueSetValidationImpl vsv = new UDDIValueSetValidationImpl();
+        static TckTModel tckTModel = new TckTModel(new UDDIPublicationImpl(), new UDDIInquiryImpl());
+        protected static String authInfoJoe = null;
+        protected static String authInfoSam = null;
+        protected static String authInfoRoot = null;
+        protected static String authInfoUDDI = null;
+
+        @AfterClass
+        public static void stopManager() throws ConfigurationException {
+                Registry.stop();
+        }
+
+        @BeforeClass
+        public static void startManager() throws ConfigurationException {
+                Registry.start();
+
+                logger.debug("Getting auth tokens..");
+                try {
+                        authInfoJoe = TckSecurity.getAuthToken(security, TckPublisher.getJoePublisherId(), TckPublisher.getJoePassword());
+                        authInfoSam = TckSecurity.getAuthToken(security, TckPublisher.getSamPublisherId(), TckPublisher.getSamPassword());
+                        authInfoRoot = TckSecurity.getAuthToken(security, TckPublisher.getRootPublisherId(), TckPublisher.getRootPassword());
+                        authInfoUDDI = TckSecurity.getAuthToken(security, TckPublisher.getUDDIPublisherId(), TckPublisher.getUDDIPassword());
+                        Assert.assertNotNull(authInfoJoe);
+                        Assert.assertNotNull(authInfoSam);
+                        String authInfoUDDI = TckSecurity.getAuthToken(security, TckPublisher.getUDDIPublisherId(), TckPublisher.getUDDIPassword());
+                        tckTModel.saveUDDIPublisherTmodel(authInfoUDDI);
+                        tckTModel.saveTModels(authInfoUDDI, TckTModel.TMODELS_XML);
+                        tckTModel.saveJoePublisherTmodel(authInfoJoe);
+                } catch (Exception e) {
+                        logger.error(e.getMessage(), e);
+                        Assert.fail("Could not obtain authInfo token.");
+                }
+        }
+        final static String VSV_KEY = "uddi:juddi.apache.org:businesses-asf";
+        //VIA InVM transport
+        final static String VSV_BT_KEY = "uddi:juddi.apache.org:servicebindings-valueset-cp";
+        //VIA JAXWS Transport "uddi:juddi.apache.org:servicebindings-valueset-ws";
+        final static String TMODEL = "validated.checked.tmodel";
+
+        /**
+         * scenario 1
+         * <ul>
+         * <ol>create checked tmodel x</ol>
+         * <ol>register business/service/bt for validatevalues service</ol>
+         * <ol>add/alter BT to include instance info for ref to tmodel
+         * checked</ol>
+         * <ol>alter checked tmodel x, add reference to the BT for the
+         * validator</ol>
+         * <ol>someone tries to use the checked tmodel as a KR from some other
+         * entity</ol>
+         * <ol>on publish, the server attempts to validate the KR's value
+         * against the VV service via the binding Template</ol>
+         * </ul>
+         *
+         * @throws Exception
+         */
+        @Test
+        public void Scenario1() throws Exception {
+                //create checked tmodel x
+                SaveCheckedTModel(TckTModel.JOE_PUBLISHER_KEY_PREFIX + TMODEL);
+                //register business/service/bt for validatevalues service
+                //this is done by the install process using the built in vsv
+
+
+                //add/alter BT to include instance info for ref to tmodel checked
+                //turns out we don't need this either, its in the default install data
+                //AlterRootBusiness();
+
+                //configure jUDDI API service to "set" the valid values
+                SaveVSVValues(TckTModel.JOE_PUBLISHER_KEY_PREFIX + TMODEL);
+
+                //add a new service for joe, reference the checked tmodel with an invalid token 
+
+                SaveBusiness(authInfoJoe, true,TckTModel.JOE_PUBLISHER_KEY_PREFIX + TMODEL);
+
+                //add a new service for joe, reference the checked tmodel with invalid token
+        }
+        
+        @Test(expected = ValueNotAllowedException.class)
+        public void Scenario1Invalid() throws Exception {
+                //create checked tmodel x
+                logger.info("Saving checked tModel");
+                SaveCheckedTModel(TckTModel.JOE_PUBLISHER_KEY_PREFIX + TMODEL);
+                //register business/service/bt for validatevalues service
+                //this is done by the install process using the built in vsv
+
+
+                //add/alter BT to include instance info for ref to tmodel checked
+                //turns out we don't need this either, its in the default install data
+                //AlterRootBusiness();
+
+                //configure jUDDI API service to "set" the valid values
+                logger.info("Saving VS valid values");
+                SaveVSVValues(TckTModel.JOE_PUBLISHER_KEY_PREFIX + TMODEL);
+
+                //add a new service for joe, reference the checked tmodel with an invalid token 
+
+                logger.info("Saving a business using those values");
+                SaveBusiness(authInfoJoe, false,TckTModel.JOE_PUBLISHER_KEY_PREFIX + TMODEL);
+
+                //add a new service for joe, reference the checked tmodel with invalid token
+        }
+
+        @Test
+        public void Scenarion2() {
+                /*
+                 * use x has a keyed reference for service xyz
+                 register business/service/bt for validatevalues service
+                 add/alter BT to include instance info for ref to tmodel checked
+                 alter checked tmodel, add reference to the BT for the validator
+                   >>> open question? do we check existing instances of tmodel x at this point? do we reject the request if validation fails?
+                 someone tries to use the checked tmodel as a KR
+                 on publish, the server attempts to validate the KR's value against the VV service via the binding Template
+                 */
+        }
+
+        private void SaveCheckedTModel(String key) throws Exception {
+                TModel tm = new TModel();
+                tm.setTModelKey(key);
+                tm.setCategoryBag(new CategoryBag());
+                tm.setName(new Name("My Custom validated key", "en"));
+                tm.getDescription().add(new Description("valid values include 'one', 'two', 'three'", "en"));
+                tm.getCategoryBag().getKeyedReference().add(
+                        new KeyedReference(UDDIConstants.IS_VALIDATED_BY, UDDIConstants.IS_VALIDATED_BY_KEY_NAME, VSV_BT_KEY));
+                SaveTModel stm = new SaveTModel();
+                stm.setAuthInfo(authInfoJoe);
+                stm.getTModel().add(tm);
+                publication.saveTModel(stm);
+        }
+
+        /**
+         * The bindingTemplate for the get_allValidValues or the validate_values
+         * Web service SHOULD reference in its tModelInstanceDetails the
+         * appropriate value set API tModel (Section 11.2.7 Value Set Caching
+         * API tModel or Section 11.2.8 Value Set Validation API tModel) as well
+         * tModels for all of the value sets the service applies to.
+         *
+         * @throws Exception
+         */
+        private void AlterRootBusiness() throws Exception {
+                GetBindingDetail gsd = new GetBindingDetail();
+                gsd.getBindingKey().add(VSV_BT_KEY);
+                BindingDetail bindingDetail = inquiry.getBindingDetail(gsd);
+                if (bindingDetail.getBindingTemplate().get(0).getTModelInstanceDetails() == null) {
+                        bindingDetail.getBindingTemplate().get(0).setTModelInstanceDetails(new TModelInstanceDetails());
+                }
+                for (int i = 0; i < bindingDetail.getBindingTemplate().get(0).getTModelInstanceDetails().getTModelInstanceInfo().size(); i++) {
+                }
+        }
+
+        private void SaveBusiness(String authInfoJoe, boolean isValid, String key) throws Exception {
+                SaveBusiness sb = new SaveBusiness();
+                sb.setAuthInfo(authInfoJoe);
+                BusinessEntity be = new BusinessEntity();
+                be.getName().add(new Name("VSV", null));
+                be.setCategoryBag(new CategoryBag());
+                if (isValid) {
+                        be.getCategoryBag().getKeyedReference().add(new KeyedReference(key, "name", "abcdefg"));
+                } else {
+                        be.getCategoryBag().getKeyedReference().add(new KeyedReference(key, "name", "qwerty"));
+                }
+                sb.getBusinessEntity().add(be);
+                publication.saveBusiness(sb);
+        }
+
+        private void SaveVSVValues(String key) throws Exception {
+                List<ValidValues> items = new ArrayList<ValidValues>();
+                ValidValues i = new ValidValues();
+                i.setTModekKey(key);
+                i.getValue().add("abcdefg");
+                items.add(i);
+                juddi.setAllValidValues(authInfoJoe, items);
+        }
+}

http://git-wip-us.apache.org/repos/asf/juddi/blob/215438e4/juddi-core/src/test/resources/META-INF/persistence.xml
----------------------------------------------------------------------
diff --git a/juddi-core/src/test/resources/META-INF/persistence.xml b/juddi-core/src/test/resources/META-INF/persistence.xml
index 693c30f..77a7cb8 100644
--- a/juddi-core/src/test/resources/META-INF/persistence.xml
+++ b/juddi-core/src/test/resources/META-INF/persistence.xml
@@ -70,6 +70,15 @@
     <class>org.apache.juddi.model.TransferTokenKey</class>
     <class>org.apache.juddi.model.UddiEntity</class>
     <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="hibernate.archive.autodetection" value="class"/>

http://git-wip-us.apache.org/repos/asf/juddi/blob/215438e4/juddi-rest-cxf/src/main/java/org/apache/juddi/api/impl/rest/UDDIInquiryJAXRS.java
----------------------------------------------------------------------
diff --git a/juddi-rest-cxf/src/main/java/org/apache/juddi/api/impl/rest/UDDIInquiryJAXRS.java b/juddi-rest-cxf/src/main/java/org/apache/juddi/api/impl/rest/UDDIInquiryJAXRS.java
index 95961ba..32ea1c1 100644
--- a/juddi-rest-cxf/src/main/java/org/apache/juddi/api/impl/rest/UDDIInquiryJAXRS.java
+++ b/juddi-rest-cxf/src/main/java/org/apache/juddi/api/impl/rest/UDDIInquiryJAXRS.java
@@ -527,7 +527,7 @@ public class UDDIInquiryJAXRS {
          * @param findQualifiers
          * @param maxrows
          * @param offset
-         * @return
+         * @return serviceList
          * @throws WebApplicationException
          */
         @GET
@@ -550,7 +550,7 @@ public class UDDIInquiryJAXRS {
          * @param findQualifiers
          * @param maxrows
          * @param offset
-         * @return
+         * @return serviceList
          * @throws WebApplicationException
          */
         @GET
@@ -587,7 +587,7 @@ public class UDDIInquiryJAXRS {
          * @param findQualifiers
          * @param maxrows
          * @param offset
-         * @return
+         * @return TModelList
          * @throws WebApplicationException
          */
         @GET
@@ -610,7 +610,7 @@ public class UDDIInquiryJAXRS {
          * @param findQualifiers
          * @param maxrows
          * @param offset
-         * @return
+         * @return TModelList
          * @throws WebApplicationException
          */
         @GET

http://git-wip-us.apache.org/repos/asf/juddi/blob/215438e4/juddi-rest-cxf/src/test/resources/META-INF/persistence.xml
----------------------------------------------------------------------
diff --git a/juddi-rest-cxf/src/test/resources/META-INF/persistence.xml b/juddi-rest-cxf/src/test/resources/META-INF/persistence.xml
index 693c30f..77a7cb8 100644
--- a/juddi-rest-cxf/src/test/resources/META-INF/persistence.xml
+++ b/juddi-rest-cxf/src/test/resources/META-INF/persistence.xml
@@ -70,6 +70,15 @@
     <class>org.apache.juddi.model.TransferTokenKey</class>
     <class>org.apache.juddi.model.UddiEntity</class>
     <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="hibernate.archive.autodetection" value="class"/>

http://git-wip-us.apache.org/repos/asf/juddi/blob/215438e4/juddiv3-war/JAX-WS/CXF/WEB-INF/beans.xml
----------------------------------------------------------------------
diff --git a/juddiv3-war/JAX-WS/CXF/WEB-INF/beans.xml b/juddiv3-war/JAX-WS/CXF/WEB-INF/beans.xml
index 4392e1f..8e1c130 100644
--- a/juddiv3-war/JAX-WS/CXF/WEB-INF/beans.xml
+++ b/juddiv3-war/JAX-WS/CXF/WEB-INF/beans.xml
@@ -69,15 +69,14 @@
     </jaxws:properties>
   </jaxws:endpoint>
 
-<!--  not yet implemented
   <jaxws:endpoint id="replication" implementor="org.apache.juddi.api.impl.UDDIReplicationImpl" address="/replication">
     <jaxws:properties>
       <entry key="schema-validation-enabled" value="true"/>
     </jaxws:properties>
   </jaxws:endpoint>
--->
 
-<!-- ClientSide APIs
+
+<!-- ClientSide APIs -->
   <jaxws:endpoint id="valueset-validation" implementor="org.apache.juddi.api.impl.UDDIValueSetValidationImpl" address="/valueset-validation">
     <jaxws:properties>
       <entry key="schema-validation-enabled" value="true"/>
@@ -89,7 +88,7 @@
       <entry key="schema-validation-enabled" value="true"/>
     </jaxws:properties>
   </jaxws:endpoint>
--->
+
 
   <jaxws:endpoint id="inquiryv2" implementor="org.apache.juddi.api.impl.UDDIv2InquiryImpl" address="/inquiryv2">
     <jaxws:properties>

http://git-wip-us.apache.org/repos/asf/juddi/blob/215438e4/juddiv3-war/JAX-WS/JBossWS-CXF/WEB-INF/web.xml
----------------------------------------------------------------------
diff --git a/juddiv3-war/JAX-WS/JBossWS-CXF/WEB-INF/web.xml b/juddiv3-war/JAX-WS/JBossWS-CXF/WEB-INF/web.xml
index 7121a5e..093c312 100644
--- a/juddiv3-war/JAX-WS/JBossWS-CXF/WEB-INF/web.xml
+++ b/juddiv3-war/JAX-WS/JBossWS-CXF/WEB-INF/web.xml
@@ -92,6 +92,37 @@
     </init-param>
   </servlet>
   <servlet>
+ 
+  <servlet>
+    <servlet-name>UDDIReplicationWS</servlet-name>
+
+    <servlet-class>org.jboss.wsf.stack.cxf.CXFServletExt</servlet-class>
+    <init-param>
+      <param-name>jboss.ws.endpoint</param-name>
+      <param-value>org.apache.juddi.api.impl.UDDIReplicationImpl</param-value>
+
+    </init-param>
+  </servlet>
+
+  <servlet>
+    <servlet-name>UDDIValueSetWS</servlet-name>
+    <servlet-class>org.jboss.wsf.stack.cxf.CXFServletExt</servlet-class>
+    <init-param>
+      <param-name>jboss.ws.endpoint</param-name>
+      <param-value>org.apache.juddi.api.impl.UDDIValueSetValidationImpl</param-value>
+    </init-param>
+  </servlet>  
+  
+    <servlet>
+    <servlet-name>UDDIValueSetCachingWS</servlet-name>
+
+    <servlet-class>org.jboss.wsf.stack.cxf.CXFServletExt</servlet-class>
+    <init-param>
+      <param-name>jboss.ws.endpoint</param-name>
+      <param-value>org.apache.juddi.api.impl.UDDIValueSetCachingImpl</param-value>
+
+    </init-param>
+  </servlet>  
     <servlet-name>UDDICustodyTransferWS</servlet-name>
     <servlet-class>org.jboss.wsf.stack.cxf.CXFServletExt</servlet-class>
     <init-param>
@@ -115,6 +146,19 @@
     <servlet-name>UDDIPublishWS</servlet-name>
     <url-pattern>/services/publish/*</url-pattern>
   </servlet-mapping>
+   <servlet-mapping>
+    <servlet-name>UDDIValueSetCachingWS</servlet-name>
+    <url-pattern>/services/valueset-caching/*</url-pattern>
+  </servlet-mapping>
+  <servlet-mapping>
+    <servlet-name>UDDIValueSetWS</servlet-name>
+    <url-pattern>/services/valueset-validation/*</url-pattern>
+  </servlet-mapping>
+  
+  <servlet-mapping>
+    <servlet-name>UDDIReplicationWS</servlet-name>
+    <url-pattern>/services/replication/*</url-pattern>
+  </servlet-mapping>
   <servlet-mapping>
     <servlet-name>UDDIPublishWSv2</servlet-name>
     <url-pattern>/services/publishv2/*</url-pattern>

http://git-wip-us.apache.org/repos/asf/juddi/blob/215438e4/juddiv3-war/JPA/Hibernate-JBoss/WEB-INF/classes/META-INF/persistence.xml
----------------------------------------------------------------------
diff --git a/juddiv3-war/JPA/Hibernate-JBoss/WEB-INF/classes/META-INF/persistence.xml b/juddiv3-war/JPA/Hibernate-JBoss/WEB-INF/classes/META-INF/persistence.xml
index 69c9712..f378fc5 100644
--- a/juddiv3-war/JPA/Hibernate-JBoss/WEB-INF/classes/META-INF/persistence.xml
+++ b/juddiv3-war/JPA/Hibernate-JBoss/WEB-INF/classes/META-INF/persistence.xml
@@ -70,6 +70,16 @@
     <class>org.apache.juddi.model.TransferTokenKey</class>
     <class>org.apache.juddi.model.UddiEntity</class>
     <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="hibernate.archive.autodetection" value="class"/>

http://git-wip-us.apache.org/repos/asf/juddi/blob/215438e4/juddiv3-war/JPA/Hibernate/WEB-INF/classes/META-INF/persistence.xml
----------------------------------------------------------------------
diff --git a/juddiv3-war/JPA/Hibernate/WEB-INF/classes/META-INF/persistence.xml b/juddiv3-war/JPA/Hibernate/WEB-INF/classes/META-INF/persistence.xml
index 7c5685a..5dae319 100644
--- a/juddiv3-war/JPA/Hibernate/WEB-INF/classes/META-INF/persistence.xml
+++ b/juddiv3-war/JPA/Hibernate/WEB-INF/classes/META-INF/persistence.xml
@@ -70,6 +70,15 @@
     <class>org.apache.juddi.model.TransferTokenKey</class>
     <class>org.apache.juddi.model.UddiEntity</class>
     <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="hibernate.archive.autodetection" value="class"/>

http://git-wip-us.apache.org/repos/asf/juddi/blob/215438e4/juddiv3-war/JPA/OpenJPA-JBossAS7Up/WEB-INF/classes/META-INF/persistence.xml
----------------------------------------------------------------------
diff --git a/juddiv3-war/JPA/OpenJPA-JBossAS7Up/WEB-INF/classes/META-INF/persistence.xml b/juddiv3-war/JPA/OpenJPA-JBossAS7Up/WEB-INF/classes/META-INF/persistence.xml
index f7c6999..d0ef74c 100644
--- a/juddiv3-war/JPA/OpenJPA-JBossAS7Up/WEB-INF/classes/META-INF/persistence.xml
+++ b/juddiv3-war/JPA/OpenJPA-JBossAS7Up/WEB-INF/classes/META-INF/persistence.xml
@@ -70,6 +70,17 @@
     <class>org.apache.juddi.model.TransferTokenKey</class>
     <class>org.apache.juddi.model.UddiEntity</class>
     <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='add')"/>
       <property name="openjpa.Log" value="DefaultLevel=WARN, Tool=INFO"/>


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


Mime
View raw message