Author: sanka
Date: Sun Dec 11 08:59:40 2005
New Revision: 355977

URL: http://svn.apache.org/viewcvs?rev=355977&view=rev
Log:
Modified: To compare core components of two policy objects.

Modified:
    
webservices/commons/trunk/policy/test/org/apache/ws/policy/util/PolicyComparator.java

Modified: 
webservices/commons/trunk/policy/test/org/apache/ws/policy/util/PolicyComparator.java
URL: 
http://svn.apache.org/viewcvs/webservices/commons/trunk/policy/test/org/apache/ws/policy/util/PolicyComparator.java?rev=355977&r1=355976&r2=355977&view=diff
==============================================================================
--- 
webservices/commons/trunk/policy/test/org/apache/ws/policy/util/PolicyComparator.java
 (original)
+++ 
webservices/commons/trunk/policy/test/org/apache/ws/policy/util/PolicyComparator.java
 Sun Dec 11 08:59:40 2005
@@ -16,30 +16,160 @@
 
 package org.apache.ws.policy.util;
 
+import java.util.Hashtable;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.xml.namespace.QName;
+
+import org.apache.ws.policy.model.AndCompositeAssertion;
 import org.apache.ws.policy.model.Assertion;
+import org.apache.ws.policy.model.Policy;
+import org.apache.ws.policy.model.PolicyReference;
 import org.apache.ws.policy.model.PrimitiveAssertion;
+import org.apache.ws.policy.model.XorCompositeAssertion;
 
 /**
  * @author Sanka Samaranayake ([EMAIL PROTECTED])
  */
 public class PolicyComparator {
-    public static boolean compare(Assertion arg1, Assertion arg2) {
-        
-        
-       return true;
-    }
-    
-    public static boolean compare(PrimitiveAssertion prim1, PrimitiveAssertion 
prim2) {
-        if (!(prim1.getName().equals(prim2.getName()))) {
-            return false;
-        } 
-        
-        String value1 = prim1.getStrValue();
-        String value2 = prim2.getStrValue();
-        
-        //if (value1 == null  value2 != null )
-        return true;
-        
-    }
-    
-}
+       public static boolean compare(Policy arg1, Policy arg2) {
+               if (arg1.getId() == null && arg2.getId() != null
+                               || arg1.getId() != null && arg1.getId() == 
null) {
+                       return false;
+               }
+
+               if (arg1.getId() != null) {
+                       if (!arg1.getId().equals(arg2.getId())) {
+                               return false;
+                       }
+               }
+
+               if (arg1.getBase() == null && arg2.getBase() != null
+                               || arg1.getBase() != null && arg1.getBase() == 
null) {
+                       return false;
+               }
+
+               if (arg1.getBase() != null) {
+                       if (!arg1.getBase().equals(arg2.getBase())) {
+                               return false;
+                       }
+               }
+
+               return compare(arg1.getTerms(), arg2.getTerms());
+       }
+       
+       public static boolean compare(Assertion arg1, Assertion arg2) {
+               if (! arg1.getClass().equals(arg2.getClass())) {
+                       return false;
+               }
+
+               if (arg1 instanceof Policy) {
+                       return compare((Policy) arg1, (Policy) arg2);
+
+               } else if (arg1 instanceof PolicyReference) {
+
+                       return compare((PolicyReference) arg1, 
(PolicyReference) arg2);
+
+               } else if (arg1 instanceof AndCompositeAssertion) {
+
+                       return compare((AndCompositeAssertion) arg1,
+                                       (AndCompositeAssertion) arg2);
+
+               } else if (arg1 instanceof XorCompositeAssertion) {
+                       return compare((XorCompositeAssertion) arg1,
+                                       (XorCompositeAssertion) arg2);
+
+               } else if (arg1 instanceof PrimitiveAssertion) {
+                       return compare((PrimitiveAssertion) arg1, 
(PrimitiveAssertion) arg2);
+
+               } else {
+                       // TODO should I throw an exception ..
+               }
+
+               return false;
+       }
+
+       
+
+       public static boolean compare(PolicyReference arg1, PolicyReference 
arg2) {
+               return 
arg1.getPolicyURIString().equals(arg2.getPolicyURIString());
+       }
+
+       public static boolean compare(AndCompositeAssertion arg1,
+                       AndCompositeAssertion arg2) {
+               return compare(arg1.getTerms(), arg2.getTerms());
+       }
+
+       public static boolean compare(XorCompositeAssertion arg1,
+                       XorCompositeAssertion arg2) {
+               return compare(arg1.getTerms(), arg2.getTerms());
+       }
+
+       public static boolean compare(PrimitiveAssertion arg1,
+                       PrimitiveAssertion arg2) {
+               if (!(arg1.getName().equals(arg2.getName()))) {
+                       return false;
+               }
+               if (arg1.getStrValue() != null) {
+                       String arg1Str = arg1.getStrValue().trim();
+                       if (arg2.getStrValue() == null) {
+                               return false;
+                       } else {
+                               String arg2Str = arg2.getStrValue().trim();
+                               if (! arg1Str.equals(arg2Str)) {
+                                       return false;}
+                       }
+               }
+//             if ((arg1.getStrValue() == null || arg1.getStrValue().trim() == 
"") && (arg2.getStrValue() != null && arg2.getStrValue().trim() != "")
+//                             || (arg1.getStrValue() != null && 
arg1.getStrValue().trim() == "") && (arg1.getStrValue() == null || 
arg1.getStrValue().trim() == "")) {
+//                     return false;
+//             }
+               return compare(arg1.getTerms(), arg2.getTerms());
+       }
+
+       private static boolean compare(List arg1, List arg2) {
+               if (arg1.size() != arg2.size()) {
+                       return false;
+               }
+               
+               Iterator iterator = arg1.iterator();
+               Assertion assertion1;
+
+               while (iterator.hasNext()) {
+                       assertion1 = (Assertion) iterator.next();
+
+                       Iterator iterator2 = arg2.iterator();
+                       boolean match = false;
+                       Assertion assertion2;
+
+                       while (iterator2.hasNext()) {
+                               assertion2 = (Assertion) iterator2.next();
+                               if (compare(assertion1, assertion2)) {
+                                       match = true;
+                                       break;
+                               }
+                       }
+
+                       if (!match) {
+                               return false;
+                       }
+               }
+               return true;
+       }
+
+       private static boolean compare(Hashtable arg1, Hashtable arg2) {
+               if (arg1.size() != arg2.size()) {
+                       return false;
+               }
+               Iterator iterator1 = arg1.keySet().iterator();
+               while (iterator1.hasNext()) {
+                       QName qname = (QName) iterator1.next();
+                       if (arg2.get(qname) == null
+                                       || 
!arg1.get(qname).equals(arg2.get(qname))) {
+                               return false;
+                       }
+               }
+               return true;
+       }
+}
\ No newline at end of file


Reply via email to