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