Author: sanka Date: Fri Dec 30 10:58:28 2005 New Revision: 360141 URL: http://svn.apache.org/viewcvs?rev=360141&view=rev Log: Fixed: see: http://www.opensubscriber.com/message/wss4j-dev@ws.apache.org/2944470.html
Modified: webservices/commons/trunk/policy/src/examples/SimplePolicyExample.java webservices/commons/trunk/policy/src/org/apache/ws/policy/CompositeAssertion.java webservices/commons/trunk/policy/src/org/apache/ws/policy/Policy.java webservices/commons/trunk/policy/src/org/apache/ws/policy/util/StAXPolicyWriter.java Modified: webservices/commons/trunk/policy/src/examples/SimplePolicyExample.java URL: http://svn.apache.org/viewcvs/webservices/commons/trunk/policy/src/examples/SimplePolicyExample.java?rev=360141&r1=360140&r2=360141&view=diff ============================================================================== --- webservices/commons/trunk/policy/src/examples/SimplePolicyExample.java (original) +++ webservices/commons/trunk/policy/src/examples/SimplePolicyExample.java Fri Dec 30 10:58:28 2005 @@ -36,8 +36,8 @@ if (args.length > 0) { fis = new FileInputStream(args[0]); } else { - fis = new FileInputStream("policy/src/examples/policy2.xml"); -// fis = new FileInputStream("policy/src/examples/SecurityPolicyMsg.xml"); +// fis = new FileInputStream("policy/src/examples/policy2.xml"); + fis = new FileInputStream("policy/src/examples/SecurityPolicyMsg.xml"); } PolicyReader prdr = PolicyFactory Modified: webservices/commons/trunk/policy/src/org/apache/ws/policy/CompositeAssertion.java URL: http://svn.apache.org/viewcvs/webservices/commons/trunk/policy/src/org/apache/ws/policy/CompositeAssertion.java?rev=360141&r1=360140&r2=360141&view=diff ============================================================================== --- webservices/commons/trunk/policy/src/org/apache/ws/policy/CompositeAssertion.java (original) +++ webservices/commons/trunk/policy/src/org/apache/ws/policy/CompositeAssertion.java Fri Dec 30 10:58:28 2005 @@ -27,7 +27,7 @@ public abstract class CompositeAssertion implements Assertion { /** */ - protected boolean flag = true; + protected boolean flag = false; /** */ private List list = new ArrayList(); @@ -124,7 +124,7 @@ while (children.hasNext()) { Object child = children.next(); if (child instanceof CompositeAssertion) { - ((CompositeAssertion) child).setNormalized(true); + ((CompositeAssertion) child).setNormalized(value); } } flag = value; Modified: webservices/commons/trunk/policy/src/org/apache/ws/policy/Policy.java URL: http://svn.apache.org/viewcvs/webservices/commons/trunk/policy/src/org/apache/ws/policy/Policy.java?rev=360141&r1=360140&r2=360141&view=diff ============================================================================== --- webservices/commons/trunk/policy/src/org/apache/ws/policy/Policy.java (original) +++ webservices/commons/trunk/policy/src/org/apache/ws/policy/Policy.java Fri Dec 30 10:58:28 2005 @@ -24,16 +24,14 @@ import org.apache.commons.logging.Log; import org.apache.ws.policy.util.PolicyRegistry; - /** * Policy is the access point for policy framework. It the object model that * represents a policy at runtime. * */ public class Policy extends AndCompositeAssertion implements Assertion { - private Log log = - LogFactory.getLog(this.getClass().getName()); - + private Log log = LogFactory.getLog(this.getClass().getName()); + private String policyURI = null; private String xmlBase = null; @@ -41,7 +39,6 @@ private String id = null; public Policy() { - setNormalized(false); } public Policy(String id) { @@ -81,8 +78,10 @@ public Assertion normalize(PolicyRegistry reg) { log.debug("Enter: Policy::normalize"); - - if (isNormalized()) { return this;} + + if (isNormalized()) { + return this; + } String xmlBase = getBase(); String id = getId(); @@ -98,37 +97,46 @@ Assertion term; while (terms.hasNext()) { - term = (Assertion) terms.next(); - term = (term instanceof Policy) ? term : term.normalize(reg); - + term = term.normalize(reg); + if (term instanceof Policy) { - Assertion wrapper = new AndCompositeAssertion(); - ((AndCompositeAssertion) wrapper).addTerms(((Policy) term).getTerms()); - term = wrapper.normalize(reg); + XorCompositeAssertion Xor = (XorCompositeAssertion) ((Policy) term) + .getTerms().get(0); + + if (Xor.size() != 1) { + term = Xor; + + } else { + AND + .addTerms(((AndCompositeAssertion) Xor.getTerms() + .get(0)).getTerms()); + continue; + } } - + if (term instanceof XorCompositeAssertion) { + if (((XorCompositeAssertion) term).isEmpty()) { XorCompositeAssertion emptyXor = new XorCompositeAssertion(); emptyXor.setNormalized(true); - + policy.addTerm(emptyXor); policy.setNormalized(true); - + return policy; } - + childXorTermList.add(term); continue; } - + if (term instanceof AndCompositeAssertion) { - + if (((AndCompositeAssertion) term).isEmpty()) { AndCompositeAssertion emptyAnd = new AndCompositeAssertion(); XOR.addTerm(emptyAnd); - + } else { AND.addTerms(((AndCompositeAssertion) term).getTerms()); } @@ -143,7 +151,7 @@ for (int i = 0; i < childXorTermList.size(); i++) { for (int j = i; j < childXorTermList.size(); j++) { - + if (i != j) { XorCompositeAssertion xorTermA = (XorCompositeAssertion) childXorTermList .get(i); @@ -155,9 +163,9 @@ while (iterA.hasNext()) { CompositeAssertion andTermA = (CompositeAssertion) iterA .next(); - + Iterator iterB = xorTermB.getTerms().iterator(); - + while (iterB.hasNext()) { CompositeAssertion andTermB = (CompositeAssertion) iterB .next(); @@ -179,9 +187,10 @@ if (childXorTermList.isEmpty()) { XorCompositeAssertion xor = new XorCompositeAssertion(); - + xor.addTerm(AND); policy.addTerm(xor); + policy.setNormalized(true); return policy; } @@ -189,20 +198,18 @@ Iterator andTerms = XOR.getTerms().iterator(); while (andTerms.hasNext()) { - CompositeAssertion anAndTerm = (CompositeAssertion) andTerms - .next(); + CompositeAssertion anAndTerm = (CompositeAssertion) andTerms.next(); anAndTerm.addTerms(primTerms); } - + policy.addTerm(XOR); policy.setNormalized(true); return policy; - } public Assertion intersect(Assertion assertion, PolicyRegistry reg) { log.debug("Enter: Policy::intersect"); - + Policy result = new Policy(getBase(), getId()); Policy normalizedMe = (Policy) ((isNormalized()) ? this : normalize(reg)); @@ -233,7 +240,7 @@ public Assertion merge(Assertion assertion, PolicyRegistry reg) { log.debug("Enter: Policy::merge"); - + Policy result = new Policy(getBase(), getId()); Policy normalizedMe = (Policy) ((isNormalized()) ? this : normalize(reg)); Modified: webservices/commons/trunk/policy/src/org/apache/ws/policy/util/StAXPolicyWriter.java URL: http://svn.apache.org/viewcvs/webservices/commons/trunk/policy/src/org/apache/ws/policy/util/StAXPolicyWriter.java?rev=360141&r1=360140&r2=360141&view=diff ============================================================================== --- webservices/commons/trunk/policy/src/org/apache/ws/policy/util/StAXPolicyWriter.java (original) +++ webservices/commons/trunk/policy/src/org/apache/ws/policy/util/StAXPolicyWriter.java Fri Dec 30 10:58:28 2005 @@ -200,7 +200,26 @@ private void writePolicyReference(PolicyReference assertion, XMLStreamWriter writer) throws XMLStreamException { - throw new UnsupportedOperationException(); + + String writerPrefix = writer + .getPrefix(PolicyConstants.WS_POLICY_NAMESPACE_URI); + if (writerPrefix != null) { + writer.writeStartElement(PolicyConstants.WS_POLICY_NAMESPACE_URI, + PolicyConstants.WS_POLICY_REFERENCE); + } else { + + writer.writeStartElement(PolicyConstants.WS_POLICY_PREFIX, + PolicyConstants.WS_POLICY_REFERENCE, + PolicyConstants.WS_POLICY_NAMESPACE_URI); + writer.writeNamespace(PolicyConstants.WS_POLICY_PREFIX, + PolicyConstants.WS_POLICY_NAMESPACE_URI); + writer.setPrefix(PolicyConstants.WS_POLICY_PREFIX, + PolicyConstants.WS_POLICY_NAMESPACE_URI); + + } + writer.writeAttribute("URI", assertion.getPolicyURIString()); + + writer.writeEndElement(); } private void writeTerms(List terms, XMLStreamWriter writer)