Author: dkulp
Date: Mon Feb 14 22:03:53 2011
New Revision: 1070682
URL: http://svn.apache.org/viewvc?rev=1070682&view=rev
Log:
For policies that don't implement the new IntersectableAssertion
interface, we'll do a very basic check for compatibility.
Modified:
webservices/commons/trunk/modules/neethi/src/main/java/org/apache/neethi/util/PolicyIntersector.java
Modified:
webservices/commons/trunk/modules/neethi/src/main/java/org/apache/neethi/util/PolicyIntersector.java
URL:
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/neethi/src/main/java/org/apache/neethi/util/PolicyIntersector.java?rev=1070682&r1=1070681&r2=1070682&view=diff
==============================================================================
---
webservices/commons/trunk/modules/neethi/src/main/java/org/apache/neethi/util/PolicyIntersector.java
(original)
+++
webservices/commons/trunk/modules/neethi/src/main/java/org/apache/neethi/util/PolicyIntersector.java
Mon Feb 14 22:03:53 2011
@@ -30,6 +30,7 @@ import org.apache.neethi.ExactlyOne;
import org.apache.neethi.IntersectableAssertion;
import org.apache.neethi.Policy;
import org.apache.neethi.PolicyComponent;
+import org.apache.neethi.PolicyContainingAssertion;
/**
* This class contains methods dealing with policy intersection.
@@ -63,7 +64,23 @@ public class PolicyIntersector {
}
return ((IntersectableAssertion)a1).intersect(a2, strict);
}
- //fixme - how to intersect basic assertions?
+ //the assertion doesn't implement IntersectableAssertion so we
+ //need to try doing a basic intersect ourself
+ if (a1.getName().equals(a2.getName())) {
+ if (a1 instanceof PolicyContainingAssertion
+ && a2 instanceof PolicyContainingAssertion) {
+ PolicyContainingAssertion pc1 = (PolicyContainingAssertion)a1;
+ PolicyContainingAssertion pc2 = (PolicyContainingAssertion)a2;
+ Policy p1 = pc1.getPolicy();
+ Policy p2 = pc2.getPolicy();
+ PolicyIntersector pi = new PolicyIntersector(strict);
+ if (pi.compatiblePolicies(p1, p2)) {
+ return a1;
+ }
+ } else {
+ return a1;
+ }
+ }
return null;
}
private Assertion findCompatibleAssertion(Assertion assertion,