You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commons-dev@ws.apache.org by ch...@apache.org on 2006/06/07 08:07:06 UTC

svn commit: r412300 - /webservices/commons/trunk/modules/neethi/src/org/apache/ws/policy/PrimitiveAssertion.java

Author: chinthaka
Date: Tue Jun  6 23:07:05 2006
New Revision: 412300

URL: http://svn.apache.org/viewvc?rev=412300&view=rev
Log:
- more comments to the code
- removed unnecessary normalization call


Modified:
    webservices/commons/trunk/modules/neethi/src/org/apache/ws/policy/PrimitiveAssertion.java

Modified: webservices/commons/trunk/modules/neethi/src/org/apache/ws/policy/PrimitiveAssertion.java
URL: http://svn.apache.org/viewvc/webservices/commons/trunk/modules/neethi/src/org/apache/ws/policy/PrimitiveAssertion.java?rev=412300&r1=412299&r2=412300&view=diff
==============================================================================
--- webservices/commons/trunk/modules/neethi/src/org/apache/ws/policy/PrimitiveAssertion.java (original)
+++ webservices/commons/trunk/modules/neethi/src/org/apache/ws/policy/PrimitiveAssertion.java Tue Jun  6 23:07:05 2006
@@ -74,44 +74,51 @@
 	public Assertion intersect(Assertion assertion, PolicyRegistry reg) {
 		log.debug("Enter: PrimitveAssertion:intersect");
 
-		Assertion normalizedMe = (isNormalized()) ? this : normalize(reg);
+        // first check whether self is normalized.
+        Assertion normalizedMe = (isNormalized()) ? this : normalize(reg);
 
-		if (!(normalizedMe instanceof PrimitiveAssertion)) {
+        // if normalization made me to some other form than a primitive assertion, then let the new form
+        // handle the intersection
+        if (!(normalizedMe instanceof PrimitiveAssertion)) {
 			return normalizedMe.intersect(assertion, reg);
 		}
 
-		Assertion target = (assertion.isNormalized()) ? assertion : assertion
+        // now normalize the passed argument
+        Assertion target = (assertion.isNormalized()) ? assertion : assertion
 				.normalize(reg);
 
-		// Am not a primitive assertion anymore ..
-		if (!(assertion instanceof PrimitiveAssertion)) {
-			return normalizedMe.intersect(assertion, reg);
-		}
-
 		// argument is not primitive type ..
 		if (!(target instanceof PrimitiveAssertion)) {
 			return target.intersect(normalizedMe, reg);
 		}
 
-		PrimitiveAssertion arg = (PrimitiveAssertion) target;
+		PrimitiveAssertion arg  = (PrimitiveAssertion) target;
 		PrimitiveAssertion self = (PrimitiveAssertion) normalizedMe;
 
-		if (!self.getName().equals(arg.getName())) {
+        // first, if the two names are not equal these can not be intersect and should return an ExactlyOne.
+        if (!self.getName().equals(arg.getName())) {
 			return new ExactlyOne(); // no bahaviour is admisible
 		}
 
-		if (self.getTerms().isEmpty() && arg.getTerms().isEmpty()) {
+        // now the two names are equal.
+
+        // Now one or both of these assertions may contain a Policy element or Primitive assertion inside this.
+        // Lets take the case where both the assertions do not contain a Policy inside this. So this will intersect to an ALL,
+        // which both the primitive assertions as child elements.
+        if (self.getTerms().isEmpty() && arg.getTerms().isEmpty()) {
 			All assertion2 = new All();
 			assertion2.addTerm(self);
 			assertion2.addTerm(arg);
 			return assertion2;
 		}
 
-		if (self.getTerms().isEmpty() || arg.getTerms().isEmpty()) {
+        // if one of them is empty and the other is not, then this can not be intersected.
+        if (self.getTerms().isEmpty() || arg.getTerms().isEmpty()) {
 			return new ExactlyOne(); // no
 		}
 
-		List argChildTerms;
+        // now both the assertions contain Policy elements or Primitive assertion inside them
+        List argChildTerms;
 		if (arg.getTerms().get(0) instanceof Policy) {
 			argChildTerms = PolicyUtil.getPrimTermsList((Policy) arg.getTerms()
 					.get(0));
@@ -140,8 +147,6 @@
 			primListA = argChildTerms;
 			primListB = selfChildTerms;
 		}
-
-		boolean isIntersect = false;
 
 		for (Iterator iterator = primListA.iterator(); iterator.hasNext();) {
 			PRIMITIVE_A = (PrimitiveAssertion) iterator.next();



---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: commons-dev-help@ws.apache.org