You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@juddi.apache.org by jf...@apache.org on 2010/07/13 01:31:57 UTC
svn commit: r963528 - in
/webservices/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/validation:
ValidateCustodyTransfer.java ValidateInquiry.java ValidatePublish.java
ValidateSubscription.java
Author: jfaath
Date: Mon Jul 12 23:31:57 2010
New Revision: 963528
URL: http://svn.apache.org/viewvc?rev=963528&view=rev
Log:
JUDDI-170, JUDDI-404: inquiry, publish, custody transfer and subscription operations automatically case-fold the user input keys
Modified:
webservices/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/validation/ValidateCustodyTransfer.java
webservices/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/validation/ValidateInquiry.java
webservices/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/validation/ValidatePublish.java
webservices/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/validation/ValidateSubscription.java
Modified: webservices/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/validation/ValidateCustodyTransfer.java
URL: http://svn.apache.org/viewvc/webservices/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/validation/ValidateCustodyTransfer.java?rev=963528&r1=963527&r2=963528&view=diff
==============================================================================
--- webservices/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/validation/ValidateCustodyTransfer.java (original)
+++ webservices/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/validation/ValidateCustodyTransfer.java Mon Jul 12 23:31:57 2010
@@ -68,7 +68,12 @@ public class ValidateCustodyTransfer ext
throw new ValueNotAllowedException(new ErrorMessage("errors.keybag.NoInput"));
// Test that publisher owns keys using operational info.
+ int i = 0;
for (String key : keyList) {
+ // Per section 4.4: keys must be case-folded
+ key = key.toLowerCase();
+ keyList.set(i, key);
+
UddiEntity uddiEntity = em.find(UddiEntity.class, key);
// According to spec, it's ok if a key doesn't match any known entities, it will just be ignored. However, the publisher must own
@@ -78,6 +83,8 @@ public class ValidateCustodyTransfer ext
throw new UserMismatchException(new ErrorMessage("errors.usermismatch.InvalidOwner", key));
}
+
+ i++;
}
}
@@ -96,7 +103,12 @@ public class ValidateCustodyTransfer ext
// Test that publisher owns keys using operational info.
Vector<DynamicQuery.Parameter> params = new Vector<DynamicQuery.Parameter>(0);
+ int i = 0;
for (String key : keyList) {
+ // Per section 4.4: keys must be case-folded
+ key = key.toLowerCase();
+ keyList.set(i, key);
+
UddiEntity uddiEntity = em.find(UddiEntity.class, key);
if (uddiEntity == null)
@@ -169,6 +181,10 @@ public class ValidateCustodyTransfer ext
Collections.sort(modelKeyList);
int count = 0;
for (String key : apiKeyList) {
+ // Per section 4.4: keys must be case-folded
+ key = key.toLowerCase();
+ apiKeyList.set(count, key);
+
if (!key.equalsIgnoreCase(modelKeyList.get(count)))
throw new TransferNotAllowedException(new ErrorMessage("errors.transferentities.KeyMismatch", key + " & " + modelKeyList.get(count)));
Modified: webservices/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/validation/ValidateInquiry.java
URL: http://svn.apache.org/viewvc/webservices/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/validation/ValidateInquiry.java?rev=963528&r1=963527&r2=963528&view=diff
==============================================================================
--- webservices/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/validation/ValidateInquiry.java (original)
+++ webservices/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/validation/ValidateInquiry.java Mon Jul 12 23:31:57 2010
@@ -68,10 +68,18 @@ public class ValidateInquiry extends Val
throw new InvalidKeyPassedException(new ErrorMessage("errors.invalidkey.NoKeys"));
HashSet<String> dupCheck = new HashSet<String>();
+ int i = 0;
for (String entityKey : entityKeyList) {
+
+ // Per section 4.4: keys must be case-folded
+ entityKey = entityKey.toLowerCase();
+ entityKeyList.set(i, entityKey);
+
boolean inserted = dupCheck.add(entityKey);
if (!inserted)
throw new InvalidKeyPassedException(new ErrorMessage("errors.invalidkey.DuplicateKey", entityKey));
+
+ i++;
}
}
@@ -87,10 +95,18 @@ public class ValidateInquiry extends Val
throw new InvalidKeyPassedException(new ErrorMessage("errors.invalidkey.NoKeys"));
HashSet<String> dupCheck = new HashSet<String>();
+ int i = 0;
for (String entityKey : entityKeyList) {
+
+ // Per section 4.4: keys must be case-folded
+ entityKey = entityKey.toLowerCase();
+ entityKeyList.set(i, entityKey);
+
boolean inserted = dupCheck.add(entityKey);
if (!inserted)
throw new InvalidKeyPassedException(new ErrorMessage("errors.invalidkey.DuplicateKey", entityKey));
+
+ i++;
}
}
@@ -106,10 +122,18 @@ public class ValidateInquiry extends Val
throw new InvalidKeyPassedException(new ErrorMessage("errors.invalidkey.NoKeys"));
HashSet<String> dupCheck = new HashSet<String>();
+ int i = 0;
for (String entityKey : entityKeyList) {
+
+ // Per section 4.4: keys must be case-folded
+ entityKey = entityKey.toLowerCase();
+ entityKeyList.set(i, entityKey);
+
boolean inserted = dupCheck.add(entityKey);
if (!inserted)
throw new InvalidKeyPassedException(new ErrorMessage("errors.invalidkey.DuplicateKey", entityKey));
+
+ i++;
}
}
@@ -125,10 +149,18 @@ public class ValidateInquiry extends Val
throw new InvalidKeyPassedException(new ErrorMessage("errors.invalidkey.NoKeys"));
HashSet<String> dupCheck = new HashSet<String>();
+ int i = 0;
for (String entityKey : entityKeyList) {
+
+ // Per section 4.4: keys must be case-folded
+ entityKey = entityKey.toLowerCase();
+ entityKeyList.set(i, entityKey);
+
boolean inserted = dupCheck.add(entityKey);
if (!inserted)
throw new InvalidKeyPassedException(new ErrorMessage("errors.invalidkey.DuplicateKey", entityKey));
+
+ i++;
}
}
@@ -144,10 +176,18 @@ public class ValidateInquiry extends Val
throw new InvalidKeyPassedException(new ErrorMessage("errors.invalidkey.NoKeys"));
HashSet<String> dupCheck = new HashSet<String>();
+ int i = 0;
for (String entityKey : entityKeyList) {
+
+ // Per section 4.4: keys must be case-folded
+ entityKey = entityKey.toLowerCase();
+ entityKeyList.set(i, entityKey);
+
boolean inserted = dupCheck.add(entityKey);
if (!inserted)
throw new InvalidKeyPassedException(new ErrorMessage("errors.invalidkey.DuplicateKey", entityKey));
+
+ i++;
}
}
@@ -195,7 +235,7 @@ public class ValidateInquiry extends Val
if (body.getCategoryBag() == null && body.getFindTModel() == null && body.getTModelBag() == null)
throw new FatalErrorException(new ErrorMessage("errors.findbinding.NoInput"));
-
+
validateFindQualifiers(body.getFindQualifiers());
validateTModelBag(body.getTModelBag());
validateFindTModel(body.getFindTModel(), true);
@@ -239,17 +279,24 @@ public class ValidateInquiry extends Val
boolean fromKeyExists = false;
if (body.getBusinessKey() != null && body.getBusinessKey().length() > 0) {
businessKeyExists = true;
-
+
+ // Per section 4.4: keys must be case-folded
+ body.setBusinessKey(body.getBusinessKey().toLowerCase());
}
if (body.getFromKey() != null && body.getFromKey().length() > 0) {
fromKeyExists = true;
if (businessKeyExists)
throw new FatalErrorException(new ErrorMessage("errors.findrelatedbusiness.MultipleInput"));
-
+
+ // Per section 4.4: keys must be case-folded
+ body.setFromKey(body.getFromKey().toLowerCase());
}
if (body.getToKey() != null && body.getToKey().length() > 0) {
if (businessKeyExists || fromKeyExists)
throw new FatalErrorException(new ErrorMessage("errors.findrelatedbusiness.MultipleInput"));
+
+ // Per section 4.4: keys must be case-folded
+ body.setToKey(body.getToKey().toLowerCase());
}
KeyedReference keyedRef = body.getKeyedReference();
@@ -258,8 +305,9 @@ public class ValidateInquiry extends Val
keyedRef.getKeyName() == null || keyedRef.getKeyName().length() == 0 ||
keyedRef.getKeyValue() == null || keyedRef.getKeyValue().length() == 0)
throw new ValueNotAllowedException(new ErrorMessage("errors.findrelatedbusiness.BlankKeyedRef"));
+
+ validateKeyedReference(keyedRef);
}
-
}
public void validateNames(List<org.uddi.api_v3.Name> names) throws DispositionReportFaultMessage {
@@ -279,6 +327,15 @@ public class ValidateInquiry extends Val
if (tmodelBag.getTModelKey() == null || tmodelBag.getTModelKey().size() == 0)
throw new ValueNotAllowedException(new ErrorMessage("errors.tmodelbag.NoInput"));
+ List<String> keyList = tmodelBag.getTModelKey();
+ int i = 0;
+ for (String key : keyList) {
+ // Per section 4.4: keys must be case-folded
+ key = key.toLowerCase();
+ keyList.set(i, key);
+ i++;
+ }
+
}
public void validateDiscoveryUrls(org.uddi.api_v3.DiscoveryURLs discUrls) throws DispositionReportFaultMessage {
@@ -330,9 +387,18 @@ public class ValidateInquiry extends Val
public void validateKeyedReferenceGroup (KeyedReferenceGroup krg) throws DispositionReportFaultMessage {
// Keyed reference groups must contain a tModelKey
- if (krg instanceof org.uddi.api_v3.KeyedReferenceGroup) {
- if (krg.getTModelKey() == null || krg.getTModelKey().length() == 0)
- throw new ValueNotAllowedException(new ErrorMessage("errors.keyedreference.NoTModelKey"));
+ if (krg.getTModelKey() == null || krg.getTModelKey().length() == 0)
+ throw new ValueNotAllowedException(new ErrorMessage("errors.keyedreference.NoTModelKey"));
+
+ // Per section 4.4: keys must be case-folded
+ krg.setTModelKey(krg.getTModelKey().toLowerCase());
+
+ List<KeyedReference> keyedRefs = krg.getKeyedReference();
+ // Should being empty raise an error?
+ if (keyedRefs != null && keyedRefs.size() > 0) {
+ for (KeyedReference keyedRef : keyedRefs) {
+ validateKeyedReference(keyedRef);
+ }
}
}
@@ -345,6 +411,9 @@ public class ValidateInquiry extends Val
if (kr.getTModelKey() == null || kr.getTModelKey().length() == 0)
throw new ValueNotAllowedException(new ErrorMessage("errors.keyedreference.NoTModelKey"));
+ // Per section 4.4: keys must be case-folded
+ kr.setTModelKey(kr.getTModelKey().toLowerCase());
+
if (kr.getKeyValue() == null || kr.getKeyValue().length() == 0)
throw new ValueNotAllowedException(new ErrorMessage("errors.keyedreference.NoKeyValue"));
}
Modified: webservices/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/validation/ValidatePublish.java
URL: http://svn.apache.org/viewvc/webservices/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/validation/ValidatePublish.java?rev=963528&r1=963527&r2=963528&view=diff
==============================================================================
--- webservices/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/validation/ValidatePublish.java (original)
+++ webservices/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/validation/ValidatePublish.java Mon Jul 12 23:31:57 2010
@@ -882,6 +882,10 @@ public class ValidatePublish extends Val
if (addressList != null) {
for (org.uddi.api_v3.Address address : addressList) {
if (address != null) {
+ // Per section 4.4: keys must be case-folded
+ if (address.getTModelKey() != null)
+ address.setTModelKey(address.getTModelKey().toLowerCase());
+
if (address.getAddressLine() == null || address.getAddressLine().size() == 0)
throw new ValueNotAllowedException(new ErrorMessage("errors.contact.NoAddressLine"));
}
@@ -911,11 +915,13 @@ public class ValidatePublish extends Val
List<KeyedReferenceGroup> groups = categories.getKeyedReferenceGroup();
if (groups.size() == 0 && elems.size() == 0)
throw new ValueNotAllowedException(new ErrorMessage("errors.categorybag.NoInput"));
+
+ for (KeyedReferenceGroup group : groups) {
+ validateKeyedReferenceGroup(group, config);
+ }
- for (Object elem : elems) {
- if (elem instanceof org.uddi.api_v3.KeyedReference) {
- validateKeyedReference((KeyedReference) elem, config);
- }
+ for (KeyedReference elem : elems) {
+ validateKeyedReference(elem, config);
}
}
@@ -936,7 +942,7 @@ public class ValidatePublish extends Val
}
- public void validateKeyedReferenceGroup(KeyedReferenceGroup krg) throws DispositionReportFaultMessage {
+ public void validateKeyedReferenceGroup(KeyedReferenceGroup krg, Configuration config) throws DispositionReportFaultMessage {
// Keyed reference groups must contain a tModelKey
if (krg.getTModelKey() == null || krg.getTModelKey().length() == 0)
throw new ValueNotAllowedException(new ErrorMessage("errors.keyedreference.NoTModelKey"));
@@ -944,6 +950,14 @@ public class ValidatePublish extends Val
// Per section 4.4: keys must be case-folded
String tmodelKey = krg.getTModelKey().toLowerCase();
krg.setTModelKey(tmodelKey);
+
+ List<KeyedReference> keyedRefs = krg.getKeyedReference();
+ // Should being empty raise an error?
+ if (keyedRefs != null && keyedRefs.size() > 0) {
+ for (KeyedReference keyedRef : keyedRefs) {
+ validateKeyedReference(keyedRef, config);
+ }
+ }
}
@@ -993,6 +1007,9 @@ public class ValidatePublish extends Val
if (tmodelInstInfo.getTModelKey() == null || tmodelInstInfo.getTModelKey().length() == 0)
throw new ValueNotAllowedException(new ErrorMessage("errors.tmodelinstinfo.NoTModelKey"));
+ // Per section 4.4: keys must be case-folded
+ tmodelInstInfo.setTModelKey((tmodelInstInfo.getTModelKey().toLowerCase()));
+
validateInstanceDetails(tmodelInstInfo.getInstanceDetails());
}
Modified: webservices/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/validation/ValidateSubscription.java
URL: http://svn.apache.org/viewvc/webservices/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/validation/ValidateSubscription.java?rev=963528&r1=963527&r2=963528&view=diff
==============================================================================
--- webservices/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/validation/ValidateSubscription.java (original)
+++ webservices/juddi/trunk/juddi-core/src/main/java/org/apache/juddi/validation/ValidateSubscription.java Mon Jul 12 23:31:57 2010
@@ -176,7 +176,13 @@ public class ValidateSubscription extend
throw new InvalidKeyPassedException(new ErrorMessage("errors.invalidkey.NoKeys"));
HashSet<String> dupCheck = new HashSet<String>();
+ int i = 0;
for (String entityKey : entityKeyList) {
+
+ // Per section 4.4: keys must be case-folded
+ entityKey = entityKey.toLowerCase();
+ entityKeyList.set(i, entityKey);
+
boolean inserted = dupCheck.add(entityKey);
if (!inserted)
throw new InvalidKeyPassedException(new ErrorMessage("errors.invalidkey.DuplicateKey", entityKey));
@@ -189,6 +195,7 @@ public class ValidateSubscription extend
if (!publisher.getAuthorizedName().equals(((org.apache.juddi.model.Subscription)obj).getAuthorizedName()))
throw new UserMismatchException(new ErrorMessage("errors.usermismatch.InvalidOwner", entityKey));
+ i++;
}
}
@@ -201,6 +208,10 @@ public class ValidateSubscription extend
if (subscriptionKey == null || subscriptionKey.length() == 0)
throw new InvalidKeyPassedException(new ErrorMessage("errors.invalidkey.NullKey", subscriptionKey));
+ // Per section 4.4: keys must be case-folded
+ subscriptionKey = subscriptionKey.toLowerCase();
+ body.setSubscriptionKey(subscriptionKey);
+
Object obj = em.find(org.apache.juddi.model.Subscription.class, subscriptionKey);
if (obj == null)
throw new InvalidKeyPassedException(new ErrorMessage("errors.invalidkey.SubscriptionNotFound", subscriptionKey));
---------------------------------------------------------------------
To unsubscribe, e-mail: juddi-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: juddi-cvs-help@ws.apache.org