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><categoryBag> * <keyedReference keyName="" * keyValue="uddi:juddi.apache.org:servicebindings-valueset-cp" * tModelKey="uddi:uddi.org:identifier:validatedby"/> * </categoryBag> - * </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]
