You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ws.apache.org by sa...@apache.org on 2005/12/12 18:21:53 UTC

svn commit: r356290 - /webservices/commons/trunk/policy/src/org/apache/ws/policy/util/StAXPolicyWriter.java

Author: sanka
Date: Mon Dec 12 09:21:45 2005
New Revision: 356290

URL: http://svn.apache.org/viewcvs?rev=356290&view=rev
Log:
Fixed: child <wsp:Policy> ..</wsp:Policy> elements are serialized as <wsp:All> .. </wsp:All>

Modified:
    webservices/commons/trunk/policy/src/org/apache/ws/policy/util/StAXPolicyWriter.java

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=356290&r1=356289&r2=356290&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 Mon Dec 12 09:21:45 2005
@@ -60,11 +60,23 @@
 
     private void writePolicy(Policy policy, XMLStreamWriter writer)
             throws XMLStreamException {
-        writer.writeStartElement(PolicyConstants.WS_POLICY_PREFIX,
-                PolicyConstants.WS_POLICY,
-                PolicyConstants.WS_POLICY_NAMESPACE_URI);
-        writer.writeNamespace(PolicyConstants.WS_POLICY_PREFIX,
-                PolicyConstants.WS_POLICY_NAMESPACE_URI);
+        String writerPerfix = writer
+                .getPrefix(PolicyConstants.WS_POLICY_NAMESPACE_URI);
+
+        if (writerPerfix != null) {
+            writer.writeStartElement(PolicyConstants.WS_POLICY_NAMESPACE_URI,
+                    PolicyConstants.WS_POLICY);
+
+        } else {
+            writer.writeStartElement(PolicyConstants.WS_POLICY_PREFIX,
+                    PolicyConstants.WS_POLICY,
+                    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);
+
+        }
 
         if (policy.getId() != null) {
             writer.writeAttribute("wsu", PolicyConstants.WSU_NAMESPACE_URI,
@@ -85,10 +97,6 @@
         if (assertion instanceof PrimitiveAssertion) {
             writePrimitiveAssertion((PrimitiveAssertion) assertion, writer);
 
-        } else if (assertion instanceof AndCompositeAssertion) {
-            writeAndCompositeAssertion((AndCompositeAssertion) assertion,
-                    writer);
-
         } else if (assertion instanceof XorCompositeAssertion) {
             writeXorCompositeAssertion((XorCompositeAssertion) assertion,
                     writer);
@@ -98,6 +106,10 @@
 
         } else if (assertion instanceof Policy) {
             writePolicy((Policy) assertion, writer);
+        } else if (assertion instanceof AndCompositeAssertion) {
+            writeAndCompositeAssertion((AndCompositeAssertion) assertion,
+                    writer);
+
         } else {
             throw new RuntimeException("unknown element type");
         }
@@ -105,9 +117,23 @@
 
     private void writeAndCompositeAssertion(AndCompositeAssertion assertion,
             XMLStreamWriter writer) throws XMLStreamException {
-        writer.writeStartElement(PolicyConstants.WS_POLICY_PREFIX,
-                PolicyConstants.AND_COMPOSITE_ASSERTION,
-                PolicyConstants.WS_POLICY_NAMESPACE_URI);
+
+        String writerPrefix = writer
+                .getPrefix(PolicyConstants.WS_POLICY_NAMESPACE_URI);
+
+        if (writerPrefix == null) {
+            writer.writeStartElement(PolicyConstants.WS_POLICY_PREFIX,
+                    PolicyConstants.AND_COMPOSITE_ASSERTION,
+                    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);
+
+        } else {
+            writer.writeStartElement(PolicyConstants.WS_POLICY_NAMESPACE_URI,
+                    PolicyConstants.AND_COMPOSITE_ASSERTION);
+        }
 
         List terms = assertion.getTerms();
         writeTerms(terms, writer);
@@ -117,9 +143,22 @@
 
     private void writeXorCompositeAssertion(XorCompositeAssertion assertion,
             XMLStreamWriter writer) throws XMLStreamException {
-        writer.writeStartElement(PolicyConstants.WS_POLICY_PREFIX,
-                PolicyConstants.XOR_COMPOSITE_ASSERTION,
-                PolicyConstants.WS_POLICY_NAMESPACE_URI);
+        String writerPrefix = writer
+                .getPrefix(PolicyConstants.WS_POLICY_NAMESPACE_URI);
+
+        if (writerPrefix == null) {
+            writer.writeStartElement(PolicyConstants.WS_POLICY_PREFIX,
+                    PolicyConstants.XOR_COMPOSITE_ASSERTION,
+                    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);
+
+        } else {
+            writer.writeStartElement(PolicyConstants.WS_POLICY_NAMESPACE_URI,
+                    PolicyConstants.XOR_COMPOSITE_ASSERTION);
+        }
 
         List terms = assertion.getTerms();
         writeTerms(terms, writer);
@@ -131,16 +170,18 @@
             XMLStreamWriter writer) throws XMLStreamException {
         QName qname = assertion.getName();
 
-        String prefix = qname.getPrefix();
-        if (prefix != null) {
-            writer.writeStartElement(qname.getPrefix(), qname.getLocalPart(),
-                    qname.getNamespaceURI());
-            writer.writeNamespace(qname.getPrefix(), qname.getNamespaceURI());
-
+        String writerPrefix = writer.getPrefix(qname.getNamespaceURI());
+        if (writerPrefix != null) {
+            writer.writeStartElement(qname.getNamespaceURI(), qname
+                    .getLocalPart());
         } else {
-            writer.writeStartElement(qname.getLocalPart(), qname
+            String prefix = (qname.getPrefix() != null) ? qname.getPrefix()
+                    : generateNamespace();
+            writer.writeStartElement(prefix, qname.getLocalPart(), qname
                     .getNamespaceURI());
-            writer.writeNamespace(generateNamespace(), qname.getNamespaceURI());
+            writer.writeNamespace(prefix, qname.getNamespaceURI());
+            writer.setPrefix(prefix, qname.getNamespaceURI());
+
         }
 
         Hashtable attributes = assertion.getAttributes();
@@ -159,6 +200,7 @@
 
     private void writePolicyReference(PolicyReference assertion,
             XMLStreamWriter writer) throws XMLStreamException {
+        throw new UnsupportedOperationException();
     }
 
     private void writeTerms(List terms, XMLStreamWriter writer)