You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by dk...@apache.org on 2008/09/04 22:36:48 UTC

svn commit: r692229 [1/2] - in /cxf/trunk: api/src/main/java/org/apache/cxf/ws/policy/ api/src/main/java/org/apache/cxf/ws/policy/builder/primitive/ api/src/main/java/org/apache/cxf/ws/policy/builder/xml/ api/src/test/java/org/apache/cxf/ws/policy/buil...

Author: dkulp
Date: Thu Sep  4 13:36:47 2008
New Revision: 692229

URL: http://svn.apache.org/viewvc?rev=692229&view=rev
Log:
Update policy engine to parse policies in any namespace.   No need to configure a namespace now.

Removed:
    cxf/trunk/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/spring/PolicyConstantsBeanDefinitionParser.java
    cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/policy/PolicyTestUtils.java
Modified:
    cxf/trunk/api/src/main/java/org/apache/cxf/ws/policy/PolicyConstants.java
    cxf/trunk/api/src/main/java/org/apache/cxf/ws/policy/builder/primitive/NestedPrimitiveAssertion.java
    cxf/trunk/api/src/main/java/org/apache/cxf/ws/policy/builder/primitive/NestedPrimitiveAssertionBuilder.java
    cxf/trunk/api/src/main/java/org/apache/cxf/ws/policy/builder/primitive/PrimitiveAssertion.java
    cxf/trunk/api/src/main/java/org/apache/cxf/ws/policy/builder/primitive/PrimitiveAssertionBuilder.java
    cxf/trunk/api/src/main/java/org/apache/cxf/ws/policy/builder/xml/XMLPrimitiveAssertionBuilder.java
    cxf/trunk/api/src/main/java/org/apache/cxf/ws/policy/builder/xml/XmlPrimitiveAssertion.java
    cxf/trunk/api/src/test/java/org/apache/cxf/ws/policy/builder/primitive/NestedPrimitiveAssertionBuilderTest.java
    cxf/trunk/rt/core/src/main/java/org/apache/cxf/wsdl11/WSDLServiceBuilder.java
    cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/policy/AddressingAssertionBuilder.java
    cxf/trunk/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/PolicyBuilderImpl.java
    cxf/trunk/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/WSPolicyFeature.java
    cxf/trunk/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/attachment/AbstractPolicyProvider.java
    cxf/trunk/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/attachment/external/ExternalAttachmentProvider.java
    cxf/trunk/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/attachment/reference/LocalDocumentReferenceResolver.java
    cxf/trunk/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/attachment/reference/LocalServiceModelReferenceResolver.java
    cxf/trunk/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/attachment/reference/RemoteReferenceResolver.java
    cxf/trunk/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/attachment/wsdl11/Wsdl11AttachmentPolicyProvider.java
    cxf/trunk/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/mtom/MTOMAssertionBuilder.java
    cxf/trunk/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/spring/NamespaceHandler.java
    cxf/trunk/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/spring/PolicyBeanDefinitionParser.java
    cxf/trunk/rt/ws/policy/src/main/resources/META-INF/cxf/cxf-extension-policy.xml
    cxf/trunk/rt/ws/policy/src/main/resources/schemas/policy.xsd
    cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/NormalizeTest.java
    cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/attachment/external/ExternalAttachmentProviderTest.java
    cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/attachment/reference/ReferenceResolverTest.java
    cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/attachment/wsdl11/Wsdl11AttachmentPolicyProviderTest.java
    cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/builder/primitive/NestedPrimitiveAssertionTest.java
    cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/spring/PolicyBeansTest.java
    cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/spring/beans.xml
    cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/AbstractWSS4JInterceptor.java
    cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/PolicyBasedWSS4JOutInterceptor.java
    cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyhandlers/BindingBuilder.java
    cxf/trunk/systests/src/test/java/org/apache/cxf/systest/mtom/MtomPolicyTest.java
    cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/policy/AddressingInlinePolicyTest.java
    cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/policy/AddressingOptionalPolicyTest.java
    cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/policy/HTTPClientPolicyTest.java
    cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/policy/RMPolicyWsdlTest.java
    cxf/trunk/systests/src/test/resources/wsdl_systest/DoubleIt.wsdl

Modified: cxf/trunk/api/src/main/java/org/apache/cxf/ws/policy/PolicyConstants.java
URL: http://svn.apache.org/viewvc/cxf/trunk/api/src/main/java/org/apache/cxf/ws/policy/PolicyConstants.java?rev=692229&r1=692228&r2=692229&view=diff
==============================================================================
--- cxf/trunk/api/src/main/java/org/apache/cxf/ws/policy/PolicyConstants.java (original)
+++ cxf/trunk/api/src/main/java/org/apache/cxf/ws/policy/PolicyConstants.java Thu Sep  4 13:36:47 2008
@@ -19,14 +19,24 @@
 
 package org.apache.cxf.ws.policy;
 
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Set;
+
 import javax.xml.namespace.QName;
 
-import org.apache.cxf.extension.BusExtension;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
+
+import org.apache.cxf.helpers.DOMUtils;
 
 /**
  * Encapsulation of version-specific WS-Policy constants.
  */
-public final class PolicyConstants implements BusExtension {
+public final class PolicyConstants {
     
     public static final String NAMESPACE_WS_POLICY
         = "http://www.w3.org/ns/ws-policy";
@@ -38,6 +48,16 @@
         = "http://schemas.xmlsoap.org/ws/2004/09/policy";
     
     
+    public static final String POLICY_ELEM_NAME = "Policy";
+    public static final String POLICYREFERENCE_ELEM_NAME = "PolicyReference";
+    public static final String POLICYATTACHMENT_ELEM_NAME = "PolicyAttachment";
+    public static final String APPLIESTO_ELEM_NAME = "AppliesTo";
+
+    public static final String WSU_NAMESPACE_URI = 
+        "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd";
+    public static final String WSU_ID_ATTR_NAME = "Id";
+
+    
     public static final String CLIENT_POLICY_OUT_INTERCEPTOR_ID
         = "org.apache.cxf.ws.policy.ClientPolicyOutInterceptor";
     public static final String CLIENT_POLICY_IN_INTERCEPTOR_ID
@@ -66,153 +86,83 @@
     public static final String SERVER_OUTFAULT_ASSERTIONS
         = "org.apache.cxf.ws.policy.server.outfault.assertions";
     
-    private static String namespaceURI; 
-    
-    private static final String POLICY_ELEM_NAME = "Policy";
     
     private static final String ALL_ELEM_NAME = "All";
-    
     private static final String EXACTLYONE_ELEM_NAME = "ExactlyOne";
-    
-    private static final String POLICYREFERENCE_ELEM_NAME = "PolicyReference";
-    
-    private static final String POLICYATTACHMENT_ELEM_NAME = "PolicyAttachment";
-    
-    private static final String APPLIESTO_ELEM_NAME = "AppliesTo";
-    
     private static final String OPTIONAL_ATTR_NAME = "Optional"; 
-    
     private static final String POLICYURIS_ATTR_NAME = "PolicyURIs";
     
-    private static QName policyElemQName;
-    
-    private static QName allElemQName;
-    
-    private static QName exactlyOneElemQName;
-    
-    private static QName policyReferenceElemQName;
-    
-    private static QName policyAttachmentElemQName;
     
-    private static QName appliesToElemQName;
-    
-    private static QName optionalAttrQName;
-    
-    private static QName policyURIsAttrQName;
-    
-    private static final String WSU_NAMESPACE_URI = 
-        "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd";
-    
-    private static final String WSU_ID_ATTR_NAME = "Id";
-    
-    private static final QName WSU_ID_ATTR_QNAME =
-        new QName(WSU_NAMESPACE_URI, WSU_ID_ATTR_NAME);
-    
-    
-    public PolicyConstants() {
-        setNamespace(NAMESPACE_WS_POLICY);
-    }
-    
-    public Class<?> getRegistrationType() {
-        return PolicyConstants.class;
-    }
-
-    public void setNamespace(String uri) {
-        namespaceURI = uri;
-        
-        // update qnames
-        
-        policyElemQName = new QName(namespaceURI, POLICY_ELEM_NAME);
-        allElemQName = new QName(namespaceURI, ALL_ELEM_NAME);
-        exactlyOneElemQName = new QName(namespaceURI, EXACTLYONE_ELEM_NAME);
-        policyReferenceElemQName = new QName(namespaceURI, POLICYREFERENCE_ELEM_NAME);
-        policyAttachmentElemQName = new QName(namespaceURI, POLICYATTACHMENT_ELEM_NAME);
-        appliesToElemQName = new QName(namespaceURI, APPLIESTO_ELEM_NAME);
-        optionalAttrQName = new QName(namespaceURI, OPTIONAL_ATTR_NAME);
-        policyURIsAttrQName = new QName(namespaceURI, POLICYURIS_ATTR_NAME);
-        
-    }
-  
-    public String getNamespace() {
-        return namespaceURI;
-    } 
-    
-    public String getWSUNamespace() {
-        return WSU_NAMESPACE_URI;
-    }
-    
-    public String getPolicyElemName() {
-        return POLICY_ELEM_NAME;
-    }
     
-    public String getAllElemName() {
-        return ALL_ELEM_NAME;
+    private static final Set<String> SUPPORTED_NAMESPACES = new HashSet<String>();
+    static {
+        SUPPORTED_NAMESPACES.add(NAMESPACE_WS_POLICY);
+        SUPPORTED_NAMESPACES.add(NAMESPACE_W3_200607);
+        SUPPORTED_NAMESPACES.add(NAMESPACE_XMLSOAP_200409);
+    }
+    
+    private PolicyConstants() {
+        //utility class
+    }
+    
+    public static List<Element> findAllPolicyElementsOfLocalName(Document doc, String localName) {
+        return findAllPolicyElementsOfLocalName(doc.getDocumentElement(), localName);
+    }
+    public static List<Element> findAllPolicyElementsOfLocalName(Element el, String localName) {
+        List<Element> ret = new LinkedList<Element>();
+        findAllPolicyElementsOfLocalName(el, localName, ret);
+        return ret;
+    }
+    public static void findAllPolicyElementsOfLocalName(Element el, String localName, List<Element> val) {
+        if (localName.equals(el.getLocalName()) && SUPPORTED_NAMESPACES.contains(el.getNamespaceURI())) {
+            val.add(el);
+        }
+        el = DOMUtils.getFirstElement(el);
+        while (el != null) {
+            findAllPolicyElementsOfLocalName(el, localName, val);
+            el = DOMUtils.getNextElement(el);
+        }
+    }
+
+    
+    public static Attr findOptionalAttribute(Element e) {
+        NamedNodeMap atts = e.getAttributes();
+        for (int x = 0; x < atts.getLength(); x++) {
+            Attr att = (Attr)atts.item(x);
+            QName qn = new QName(att.getNamespaceURI(), att.getLocalName());
+            if (isOptionalAttribute(qn)) {
+                return att;
+            }
+        }
+        return null;
+    }
+
+    public static boolean isOptionalAttribute(QName qn) {
+        return OPTIONAL_ATTR_NAME.equals(qn.getLocalPart())
+            && SUPPORTED_NAMESPACES.contains(qn.getNamespaceURI());
+    }
+    public static boolean isPolicyElem(QName qn) {
+        return POLICY_ELEM_NAME.equals(qn.getLocalPart())
+            && SUPPORTED_NAMESPACES.contains(qn.getNamespaceURI());
+    }
+    public static boolean isPolicyRefElem(QName qn) {
+        return POLICYREFERENCE_ELEM_NAME.equals(qn.getLocalPart())
+            && SUPPORTED_NAMESPACES.contains(qn.getNamespaceURI());
+    }
+    public static boolean isAppliesToElem(QName qn) {
+        return APPLIESTO_ELEM_NAME.equals(qn.getLocalPart())
+            && SUPPORTED_NAMESPACES.contains(qn.getNamespaceURI());
+    }
+    public static boolean isPolicyURIsAttr(QName qn) {
+        return POLICYURIS_ATTR_NAME.equals(qn.getLocalPart())
+            && SUPPORTED_NAMESPACES.contains(qn.getNamespaceURI());
+    }
+    public static boolean isExactlyOne(QName qn) {
+        return EXACTLYONE_ELEM_NAME.equals(qn.getLocalPart())
+            && SUPPORTED_NAMESPACES.contains(qn.getNamespaceURI());
+    }
+    public static boolean isAll(QName qn) {
+        return ALL_ELEM_NAME.equals(qn.getLocalPart())
+            && SUPPORTED_NAMESPACES.contains(qn.getNamespaceURI());
     }
-    
-    public String getExactlyOneElemName() {
-        return EXACTLYONE_ELEM_NAME;
-    }
-    
-    public String getPolicyReferenceElemName() {
-        return POLICYREFERENCE_ELEM_NAME;
-    }
-    
-    public String getPolicyAttachmentElemName() {
-        return POLICYATTACHMENT_ELEM_NAME;
-    }
-    
-    public String getAppliesToElemName() {
-        return APPLIESTO_ELEM_NAME;
-    }
-    
-    public String getOptionalAttrName() {
-        return OPTIONAL_ATTR_NAME;
-    }
-    
-    public String getPolicyURIsAttrName() {
-        return POLICYURIS_ATTR_NAME;
-    }
-    
-    public String getIdAttrName() {
-        return WSU_ID_ATTR_NAME;
-    }
-    
-    public QName getPolicyElemQName() {
-        return policyElemQName;
-    }
-    
-    public QName getAllElemQName() {
-        return allElemQName;
-    }
-    
-    public QName getExactlyOneElemQName() {
-        return exactlyOneElemQName;
-    }
-    
-    public QName getPolicyReferenceElemQName() {
-        return policyReferenceElemQName;
-    }
-    
-    public QName getPolicyAttachmentElemQName() {
-        return policyAttachmentElemQName;
-    }
-    
-    public QName getAppliesToElemQName() {
-        return appliesToElemQName;
-    }
-    
-    public QName getOptionalAttrQName() {
-        return optionalAttrQName;
-    }
-    
-    public QName getPolicyURIsAttrQName() {
-        return policyURIsAttrQName;
-    }
-    
-    public QName getIdAttrQName() {
-        return WSU_ID_ATTR_QNAME;
-    } 
-    
-    
-   
 }

Modified: cxf/trunk/api/src/main/java/org/apache/cxf/ws/policy/builder/primitive/NestedPrimitiveAssertion.java
URL: http://svn.apache.org/viewvc/cxf/trunk/api/src/main/java/org/apache/cxf/ws/policy/builder/primitive/NestedPrimitiveAssertion.java?rev=692229&r1=692228&r2=692229&view=diff
==============================================================================
--- cxf/trunk/api/src/main/java/org/apache/cxf/ws/policy/builder/primitive/NestedPrimitiveAssertion.java (original)
+++ cxf/trunk/api/src/main/java/org/apache/cxf/ws/policy/builder/primitive/NestedPrimitiveAssertion.java Thu Sep  4 13:36:47 2008
@@ -66,14 +66,12 @@
         this.nested = p;
     }
 
-    public NestedPrimitiveAssertion(Element elem, PolicyBuilder builder, 
-                                    PolicyConstants constants) {
-        this(elem, builder, constants, true);
+    public NestedPrimitiveAssertion(Element elem, PolicyBuilder builder) {
+        this(elem, builder, true);
     }
     
-    public NestedPrimitiveAssertion(Element elem, PolicyBuilder builder, 
-                                    PolicyConstants constants, boolean assertionRequired) {
-        super(elem, constants);
+    public NestedPrimitiveAssertion(Element elem, PolicyBuilder builder, boolean assertionRequired) {
+        super(elem);
         this.assertionRequired = assertionRequired;
         
         // expect exactly one child element of type Policy
@@ -82,18 +80,18 @@
         for (Node nd = elem.getFirstChild(); nd != null; nd = nd.getNextSibling()) {
             if (Node.ELEMENT_NODE == nd.getNodeType()) {
                 QName qn = new QName(nd.getNamespaceURI(), nd.getLocalName());
-                if (constants.getPolicyElemQName().equals(qn)
+                if (PolicyConstants.isPolicyElem(qn)
                     && null == policyElem) {
                     policyElem = (Element)nd;
                 } else {
                     throw new PolicyException(new Message("UNEXPECTED_CHILD_ELEMENT_EXC", BUNDLE, 
-                                                          constants.getPolicyElemQName()));
+                                                          PolicyConstants.POLICY_ELEM_NAME));
                 }                
             }
         }
         if (null == policyElem) {
             throw new PolicyException(new Message("UNEXPECTED_CHILD_ELEMENT_EXC", BUNDLE, 
-                                                  constants.getPolicyElemQName()));
+                                                  PolicyConstants.POLICY_ELEM_NAME));
         }
         
         nested = builder.getPolicy(policyElem);  

Modified: cxf/trunk/api/src/main/java/org/apache/cxf/ws/policy/builder/primitive/NestedPrimitiveAssertionBuilder.java
URL: http://svn.apache.org/viewvc/cxf/trunk/api/src/main/java/org/apache/cxf/ws/policy/builder/primitive/NestedPrimitiveAssertionBuilder.java?rev=692229&r1=692228&r2=692229&view=diff
==============================================================================
--- cxf/trunk/api/src/main/java/org/apache/cxf/ws/policy/builder/primitive/NestedPrimitiveAssertionBuilder.java (original)
+++ cxf/trunk/api/src/main/java/org/apache/cxf/ws/policy/builder/primitive/NestedPrimitiveAssertionBuilder.java Thu Sep  4 13:36:47 2008
@@ -42,7 +42,7 @@
     
     @Override
     public PolicyAssertion build(Element elem) {
-        return new NestedPrimitiveAssertion(elem, builder, getPolicyConstants()); 
+        return new NestedPrimitiveAssertion(elem, builder); 
     }
 
     @Override

Modified: cxf/trunk/api/src/main/java/org/apache/cxf/ws/policy/builder/primitive/PrimitiveAssertion.java
URL: http://svn.apache.org/viewvc/cxf/trunk/api/src/main/java/org/apache/cxf/ws/policy/builder/primitive/PrimitiveAssertion.java?rev=692229&r1=692228&r2=692229&view=diff
==============================================================================
--- cxf/trunk/api/src/main/java/org/apache/cxf/ws/policy/builder/primitive/PrimitiveAssertion.java (original)
+++ cxf/trunk/api/src/main/java/org/apache/cxf/ws/policy/builder/primitive/PrimitiveAssertion.java Thu Sep  4 13:36:47 2008
@@ -27,6 +27,7 @@
 
 import org.w3c.dom.Attr;
 import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
 
 import org.apache.cxf.ws.policy.AssertionInfo;
 import org.apache.cxf.ws.policy.AssertionInfoMap;
@@ -59,12 +60,15 @@
         optional = o;
     }
     
-    public PrimitiveAssertion(Element element, PolicyConstants constants) {
+    public PrimitiveAssertion(Element element) {
         name = new QName(element.getNamespaceURI(), element.getLocalName());
-        Attr attribute = element.getAttributeNodeNS(constants.getNamespace(), 
-                                                    constants.getOptionalAttrName());
-        if (attribute != null) {
-            optional = Boolean.valueOf(attribute.getValue());
+        NamedNodeMap atts = element.getAttributes();
+        for (int x = 0; x < atts.getLength(); x++) {
+            Attr att = (Attr)atts.item(x);
+            QName qn = new QName(att.getNamespaceURI(), att.getLocalName());
+            if (PolicyConstants.isOptionalAttribute(qn)) {
+                optional = Boolean.valueOf(att.getValue());                
+            }
         }
     }
 

Modified: cxf/trunk/api/src/main/java/org/apache/cxf/ws/policy/builder/primitive/PrimitiveAssertionBuilder.java
URL: http://svn.apache.org/viewvc/cxf/trunk/api/src/main/java/org/apache/cxf/ws/policy/builder/primitive/PrimitiveAssertionBuilder.java?rev=692229&r1=692228&r2=692229&view=diff
==============================================================================
--- cxf/trunk/api/src/main/java/org/apache/cxf/ws/policy/builder/primitive/PrimitiveAssertionBuilder.java (original)
+++ cxf/trunk/api/src/main/java/org/apache/cxf/ws/policy/builder/primitive/PrimitiveAssertionBuilder.java Thu Sep  4 13:36:47 2008
@@ -29,7 +29,6 @@
 import org.apache.cxf.Bus;
 import org.apache.cxf.ws.policy.AssertionBuilder;
 import org.apache.cxf.ws.policy.PolicyAssertion;
-import org.apache.cxf.ws.policy.PolicyConstants;
 
 public class PrimitiveAssertionBuilder implements AssertionBuilder {
 
@@ -48,7 +47,7 @@
     }
     
     public PolicyAssertion build(Element element) {  
-        return new PrimitiveAssertion(element, getPolicyConstants());
+        return new PrimitiveAssertion(element);
     }
 
     public Collection<QName> getKnownElements() {
@@ -69,16 +68,5 @@
         }
         return  null;
     }   
-    
-    protected PolicyConstants getPolicyConstants() {
-        PolicyConstants constants = null;
-        if (null != bus) {
-            constants = bus.getExtension(PolicyConstants.class);
-        }
-        if (null == constants) {
-            constants = new PolicyConstants();
-        }
-        return constants;
-        
-    }
+
 }

Modified: cxf/trunk/api/src/main/java/org/apache/cxf/ws/policy/builder/xml/XMLPrimitiveAssertionBuilder.java
URL: http://svn.apache.org/viewvc/cxf/trunk/api/src/main/java/org/apache/cxf/ws/policy/builder/xml/XMLPrimitiveAssertionBuilder.java?rev=692229&r1=692228&r2=692229&view=diff
==============================================================================
--- cxf/trunk/api/src/main/java/org/apache/cxf/ws/policy/builder/xml/XMLPrimitiveAssertionBuilder.java (original)
+++ cxf/trunk/api/src/main/java/org/apache/cxf/ws/policy/builder/xml/XMLPrimitiveAssertionBuilder.java Thu Sep  4 13:36:47 2008
@@ -39,6 +39,6 @@
     
     
     public PolicyAssertion build(Element element) {
-        return new XmlPrimitiveAssertion(element, getPolicyConstants());
+        return new XmlPrimitiveAssertion(element);
     }
 }

Modified: cxf/trunk/api/src/main/java/org/apache/cxf/ws/policy/builder/xml/XmlPrimitiveAssertion.java
URL: http://svn.apache.org/viewvc/cxf/trunk/api/src/main/java/org/apache/cxf/ws/policy/builder/xml/XmlPrimitiveAssertion.java?rev=692229&r1=692228&r2=692229&view=diff
==============================================================================
--- cxf/trunk/api/src/main/java/org/apache/cxf/ws/policy/builder/xml/XmlPrimitiveAssertion.java (original)
+++ cxf/trunk/api/src/main/java/org/apache/cxf/ws/policy/builder/xml/XmlPrimitiveAssertion.java Thu Sep  4 13:36:47 2008
@@ -19,6 +19,7 @@
 
 package org.apache.cxf.ws.policy.builder.xml;
 
+import org.w3c.dom.Attr;
 import org.w3c.dom.Element;
 
 import org.apache.cxf.ws.policy.PolicyAssertion;
@@ -34,17 +35,15 @@
 public class XmlPrimitiveAssertion extends PrimitiveAssertion {
 
     private Element element;
-    private PolicyConstants constants;
 
     /**
      * Constructs a XmlPrimitiveAssertion from an xml element.
      * 
      * @param e the xml element
      */
-    public XmlPrimitiveAssertion(Element e, PolicyConstants c) {
-        super(e, c);
+    public XmlPrimitiveAssertion(Element e) {
+        super(e);
         element = e;
-        constants = c;
     }
 
     /**
@@ -68,9 +67,11 @@
     protected PolicyAssertion cloneMandatory() {
         Element e = (Element)element.cloneNode(true);
         if (isOptional()) {
-            e.removeAttributeNode(e.getAttributeNodeNS(constants.getNamespace(), 
-                                                       constants.getOptionalAttrName()));
+            Attr att = PolicyConstants.findOptionalAttribute(e);
+            if (att != null) {
+                e.removeAttributeNode(att);
+            }
         }
-        return new XmlPrimitiveAssertion(e, constants);        
+        return new XmlPrimitiveAssertion(e);        
     }
 }

Modified: cxf/trunk/api/src/test/java/org/apache/cxf/ws/policy/builder/primitive/NestedPrimitiveAssertionBuilderTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/api/src/test/java/org/apache/cxf/ws/policy/builder/primitive/NestedPrimitiveAssertionBuilderTest.java?rev=692229&r1=692228&r2=692229&view=diff
==============================================================================
--- cxf/trunk/api/src/test/java/org/apache/cxf/ws/policy/builder/primitive/NestedPrimitiveAssertionBuilderTest.java (original)
+++ cxf/trunk/api/src/test/java/org/apache/cxf/ws/policy/builder/primitive/NestedPrimitiveAssertionBuilderTest.java Thu Sep  4 13:36:47 2008
@@ -32,7 +32,6 @@
 import org.apache.cxf.ws.policy.AssertionBuilderRegistry;
 import org.apache.cxf.ws.policy.PolicyAssertion;
 import org.apache.cxf.ws.policy.PolicyBuilder;
-import org.apache.cxf.ws.policy.PolicyConstants;
 import org.apache.cxf.ws.policy.PolicyException;
 import org.apache.neethi.Policy;
 import org.easymock.classextension.EasyMock;
@@ -112,10 +111,7 @@
         Policy nested = control.createMock(Policy.class);
         EasyMock.expect(builder.getPolicy(EasyMock.isA(Element.class))).andReturn(nested);
         
-        PolicyConstants pc = new PolicyConstants();
-        pc.setNamespace(PolicyConstants.NAMESPACE_W3_200607);
         Bus bus = control.createMock(Bus.class);
-        EasyMock.expect(bus.getExtension(PolicyConstants.class)).andReturn(pc);
         control.replay();
         
         npab.setBus(bus);

Modified: cxf/trunk/rt/core/src/main/java/org/apache/cxf/wsdl11/WSDLServiceBuilder.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/core/src/main/java/org/apache/cxf/wsdl11/WSDLServiceBuilder.java?rev=692229&r1=692228&r2=692229&view=diff
==============================================================================
--- cxf/trunk/rt/core/src/main/java/org/apache/cxf/wsdl11/WSDLServiceBuilder.java (original)
+++ cxf/trunk/rt/core/src/main/java/org/apache/cxf/wsdl11/WSDLServiceBuilder.java Thu Sep  4 13:36:47 2008
@@ -22,11 +22,13 @@
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.Iterator;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
+import java.util.Set;
 import java.util.logging.Logger;
 
 import javax.wsdl.Binding;
@@ -130,7 +132,7 @@
         description.setName(d.getQName());
         description.setBaseURI(d.getDocumentBaseURI());
         copyExtensors(description, d.getExtensibilityElements());
-        copyExtensionAttributes(description, d);
+        copyExtensionAttributes(description, d);        
 
         List<ServiceInfo> serviceList = new ArrayList<ServiceInfo>();
         for (java.util.Iterator<QName> ite = CastUtils.cast(d.getServices().keySet().iterator()); ite
@@ -227,6 +229,21 @@
             description.setBaseURI(def.getDocumentBaseURI());
             copyExtensors(description, def.getExtensibilityElements());
             copyExtensionAttributes(description, def);
+            
+            Set<Definition> done = new HashSet<Definition>();
+            done.add(def);
+            Collection<List<Import>> values = CastUtils.cast(def.getImports().values());
+            for (List<Import> imports : values) {
+                for (Import imp : imports) {
+                    if (!done.contains(imp.getDefinition())) {
+                        done.add(imp.getDefinition());
+                        copyExtensors(description, imp.getExtensibilityElements());
+                        copyExtensionAttributes(description, imp);
+                        copyExtensors(description, imp.getDefinition().getExtensibilityElements());
+                        copyExtensionAttributes(description, imp.getDefinition());
+                    }
+                }
+            }
         }
         for (Port port : cast(serv.getPorts().values(), Port.class)) {
             Binding binding = port.getBinding();

Modified: cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/policy/AddressingAssertionBuilder.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/policy/AddressingAssertionBuilder.java?rev=692229&r1=692228&r2=692229&view=diff
==============================================================================
--- cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/policy/AddressingAssertionBuilder.java (original)
+++ cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/policy/AddressingAssertionBuilder.java Thu Sep  4 13:36:47 2008
@@ -63,15 +63,14 @@
         QName qn = new QName(elem.getNamespaceURI(), localName);
         
         boolean optional = false;
-        PolicyConstants constants = bus.getExtension(PolicyConstants.class);
-        Attr attribute = elem.getAttributeNodeNS(constants.getNamespace(), 
-                                                 constants.getOptionalAttrName());
+        
+        Attr attribute = PolicyConstants.findOptionalAttribute(elem);
         if (attribute != null) {
             optional = Boolean.valueOf(attribute.getValue());
         }
         if (MetadataConstants.ADDRESSING_ASSERTION_QNAME.equals(qn)) {
             PolicyBuilder builder = bus.getExtension(PolicyBuilder.class);
-            return new NestedPrimitiveAssertion(elem, builder, constants);
+            return new NestedPrimitiveAssertion(elem, builder);
         } else if (MetadataConstants.ANON_RESPONSES_ASSERTION_QNAME.equals(qn)) {
             return new PrimitiveAssertion(MetadataConstants.ANON_RESPONSES_ASSERTION_QNAME, 
                                           optional);

Modified: cxf/trunk/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/PolicyBuilderImpl.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/PolicyBuilderImpl.java?rev=692229&r1=692228&r2=692229&view=diff
==============================================================================
--- cxf/trunk/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/PolicyBuilderImpl.java (original)
+++ cxf/trunk/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/PolicyBuilderImpl.java Thu Sep  4 13:36:47 2008
@@ -141,10 +141,9 @@
     }
 
     private PolicyOperator processOperationElement(Element operationElement, PolicyOperator operator) {
-        
+
         if (Constants.TYPE_POLICY == operator.getType()) {
             Policy policyOperator = (Policy)operator;
-
             QName key;
 
             NamedNodeMap nnm = operationElement.getAttributes();
@@ -166,9 +165,6 @@
             }            
         }
 
-        String policyNsURI = 
-            bus == null ? PolicyConstants.NAMESPACE_WS_POLICY
-                        : bus.getExtension(PolicyConstants.class).getNamespace();
         
         Element childElement;
         for (Node n = operationElement.getFirstChild(); n != null; n = n.getNextSibling()) {
@@ -179,21 +175,15 @@
             String namespaceURI = childElement.getNamespaceURI();
             String localName = childElement.getLocalName();
 
-            if (policyNsURI.equals(namespaceURI)) {
-
-                if (Constants.ELEM_POLICY.equals(localName)) {
-                    operator.addPolicyComponent(getPolicyOperator(childElement));
-
-                } else if (Constants.ELEM_EXACTLYONE.equals(localName)) {
-                    operator.addPolicyComponent(getExactlyOneOperator(childElement));
-
-                } else if (Constants.ELEM_ALL.equals(localName)) {
-                    operator.addPolicyComponent(getAllOperator(childElement));
-
-                } else if (Constants.ELEM_POLICY_REF.equals(localName)) {
-                    operator.addPolicyComponent(getPolicyReference(childElement));
-                }
-
+            QName qn = new QName(namespaceURI, localName);
+            if (PolicyConstants.isPolicyElem(qn)) {
+                operator.addPolicyComponent(getPolicyOperator(childElement));
+            } else if (PolicyConstants.isAll(qn)) {
+                operator.addPolicyComponent(getAllOperator(childElement));
+            } else if (PolicyConstants.isExactlyOne(qn)) {
+                operator.addPolicyComponent(getExactlyOneOperator(childElement));
+            } else if (PolicyConstants.isPolicyRefElem(qn)) {
+                operator.addPolicyComponent(getPolicyReference(childElement));                
             } else if (null != assertionBuilderRegistry) {
                 PolicyAssertion a = assertionBuilderRegistry.build(childElement);
                 if (null != a) {

Modified: cxf/trunk/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/WSPolicyFeature.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/WSPolicyFeature.java?rev=692229&r1=692228&r2=692229&view=diff
==============================================================================
--- cxf/trunk/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/WSPolicyFeature.java (original)
+++ cxf/trunk/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/WSPolicyFeature.java Thu Sep  4 13:36:47 2008
@@ -60,7 +60,6 @@
     private Collection<Element> policyElements;
     private Collection<Element> policyReferenceElements;
     private boolean ignoreUnknownAssertions;
-    private String namespace;
     private AlternativeSelector alternativeSelector; 
     private ApplicationContext context;
   
@@ -90,10 +89,6 @@
         synchronized (pe) {
             pe.setEnabled(true);
             pe.setIgnoreUnknownAssertions(ignoreUnknownAssertions);
-            if (null != namespace) {
-                PolicyConstants pc = bus.getExtension(PolicyConstants.class);
-                pc.setNamespace(namespace);
-            }
             if (null != alternativeSelector) {
                 pe.setAlternativeSelector(alternativeSelector);
             }
@@ -198,9 +193,6 @@
         ignoreUnknownAssertions = ignore;
     } 
     
-    public void setNamespace(String ns) {
-        namespace = ns;
-    }
     
     public void setAlternativeSelector(AlternativeSelector as) {
         alternativeSelector = as;
@@ -248,8 +240,7 @@
     
     protected Policy resolveExternal(PolicyReference ref,  String baseURI, Bus bus) {
         PolicyBuilder builder = bus.getExtension(PolicyBuilder.class);
-        ReferenceResolver resolver = new RemoteReferenceResolver(baseURI, builder,
-            bus.getExtension(PolicyConstants.class));
+        ReferenceResolver resolver = new RemoteReferenceResolver(baseURI, builder);
         PolicyRegistry registry = bus.getExtension(PolicyEngine.class).getRegistry();
         Policy resolved = registry.lookup(ref.getURI());
         if (null != resolved) {

Modified: cxf/trunk/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/attachment/AbstractPolicyProvider.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/attachment/AbstractPolicyProvider.java?rev=692229&r1=692228&r2=692229&view=diff
==============================================================================
--- cxf/trunk/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/attachment/AbstractPolicyProvider.java (original)
+++ cxf/trunk/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/attachment/AbstractPolicyProvider.java Thu Sep  4 13:36:47 2008
@@ -27,7 +27,6 @@
 import org.apache.cxf.common.i18n.BundleUtils;
 import org.apache.cxf.common.i18n.Message;
 import org.apache.cxf.ws.policy.PolicyBuilder;
-import org.apache.cxf.ws.policy.PolicyConstants;
 import org.apache.cxf.ws.policy.PolicyEngine;
 import org.apache.cxf.ws.policy.PolicyException;
 import org.apache.cxf.ws.policy.PolicyProvider;
@@ -78,8 +77,7 @@
     }
     
     protected Policy resolveExternal(PolicyReference ref,  String baseURI) {
-        ReferenceResolver resolver = new RemoteReferenceResolver(baseURI, builder,
-            bus.getExtension(PolicyConstants.class));
+        ReferenceResolver resolver = new RemoteReferenceResolver(baseURI, builder);
         Policy resolved = registry.lookup(ref.getURI());
         if (null != resolved) {
             return resolved;

Modified: cxf/trunk/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/attachment/external/ExternalAttachmentProvider.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/attachment/external/ExternalAttachmentProvider.java?rev=692229&r1=692228&r2=692229&view=diff
==============================================================================
--- cxf/trunk/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/attachment/external/ExternalAttachmentProvider.java (original)
+++ cxf/trunk/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/attachment/external/ExternalAttachmentProvider.java Thu Sep  4 13:36:47 2008
@@ -29,7 +29,6 @@
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
 
 import org.apache.cxf.Bus;
 import org.apache.cxf.common.i18n.BundleUtils;
@@ -157,40 +156,31 @@
             throw new PolicyException(ex);
         }
         
-        PolicyConstants constants = null;
-        if (null != bus) {
-            constants = bus.getExtension(PolicyConstants.class);
-        }
-        if (null == constants) {
-            constants = new PolicyConstants();
-        }
-        NodeList nl = doc.getElementsByTagNameNS(constants.getNamespace(), 
-                                                 constants.getPolicyAttachmentElemName());
-        for (int i = 0; i < nl.getLength(); i++) {
-            
+        for (Element ae 
+                : PolicyConstants
+                    .findAllPolicyElementsOfLocalName(doc, 
+                                                      PolicyConstants.POLICYATTACHMENT_ELEM_NAME)) {    
             PolicyAttachment attachment = new PolicyAttachment();
             
-            Element ae = (Element)nl.item(i);
-            
             for (Node nd = ae.getFirstChild(); nd != null; nd = nd.getNextSibling()) {
                 if (Node.ELEMENT_NODE != nd.getNodeType()) {
                     continue;
                 }
                 QName qn = new QName(nd.getNamespaceURI(), nd.getLocalName());
-                if (constants.getAppliesToElemQName().equals(qn)) {
+                if (PolicyConstants.isAppliesToElem(qn)) {
                     Collection<DomainExpression> des = readDomainExpressions((Element)nd);
                     if (des.isEmpty()) {
                         // forget about this attachment
                         continue;
                     }
                     attachment.setDomainExpressions(des);                    
-                } else if (constants.getPolicyElemQName().equals(qn)) {
+                } else if (PolicyConstants.isPolicyElem(qn)) {
                     Policy p = builder.getPolicy((Element)nd);
                     if (null != attachment.getPolicy()) {
                         p = p.merge(attachment.getPolicy());
                     }
                     attachment.setPolicy(p);
-                } else if (constants.getPolicyReferenceElemQName().equals(qn)) {
+                } else if (PolicyConstants.isPolicyRefElem(qn)) {
                     PolicyReference ref = builder.getPolicyReference((Element)nd);
                     if (null != ref) {   
                         Policy p = resolveReference(ref, doc);
@@ -228,8 +218,7 @@
         if (null != resolved) {
             return resolved;
         }
-        ReferenceResolver resolver = new LocalDocumentReferenceResolver(doc, builder, 
-            bus.getExtension(PolicyConstants.class));
+        ReferenceResolver resolver = new LocalDocumentReferenceResolver(doc, builder);
         resolved = resolver.resolveReference(relativeURI);
         if (null != resolved) {
             ref.setURI(absoluteURI);

Modified: cxf/trunk/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/attachment/reference/LocalDocumentReferenceResolver.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/attachment/reference/LocalDocumentReferenceResolver.java?rev=692229&r1=692228&r2=692229&view=diff
==============================================================================
--- cxf/trunk/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/attachment/reference/LocalDocumentReferenceResolver.java (original)
+++ cxf/trunk/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/attachment/reference/LocalDocumentReferenceResolver.java Thu Sep  4 13:36:47 2008
@@ -21,8 +21,8 @@
 
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
-import org.w3c.dom.NodeList;
 
+import org.apache.cxf.helpers.DOMUtils;
 import org.apache.cxf.ws.policy.PolicyBuilder;
 import org.apache.cxf.ws.policy.PolicyConstants;
 import org.apache.neethi.Policy;
@@ -34,24 +34,29 @@
 
     private Document document;
     private PolicyBuilder builder;
-    private PolicyConstants constants;
     
-    public LocalDocumentReferenceResolver(Document di, PolicyBuilder b, PolicyConstants c) {
+    public LocalDocumentReferenceResolver(Document di, PolicyBuilder b) {
         document = di;
         builder = b;
-        constants = c;
     }
-    
     public Policy resolveReference(String uri) {
-        NodeList nl = document.getElementsByTagNameNS(constants.getNamespace(),
-                                                      constants.getPolicyElemName());
-        
-        for (int i = 0; i < nl.getLength(); i++) {
-            Element e = (Element)nl.item(i);
-            if (uri.equals(e.getAttributeNS(constants.getWSUNamespace(),
-                                            constants.getIdAttrName()))) {
-                return builder.getPolicy(e);
+        return resolveReference(uri, document.getDocumentElement());
+    }    
+    public Policy resolveReference(String uri, Element el) {
+        if (el == null) {
+            return null;
+        }
+        if (uri.equals(el.getAttributeNS(PolicyConstants.WSU_NAMESPACE_URI,
+                                         PolicyConstants.WSU_ID_ATTR_NAME))) {
+            return builder.getPolicy(el);
+        }
+        Element el2 = DOMUtils.getFirstElement(el);
+        while (el2 != null) {
+            Policy p = resolveReference(uri, el2);
+            if (p != null) {
+                return p;
             }
+            el2 = DOMUtils.getNextElement(el2);
         }
         return null;
     }

Modified: cxf/trunk/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/attachment/reference/LocalServiceModelReferenceResolver.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/attachment/reference/LocalServiceModelReferenceResolver.java?rev=692229&r1=692228&r2=692229&view=diff
==============================================================================
--- cxf/trunk/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/attachment/reference/LocalServiceModelReferenceResolver.java (original)
+++ cxf/trunk/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/attachment/reference/LocalServiceModelReferenceResolver.java Thu Sep  4 13:36:47 2008
@@ -35,23 +35,22 @@
 
     private DescriptionInfo descriptionInfo;
     private PolicyBuilder builder;
-    private PolicyConstants constants;
     
-    public LocalServiceModelReferenceResolver(DescriptionInfo d, PolicyBuilder b, PolicyConstants c) {
+    public LocalServiceModelReferenceResolver(DescriptionInfo d, PolicyBuilder b) {
         descriptionInfo = d;
         builder = b;
-        constants = c;
     }
     
     public Policy resolveReference(String uri) {
         List<UnknownExtensibilityElement> extensions = 
             descriptionInfo.getExtensors(UnknownExtensibilityElement.class);
-        for (UnknownExtensibilityElement e : extensions) {
-            if (constants.getNamespace().equals(e.getElementType().getNamespaceURI())
-                && constants.getPolicyElemName().equals(e.getElementType().getLocalPart())
-                && uri.equals(e.getElement().getAttributeNS(constants.getWSUNamespace(),
-                                                            constants.getIdAttrName()))) {
-                return builder.getPolicy(e.getElement());
+        if (extensions != null) {
+            for (UnknownExtensibilityElement e : extensions) {
+                if (PolicyConstants.isPolicyElem(e.getElementType())
+                    && uri.equals(e.getElement().getAttributeNS(PolicyConstants.WSU_NAMESPACE_URI,
+                                                                PolicyConstants.WSU_ID_ATTR_NAME))) {
+                    return builder.getPolicy(e.getElement());
+                }
             }
         }
         return null;

Modified: cxf/trunk/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/attachment/reference/RemoteReferenceResolver.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/attachment/reference/RemoteReferenceResolver.java?rev=692229&r1=692228&r2=692229&view=diff
==============================================================================
--- cxf/trunk/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/attachment/reference/RemoteReferenceResolver.java (original)
+++ cxf/trunk/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/attachment/reference/RemoteReferenceResolver.java Thu Sep  4 13:36:47 2008
@@ -21,7 +21,6 @@
 
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
-import org.w3c.dom.NodeList;
 
 import org.xml.sax.InputSource;
 
@@ -39,12 +38,10 @@
     
     private String baseURI;
     private PolicyBuilder builder;
-    private PolicyConstants constants;
     
-    public RemoteReferenceResolver(String uri, PolicyBuilder b, PolicyConstants c) {
+    public RemoteReferenceResolver(String uri, PolicyBuilder b) {
         baseURI = uri;
         builder = b;
-        constants = c;
     }
 
     public Policy resolveReference(String uri) {
@@ -61,14 +58,13 @@
         } catch (Exception ex) {
             throw new PolicyException(ex);
         }
-
-        NodeList nl = doc.getElementsByTagNameNS(constants.getNamespace(), 
-                                                 constants.getPolicyElemName());
         String id = uri.substring(pos + 1);
-        for (int i = 0; i < nl.getLength(); i++) {
-            Element elem = (Element)nl.item(i);
-            if (id.equals(elem.getAttributeNS(constants.getWSUNamespace(), 
-                                              constants.getIdAttrName()))) {
+        for (Element elem : PolicyConstants
+                .findAllPolicyElementsOfLocalName(doc,
+                                                  PolicyConstants.POLICY_ELEM_NAME)) {
+            
+            if (id.equals(elem.getAttributeNS(PolicyConstants.WSU_NAMESPACE_URI,
+                                              PolicyConstants.WSU_ID_ATTR_NAME))) {
                 return builder.getPolicy(elem);
             }
         }

Modified: cxf/trunk/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/attachment/wsdl11/Wsdl11AttachmentPolicyProvider.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/attachment/wsdl11/Wsdl11AttachmentPolicyProvider.java?rev=692229&r1=692228&r2=692229&view=diff
==============================================================================
--- cxf/trunk/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/attachment/wsdl11/Wsdl11AttachmentPolicyProvider.java (original)
+++ cxf/trunk/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/attachment/wsdl11/Wsdl11AttachmentPolicyProvider.java Thu Sep  4 13:36:47 2008
@@ -70,6 +70,15 @@
         return getElementPolicy(si);
     }
     
+    private Policy mergePolicies(Policy p1, Policy p2) {
+        if (p1 == null) {
+            return p2;
+        } else if (p2 == null) {
+            return p1;
+        }
+        return p1.merge(p2);
+    }
+    
     /**
      * The effective policy for a WSDL endpoint policy subject includes the element policy of the 
      * wsdl11:port element that defines the endpoint merged with the element policy of the
@@ -81,8 +90,8 @@
      */
     public Policy getEffectivePolicy(EndpointInfo ei) {
         Policy p = getElementPolicy(ei);
-        p = p.merge(getElementPolicy(ei.getBinding()));
-        p = p.merge(getElementPolicy(ei.getInterface(), true));
+        p = mergePolicies(p, getElementPolicy(ei.getBinding()));
+        p = mergePolicies(p, getElementPolicy(ei.getInterface(), true));
         
         return p;
     }
@@ -99,7 +108,7 @@
     public Policy getEffectivePolicy(BindingOperationInfo bi) {
         DescriptionInfo di = bi.getBinding().getDescription();
         Policy p = getElementPolicy(bi, false, di);
-        p = p.merge(getElementPolicy(bi.getOperationInfo(), false, di));
+        p = mergePolicies(p, getElementPolicy(bi.getOperationInfo(), false, di));
         return p;
     }
     
@@ -121,9 +130,9 @@
         DescriptionInfo di = si.getDescription();
         Policy p = getElementPolicy(bmi, false, di);
         MessageInfo mi = bmi.getMessageInfo();
-        p = p.merge(getElementPolicy(mi, true, di));
+        p = mergePolicies(p, getElementPolicy(mi, true, di));
         Extensible ex = getMessageTypeInfo(mi.getName(), di);
-        p = p.merge(getElementPolicy(ex, false, di));
+        p = mergePolicies(p, getElementPolicy(ex, false, di));
 
         return p;
     }
@@ -136,9 +145,9 @@
 
         Policy p = getElementPolicy(bfi, false, di);
         FaultInfo fi = bfi.getFaultInfo();
-        p = p.merge(getElementPolicy(fi, true, di));
+        p = mergePolicies(p, getElementPolicy(fi, true, di));
         Extensible ex = getMessageTypeInfo(fi.getName(), di);
-        p = p.merge(getElementPolicy(ex, false, di));
+        p = mergePolicies(p, getElementPolicy(ex, false, di));
 
         return p;
     }
@@ -153,51 +162,57 @@
   
     Policy getElementPolicy(Extensible ex, boolean includeAttributes, DescriptionInfo di) {
         
-        Policy elementPolicy = new Policy();
         
         if (null == ex || null == di) {
-            return elementPolicy;
+            return null;
         }
-        
+        Policy elementPolicy = null;
         List<UnknownExtensibilityElement> extensions = 
             ex.getExtensors(UnknownExtensibilityElement.class);
-        PolicyConstants constants = bus.getExtension(PolicyConstants.class);
         if (null != extensions) {
             for (UnknownExtensibilityElement e : extensions) {
                 Policy p = null;
-                if (constants.getPolicyElemQName().equals(e.getElementType())) {
+                if (PolicyConstants.isPolicyElem(e.getElementType())) {
                     p = builder.getPolicy(e.getElement());                    
 
-                } else if (constants.getPolicyReferenceElemQName().equals(e.getElementType())) {
+                } else if (PolicyConstants.isPolicyRefElem(e.getElementType())) {
                     PolicyReference ref = builder.getPolicyReference(e.getElement());
                     if (null != ref) {
                         p = resolveReference(ref, di);
                     }
                 }
                 if (null != p) {
+                    if (elementPolicy == null) {
+                        elementPolicy = new Policy();
+                    }
                     elementPolicy = elementPolicy.merge(p);
                 }
             }
         }
         
-        if (includeAttributes) {
-            Object attr = ex.getExtensionAttribute(constants.getPolicyURIsAttrQName());
-            // can be of type a String, a QName, a list of Srings or a list of QNames
-            String uris = null;
-            if (attr instanceof QName) {
-                uris = ((QName)attr).getLocalPart();
-            } else if (attr instanceof String) {
-                uris = (String)attr;
-            }
-            if (null != uris) {
-                StringTokenizer st = new StringTokenizer(uris);
-                while (st.hasMoreTokens()) {
-                    String uri = st.nextToken();
-                    PolicyReference ref = new PolicyReference();
-                    ref.setURI(uri);
-                    Policy p = resolveReference(ref, di);
-                    if (null != p) {
-                        elementPolicy = elementPolicy.merge(p);
+        if (includeAttributes && ex.getExtensionAttributes() != null) {
+            for (Map.Entry<QName, Object> ent : ex.getExtensionAttributes().entrySet()) {
+                if (PolicyConstants.isPolicyURIsAttr(ent.getKey())) {
+                    Object attr = ent.getValue();
+                    // can be of type a String, a QName, a list of Srings or a list of QNames
+                    String uris = null;
+                    if (attr instanceof QName) {
+                        uris = ((QName)attr).getLocalPart();
+                    } else if (attr instanceof String) {
+                        uris = (String)attr;
+                    }
+                    if (null != uris) {
+                        StringTokenizer st = new StringTokenizer(uris);
+                        while (st.hasMoreTokens()) {
+                            String uri = st.nextToken();
+                            PolicyReference ref = new PolicyReference();
+                            ref.setURI(uri);
+                            Policy p = resolveReference(ref, di);
+                            if (null != p) {
+                                elementPolicy = elementPolicy == null 
+                                    ? new Policy().merge(p) : elementPolicy.merge(p);
+                            }
+                        }
                     }
                 }
             }
@@ -219,13 +234,12 @@
     
     Policy resolveLocal(PolicyReference ref, DescriptionInfo di) {
         String uri = ref.getURI().substring(1);
-        String absoluteURI = di.getBaseURI() + uri;
+        String absoluteURI = di.getBaseURI() + ref.getURI();
         Policy resolved = registry.lookup(absoluteURI);
         if (null != resolved) {
             return resolved;
         }
-        ReferenceResolver resolver = new LocalServiceModelReferenceResolver(di, builder,
-            bus.getExtension(PolicyConstants.class));
+        ReferenceResolver resolver = new LocalServiceModelReferenceResolver(di, builder);
         resolved = resolver.resolveReference(uri);
         if (null != resolved) {
             ref.setURI(absoluteURI);

Modified: cxf/trunk/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/mtom/MTOMAssertionBuilder.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/mtom/MTOMAssertionBuilder.java?rev=692229&r1=692228&r2=692229&view=diff
==============================================================================
--- cxf/trunk/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/mtom/MTOMAssertionBuilder.java (original)
+++ cxf/trunk/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/mtom/MTOMAssertionBuilder.java Thu Sep  4 13:36:47 2008
@@ -28,7 +28,6 @@
 import org.w3c.dom.Attr;
 import org.w3c.dom.Element;
 
-import org.apache.cxf.Bus;
 import org.apache.cxf.ws.policy.AssertionBuilder;
 import org.apache.cxf.ws.policy.PolicyAssertion;
 import org.apache.cxf.ws.policy.PolicyConstants;
@@ -37,29 +36,16 @@
 
 public class MTOMAssertionBuilder implements AssertionBuilder {
     private static final Collection<QName> KNOWN = new ArrayList<QName>();
-    private Bus bus;
     static {
         KNOWN.add(MetadataConstants.MTOM_ASSERTION_QNAME);
     }
     
-    public void setBus(Bus b) {
-        bus = b;
-    }
-
     public PolicyAssertion build(Element elem) {
         String localName = elem.getLocalName();
         QName qn = new QName(elem.getNamespaceURI(), localName);
 
         boolean optional = false;
-        PolicyConstants constants = null;
-        if (null != bus) {
-            constants = bus.getExtension(PolicyConstants.class);
-        }
-        if (null == constants) {
-            constants = new PolicyConstants();
-        }
-        Attr attribute = elem.getAttributeNodeNS(constants.getNamespace(),
-                                                 constants.getOptionalAttrName());
+        Attr attribute = PolicyConstants.findOptionalAttribute(elem);
         if (attribute != null) {
             optional = Boolean.valueOf(attribute.getValue());
         }

Modified: cxf/trunk/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/spring/NamespaceHandler.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/spring/NamespaceHandler.java?rev=692229&r1=692228&r2=692229&view=diff
==============================================================================
--- cxf/trunk/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/spring/NamespaceHandler.java (original)
+++ cxf/trunk/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/spring/NamespaceHandler.java Thu Sep  4 13:36:47 2008
@@ -24,7 +24,6 @@
     public void init() {
         registerBeanDefinitionParser("policies", new PolicyFeatureBeanDefinitionParser());
         registerBeanDefinitionParser("engine", new PolicyEngineBeanDefinitionParser());
-        registerBeanDefinitionParser("constants", new PolicyConstantsBeanDefinitionParser());
         registerBeanDefinitionParser("externalAttachment", 
                                      new ExternalAttachmentProviderBeanDefinitionParser()); 
     }

Modified: cxf/trunk/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/spring/PolicyBeanDefinitionParser.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/spring/PolicyBeanDefinitionParser.java?rev=692229&r1=692228&r2=692229&view=diff
==============================================================================
--- cxf/trunk/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/spring/PolicyBeanDefinitionParser.java (original)
+++ cxf/trunk/rt/ws/policy/src/main/java/org/apache/cxf/ws/policy/spring/PolicyBeanDefinitionParser.java Thu Sep  4 13:36:47 2008
@@ -40,8 +40,8 @@
     @Override
     protected String resolveId(Element element, AbstractBeanDefinition bean, 
                                ParserContext ctx) throws BeanDefinitionStoreException {
-        PolicyConstants constants = new PolicyConstants();        
-        return element.getAttributeNS(constants.getWSUNamespace(), constants.getIdAttrName());
+        return element.getAttributeNS(PolicyConstants.WSU_NAMESPACE_URI,
+                                      PolicyConstants.WSU_ID_ATTR_NAME);
     }
 
     @Override

Modified: cxf/trunk/rt/ws/policy/src/main/resources/META-INF/cxf/cxf-extension-policy.xml
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/policy/src/main/resources/META-INF/cxf/cxf-extension-policy.xml?rev=692229&r1=692228&r2=692229&view=diff
==============================================================================
--- cxf/trunk/rt/ws/policy/src/main/resources/META-INF/cxf/cxf-extension-policy.xml (original)
+++ cxf/trunk/rt/ws/policy/src/main/resources/META-INF/cxf/cxf-extension-policy.xml Thu Sep  4 13:36:47 2008
@@ -31,9 +31,6 @@
         </constructor-arg>
     </bean>
     
-    <bean class="org.apache.cxf.ws.policy.PolicyConstants"
-	  id="org.apache.cxf.ws.policy.PolicyConstants"/>
-    
     <bean id="org.apache.cxf.ws.policy.PolicyInterceptorProviderRegistry" class="org.apache.cxf.ws.policy.PolicyInterceptorProviderRegistryImpl">
         <constructor-arg>
             <bean class="org.apache.cxf.configuration.spring.SpringBeanQNameMap">
@@ -77,9 +74,7 @@
     
     <!-- MTOM Policy Support -->
     <bean class="org.apache.cxf.ws.policy.mtom.MTOMAssertionBuilder"
-	  id="org.apache.cxf.ws.policy.mtom.MTOMAssertionBuilder">
-        <property name="bus" ref="cxf"/>
-    </bean>
+	  id="org.apache.cxf.ws.policy.mtom.MTOMAssertionBuilder"/>
     <bean class="org.apache.cxf.ws.policy.mtom.MTOMPolicyInterceptorProvider"
 	  id="org.apache.cxf.ws.policy.mtom.MTOMPolicyInterceptorProvider"/>
 </beans>

Modified: cxf/trunk/rt/ws/policy/src/main/resources/schemas/policy.xsd
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/policy/src/main/resources/schemas/policy.xsd?rev=692229&r1=692228&r2=692229&view=diff
==============================================================================
--- cxf/trunk/rt/ws/policy/src/main/resources/schemas/policy.xsd (original)
+++ cxf/trunk/rt/ws/policy/src/main/resources/schemas/policy.xsd Thu Sep  4 13:36:47 2008
@@ -104,20 +104,7 @@
     </xsd:complexType>
   </xsd:element>
  
-  <xsd:element name="constants">
-    <xsd:complexType>
-      <xsd:attribute name="namespace" type="xsd:string" default="http://www.w3.org/2006/07/ws-policy">
-        <xsd:annotation>
-          <xsd:documentation>
-              The namespace of the WS-Policy Framework specification. 
-              This attribute can be set to support older versions of the specification.           
-          </xsd:documentation>
-        </xsd:annotation>
-      </xsd:attribute>
-    </xsd:complexType>
-  </xsd:element>
-  
-    <xsd:element name="externalAttachment">
+  <xsd:element name="externalAttachment">
     <xsd:complexType>
       <xsd:complexContent>
         <xsd:extension base="beans:identifiedType">

Modified: cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/NormalizeTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/NormalizeTest.java?rev=692229&r1=692228&r2=692229&view=diff
==============================================================================
--- cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/NormalizeTest.java (original)
+++ cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/NormalizeTest.java Thu Sep  4 13:36:47 2008
@@ -91,9 +91,6 @@
     
     private Bus createBus(String policyNamespace) {
         Bus bus = control.createMock(Bus.class);
-        PolicyConstants constants = new PolicyConstants();
-        constants.setNamespace(policyNamespace);
-        EasyMock.expect(bus.getExtension(PolicyConstants.class)).andReturn(constants).anyTimes();
         control.replay();
         return bus;
     }

Modified: cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/attachment/external/ExternalAttachmentProviderTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/attachment/external/ExternalAttachmentProviderTest.java?rev=692229&r1=692228&r2=692229&view=diff
==============================================================================
--- cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/attachment/external/ExternalAttachmentProviderTest.java (original)
+++ cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/attachment/external/ExternalAttachmentProviderTest.java Thu Sep  4 13:36:47 2008
@@ -37,7 +37,6 @@
 import org.apache.cxf.service.model.ServiceInfo;
 import org.apache.cxf.ws.policy.PolicyAssertion;
 import org.apache.cxf.ws.policy.PolicyBuilder;
-import org.apache.cxf.ws.policy.PolicyConstants;
 import org.apache.cxf.ws.policy.PolicyException;
 import org.apache.cxf.ws.policy.builder.primitive.PrimitiveAssertion;
 import org.apache.neethi.Policy;
@@ -190,10 +189,7 @@
     @Test
     public void testReadDocumentUnknownDomainExpression() throws MalformedURLException {
 
-        PolicyConstants pc = new PolicyConstants();
-        pc.setNamespace(PolicyConstants.NAMESPACE_W3_200607);
         Bus bus = control.createMock(Bus.class);
-        EasyMock.expect(bus.getExtension(PolicyConstants.class)).andReturn(pc);
         
         eap = new ExternalAttachmentProvider(bus);
         DomainExpressionBuilderRegistry debr = control.createMock(DomainExpressionBuilderRegistry.class);

Modified: cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/attachment/reference/ReferenceResolverTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/attachment/reference/ReferenceResolverTest.java?rev=692229&r1=692228&r2=692229&view=diff
==============================================================================
--- cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/attachment/reference/ReferenceResolverTest.java (original)
+++ cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/attachment/reference/ReferenceResolverTest.java Thu Sep  4 13:36:47 2008
@@ -26,9 +26,7 @@
 import javax.wsdl.extensions.UnknownExtensibilityElement;
 import javax.xml.namespace.QName;
 
-import org.w3c.dom.Document;
 import org.w3c.dom.Element;
-import org.w3c.dom.NodeList;
 
 import org.apache.cxf.service.model.DescriptionInfo;
 import org.apache.cxf.ws.policy.PolicyBuilder;
@@ -46,7 +44,6 @@
 public class ReferenceResolverTest extends Assert {
 
     private IMocksControl control;
-    private PolicyConstants constants = new PolicyConstants();
     
     @Before
     public void setUp() {
@@ -58,7 +55,7 @@
         DescriptionInfo di = control.createMock(DescriptionInfo.class);
         PolicyBuilder builder = control.createMock(PolicyBuilder.class);
         LocalServiceModelReferenceResolver resolver = 
-            new LocalServiceModelReferenceResolver(di, builder, constants);
+            new LocalServiceModelReferenceResolver(di, builder);
         
         List<UnknownExtensibilityElement> extensions = new ArrayList<UnknownExtensibilityElement>();
         EasyMock.expect(di.getExtensors(UnknownExtensibilityElement.class)).andReturn(extensions);
@@ -73,9 +70,11 @@
         EasyMock.expect(di.getExtensors(UnknownExtensibilityElement.class)).andReturn(extensions);
         Element e = control.createMock(Element.class);
         EasyMock.expect(extension.getElement()).andReturn(e).times(2);
-        QName qn = new QName(constants.getNamespace(), constants.getPolicyElemName());
-        EasyMock.expect(extension.getElementType()).andReturn(qn).times(2);
-        EasyMock.expect(e.getAttributeNS(constants.getWSUNamespace(), constants.getIdAttrName()))
+        QName qn = new QName(PolicyConstants.NAMESPACE_WS_POLICY, 
+                             PolicyConstants.POLICY_ELEM_NAME);
+        EasyMock.expect(extension.getElementType()).andReturn(qn).anyTimes();
+        EasyMock.expect(e.getAttributeNS(PolicyConstants.WSU_NAMESPACE_URI,
+                                         PolicyConstants.WSU_ID_ATTR_NAME))
                         .andReturn("A");
         Policy p = control.createMock(Policy.class);
         EasyMock.expect(builder.getPolicy(e)).andReturn(p);        
@@ -87,37 +86,6 @@
     }
     
     @Test
-    public void testLocalDocumentReferenceResolver() {
-        Document doc = control.createMock(Document.class);
-        PolicyBuilder builder = control.createMock(PolicyBuilder.class);
-        LocalDocumentReferenceResolver resolver = new LocalDocumentReferenceResolver(doc, builder, constants);
-        
-        NodeList nl = control.createMock(NodeList.class);
-        EasyMock.expect(doc.getElementsByTagNameNS(constants.getNamespace(),
-                                                   constants.getPolicyElemName())).andReturn(nl);
-        EasyMock.expect(nl.getLength()).andReturn(0);
-        
-        control.replay();
-        assertNull(resolver.resolveReference("A"));
-        control.verify();
-        
-        control.reset();
-        EasyMock.expect(doc.getElementsByTagNameNS(constants.getNamespace(),
-                                                   constants.getPolicyElemName())).andReturn(nl);
-        EasyMock.expect(nl.getLength()).andReturn(1);
-        Element e = control.createMock(Element.class);
-        EasyMock.expect(nl.item(0)).andReturn(e);
-        EasyMock.expect(e.getAttributeNS(constants.getWSUNamespace(), constants.getIdAttrName()))
-                        .andReturn("A");
-        Policy p = control.createMock(Policy.class);
-        EasyMock.expect(builder.getPolicy(e)).andReturn(p);        
-        
-        control.replay();
-        assertSame(p, resolver.resolveReference("A"));
-        control.verify();
-    }
-    
-    @Test
     public void testRemoteReferenceResolverWithOlderNs() {
         
         doTestRemoteResolver(PolicyConstants.NAMESPACE_W3_200607);
@@ -130,11 +98,10 @@
     
     private void doTestRemoteResolver(String policyNs) {
         
-        constants.setNamespace(policyNs);
         URL url = ReferenceResolverTest.class.getResource("referring.wsdl");
         String baseURI = url.toString();
         PolicyBuilder builder = control.createMock(PolicyBuilder.class);
-        RemoteReferenceResolver resolver = new RemoteReferenceResolver(baseURI, builder, constants);
+        RemoteReferenceResolver resolver = new RemoteReferenceResolver(baseURI, builder);
     
         assertNull(resolver.resolveReference("referred.wsdl#PolicyB"));
         

Modified: cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/attachment/wsdl11/Wsdl11AttachmentPolicyProviderTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/attachment/wsdl11/Wsdl11AttachmentPolicyProviderTest.java?rev=692229&r1=692228&r2=692229&view=diff
==============================================================================
--- cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/attachment/wsdl11/Wsdl11AttachmentPolicyProviderTest.java (original)
+++ cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/attachment/wsdl11/Wsdl11AttachmentPolicyProviderTest.java Thu Sep  4 13:36:47 2008
@@ -36,7 +36,6 @@
 import org.apache.cxf.ws.policy.AssertionBuilderRegistry;
 import org.apache.cxf.ws.policy.AssertionBuilderRegistryImpl;
 import org.apache.cxf.ws.policy.PolicyBuilderImpl;
-import org.apache.cxf.ws.policy.PolicyConstants;
 import org.apache.cxf.ws.policy.PolicyException;
 import org.apache.cxf.ws.policy.PolicyRegistryImpl;
 import org.apache.cxf.ws.policy.builder.xml.XMLPrimitiveAssertionBuilder;
@@ -66,7 +65,6 @@
     private static ServiceInfo[] services;
     private static EndpointInfo[] endpoints;
     private Wsdl11AttachmentPolicyProvider app;
-    private PolicyConstants constants;
     private Bus bus;
     private IMocksControl control = EasyMock.createNiceControl();
     
@@ -85,10 +83,6 @@
         BindingFactoryManager bfm = control.createMock(BindingFactoryManager.class);
         EasyMock.expect(bus.getExtension(BindingFactoryManager.class)).andReturn(bfm).anyTimes();
         EasyMock.expect(bfm.getBindingFactory(EasyMock.isA(String.class))).andReturn(null).anyTimes();
-        PolicyConstants constants = new PolicyConstants();
-        // test data uses 2004/09 namespace
-        constants.setNamespace(PolicyConstants.NAMESPACE_XMLSOAP_200409);
-        EasyMock.expect(bus.getExtension(PolicyConstants.class)).andReturn(constants).anyTimes();
         control.replay();
         
         int n = 19;
@@ -122,11 +116,7 @@
     @Before
     public void setUp() {   
         control = EasyMock.createNiceControl();
-        constants = new PolicyConstants();
-        // test data uses 2004/09 namespace
-        constants.setNamespace(PolicyConstants.NAMESPACE_XMLSOAP_200409);
         bus = control.createMock(Bus.class);
-        EasyMock.expect(bus.getExtension(PolicyConstants.class)).andReturn(constants).anyTimes();
         AssertionBuilderRegistry abr = new AssertionBuilderRegistryImpl();        
         XMLPrimitiveAssertionBuilder ab = new XMLPrimitiveAssertionBuilder();
         ab.setBus(bus);
@@ -156,13 +146,11 @@
         
         // no extensions       
         p = app.getElementPolicy(services[0]);
-        assertNotNull(p);
-        assertTrue(p.isEmpty());
+        assertTrue(p == null || p.isEmpty());
         
         // extensions not of type Policy or PolicyReference
         p = app.getElementPolicy(services[1]);
-        assertNotNull(p);
-        assertTrue(p.isEmpty());
+        assertTrue(p == null || p.isEmpty());
         
         // one extension of type Policy, without assertion builder
         try {
@@ -185,7 +173,7 @@
         verifyAssertionsOnly(p, 3);
         
         EndpointInfo ei = new EndpointInfo();
-        assertTrue(app.getElementPolicy(ei).isEmpty());
+        assertTrue(app.getElementPolicy(ei) == null);
     }
     
     @Test
@@ -196,15 +184,13 @@
         
         // no extensions        
         ep = app.getEffectivePolicy(services[0]);
-        assertNotNull(ep);
-        assertTrue(ep.isEmpty());
+        assertTrue(ep == null || ep.isEmpty());
         p = app.getElementPolicy(services[0]);
-        assertTrue(PolicyComparator.compare(p, ep));
+        assertTrue(p == null || p.isEmpty());
         
         // extensions not of type Policy or PolicyReference
         ep = app.getEffectivePolicy(services[1]);
-        assertNotNull(ep);
-        assertTrue(ep.isEmpty());
+        assertTrue(ep == null || ep.isEmpty());
         
         // one extension of type Policy, without assertion builder
         try {
@@ -240,8 +226,7 @@
         // porttype has no extensions
         // binding has no extensions
         ep = app.getEffectivePolicy(endpoints[0]);
-        assertNotNull(ep);
-        assertTrue(ep.isEmpty());
+        assertTrue(ep == null || ep.isEmpty());
         
         // port has one extension of type Policy        
         // binding has no extensions
@@ -299,8 +284,7 @@
         // operation has no extensions
         // binding operation has no extensions
         ep = app.getEffectivePolicy(getBindingOperationInfo(endpoints[0]));
-        assertNotNull(ep);
-        assertTrue(ep.isEmpty());
+        assertTrue(ep == null || ep.isEmpty());
         
         // operation has no extensions
         // binding operation has one extension of type Policy
@@ -332,8 +316,7 @@
         // operation message has no extensions
         // message has no extensions
         ep = app.getEffectivePolicy(getBindingMessageInfo(endpoints[0], true));
-        assertNotNull(ep);
-        assertTrue(ep.isEmpty());
+        assertTrue(ep == null || ep.isEmpty());
         
         // binding operation message has one extension of type Policy
         // operation message has no extensions

Modified: cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/builder/primitive/NestedPrimitiveAssertionTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/builder/primitive/NestedPrimitiveAssertionTest.java?rev=692229&r1=692228&r2=692229&view=diff
==============================================================================
--- cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/builder/primitive/NestedPrimitiveAssertionTest.java (original)
+++ cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/builder/primitive/NestedPrimitiveAssertionTest.java Thu Sep  4 13:36:47 2008
@@ -31,7 +31,6 @@
 import org.apache.cxf.ws.policy.AssertionBuilderRegistryImpl;
 import org.apache.cxf.ws.policy.PolicyAssertion;
 import org.apache.cxf.ws.policy.PolicyBuilderImpl;
-import org.apache.cxf.ws.policy.PolicyConstants;
 import org.apache.cxf.ws.policy.util.PolicyComparator;
 import org.apache.neethi.Policy;
 import org.apache.neethi.PolicyComponent;
@@ -56,7 +55,6 @@
     private PolicyBuilderImpl builder;
     private IMocksControl control;
     private Bus bus;
-    private PolicyConstants constants;
     
     @Before
     public void setUp() {
@@ -64,9 +62,6 @@
         control = EasyMock.createNiceControl();
         
         bus = control.createMock(Bus.class);
-        constants = new PolicyConstants();
-        constants.setNamespace(PolicyConstants.NAMESPACE_XMLSOAP_200409);
-        EasyMock.expect(bus.getExtension(PolicyConstants.class)).andReturn(constants).anyTimes();
         
         AssertionBuilderRegistry abr = new AssertionBuilderRegistryImpl();
         builder = new PolicyBuilderImpl();

Modified: cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/spring/PolicyBeansTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/spring/PolicyBeansTest.java?rev=692229&r1=692228&r2=692229&view=diff
==============================================================================
--- cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/spring/PolicyBeansTest.java (original)
+++ cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/spring/PolicyBeansTest.java Thu Sep  4 13:36:47 2008
@@ -23,7 +23,6 @@
 import junit.framework.Assert;
 import org.apache.cxf.Bus;
 import org.apache.cxf.bus.spring.SpringBusFactory;
-import org.apache.cxf.ws.policy.PolicyConstants;
 import org.apache.cxf.ws.policy.PolicyEngine;
 import org.apache.cxf.ws.policy.PolicyEngineImpl;
 import org.apache.cxf.ws.policy.PolicyProvider;
@@ -53,8 +52,6 @@
         assertEquals(MaximalAlternativeSelector.class.getName(), 
                      pe.getAlternativeSelector().getClass().getName()); 
         
-        assertEquals(PolicyConstants.NAMESPACE_WS_POLICY,
-                     bus.getExtension(PolicyConstants.class).getNamespace());
         
         PolicyEngineImpl pei = (PolicyEngineImpl)pe;
         Collection<PolicyProvider> providers = pei.getPolicyProviders();

Modified: cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/spring/beans.xml
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/spring/beans.xml?rev=692229&r1=692228&r2=692229&view=diff
==============================================================================
--- cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/spring/beans.xml (original)
+++ cxf/trunk/rt/ws/policy/src/test/java/org/apache/cxf/ws/policy/spring/beans.xml Thu Sep  4 13:36:47 2008
@@ -38,8 +38,6 @@
         </p:alternativeSelector>
     </p:engine>
     
-    <p:constants namespace="http://www.w3.org/ns/ws-policy"/>
-    
     <p:externalAttachment id="external4"
         location="classpath:/org/apache/cxf/ws/policy/attachment/external/attachments4.xml"/>
     

Modified: cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/AbstractWSS4JInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/AbstractWSS4JInterceptor.java?rev=692229&r1=692228&r2=692229&view=diff
==============================================================================
--- cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/AbstractWSS4JInterceptor.java (original)
+++ cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/AbstractWSS4JInterceptor.java Thu Sep  4 13:36:47 2008
@@ -196,6 +196,18 @@
                     ai.setAsserted(true);
                 }                    
             }
+            ais = aim.get(SP12Constants.WSS10);
+            if (ais != null) {
+                for (AssertionInfo ai : ais) {
+                    ai.setAsserted(true);
+                }                    
+            }
+            ais = aim.get(SP12Constants.WSS11);
+            if (ais != null) {
+                for (AssertionInfo ai : ais) {
+                    ai.setAsserted(true);
+                }                    
+            }
             message.put(WSHandlerConstants.ACTION, action.trim());
         }
     }

Modified: cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/PolicyBasedWSS4JOutInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/PolicyBasedWSS4JOutInterceptor.java?rev=692229&r1=692228&r2=692229&view=diff
==============================================================================
--- cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/PolicyBasedWSS4JOutInterceptor.java (original)
+++ cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/PolicyBasedWSS4JOutInterceptor.java Thu Sep  4 13:36:47 2008
@@ -95,6 +95,20 @@
                 if (transport != null) {
                     new TransportBindingHandler(transport, saaj, secHeader, aim, message).handleBinding();
                 }
+                
+                ais = aim.get(SP12Constants.WSS10);
+                if (ais != null) {
+                    for (AssertionInfo ai : ais) {
+                        ai.setAsserted(true);
+                    }                    
+                }
+                ais = aim.get(SP12Constants.WSS11);
+                if (ais != null) {
+                    for (AssertionInfo ai : ais) {
+                        ai.setAsserted(true);
+                    }                    
+                }
+
             }
             
         }

Modified: cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyhandlers/BindingBuilder.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyhandlers/BindingBuilder.java?rev=692229&r1=692228&r2=692229&view=diff
==============================================================================
--- cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyhandlers/BindingBuilder.java (original)
+++ cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyhandlers/BindingBuilder.java Thu Sep  4 13:36:47 2008
@@ -33,6 +33,7 @@
 import org.apache.cxf.ws.security.policy.model.SupportingToken;
 import org.apache.cxf.ws.security.policy.model.Token;
 import org.apache.cxf.ws.security.policy.model.UsernameToken;
+import org.apache.velocity.util.ClassUtils;
 import org.apache.ws.security.WSConstants;
 import org.apache.ws.security.WSPasswordCallback;
 import org.apache.ws.security.message.WSSecHeader;
@@ -111,9 +112,18 @@
             if (StringUtils.isEmpty(password)) {
                 
                 //Then try to get the password from the given callback handler
-                CallbackHandler handler 
-                    = (CallbackHandler)message.getContextualProperty(SecurityConstants.CALLBACK_HANDLER);
+                Object o = message.getContextualProperty(SecurityConstants.CALLBACK_HANDLER);
             
+                CallbackHandler handler = null;
+                if (o instanceof CallbackHandler) {
+                    handler = (CallbackHandler)o;
+                } else if (o instanceof String) {
+                    try {
+                        handler = (CallbackHandler)ClassUtils.getNewInstance(o.toString());
+                    } catch (Exception e) {
+                        handler = null;
+                    }
+                }
                 if (handler == null) {
                     info.setNotAsserted("No callback handler and not password available");
                     return null;

Modified: cxf/trunk/systests/src/test/java/org/apache/cxf/systest/mtom/MtomPolicyTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/mtom/MtomPolicyTest.java?rev=692229&r1=692228&r2=692229&view=diff
==============================================================================
--- cxf/trunk/systests/src/test/java/org/apache/cxf/systest/mtom/MtomPolicyTest.java (original)
+++ cxf/trunk/systests/src/test/java/org/apache/cxf/systest/mtom/MtomPolicyTest.java Thu Sep  4 13:36:47 2008
@@ -47,7 +47,6 @@
 import org.apache.cxf.transport.Conduit;
 import org.apache.cxf.transport.ConduitInitiator;
 import org.apache.cxf.transport.ConduitInitiatorManager;
-import org.apache.cxf.ws.policy.PolicyConstants;
 import org.apache.cxf.ws.policy.PolicyEngine;
 import org.apache.cxf.ws.policy.WSPolicyFeature;
 import org.apache.cxf.ws.policy.selector.FirstAlternativeSelector;
@@ -113,8 +112,6 @@
             policyElements.add(DOMUtils.readXml(
                 getClass().getResourceAsStream("mtom-policy-optional.xml"))
                            .getDocumentElement());
-            getBus().getExtension(PolicyConstants.class)
-               .setNamespace(PolicyConstants.NAMESPACE_W3_200607);
         } 
         policyFeature.setPolicyElements(policyElements);       
         

Modified: cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/policy/AddressingInlinePolicyTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/policy/AddressingInlinePolicyTest.java?rev=692229&r1=692228&r2=692229&view=diff
==============================================================================
--- cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/policy/AddressingInlinePolicyTest.java (original)
+++ cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/policy/AddressingInlinePolicyTest.java Thu Sep  4 13:36:47 2008
@@ -35,7 +35,6 @@
 import org.apache.cxf.systest.ws.util.ConnectionHelper;
 import org.apache.cxf.testutil.common.AbstractBusClientServerTestBase;
 import org.apache.cxf.testutil.common.AbstractBusTestServerBase;
-import org.apache.cxf.ws.policy.PolicyConstants;
 import org.apache.cxf.ws.policy.ServerPolicyInInterceptor;
 import org.apache.cxf.ws.policy.ServerPolicyOutInterceptor;
 import org.junit.BeforeClass;
@@ -88,8 +87,6 @@
         SpringBusFactory bf = new SpringBusFactory();
         
         bus = bf.createBus("org/apache/cxf/systest/ws/policy/addr-inline-policy-old.xml");
-        PolicyTestUtils.setPolicyConstants(bus, 
-                                           PolicyConstants.NAMESPACE_W3_200607);
         
         BusFactory.setDefaultBus(bus);
         

Modified: cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/policy/AddressingOptionalPolicyTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/policy/AddressingOptionalPolicyTest.java?rev=692229&r1=692228&r2=692229&view=diff
==============================================================================
--- cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/policy/AddressingOptionalPolicyTest.java (original)
+++ cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/policy/AddressingOptionalPolicyTest.java Thu Sep  4 13:36:47 2008
@@ -38,7 +38,6 @@
 import org.apache.cxf.systest.ws.util.OutMessageRecorder;
 import org.apache.cxf.testutil.common.AbstractBusClientServerTestBase;
 import org.apache.cxf.testutil.common.AbstractBusTestServerBase;
-import org.apache.cxf.ws.policy.PolicyConstants;
 import org.apache.cxf.ws.policy.PolicyEngine;
 import org.apache.cxf.ws.policy.selector.MinimalAlternativeSelector;
 import org.apache.cxf.ws.rm.RMUtils;
@@ -59,8 +58,6 @@
         protected void run()  {            
             SpringBusFactory bf = new SpringBusFactory();
             Bus bus = bf.createBus("org/apache/cxf/systest/ws/policy/addr-optional.xml");
-            PolicyTestUtils.setPolicyConstants(bus, 
-                                               PolicyConstants.NAMESPACE_W3_200607);
             BusFactory.setDefaultBus(bus);
             LoggingInInterceptor in = new LoggingInInterceptor();
             bus.getInInterceptors().add(in);
@@ -100,8 +97,6 @@
         SpringBusFactory bf = new SpringBusFactory();
         bus = bf.createBus("org/apache/cxf/systest/ws/policy/addr-optional.xml");
         Bus bus = bf.createBus("org/apache/cxf/systest/ws/policy/addr-optional.xml");
-        PolicyTestUtils.setPolicyConstants(bus, 
-                                           PolicyConstants.NAMESPACE_W3_200607);
         BusFactory.setDefaultBus(bus);
         InMessageRecorder in = new InMessageRecorder();
         bus.getInInterceptors().add(in);

Modified: cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/policy/HTTPClientPolicyTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/policy/HTTPClientPolicyTest.java?rev=692229&r1=692228&r2=692229&view=diff
==============================================================================
--- cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/policy/HTTPClientPolicyTest.java (original)
+++ cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/policy/HTTPClientPolicyTest.java Thu Sep  4 13:36:47 2008
@@ -40,7 +40,6 @@
 import org.apache.cxf.testutil.common.AbstractBusClientServerTestBase;
 import org.apache.cxf.testutil.common.AbstractBusTestServerBase;
 import org.apache.cxf.transport.http.HTTPConduit;
-import org.apache.cxf.ws.policy.PolicyConstants;
 import org.apache.cxf.ws.policy.PolicyException;
 import org.junit.BeforeClass;
 import org.junit.Test;
@@ -111,9 +110,6 @@
         bus = bf.createBus(POLICY_ENGINE_ENABLED_CFG);
         BusFactory.setDefaultBus(bus);
         
-        PolicyTestUtils.setPolicyConstants(bus, 
-                                           PolicyConstants.NAMESPACE_W3_200607);
-        
         LoggingInInterceptor in = new LoggingInInterceptor();
         bus.getInInterceptors().add(in);
         bus.getInFaultInterceptors().add(in);

Modified: cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/policy/RMPolicyWsdlTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/policy/RMPolicyWsdlTest.java?rev=692229&r1=692228&r2=692229&view=diff
==============================================================================
--- cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/policy/RMPolicyWsdlTest.java (original)
+++ cxf/trunk/systests/src/test/java/org/apache/cxf/systest/ws/policy/RMPolicyWsdlTest.java Thu Sep  4 13:36:47 2008
@@ -39,7 +39,6 @@
 import org.apache.cxf.testutil.common.AbstractBusClientServerTestBase;
 import org.apache.cxf.testutil.common.AbstractBusTestServerBase;
 import org.apache.cxf.ws.policy.PolicyAssertion;
-import org.apache.cxf.ws.policy.PolicyConstants;
 import org.apache.cxf.ws.policy.PolicyEngine;
 import org.apache.cxf.ws.rm.RMConstants;
 import org.apache.neethi.All;
@@ -123,8 +122,6 @@
     public void testUsingRM() throws Exception {
         SpringBusFactory bf = new SpringBusFactory();
         bus = bf.createBus("org/apache/cxf/systest/ws/policy/rmwsdl.xml");
-        PolicyTestUtils.setPolicyConstants(bus, 
-                                           PolicyConstants.NAMESPACE_W3_200607);
         BusFactory.setDefaultBus(bus);
         OutMessageRecorder outRecorder = new OutMessageRecorder();
         bus.getOutInterceptors().add(outRecorder);