You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by rf...@apache.org on 2009/12/11 01:59:45 UTC

svn commit: r889485 - in /tuscany/sca-java-2.x/trunk/modules/policy-xml-ws: META-INF/MANIFEST.MF src/main/java/org/apache/tuscany/sca/policy/xml/ws/WSPolicyProcessor.java src/test/java/org/apache/tuscany/sca/policy/xml/ws/WSPolicyProcessorTestCase.java

Author: rfeng
Date: Fri Dec 11 00:59:45 2009
New Revision: 889485

URL: http://svn.apache.org/viewvc?rev=889485&view=rev
Log:
Simplify the WS-Policy read/save

Modified:
    tuscany/sca-java-2.x/trunk/modules/policy-xml-ws/META-INF/MANIFEST.MF
    tuscany/sca-java-2.x/trunk/modules/policy-xml-ws/src/main/java/org/apache/tuscany/sca/policy/xml/ws/WSPolicyProcessor.java
    tuscany/sca-java-2.x/trunk/modules/policy-xml-ws/src/test/java/org/apache/tuscany/sca/policy/xml/ws/WSPolicyProcessorTestCase.java

Modified: tuscany/sca-java-2.x/trunk/modules/policy-xml-ws/META-INF/MANIFEST.MF
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/policy-xml-ws/META-INF/MANIFEST.MF?rev=889485&r1=889484&r2=889485&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/policy-xml-ws/META-INF/MANIFEST.MF (original)
+++ tuscany/sca-java-2.x/trunk/modules/policy-xml-ws/META-INF/MANIFEST.MF Fri Dec 11 00:59:45 2009
@@ -10,7 +10,9 @@
 Import-Package: javax.xml.namespace,
  javax.xml.stream,
  org.apache.axiom.om,
+ org.apache.axiom.om.impl.builder,
  org.apache.neethi,
+ org.apache.tuscany.sca.common.xml.stax.reader;version="2.0.0",
  org.apache.tuscany.sca.contribution.processor;version="2.0.0",
  org.apache.tuscany.sca.contribution.resolver;version="2.0.0",
  org.apache.tuscany.sca.core;version="2.0.0",

Modified: tuscany/sca-java-2.x/trunk/modules/policy-xml-ws/src/main/java/org/apache/tuscany/sca/policy/xml/ws/WSPolicyProcessor.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/policy-xml-ws/src/main/java/org/apache/tuscany/sca/policy/xml/ws/WSPolicyProcessor.java?rev=889485&r1=889484&r2=889485&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/policy-xml-ws/src/main/java/org/apache/tuscany/sca/policy/xml/ws/WSPolicyProcessor.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/policy-xml-ws/src/main/java/org/apache/tuscany/sca/policy/xml/ws/WSPolicyProcessor.java Fri Dec 11 00:59:45 2009
@@ -19,8 +19,6 @@
 
 package org.apache.tuscany.sca.policy.xml.ws;
 
-import static javax.xml.stream.XMLStreamConstants.START_ELEMENT;
-
 import javax.xml.namespace.QName;
 import javax.xml.stream.XMLStreamConstants;
 import javax.xml.stream.XMLStreamException;
@@ -31,7 +29,10 @@
 import org.apache.axiom.om.OMElement;
 import org.apache.axiom.om.OMFactory;
 import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.om.impl.builder.StAXOMBuilder;
 import org.apache.neethi.PolicyEngine;
+import org.apache.tuscany.sca.common.xml.stax.StAXHelper;
+import org.apache.tuscany.sca.common.xml.stax.reader.XMLDocumentStreamReader;
 import org.apache.tuscany.sca.contribution.processor.BaseStAXArtifactProcessor;
 import org.apache.tuscany.sca.contribution.processor.ContributionReadException;
 import org.apache.tuscany.sca.contribution.processor.ContributionResolveException;
@@ -39,68 +40,66 @@
 import org.apache.tuscany.sca.contribution.processor.ProcessorContext;
 import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor;
 import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
-import org.apache.tuscany.sca.core.FactoryExtensionPoint;
-
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
 
 /**
  * Processor for handling xml models of PolicySet definitions
  *
  * @version $Rev$ $Date$
  */
-public class WSPolicyProcessor extends BaseStAXArtifactProcessor implements StAXArtifactProcessor<org.apache.neethi.Policy> {
+public class WSPolicyProcessor extends BaseStAXArtifactProcessor implements
+    StAXArtifactProcessor<org.apache.neethi.Policy> {
     public final static String WS_POLICY_NS = "http://schemas.xmlsoap.org/ws/2004/09/policy";
     public final static String WS_POLICY = "Policy";
-	
-    public final static QName WS_POLICY_QNAME =new QName(WS_POLICY_NS, WS_POLICY);
 
-    public WSPolicyProcessor() {
-    }
-    
-    public WSPolicyProcessor(FactoryExtensionPoint modelFactories) {
+    public final static QName WS_POLICY_QNAME = new QName(WS_POLICY_NS, WS_POLICY);
+    private StAXHelper stAXHelper;
+
+    public WSPolicyProcessor(ExtensionPointRegistry registry) {
+        this.stAXHelper = StAXHelper.getInstance(registry);
     }
-    
+
     public QName getArtifactType() {
         return WS_POLICY_QNAME;
     }
-    
+
     public Class<org.apache.neethi.Policy> getModelType() {
         return org.apache.neethi.Policy.class;
     }
 
-    public org.apache.neethi.Policy read(XMLStreamReader reader, ProcessorContext context) throws ContributionReadException, XMLStreamException {
-		org.apache.neethi.Policy wsPolicy = null;
-
-		int event = reader.getEventType();
-		if (event == START_ELEMENT) {
-			QName name = reader.getName();
-			if (WS_POLICY_QNAME.equals(name)) {
-				OMElement policyElement = loadElement(reader);
-				wsPolicy = PolicyEngine.getPolicy(policyElement);
-			}
-		}
-		return wsPolicy;
+    public org.apache.neethi.Policy read(XMLStreamReader reader, ProcessorContext context)
+        throws ContributionReadException, XMLStreamException {
+        org.apache.neethi.Policy wsPolicy = null;
+        XMLDocumentStreamReader doc = new XMLDocumentStreamReader(reader);
+        StAXOMBuilder builder = new StAXOMBuilder(doc);
+        OMElement element = builder.getDocumentElement();
+        wsPolicy = PolicyEngine.getPolicy(element);
+        return wsPolicy;
     }
-        
-    public void write(org.apache.neethi.Policy wsPolicy, XMLStreamWriter writer, ProcessorContext context) throws ContributionWriteException, XMLStreamException {
+
+    public void write(org.apache.neethi.Policy wsPolicy, XMLStreamWriter writer, ProcessorContext context)
+        throws ContributionWriteException, XMLStreamException {
 
         // Write an <sca:policySet>
         writer.writeStartElement(WS_POLICY_NS, WS_POLICY);
-       
-        //FIXME write proper ws-policy stuff here
-       
+
+        if (wsPolicy != null) {
+            wsPolicy.serialize(writer);
+        }
+
         writer.writeEndElement();
     }
 
-    public void resolve(org.apache.neethi.Policy wsPolicy, ModelResolver resolver, ProcessorContext context) throws ContributionResolveException {
+    public void resolve(org.apache.neethi.Policy wsPolicy, ModelResolver resolver, ProcessorContext context)
+        throws ContributionResolveException {
 
-    }   
+    }
 
-       
     private OMElement loadElement(XMLStreamReader reader) throws XMLStreamException {
         OMFactory fac = OMAbstractFactory.getOMFactory();
         OMElement head = fac.createOMElement(reader.getName());
         OMElement current = head;
-        
+
         while (true) {
             switch (reader.next()) {
                 case XMLStreamConstants.START_ELEMENT:
@@ -114,7 +113,7 @@
                         child.declareNamespace(ns, prefix);
                     }
 
-                    if(!"".equals(name.getNamespaceURI())) {
+                    if (!"".equals(name.getNamespaceURI())) {
                         child.declareNamespace(name.getNamespaceURI(), name.getPrefix());
                     }
 
@@ -126,11 +125,11 @@
                         String prefix = reader.getAttributePrefix(i);
                         String qname = reader.getAttributeLocalName(i);
                         String value = reader.getAttributeValue(i);
-                        
-                        if ( ns != null ) {
+
+                        if (ns != null) {
                             omNs = fac.createOMNamespace(ns, prefix);
                         }
-                            
+
                         child.addAttribute(qname, value, omNs);
                         if (ns != null) {
                             child.declareNamespace(ns, prefix);
@@ -145,7 +144,7 @@
                     fac.createOMText(current, reader.getText());
                     break;
                 case XMLStreamConstants.END_ELEMENT:
-                    if ( current == head ) {
+                    if (current == head) {
                         return head;
                     } else {
                         current = (OMElement)current.getParent();
@@ -153,6 +152,5 @@
             }
         }
     }
-    
 
- }
+}

Modified: tuscany/sca-java-2.x/trunk/modules/policy-xml-ws/src/test/java/org/apache/tuscany/sca/policy/xml/ws/WSPolicyProcessorTestCase.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/policy-xml-ws/src/test/java/org/apache/tuscany/sca/policy/xml/ws/WSPolicyProcessorTestCase.java?rev=889485&r1=889484&r2=889485&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/policy-xml-ws/src/test/java/org/apache/tuscany/sca/policy/xml/ws/WSPolicyProcessorTestCase.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/policy-xml-ws/src/test/java/org/apache/tuscany/sca/policy/xml/ws/WSPolicyProcessorTestCase.java Fri Dec 11 00:59:45 2009
@@ -29,7 +29,10 @@
 
 import junit.framework.TestCase;
 
+import org.apache.neethi.Policy;
 import org.apache.tuscany.sca.contribution.processor.ProcessorContext;
+import org.apache.tuscany.sca.core.DefaultExtensionPointRegistry;
+import org.junit.Assert;
 
 /**
  * Test reading SCA XML assembly documents.
@@ -37,75 +40,77 @@
  * @version $Rev$ $Date$
  */
 public class WSPolicyProcessorTestCase extends TestCase {
-	
-	private static final String VALID_WS_POLICY = 
-		"<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
-		    + "<definitions xmlns=\"http://docs.oasis-open.org/ns/opencsa/sca/200903\""
- 			+ " targetNamespace=\"http://test\""
- 			+ " xmlns:test=\"http://test\""
- 			+ " xmlns:sca=\"http://docs.oasis-open.org/ns/opencsa/sca/200903\">"
+
+    private static final String VALID_WS_POLICY =
+        "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + "<definitions xmlns=\"http://docs.oasis-open.org/ns/opencsa/sca/200903\""
+            + " targetNamespace=\"http://test\""
+            + " xmlns:test=\"http://test\""
+            + " xmlns:sca=\"http://docs.oasis-open.org/ns/opencsa/sca/200903\">"
             + " "
             + " <policySet name=\"SecureWSPolicy\""
             + " provides=\"test:confidentiality\""
- 	        + " appliesTo=\"sca:binding.ws\""
- 	        + " xmlns=\"http://docs.oasis-open.org/ns/opencsa/sca/200903\""
- 	        + " xmlns:sp=\"http://schemas.xmlsoap.org/ws/2002/12/secext\""
- 	        + " xmlns:wsp=\"http://schemas.xmlsoap.org/ws/2004/09/policy\">"
-	        + " <wsp:Policy>"
-	        + "    <wsp:ExactlyOne>"
-	        + "       <wsp:All>"
-	        + "          <sp:SecurityToken>"
-	        + "             <sp:TokenType>sp:X509v3</sp:TokenType>"
-	        + "          </sp:SecurityToken>"
-	        + "          <sp:UsernameToken />" 
-	        + "           <sp:SignedParts />"
-	        + "          <sp:EncryptedParts>"
-	        + "             <sp:Body />"
-	        + "          </sp:EncryptedParts>"
-	        + "          <sp:TransportBinding>"
-	        + "             <sp:IncludeTimeStamp />"
-	        + "          </sp:TransportBinding>"
-	        + "        </wsp:All>"
-	        + "    </wsp:ExactlyOne>"
+            + " appliesTo=\"sca:binding.ws\""
+            + " xmlns=\"http://docs.oasis-open.org/ns/opencsa/sca/200903\""
+            + " xmlns:sp=\"http://schemas.xmlsoap.org/ws/2002/12/secext\""
+            + " xmlns:wsp=\"http://schemas.xmlsoap.org/ws/2004/09/policy\">"
+            + " <wsp:Policy>"
+            + "    <wsp:ExactlyOne>"
+            + "       <wsp:All>"
+            + "          <sp:SecurityToken>"
+            + "             <sp:TokenType>sp:X509v3</sp:TokenType>"
+            + "          </sp:SecurityToken>"
+            + "          <sp:UsernameToken />"
+            + "           <sp:SignedParts />"
+            + "          <sp:EncryptedParts>"
+            + "             <sp:Body />"
+            + "          </sp:EncryptedParts>"
+            + "          <sp:TransportBinding>"
+            + "             <sp:IncludeTimeStamp />"
+            + "          </sp:TransportBinding>"
+            + "        </wsp:All>"
+            + "    </wsp:ExactlyOne>"
             + " </wsp:Policy>"
             + " </policySet>"
             + " </definitions>";
-	
-	private XMLInputFactory inputFactory;
-        
+
+    private XMLInputFactory inputFactory;
+
     @Override
     public void setUp() throws Exception {
         inputFactory = XMLInputFactory.newInstance();
-        
+
     }
 
     public void testReadWsPolicy() throws Exception {
-    	XMLStreamReader reader = inputFactory.createXMLStreamReader(new StringReader(VALID_WS_POLICY));
-    	WSPolicyProcessor processor = new WSPolicyProcessor();
-    	Object artifact = null;
-    	
+        XMLStreamReader reader = inputFactory.createXMLStreamReader(new StringReader(VALID_WS_POLICY));
+        WSPolicyProcessor processor = new WSPolicyProcessor(new DefaultExtensionPointRegistry());
+        Object artifact = null;
+
         QName name = null;
         reader.next();
-        while ( true ) {
+        while (true) {
             int event = reader.getEventType();
             switch (event) {
                 case START_ELEMENT: {
-                	name = reader.getName();
-                	
-                	if(WSPolicyProcessor.WS_POLICY_QNAME.equals(name)) {
-                		 artifact = processor.read(reader, new ProcessorContext());
-                	}
-                	
+                    name = reader.getName();
+
+                    if (WSPolicyProcessor.WS_POLICY_QNAME.equals(name)) {
+                        artifact = processor.read(reader, new ProcessorContext());
+                    }
+
                     break;
                 }
             }
-            
-            if ( reader.hasNext() ) {
+
+            if (reader.hasNext()) {
                 reader.next();
             } else {
                 break;
             }
         }
         assertNotNull(artifact);
+        Assert.assertTrue(artifact instanceof Policy);
+        Policy policy = (Policy) artifact;
+        Assert.assertTrue(policy.getAlternatives().hasNext());
     }
 }