JUDDI-198 all spec functionality and tModel vsv implemented

Project: http://git-wip-us.apache.org/repos/asf/juddi/repo
Commit: http://git-wip-us.apache.org/repos/asf/juddi/commit/a866ea02
Tree: http://git-wip-us.apache.org/repos/asf/juddi/tree/a866ea02
Diff: http://git-wip-us.apache.org/repos/asf/juddi/diff/a866ea02

Branch: refs/heads/master
Commit: a866ea020a49a96c6d42e42784798689e5f919ca
Parents: 4c7e798
Author: alexoree <[email protected]>
Authored: Sun Mar 9 10:21:33 2014 -0400
Committer: alexoree <[email protected]>
Committed: Sun Mar 9 10:21:33 2014 -0400

----------------------------------------------------------------------
 .../api/impl/UDDIValueSetValidationImpl.java    |   76 +-
 .../juddi/validation/ValidatePublish.java       |  148 ++-
 .../ValidateValuesFromWebService.java           |   29 +-
 .../validation/vsv/AbstractSimpleValidator.java |   19 +-
 .../Uddiuddiorgcategorizationderivedfrom.java   |    1 +
 ...Uddiuddiorgcategorizationowningbusiness.java |    1 +
 .../vsv/Uddiuddiorgcategorizationtype.java      | 1027 -----------------
 .../vsv/Uddiuddiorgcategorizationtypes.java     | 1030 ++++++++++++++++++
 .../Uddiuddiorgcategorizationvalidatedby.java   |    1 +
 .../vsv/Uddiuddiorgidentifierisreplacedby.java  |  143 ++-
 .../juddi_install_data/UDDI_tModels.xml         |   13 +-
 .../impl/API_150_ValueSetValidationTest.java    |  495 ++++++++-
 12 files changed, 1842 insertions(+), 1141 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/juddi/blob/a866ea02/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIValueSetValidationImpl.java
----------------------------------------------------------------------
diff --git 
a/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIValueSetValidationImpl.java
 
b/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIValueSetValidationImpl.java
index e7642a1..cbfceae 100644
--- 
a/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIValueSetValidationImpl.java
+++ 
b/juddi-core/src/main/java/org/apache/juddi/api/impl/UDDIValueSetValidationImpl.java
@@ -23,8 +23,15 @@ import java.util.List;
 import java.util.Set;
 import java.util.logging.Level;
 import java.util.logging.Logger;
+import javax.persistence.EntityManager;
+import javax.persistence.EntityTransaction;
+import static org.apache.juddi.api.impl.AuthenticatedService.logger;
 import org.apache.juddi.api.util.QueryStatus;
+import org.apache.juddi.api.util.SecurityQuery;
 import org.apache.juddi.api.util.ValueSetValidationQuery;
+import org.apache.juddi.config.PersistenceManager;
+import org.apache.juddi.model.Tmodel;
+import org.apache.juddi.v3.client.UDDIConstants;
 import org.apache.juddi.v3.error.ErrorMessage;
 import org.apache.juddi.v3.error.FatalErrorException;
 import org.apache.juddi.v3.error.ValueNotAllowedException;
@@ -48,14 +55,14 @@ import org.uddi.vs_v3.ValidateValues;
  * Implementation the UDDI v3 spec for Value Set Validation This is basically
  * used to validate Keyed Reference value sets and offers validation via 
jUDDI's
  * VSV extensibility framework.<Br><BR>
- * To use this, define a tModel containing the following 
+ * To use this, define a tModel containing the following
  * <pre>&lt;categoryBag&gt;
  * &lt;keyedReference keyName=&quot;&quot;
  * keyValue=&quot;uddi:juddi.apache.org:servicebindings-valueset-cp&quot;
  * tModelKey=&quot;uddi:uddi.org:identifier:validatedby&quot;/&gt;
  * &lt;/categoryBag&gt;
- * </pre>Where uddi:juddi.apache.org:servicebindings-valueset-cp
- * is the binding key of the service implementing the VSV API (this service).
+ * </pre>Where uddi:juddi.apache.org:servicebindings-valueset-cp is the binding
+ * key of the service implementing the VSV API (this service).
  * <Br><BR>
  * From there, you need to create a class that either implements
  * {@link ValueSetValidator} or extends {@link AbstractSimpleValidator}. It 
must
@@ -116,8 +123,33 @@ public class UDDIValueSetValidationImpl extends 
AuthenticatedService implements
                 classNames.addAll(validateValuesTModel(body.getTModel()));
                 Set<String> set = new HashSet<String>(classNames);
                 Iterator<String> iterator = set.iterator();
-                while (iterator.hasNext()) {
-                        String tmodelkey = iterator.next();
+                Set<String> validators = new HashSet<String>();
+                EntityManager em = PersistenceManager.getEntityManager();
+                EntityTransaction tx = em.getTransaction();
+                try {
+                        while (iterator.hasNext()) {
+
+                                String key = iterator.next();
+                                Tmodel find = 
em.find(org.apache.juddi.model.Tmodel.class, key);
+                                if (find != null) {
+                                        if (ContainsValidatedKey(find, 
UDDIConstants.IS_VALIDATED_BY)) {
+                                                validators.add(key);
+                                        }
+                                }
+                        }
+
+                } catch (Exception drfm) {
+                        logger.warn("Unable to process vsv validation", drfm);
+                        throw new FatalErrorException(new 
ErrorMessage("errors.valuesetvalidation.fatal", drfm.getMessage()));
+                } finally {
+                        if (tx.isActive()) {
+                                tx.rollback();
+                        }
+                        em.close();
+                }
+                Iterator<String> iterator1 = validators.iterator();
+                while (iterator1.hasNext()) {
+                        String tmodelkey = iterator1.next();
                         String clazz = ConvertKeyToClass(tmodelkey);
                         ValueSetValidator vsv;
                         if (clazz == null) {
@@ -131,10 +163,13 @@ public class UDDIValueSetValidationImpl extends 
AuthenticatedService implements
                                         
vsv.validateValuesPublisherAssertion(body.getPublisherAssertion());
                                         
vsv.validateValuesTModel(body.getTModel());
                                 } catch (ClassNotFoundException ex) {
+                                        logger.warn("Unable to process vsv 
validation for " + tmodelkey, ex);
                                         throw new FatalErrorException(new 
ErrorMessage("errors.valuesetvalidation.fatal", "key=" + tmodelkey + " class=" 
+ clazz + " " + ex.getMessage()));
                                 } catch (InstantiationException ex) {
+                                        logger.warn("Unable to process vsv 
validation for " + tmodelkey, ex);
                                         throw new FatalErrorException(new 
ErrorMessage("errors.valuesetvalidation.fatal", "key=" + tmodelkey + " class=" 
+ clazz + " " + ex.getMessage()));
                                 } catch (IllegalAccessException ex) {
+                                        logger.warn("Unable to process vsv 
validation for " + tmodelkey, ex);
                                         throw new FatalErrorException(new 
ErrorMessage("errors.valuesetvalidation.fatal", "key=" + tmodelkey + " class=" 
+ clazz + " " + ex.getMessage()));
                                 }
                         }
@@ -319,4 +354,35 @@ public class UDDIValueSetValidationImpl extends 
AuthenticatedService implements
                 }
                 return null;
         }
+
+        private boolean ContainsValidatedKey(Tmodel find, String key) {
+                if (find.getCategoryBag() != null) {
+                        if (find.getCategoryBag().getKeyedReferences() != 
null) {
+                                for (int i = 0; i < 
find.getCategoryBag().getKeyedReferences().size(); i++) {
+                                        if 
(key.equalsIgnoreCase(find.getCategoryBag().getKeyedReferences().get(i).getTmodelKeyRef()))
 {
+                                                return true;
+                                        }
+                                }
+                        }
+                        if (find.getCategoryBag().getKeyedReferenceGroups() != 
null) {
+                                for (int i = 0; i < 
find.getCategoryBag().getKeyedReferenceGroups().size(); i++) {
+                                        for (int k = 0; k < 
find.getCategoryBag().getKeyedReferenceGroups().get(i).getKeyedReferences().size();
 k++) {
+                                                if 
(key.equalsIgnoreCase(find.getCategoryBag().getKeyedReferenceGroups().get(i).getKeyedReferences().get(k).getTmodelKeyRef()))
 {
+                                                        return true;
+                                                }
+                                        }
+                                }
+                        }
+                }
+                if (find.getTmodelIdentifiers() != null) {
+
+                        for (int i = 0; i < 
find.getTmodelIdentifiers().size(); i++) {
+                                if 
(key.equalsIgnoreCase(find.getTmodelIdentifiers().get(i).getTmodelKeyRef())) {
+                                        return true;
+                                }
+                        }
+                }
+
+                return false;
+        }
 }

http://git-wip-us.apache.org/repos/asf/juddi/blob/a866ea02/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 f788ae4..394c831 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
@@ -352,8 +352,9 @@ public class ValidatePublish extends ValidateUDDIApi {
 
                 for (org.uddi.api_v3.BusinessEntity entity : entityList) {
                         validateBusinessEntity(em, entity, config, publisher);
-                        validateCheckedTModels(entity, config);
+                       
                 }
+                 validateCheckedTModelsBE(entityList, config);
         }
 
         public void validateSaveBusinessMax(EntityManager em) throws 
DispositionReportFaultMessage {
@@ -407,8 +408,9 @@ 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);
+
                 }
+                validateCheckedTModelsBS(entityList, config);
         }
 
         public void validateSaveServiceMax(EntityManager em, String 
businessKey) throws DispositionReportFaultMessage {
@@ -460,8 +462,9 @@ public class ValidatePublish extends ValidateUDDIApi {
 
                 for (org.uddi.api_v3.BindingTemplate entity : entityList) {
                         validateBindingTemplate(em, entity, null, config, 
publisher);
-                        validateCheckedTModels(entity, config);
+                        
                 }
+                validateCheckedTModelsBT(entityList, config);
         }
 
         public void validateSaveBindingMax(EntityManager em, String 
serviceKey) throws DispositionReportFaultMessage {
@@ -513,8 +516,9 @@ public class ValidatePublish extends ValidateUDDIApi {
 
                 for (org.uddi.api_v3.TModel entity : entityList) {
                         validateTModel(em, entity, config, publisher);
-                        validateCheckedTModels(entity, config);
+                        
                 }
+                validateCheckedTModelsTM(entityList, config);
         }
 
         public void validateSaveTModelMax(EntityManager em) throws 
DispositionReportFaultMessage {
@@ -894,6 +898,7 @@ public class ValidatePublish extends ValidateUDDIApi {
                 for (org.uddi.api_v3.BindingTemplate bindingTemplate : 
bindingTemplateList) {
                         validateBindingTemplate(em, bindingTemplate, parent, 
config, publisher);
                 }
+                
 
         }
 
@@ -1032,7 +1037,7 @@ public class ValidatePublish extends ValidateUDDIApi {
                 validateDescriptions(bindingTemplate.getDescription());
                 validateHostingRedirector(em, 
bindingTemplate.getHostingRedirector(), config);
 
-                validateCheckedTModels(bindingTemplate, config);
+                //validateCheckedTModels(bindingTemplate, config);
         }
 
         public void validateTModel(EntityManager em, org.uddi.api_v3.TModel 
tModel, Configuration config, UddiEntityPublisher publisher) throws 
DispositionReportFaultMessage {
@@ -1995,90 +2000,101 @@ public class ValidatePublish extends ValidateUDDIApi {
                 return api;
         }
 
-        private List<String> 
GetBindingKeysCheckedTModelKeyedReference(Map<String, TModel> cache, 
BindingTemplate bt) {
+        private List<String> 
GetBindingKeysCheckedTModelKeyedReferenceBT(Map<String, TModel> cache, 
List<BindingTemplate> obj) {
                 List<String> ret = new ArrayList<String>();
 
-                if (bt == null) {
+                if (obj == null) {
                         return ret;
                 }
-                if (bt.getCategoryBag() != null) {
-                        for (int i = 0; i < 
bt.getCategoryBag().getKeyedReference().size(); i++) {
-                                
ret.addAll(GetBindingKeysCheckedTModelKeyedReference(cache, 
bt.getCategoryBag().getKeyedReference().get(i)));
+                for (BindingTemplate bt : obj) {
+                        if (bt.getCategoryBag() != null) {
+                                for (int i = 0; i < 
bt.getCategoryBag().getKeyedReference().size(); i++) {
+                                        
ret.addAll(GetBindingKeysCheckedTModelKeyedReference(cache, 
bt.getCategoryBag().getKeyedReference().get(i)));
+                                }
                         }
                 }
 
                 return ret;
         }
 
-        private List<String> 
GetBindingKeysCheckedTModelKeyedReference(Map<String, TModel> cache, 
BusinessService bt) {
+        private List<String> 
GetBindingKeysCheckedTModelKeyedReferenceBS(Map<String, TModel> cache, 
List<BusinessService> obj) {
                 List<String> ret = new ArrayList<String>();
 
-                if (bt == null) {
+                if (obj == null) {
                         return ret;
                 }
-                if (bt.getCategoryBag() != null) {
-                        for (int i = 0; i < 
bt.getCategoryBag().getKeyedReference().size(); i++) {
-                                
ret.addAll(GetBindingKeysCheckedTModelKeyedReference(cache, 
bt.getCategoryBag().getKeyedReference().get(i)));
+                for (BusinessService bt : obj) {
+                        if (bt.getCategoryBag() != null) {
+                                for (int i = 0; i < 
bt.getCategoryBag().getKeyedReference().size(); i++) {
+                                        
ret.addAll(GetBindingKeysCheckedTModelKeyedReference(cache, 
bt.getCategoryBag().getKeyedReference().get(i)));
+                                }
                         }
-                }
-                if (bt.getBindingTemplates() != null) {
-                        for (int i = 0; i < 
bt.getBindingTemplates().getBindingTemplate().size(); i++) {
-                                
ret.addAll(GetBindingKeysCheckedTModelKeyedReference(cache, 
bt.getBindingTemplates().getBindingTemplate().get(i)));
+                        if (bt.getBindingTemplates() != null) {
+                                
ret.addAll(GetBindingKeysCheckedTModelKeyedReferenceBT(cache, 
bt.getBindingTemplates().getBindingTemplate()));
                         }
                 }
 
                 return ret;
         }
 
-        private List<String> 
GetBindingKeysCheckedTModelKeyedReference(Map<String, TModel> cache, 
BusinessEntity bt) {
+        private List<String> 
GetBindingKeysCheckedTModelKeyedReferenceBE(Map<String, TModel> cache, 
List<BusinessEntity> obj) {
                 List<String> ret = new ArrayList<String>();
 
-                if (bt == null) {
+                if (obj == null) {
                         return ret;
                 }
-                if (bt.getCategoryBag() != null) {
-                        for (int i = 0; i < 
bt.getCategoryBag().getKeyedReference().size(); i++) {
-                                
ret.addAll(GetBindingKeysCheckedTModelKeyedReference(cache, 
bt.getCategoryBag().getKeyedReference().get(i)));
+                for (BusinessEntity bt : obj) {
+                        if (bt.getCategoryBag() != null) {
+                                for (int i = 0; i < 
bt.getCategoryBag().getKeyedReference().size(); i++) {
+                                        
ret.addAll(GetBindingKeysCheckedTModelKeyedReference(cache, 
bt.getCategoryBag().getKeyedReference().get(i)));
+                                }
                         }
-                }
-                if (bt.getIdentifierBag() != null) {
-                        for (int i = 0; i < 
bt.getIdentifierBag().getKeyedReference().size(); i++) {
-                                
ret.addAll(GetBindingKeysCheckedTModelKeyedReference(cache, 
bt.getIdentifierBag().getKeyedReference().get(i)));
+                        if (bt.getIdentifierBag() != null) {
+                                for (int i = 0; i < 
bt.getIdentifierBag().getKeyedReference().size(); i++) {
+                                        
ret.addAll(GetBindingKeysCheckedTModelKeyedReference(cache, 
bt.getIdentifierBag().getKeyedReference().get(i)));
+                                }
                         }
-                }
 
-                if (bt.getBusinessServices() != null) {
-                        for (int i = 0; i < 
bt.getBusinessServices().getBusinessService().size(); i++) {
-                                
ret.addAll(GetBindingKeysCheckedTModelKeyedReference(cache, 
bt.getBusinessServices().getBusinessService().get(i)));
+                        if (bt.getBusinessServices() != null) {
+                                
ret.addAll(GetBindingKeysCheckedTModelKeyedReferenceBS(cache, 
bt.getBusinessServices().getBusinessService()));
                         }
                 }
-
                 return ret;
         }
 
-        private List<String> 
GetBindingKeysCheckedTModelKeyedReference(Map<String, TModel> cache, TModel bt) 
{
+        private List<String> 
GetBindingKeysCheckedTModelKeyedReferenceTM(Map<String, TModel> cache, 
List<TModel> obj) {
                 List<String> ret = new ArrayList<String>();
 
-                if (bt == null) {
+                if (obj == null) {
                         return ret;
                 }
-                if (bt.getCategoryBag() != null) {
-                        for (int i = 0; i < 
bt.getCategoryBag().getKeyedReference().size(); i++) {
-                                
ret.addAll(GetBindingKeysCheckedTModelKeyedReference(cache, 
bt.getCategoryBag().getKeyedReference().get(i)));
+                for (TModel bt : obj) {
+                        if (bt.getCategoryBag() != null) {
+                                for (int i = 0; i < 
bt.getCategoryBag().getKeyedReference().size(); i++) {
+                                        
ret.addAll(GetBindingKeysCheckedTModelKeyedReference(cache, 
bt.getCategoryBag().getKeyedReference().get(i)));
+                                }
                         }
-                }
-                if (bt.getIdentifierBag() != null) {
-                        for (int i = 0; i < 
bt.getIdentifierBag().getKeyedReference().size(); i++) {
-                                
ret.addAll(GetBindingKeysCheckedTModelKeyedReference(cache, 
bt.getIdentifierBag().getKeyedReference().get(i)));
+                        if (bt.getIdentifierBag() != null) {
+                                for (int i = 0; i < 
bt.getIdentifierBag().getKeyedReference().size(); i++) {
+                                        
ret.addAll(GetBindingKeysCheckedTModelKeyedReference(cache, 
bt.getIdentifierBag().getKeyedReference().get(i)));
+                                }
                         }
                 }
-
                 return ret;
         }
 
+        /**
+         * this should return a list of binding keys, only if the referenced kr
+         * contains is validated by
+         *
+         * @param cache
+         * @param get
+         * @return
+         */
         private List<String> 
GetBindingKeysCheckedTModelKeyedReference(Map<String, TModel> cache, 
KeyedReference get) {
                 List<String> ret = new ArrayList<String>();
                 TModel ref = null;
+                log.debug("looking for is validated by for keyedref " + 
get.getTModelKey());
                 if (cache.containsKey(get.getTModelKey())) {
                         ref = cache.get(get.getTModelKey());
                 }
@@ -2091,27 +2107,39 @@ public class ValidatePublish extends ValidateUDDIApi {
                         }
                 }
                 if (ref != null) {
+
                         
ret.addAll(TModelContains(UDDIConstants.IS_VALIDATED_BY, ref));
 
                 }
                 return ret;
         }
 
-        private List<String> TModelContains(String IS_VALIDATED_BY, TModel 
ref) {
+        /**
+         * returns all keyvalues from ref.catbag and identbag where the tmodel
+         * key matches
+         *
+         * @param key
+         * @param ref
+         * @return
+         */
+        private List<String> TModelContains(String key, TModel ref) {
 
+                log.debug("looking for key=" + key + " from tModel " + 
ref.getTModelKey());
                 List<String> ret = new ArrayList<String>();
                 if (ref == null) {
                         return null;
                 }
                 if (ref.getCategoryBag() != null) {
                         for (int i = 0; i < 
ref.getCategoryBag().getKeyedReference().size(); i++) {
-                                if 
(ref.getCategoryBag().getKeyedReference().get(i).getTModelKey().equalsIgnoreCase(IS_VALIDATED_BY))
 {
+                                if 
(ref.getCategoryBag().getKeyedReference().get(i).getTModelKey().equalsIgnoreCase(key))
 {
+                                        log.debug("found reference for key=" + 
key + " from tModel " + ref.getTModelKey() + " validation endpoint " + 
ref.getCategoryBag().getKeyedReference().get(i).getKeyValue());
                                         
ret.add(ref.getCategoryBag().getKeyedReference().get(i).getKeyValue());
                                 }
                         }
                         for (int i = 0; i < 
ref.getCategoryBag().getKeyedReferenceGroup().size(); i++) {
                                 for (int k = 0; k < 
ref.getCategoryBag().getKeyedReferenceGroup().get(i).getKeyedReference().size();
 k++) {
-                                        if 
(ref.getCategoryBag().getKeyedReferenceGroup().get(i).getKeyedReference().get(k).getTModelKey().equalsIgnoreCase(IS_VALIDATED_BY))
 {
+                                        if 
(ref.getCategoryBag().getKeyedReferenceGroup().get(i).getKeyedReference().get(k).getTModelKey().equalsIgnoreCase(key))
 {
+                                                log.debug("found reference for 
key=" + key + " from tModel " + ref.getTModelKey() + " validation endpoint " + 
ref.getCategoryBag().getKeyedReferenceGroup().get(i).getKeyedReference().get(k).getKeyValue());
                                                 
ret.add(ref.getCategoryBag().getKeyedReferenceGroup().get(i).getKeyedReference().get(k).getKeyValue());
                                         }
                                 }
@@ -2119,7 +2147,8 @@ public class ValidatePublish extends ValidateUDDIApi {
                 }
                 if (ref.getIdentifierBag() != null) {
                         for (int i = 0; i < 
ref.getIdentifierBag().getKeyedReference().size(); i++) {
-                                if 
(ref.getIdentifierBag().getKeyedReference().get(i).getTModelKey().equalsIgnoreCase(IS_VALIDATED_BY))
 {
+                                if 
(ref.getIdentifierBag().getKeyedReference().get(i).getTModelKey().equalsIgnoreCase(key))
 {
+                                        log.debug("found reference for key=" + 
key + " from tModel " + ref.getTModelKey() + " validation endpoint " + 
ref.getIdentifierBag().getKeyedReference().get(i).getKeyValue());
                                         
ret.add(ref.getIdentifierBag().getKeyedReference().get(i).getKeyValue());
                                 }
                         }
@@ -2159,7 +2188,7 @@ public class ValidatePublish extends ValidateUDDIApi {
                 }
         }
 
-        private void validateCheckedTModels(BindingTemplate bindingTemplate, 
Configuration config) throws ValueNotAllowedException {
+        private void validateCheckedTModelsBT(List<BindingTemplate> 
bindingTemplate, Configuration config) throws ValueNotAllowedException {
 
                 boolean checkRef = false;
                 try {
@@ -2172,7 +2201,7 @@ public class ValidatePublish extends ValidateUDDIApi {
                         return;
                 }
                 Map<String, TModel> cache = new HashMap<String, TModel>();
-                List<String> bindings = 
GetBindingKeysCheckedTModelKeyedReference(cache, bindingTemplate);
+                List<String> bindings = 
GetBindingKeysCheckedTModelKeyedReferenceBT(cache, bindingTemplate);
 
                 if (!bindings.isEmpty()) {
                         //get a unique list
@@ -2190,7 +2219,7 @@ public class ValidatePublish extends ValidateUDDIApi {
                                         if (url != null) {
                                                 //call 
ValidateValuesFromWebService
                                                 //optimization for localhost?
-                                                
ValidateValuesFromWebService.Validate(Rectify(url, config), bindingTemplate);
+                                                
ValidateValuesFromWebService.ValidateBinding(Rectify(url, config), 
bindingTemplate);
                                         }
 
                                 }
@@ -2198,7 +2227,7 @@ public class ValidatePublish extends ValidateUDDIApi {
                 }
         }
 
-        private void validateCheckedTModels(BusinessService obj, Configuration 
config) throws ValueNotAllowedException {
+        private void validateCheckedTModelsBS(List<BusinessService> bizlist, 
Configuration config) throws ValueNotAllowedException {
                 boolean checkRef = false;
                 try {
                         checkRef = 
config.getBoolean(Property.JUDDI_ENFORCE_REFERENTIAL_INTEGRITY, false);
@@ -2209,7 +2238,7 @@ public class ValidatePublish extends ValidateUDDIApi {
                         return;
                 }
                 Map<String, TModel> cache = new HashMap<String, TModel>();
-                List<String> bindings = 
GetBindingKeysCheckedTModelKeyedReference(cache, obj);
+                List<String> bindings = 
GetBindingKeysCheckedTModelKeyedReferenceBS(cache, bizlist);
 
                 if (!bindings.isEmpty()) {
                         //get a unique list
@@ -2227,7 +2256,7 @@ public class ValidatePublish extends ValidateUDDIApi {
                                         if (url != null) {
                                                 //call 
ValidateValuesFromWebService
                                                 //optimization for localhost?
-                                                
ValidateValuesFromWebService.Validate(Rectify(url, config), obj);
+                                                
ValidateValuesFromWebService.ValidateService(Rectify(url, config), bizlist);
                                         }
 
                                 }
@@ -2235,7 +2264,7 @@ public class ValidatePublish extends ValidateUDDIApi {
                 }
         }
 
-        private void validateCheckedTModels(BusinessEntity entity, 
Configuration config) throws ValueNotAllowedException {
+        private void validateCheckedTModelsBE(List<BusinessEntity> entity, 
Configuration config) throws ValueNotAllowedException {
                 boolean checkRef = false;
                 try {
                         checkRef = 
config.getBoolean(Property.JUDDI_ENFORCE_REFERENTIAL_INTEGRITY, false);
@@ -2246,7 +2275,7 @@ public class ValidatePublish extends ValidateUDDIApi {
                         return;
                 }
                 Map<String, TModel> cache = new HashMap<String, TModel>();
-                List<String> bindings = 
GetBindingKeysCheckedTModelKeyedReference(cache, entity);
+                List<String> bindings = 
GetBindingKeysCheckedTModelKeyedReferenceBE(cache, entity);
 
                 if (!bindings.isEmpty()) {
                         //get a unique list
@@ -2264,7 +2293,7 @@ public class ValidatePublish extends ValidateUDDIApi {
                                         if (url != null) {
                                                 //call 
ValidateValuesFromWebService
                                                 //optimization for localhost?
-                                                
ValidateValuesFromWebService.Validate(Rectify(url, config), entity);
+                                                
ValidateValuesFromWebService.ValidateBusiness(Rectify(url, config), entity);
                                         }
 
                                 }
@@ -2272,7 +2301,7 @@ public class ValidatePublish extends ValidateUDDIApi {
                 }
         }
 
-        private void validateCheckedTModels(TModel entity, Configuration 
config) throws ValueNotAllowedException {
+        private void validateCheckedTModelsTM(List<TModel> entity, 
Configuration config) throws ValueNotAllowedException {
                 boolean checkRef = false;
                 try {
                         checkRef = 
config.getBoolean(Property.JUDDI_ENFORCE_REFERENTIAL_INTEGRITY, false);
@@ -2283,7 +2312,7 @@ public class ValidatePublish extends ValidateUDDIApi {
                         return;
                 }
                 Map<String, TModel> cache = new HashMap<String, TModel>();
-                List<String> bindings = 
GetBindingKeysCheckedTModelKeyedReference(cache, entity);
+                List<String> bindings = 
GetBindingKeysCheckedTModelKeyedReferenceTM(cache, entity);
 
                 if (!bindings.isEmpty()) {
                         //get a unique list
@@ -2299,9 +2328,10 @@ public class ValidatePublish extends ValidateUDDIApi {
                                                 url = 
find.getHostingRedirector();
                                         }
                                         if (url != null) {
+                                                log.info("attempting vsv from 
" + url);
                                                 //call 
ValidateValuesFromWebService
                                                 //optimization for localhost?
-                                                
ValidateValuesFromWebService.Validate(Rectify(url, config), entity);
+                                                
ValidateValuesFromWebService.ValidateTModel(Rectify(url, config), entity);
                                         }
 
                                 }

http://git-wip-us.apache.org/repos/asf/juddi/blob/a866ea02/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
index f0d1bc2..8c48298 100644
--- 
a/juddi-core/src/main/java/org/apache/juddi/validation/ValidateValuesFromWebService.java
+++ 
b/juddi-core/src/main/java/org/apache/juddi/validation/ValidateValuesFromWebService.java
@@ -15,6 +15,7 @@
  */
 package org.apache.juddi.validation;
 
+import java.util.List;
 import javax.xml.ws.BindingProvider;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -86,27 +87,26 @@ public class ValidateValuesFromWebService {
                 return vsv;
         }
 
-        public static void Validate(String url, BusinessEntity obj) throws 
ValueNotAllowedException {
+       
 
+        public static void ValidateTModel(String url, List<TModel> obj) throws 
ValueNotAllowedException {
                 UDDIValueSetValidationPortType vsv = getPort(url);
                 ValidateValues req = new ValidateValues();
-                req.getBusinessEntity().add(obj);
+                req.getTModel().addAll(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);
+                        log.warn(ex);
                         ValueNotAllowedException x = new 
ValueNotAllowedException(new 
ErrorMessage("errors.valuesetvalidation.invalidcontent", ex.getMessage()));
                         throw x;
                 }
         }
-
-        public static void Validate(String url, TModel obj) throws 
ValueNotAllowedException {
+        
+          public static void ValidateBinding(String url, List<BindingTemplate> 
obj) throws ValueNotAllowedException {
                 UDDIValueSetValidationPortType vsv = getPort(url);
                 ValidateValues req = new ValidateValues();
-                req.getTModel().add(obj);
+                req.getBindingTemplate().addAll(obj);
 
                 try {
                         DispositionReport validateValues = 
vsv.validateValues(req);
@@ -117,10 +117,10 @@ public class ValidateValuesFromWebService {
                 }
         }
 
-        public static void Validate(String url, BusinessService obj) throws 
ValueNotAllowedException {
+        public static void ValidateService(String url, List<BusinessService> 
obj) throws ValueNotAllowedException {
                 UDDIValueSetValidationPortType vsv = getPort(url);
                 ValidateValues req = new ValidateValues();
-                req.getBusinessService().add(obj);
+                req.getBusinessService().addAll(obj);
 
                 try {
                         DispositionReport validateValues = 
vsv.validateValues(req);
@@ -130,11 +130,12 @@ public class ValidateValuesFromWebService {
                         throw x;
                 }
         }
-
-        public static void Validate(String url, BindingTemplate obj) throws 
ValueNotAllowedException {
+        
+      
+        public static void ValidateBusiness(String url, List<BusinessEntity> 
obj) throws ValueNotAllowedException {
                 UDDIValueSetValidationPortType vsv = getPort(url);
                 ValidateValues req = new ValidateValues();
-                req.getBindingTemplate().add(obj);
+                req.getBusinessEntity().addAll(obj);
 
                 try {
                         DispositionReport validateValues = 
vsv.validateValues(req);
@@ -145,7 +146,7 @@ public class ValidateValuesFromWebService {
                 }
         }
 
-        public static void Validate(String url, PublisherAssertion obj) throws 
ValueNotAllowedException {
+        public static void ValidatePubAss(String url, PublisherAssertion obj) 
throws ValueNotAllowedException {
                 UDDIValueSetValidationPortType vsv = getPort(url);
                 ValidateValues req = new ValidateValues();
                 req.getPublisherAssertion().add(obj);

http://git-wip-us.apache.org/repos/asf/juddi/blob/a866ea02/juddi-core/src/main/java/org/apache/juddi/validation/vsv/AbstractSimpleValidator.java
----------------------------------------------------------------------
diff --git 
a/juddi-core/src/main/java/org/apache/juddi/validation/vsv/AbstractSimpleValidator.java
 
b/juddi-core/src/main/java/org/apache/juddi/validation/vsv/AbstractSimpleValidator.java
index b8a7c29..4a23900 100644
--- 
a/juddi-core/src/main/java/org/apache/juddi/validation/vsv/AbstractSimpleValidator.java
+++ 
b/juddi-core/src/main/java/org/apache/juddi/validation/vsv/AbstractSimpleValidator.java
@@ -115,7 +115,7 @@ public abstract class AbstractSimpleValidator implements 
ValueSetValidator {
                                 //ok we have some work to do
                                 boolean valid = false;
                                 for (int k = 0; k < validValues.size(); k++) {
-                                        if 
(validValues.get(i).equals(items.get(i).getKeyValue())) {
+                                        if 
(validValues.get(k).equals(items.get(i).getKeyValue())) {
                                                 valid = true;
                                         }
                                 }
@@ -125,7 +125,7 @@ public abstract class AbstractSimpleValidator implements 
ValueSetValidator {
                         }
                 }
                 if (err.length() > 0) {
-                        throw new InvalidValueException(new 
ErrorMessage("errors.valuesetvalidation.invalidcontent", err));
+                        throw new InvalidValueException(new 
ErrorMessage("errors.valuesetvalidation.invalidcontent", err + 
getPrintableValidValues()));
                 }
         }
 
@@ -180,7 +180,7 @@ public abstract class AbstractSimpleValidator implements 
ValueSetValidator {
                         return;
                 }
                 if (key.equalsIgnoreCase(item.getTModelKey())) {
-                        throw new InvalidValueException(new 
ErrorMessage("errors.valuesetvalidation.invalidcontent", "key " + key + " not 
allowed on " + itemtype));
+                        throw new InvalidValueException(new 
ErrorMessage("errors.valuesetvalidation.invalidcontent", "key " + key + " not 
allowed on " + itemtype) );
                 }
         }
 
@@ -196,4 +196,17 @@ public abstract class AbstractSimpleValidator implements 
ValueSetValidator {
                 }
         }
 
+        private String getPrintableValidValues() {
+                StringBuilder sb = new StringBuilder();
+                sb.append(" Valid Values:[");
+                List<String> validValues = getValidValues();
+                for (int i=0; i < validValues.size(); i++){
+                        sb.append(validValues.get(i));
+                        if (i+1< validValues.size())
+                                sb.append(",");
+                }
+                sb.append("]");
+                return sb.toString();
+        }
+
 }

http://git-wip-us.apache.org/repos/asf/juddi/blob/a866ea02/juddi-core/src/main/java/org/apache/juddi/validation/vsv/Uddiuddiorgcategorizationderivedfrom.java
----------------------------------------------------------------------
diff --git 
a/juddi-core/src/main/java/org/apache/juddi/validation/vsv/Uddiuddiorgcategorizationderivedfrom.java
 
b/juddi-core/src/main/java/org/apache/juddi/validation/vsv/Uddiuddiorgcategorizationderivedfrom.java
index 8cc2a42..a973936 100644
--- 
a/juddi-core/src/main/java/org/apache/juddi/validation/vsv/Uddiuddiorgcategorizationderivedfrom.java
+++ 
b/juddi-core/src/main/java/org/apache/juddi/validation/vsv/Uddiuddiorgcategorizationderivedfrom.java
@@ -89,6 +89,7 @@ public class Uddiuddiorgcategorizationderivedfrom implements 
ValueSetValidator {
                         }
                         if (items.get(i).getTModelInstanceDetails() != null) {
                                 for (int k = 0; k < 
items.get(i).getTModelInstanceDetails().getTModelInstanceInfo().size(); k++) {
+                                        if 
(items.get(i).getTModelInstanceDetails().getTModelInstanceInfo().get(k) != 
null) 
                                         if 
(key.equalsIgnoreCase(items.get(i).getTModelInstanceDetails().getTModelInstanceInfo().get(k).getTModelKey()))
 {
                                                 throw new 
InvalidValueException(new 
ErrorMessage("errors.valuesetvalidation.invalidcontent", "not allowed on 
binding templates"));
                                         }

http://git-wip-us.apache.org/repos/asf/juddi/blob/a866ea02/juddi-core/src/main/java/org/apache/juddi/validation/vsv/Uddiuddiorgcategorizationowningbusiness.java
----------------------------------------------------------------------
diff --git 
a/juddi-core/src/main/java/org/apache/juddi/validation/vsv/Uddiuddiorgcategorizationowningbusiness.java
 
b/juddi-core/src/main/java/org/apache/juddi/validation/vsv/Uddiuddiorgcategorizationowningbusiness.java
index 4bb5261..fb05e08 100644
--- 
a/juddi-core/src/main/java/org/apache/juddi/validation/vsv/Uddiuddiorgcategorizationowningbusiness.java
+++ 
b/juddi-core/src/main/java/org/apache/juddi/validation/vsv/Uddiuddiorgcategorizationowningbusiness.java
@@ -72,6 +72,7 @@ public class Uddiuddiorgcategorizationowningbusiness 
implements ValueSetValidato
                         }
                         if (items.get(i).getTModelInstanceDetails() != null) {
                                 for (int k = 0; k < 
items.get(i).getTModelInstanceDetails().getTModelInstanceInfo().size(); k++) {
+                                        if 
(items.get(i).getTModelInstanceDetails().getTModelInstanceInfo().get(k) != 
null) 
                                         if 
(key.equalsIgnoreCase(items.get(i).getTModelInstanceDetails().getTModelInstanceInfo().get(k).getTModelKey()))
 {
                                                 throw new 
InvalidValueException(new 
ErrorMessage("errors.valuesetvalidation.invalidcontent", "not allowed on 
binding templates"));
                                         }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to