summaryrefslogtreecommitdiffstats
path: root/sca-java-2.x/trunk/modules/policy-wspolicy/src/test/java/org/apache/tuscany
diff options
context:
space:
mode:
authorslaws <slaws@13f79535-47bb-0310-9956-ffa450edef68>2010-01-12 15:56:32 +0000
committerslaws <slaws@13f79535-47bb-0310-9956-ffa450edef68>2010-01-12 15:56:32 +0000
commit75d303274d0edc1ffd24cbbd5dd75ec64504bdb2 (patch)
tree9b7a47dfdf46bb89689d6a26493161fab35df8f5 /sca-java-2.x/trunk/modules/policy-wspolicy/src/test/java/org/apache/tuscany
parent0239d7c3b47cf13eb7b013a1910d72067f1e0663 (diff)
Start of extension for handling WS-Policy policies. Based on policy-xml-ws but neither working nor in the build yet. It's currently still using the neethi model but this is wrapped in a Tuscany model now to allow us to break out and process assertions separately. Neethi currently has no function for matching so we need to cast around to see if that is available elsewhere.
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@898390 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'sca-java-2.x/trunk/modules/policy-wspolicy/src/test/java/org/apache/tuscany')
-rw-r--r--sca-java-2.x/trunk/modules/policy-wspolicy/src/test/java/org/apache/tuscany/sca/policy/wspolicy/TestModelResolver.java64
-rw-r--r--sca-java-2.x/trunk/modules/policy-wspolicy/src/test/java/org/apache/tuscany/sca/policy/wspolicy/TuscanyWSPolicyAssertion.java40
-rw-r--r--sca-java-2.x/trunk/modules/policy-wspolicy/src/test/java/org/apache/tuscany/sca/policy/wspolicy/TuscanyWSPolicyAssertionProcessor.java60
-rw-r--r--sca-java-2.x/trunk/modules/policy-wspolicy/src/test/java/org/apache/tuscany/sca/policy/wspolicy/WSPolicyTestCase.java180
-rw-r--r--sca-java-2.x/trunk/modules/policy-wspolicy/src/test/java/org/apache/tuscany/sca/policy/wspolicy/xml/WSPolicyProcessorTestCase.java117
5 files changed, 461 insertions, 0 deletions
diff --git a/sca-java-2.x/trunk/modules/policy-wspolicy/src/test/java/org/apache/tuscany/sca/policy/wspolicy/TestModelResolver.java b/sca-java-2.x/trunk/modules/policy-wspolicy/src/test/java/org/apache/tuscany/sca/policy/wspolicy/TestModelResolver.java
new file mode 100644
index 0000000000..593f56e7f9
--- /dev/null
+++ b/sca-java-2.x/trunk/modules/policy-wspolicy/src/test/java/org/apache/tuscany/sca/policy/wspolicy/TestModelResolver.java
@@ -0,0 +1,64 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.tuscany.sca.policy.wspolicy;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.tuscany.sca.contribution.processor.ProcessorContext;
+import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
+
+
+/**
+ * A default implementation of an artifact resolver, based on a map.
+ *
+ * @version $Rev$ $Date$
+ */
+public class TestModelResolver implements ModelResolver {
+ private static final long serialVersionUID = -7826976465762296634L;
+
+ private Map<Object, Object> map = new HashMap<Object, Object>();
+
+ public TestModelResolver() {
+ }
+
+ public <T> T resolveModel(Class<T> modelClass, T unresolved, ProcessorContext context) {
+ Object resolved = map.get(unresolved);
+ if (resolved != null) {
+
+ // Return the resolved object
+ return modelClass.cast(resolved);
+
+ } else {
+
+ // Return the unresolved object
+ return unresolved;
+ }
+ }
+
+ public void addModel(Object resolved, ProcessorContext context) {
+ map.put(resolved, resolved);
+ }
+
+ public Object removeModel(Object resolved, ProcessorContext context) {
+ return map.remove(resolved);
+ }
+
+}
diff --git a/sca-java-2.x/trunk/modules/policy-wspolicy/src/test/java/org/apache/tuscany/sca/policy/wspolicy/TuscanyWSPolicyAssertion.java b/sca-java-2.x/trunk/modules/policy-wspolicy/src/test/java/org/apache/tuscany/sca/policy/wspolicy/TuscanyWSPolicyAssertion.java
new file mode 100644
index 0000000000..5b4172563a
--- /dev/null
+++ b/sca-java-2.x/trunk/modules/policy-wspolicy/src/test/java/org/apache/tuscany/sca/policy/wspolicy/TuscanyWSPolicyAssertion.java
@@ -0,0 +1,40 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.tuscany.sca.policy.wspolicy;
+
+import javax.xml.namespace.QName;
+import org.apache.tuscany.sca.assembly.Base;
+
+/**
+ * The WS-Policy model. Defers to the Neethi policy model under the covers.
+ */
+public class TuscanyWSPolicyAssertion {
+
+ static final String SCA11_TUSCANY_NS = Base.SCA11_TUSCANY_NS;
+ static final QName TUSCANY_WS_POLICY_ASSERTION_QNAME = new QName(SCA11_TUSCANY_NS, "tuscanyWSPolicyAssertion");
+
+ private String anAttribute;
+
+ public QName getSchemaName() {
+ return TUSCANY_WS_POLICY_ASSERTION_QNAME;
+ }
+
+
+}
diff --git a/sca-java-2.x/trunk/modules/policy-wspolicy/src/test/java/org/apache/tuscany/sca/policy/wspolicy/TuscanyWSPolicyAssertionProcessor.java b/sca-java-2.x/trunk/modules/policy-wspolicy/src/test/java/org/apache/tuscany/sca/policy/wspolicy/TuscanyWSPolicyAssertionProcessor.java
new file mode 100644
index 0000000000..065feb012c
--- /dev/null
+++ b/sca-java-2.x/trunk/modules/policy-wspolicy/src/test/java/org/apache/tuscany/sca/policy/wspolicy/TuscanyWSPolicyAssertionProcessor.java
@@ -0,0 +1,60 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tuscany.sca.policy.wspolicy;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+import javax.xml.stream.XMLStreamWriter;
+import org.apache.tuscany.sca.assembly.Base;
+import org.apache.tuscany.sca.contribution.processor.ContributionReadException;
+import org.apache.tuscany.sca.contribution.processor.ContributionResolveException;
+import org.apache.tuscany.sca.contribution.processor.ContributionWriteException;
+import org.apache.tuscany.sca.contribution.processor.ProcessorContext;
+import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor;
+import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
+
+/**
+ *
+ * @version $Rev$ $Date$
+ */
+public class TuscanyWSPolicyAssertionProcessor implements StAXArtifactProcessor<TuscanyWSPolicyAssertion> {
+
+ public QName getArtifactType() {
+ return new QName(Base.SCA11_TUSCANY_NS, "tuscanyWSPolicyAssertion");
+ }
+
+ public TuscanyWSPolicyAssertion read(XMLStreamReader arg0, ProcessorContext context) throws ContributionReadException, XMLStreamException {
+ return new TuscanyWSPolicyAssertion();
+ }
+
+ public void write(TuscanyWSPolicyAssertion arg0, XMLStreamWriter arg1, ProcessorContext context) throws ContributionWriteException,
+ XMLStreamException {
+ }
+
+ public Class<TuscanyWSPolicyAssertion> getModelType() {
+ // TODO Auto-generated method stub
+ return TuscanyWSPolicyAssertion.class;
+ }
+
+ public void resolve(TuscanyWSPolicyAssertion arg0, ModelResolver arg1, ProcessorContext context) throws ContributionResolveException {
+
+ }
+
+}
diff --git a/sca-java-2.x/trunk/modules/policy-wspolicy/src/test/java/org/apache/tuscany/sca/policy/wspolicy/WSPolicyTestCase.java b/sca-java-2.x/trunk/modules/policy-wspolicy/src/test/java/org/apache/tuscany/sca/policy/wspolicy/WSPolicyTestCase.java
new file mode 100644
index 0000000000..ad49e5bb2d
--- /dev/null
+++ b/sca-java-2.x/trunk/modules/policy-wspolicy/src/test/java/org/apache/tuscany/sca/policy/wspolicy/WSPolicyTestCase.java
@@ -0,0 +1,180 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.tuscany.sca.policy.wspolicy;
+
+import static javax.xml.stream.XMLStreamConstants.START_ELEMENT;
+
+import java.io.StringReader;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamReader;
+
+import junit.framework.TestCase;
+
+import org.apache.tuscany.sca.contribution.processor.ProcessorContext;
+import org.apache.tuscany.sca.core.DefaultExtensionPointRegistry;
+import org.apache.tuscany.sca.policy.wspolicy.xml.WSPolicyProcessor;
+import org.junit.Assert;
+
+/**
+ * Test reading SCA XML assembly documents.
+ *
+ * @version $Rev$ $Date$
+ */
+public class WSPolicyTestCase extends TestCase {
+
+ private static final String WS_POLICY1 =
+ "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + "<definitions xmlns=\"http://docs.oasis-open.org/ns/opencsa/sca/200912\""
+ + " targetNamespace=\"http://test\""
+ + " xmlns:test=\"http://test\""
+ + " xmlns:sca=\"http://docs.oasis-open.org/ns/opencsa/sca/200912\">"
+ + " "
+ + " <policySet name=\"SecureWSPolicy\""
+ + " provides=\"test:confidentiality\""
+ + " appliesTo=\"sca:binding.ws\""
+ + " xmlns=\"http://docs.oasis-open.org/ns/opencsa/sca/200912\""
+ + " xmlns:sp=\"http://schemas.xmlsoap.org/ws/2002/12/secext\""
+ + " xmlns:tuscany=\"http://tuscany.apache.org/xmlns/sca/1.1\""
+ + " xmlns:wsp=\"http://schemas.xmlsoap.org/ws/2004/09/policy\">"
+ + " <wsp:Policy>"
+ + " <wsp:ExactlyOne>"
+ + " <wsp:All>"
+ + " <tuscany:tuscanyWSPolicyAssertion anAttribute=\"fred\"/>"
+ + " <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 static final String WS_POLICY2 =
+ "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + "<definitions xmlns=\"http://docs.oasis-open.org/ns/opencsa/sca/200912\""
+ + " targetNamespace=\"http://test\""
+ + " xmlns:test=\"http://test\""
+ + " xmlns:sca=\"http://docs.oasis-open.org/ns/opencsa/sca/200912\">"
+ + " "
+ + " <policySet name=\"SecureWSPolicy\""
+ + " provides=\"test:confidentiality\""
+ + " appliesTo=\"sca:binding.ws\""
+ + " xmlns=\"http://docs.oasis-open.org/ns/opencsa/sca/200912\""
+ + " xmlns:sp=\"http://schemas.xmlsoap.org/ws/2002/12/secext\""
+ + " xmlns:tuscany=\"http://tuscany.apache.org/xmlns/sca/1.1\""
+ + " xmlns:wsp=\"http://schemas.xmlsoap.org/ws/2004/09/policy\">"
+ + " <wsp:Policy>"
+ + " <wsp:ExactlyOne>"
+ + " <wsp:All>"
+ + " <tuscany:tuscanyWSPolicyAssertion anAttribute=\"jim\"/>"
+ + " <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;
+
+ @Override
+ public void setUp() throws Exception {
+ inputFactory = XMLInputFactory.newInstance();
+ }
+
+ public void testReadWsPolicy() throws Exception {
+ XMLStreamReader reader = inputFactory.createXMLStreamReader(new StringReader(WS_POLICY1));
+ WSPolicyProcessor processor = new WSPolicyProcessor(new DefaultExtensionPointRegistry());
+ Object artifact = null;
+
+ QName name = null;
+ reader.next();
+ while (true) {
+ int event = reader.getEventType();
+ switch (event) {
+ case START_ELEMENT: {
+ name = reader.getName();
+
+ if (WSPolicy.WS_POLICY_QNAME.equals(name)) {
+ artifact = processor.read(reader, new ProcessorContext());
+ }
+
+ break;
+ }
+ }
+
+ if (reader.hasNext()) {
+ reader.next();
+ } else {
+ break;
+ }
+ }
+ assertNotNull(artifact);
+ Assert.assertTrue(artifact instanceof WSPolicy);
+ WSPolicy policy1 = (WSPolicy) artifact;
+
+ reader = inputFactory.createXMLStreamReader(new StringReader(WS_POLICY2));
+
+ reader.next();
+ while (true) {
+ int event = reader.getEventType();
+ switch (event) {
+ case START_ELEMENT: {
+ name = reader.getName();
+
+ if (WSPolicy.WS_POLICY_QNAME.equals(name)) {
+ artifact = processor.read(reader, new ProcessorContext());
+ }
+
+ break;
+ }
+ }
+
+ if (reader.hasNext()) {
+ reader.next();
+ } else {
+ break;
+ }
+ }
+
+ assertNotNull(artifact);
+ Assert.assertTrue(artifact instanceof WSPolicy);
+ WSPolicy policy2 = (WSPolicy) artifact;
+
+
+ }
+}
diff --git a/sca-java-2.x/trunk/modules/policy-wspolicy/src/test/java/org/apache/tuscany/sca/policy/wspolicy/xml/WSPolicyProcessorTestCase.java b/sca-java-2.x/trunk/modules/policy-wspolicy/src/test/java/org/apache/tuscany/sca/policy/wspolicy/xml/WSPolicyProcessorTestCase.java
new file mode 100644
index 0000000000..71af6c52f0
--- /dev/null
+++ b/sca-java-2.x/trunk/modules/policy-wspolicy/src/test/java/org/apache/tuscany/sca/policy/wspolicy/xml/WSPolicyProcessorTestCase.java
@@ -0,0 +1,117 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.tuscany.sca.policy.wspolicy.xml;
+
+import static javax.xml.stream.XMLStreamConstants.START_ELEMENT;
+
+import java.io.StringReader;
+
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamReader;
+
+import junit.framework.TestCase;
+
+import org.apache.tuscany.sca.contribution.processor.ProcessorContext;
+import org.apache.tuscany.sca.core.DefaultExtensionPointRegistry;
+import org.apache.tuscany.sca.policy.wspolicy.WSPolicy;
+import org.apache.tuscany.sca.policy.wspolicy.xml.WSPolicyProcessor;
+import org.junit.Assert;
+
+/**
+ * Test reading SCA XML assembly documents.
+ *
+ * @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/200912\""
+ + " targetNamespace=\"http://test\""
+ + " xmlns:test=\"http://test\""
+ + " xmlns:sca=\"http://docs.oasis-open.org/ns/opencsa/sca/200912\">"
+ + " "
+ + " <policySet name=\"SecureWSPolicy\""
+ + " provides=\"test:confidentiality\""
+ + " appliesTo=\"sca:binding.ws\""
+ + " xmlns=\"http://docs.oasis-open.org/ns/opencsa/sca/200912\""
+ + " 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;
+
+ @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(new DefaultExtensionPointRegistry());
+ Object artifact = null;
+
+ QName name = null;
+ reader.next();
+ while (true) {
+ int event = reader.getEventType();
+ switch (event) {
+ case START_ELEMENT: {
+ name = reader.getName();
+
+ if (WSPolicy.WS_POLICY_QNAME.equals(name)) {
+ artifact = processor.read(reader, new ProcessorContext());
+ }
+
+ break;
+ }
+ }
+
+ if (reader.hasNext()) {
+ reader.next();
+ } else {
+ break;
+ }
+ }
+ assertNotNull(artifact);
+ Assert.assertTrue(artifact instanceof WSPolicy);
+ WSPolicy policy = (WSPolicy) artifact;
+ Assert.assertTrue(policy.getNeethiPolicy().getAlternatives().hasNext());
+ }
+}