summaryrefslogtreecommitdiffstats
path: root/sca-java-2.x/tags/2.0-Beta1-RC3/modules/policy-wspolicy/src/main/java/org/apache/tuscany
diff options
context:
space:
mode:
Diffstat (limited to 'sca-java-2.x/tags/2.0-Beta1-RC3/modules/policy-wspolicy/src/main/java/org/apache/tuscany')
-rw-r--r--sca-java-2.x/tags/2.0-Beta1-RC3/modules/policy-wspolicy/src/main/java/org/apache/tuscany/sca/policy/wspolicy/WSPolicy.java74
-rw-r--r--sca-java-2.x/tags/2.0-Beta1-RC3/modules/policy-wspolicy/src/main/java/org/apache/tuscany/sca/policy/wspolicy/WSPolicyBuilder.java173
-rw-r--r--sca-java-2.x/tags/2.0-Beta1-RC3/modules/policy-wspolicy/src/main/java/org/apache/tuscany/sca/policy/wspolicy/xml/WSPolicyProcessor.java180
3 files changed, 0 insertions, 427 deletions
diff --git a/sca-java-2.x/tags/2.0-Beta1-RC3/modules/policy-wspolicy/src/main/java/org/apache/tuscany/sca/policy/wspolicy/WSPolicy.java b/sca-java-2.x/tags/2.0-Beta1-RC3/modules/policy-wspolicy/src/main/java/org/apache/tuscany/sca/policy/wspolicy/WSPolicy.java
deleted file mode 100644
index 6938b72d82..0000000000
--- a/sca-java-2.x/tags/2.0-Beta1-RC3/modules/policy-wspolicy/src/main/java/org/apache/tuscany/sca/policy/wspolicy/WSPolicy.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * 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.ArrayList;
-import java.util.List;
-
-import javax.xml.namespace.QName;
-
-import org.apache.neethi.Policy;
-import org.apache.tuscany.sca.policy.PolicyContainer;
-
-/**
- * The WS-Policy model. Currently defers to the Neethi policy model under the covers.
- */
-public class WSPolicy implements PolicyContainer {
-
- 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);
-
- private Policy neethiPolicy;
- private List<Object> policyAssertions = new ArrayList<Object>();
-
- public QName getSchemaName() {
- return WS_POLICY_QNAME;
- }
-
- public Policy getNeethiPolicy() {
- return neethiPolicy;
- }
-
- public void setNeethiPolicy(Policy neethiPolicy) {
- this.neethiPolicy = neethiPolicy;
- }
-
- public List<Object> getPolicyAssertions(){
- return policyAssertions;
- }
-
- @Override
- public String toString() {
- return "WSPolicy [" + neethiPolicy + "]";
- }
-
- public <T> Object getChildPolicy(Class<T> policyType) {
- for (Object alternative : policyAssertions){
- for (Object policy : (List<Object>)alternative){
- if (policyType.isInstance(policy)){
- return policy;
- }
- }
- }
- return null;
- }
-}
diff --git a/sca-java-2.x/tags/2.0-Beta1-RC3/modules/policy-wspolicy/src/main/java/org/apache/tuscany/sca/policy/wspolicy/WSPolicyBuilder.java b/sca-java-2.x/tags/2.0-Beta1-RC3/modules/policy-wspolicy/src/main/java/org/apache/tuscany/sca/policy/wspolicy/WSPolicyBuilder.java
deleted file mode 100644
index d6bd710ed9..0000000000
--- a/sca-java-2.x/tags/2.0-Beta1-RC3/modules/policy-wspolicy/src/main/java/org/apache/tuscany/sca/policy/wspolicy/WSPolicyBuilder.java
+++ /dev/null
@@ -1,173 +0,0 @@
-/*
- * 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.ArrayList;
-import java.util.List;
-
-import javax.xml.namespace.QName;
-
-import org.apache.neethi.Policy;
-import org.apache.tuscany.sca.assembly.Component;
-import org.apache.tuscany.sca.assembly.Endpoint;
-import org.apache.tuscany.sca.assembly.EndpointReference;
-import org.apache.tuscany.sca.assembly.Implementation;
-import org.apache.tuscany.sca.assembly.builder.BuilderContext;
-import org.apache.tuscany.sca.assembly.builder.PolicyBuilder;
-import org.apache.tuscany.sca.policy.PolicyExpression;
-import org.apache.tuscany.sca.policy.PolicySet;
-import org.apache.tuscany.sca.policy.PolicySubject;
-
-/**
- * Processing for WS-Policy objects
- * TBD
- */
-public class WSPolicyBuilder implements PolicyBuilder<Policy> {
-
- public boolean build(Endpoint endpoint, BuilderContext context) {
- List<WSPolicy> polices = getPolicies(endpoint);
- System.out.println(endpoint + ": " + polices);
- return true;
- }
-
- public boolean build(EndpointReference endpointReference, BuilderContext context) {
- List<WSPolicy> polices = getPolicies(endpointReference);
- System.out.println(endpointReference + ": " + polices);
- return true;
- }
-
- public boolean build(Component component, Implementation implementation, BuilderContext context) {
- List<WSPolicy> polices = getPolicies(implementation);
- System.out.println(implementation + ": " + polices);
- return true;
- }
-
- public QName getPolicyType() {
- return WSPolicy.WS_POLICY_QNAME;
- }
-
- public List<QName> getSupportedBindings() {
- return null;
- }
-
- public boolean build(EndpointReference endpointReference, Endpoint endpoint, BuilderContext context) {
-
- // TODO - neethi doesn't include code for matching ws policy
- // cxf have the class Intersector http://svn.apache.org/repos/asf/cxf/trunk/api/src/main/java/org/apache/cxf/ws/policy/Intersector.java
- // but this does its work based on the cxf AssertionBuilders and extension
- // registry mechanism. I don't want to commit to that at the moment.
- //
- // At the moment we do the simplest top level QName based matching
-
- // match EPR policy sets
- for (PolicySet eprPolicySet : endpointReference.getPolicySets()){
- for (PolicySet epPolicySet : endpoint.getPolicySets()){
- if (!build(eprPolicySet, epPolicySet)){
- return false;
- }
- }
- }
-
- // match EP policy sets
- for (PolicySet epPolicySet : endpoint.getPolicySets()){
- for (PolicySet eprPolicySet : endpointReference.getPolicySets()){
- if (!build(epPolicySet, eprPolicySet)){
- return false;
- }
- }
- }
-
- return true;
- }
-
- private boolean build(PolicySet policySet1, PolicySet policySet2){
-
- // extract the ws policy expressions out of the policy sets
- List<PolicyExpression> policyExpressions1 = new ArrayList<PolicyExpression>();
- List<PolicyExpression> policyExpressions2 = new ArrayList<PolicyExpression>();
-
- for (PolicyExpression policyExpression : policySet1.getPolicies()){
- if (policyExpression.getName().equals(getPolicyType())){
- policyExpressions1.add(policyExpression);
- }
- }
-
- for (PolicyExpression policyExpression : policySet2.getPolicies()){
- if (policyExpression.getName().equals(getPolicyType())){
- policyExpressions2.add(policyExpression);
- }
- }
-
- // Match the first set of expressions against the second set
- for (PolicyExpression policyExpression1 : policyExpressions1){
- for (PolicyExpression policyExpression2 : policyExpressions2){
- if (!build((WSPolicy)policyExpression1.getPolicy(),
- (WSPolicy)policyExpression2.getPolicy())){
- return false;
- }
- }
- }
-
- // TODO set the reference policy set to include an interception of the
- // ws policy sets discovered here
- // Do we really need to do this?
- // The method is called in both directions (reference to service and
- // service to reference) so would need to fix that
-
- return true;
- }
-
- private List<WSPolicy> getPolicies(PolicySubject subject) {
- List<WSPolicy> polices = new ArrayList<WSPolicy>();
- for (PolicySet ps : subject.getPolicySets()) {
- for (PolicyExpression exp : ps.getPolicies()) {
- if (getPolicyType().equals(exp.getName())) {
- polices.add((WSPolicy)exp.getPolicy());
- }
- }
- }
- return polices;
- }
-
- private boolean build(WSPolicy wsPolicy1, WSPolicy wsPolicy2){
- // TODO - cheating here as we assume a flat policy structure
- // we've read all the policy assertions into Tuscany models
- // in the reader (without taking account of alternatives)
- // so we just compare those here
- // The real implementation of this comparison depends on how
- // we decide to represent the ws policy hierarchy
-
- for (Object policyAssertion1 : wsPolicy1.getPolicyAssertions()){
- boolean matched = false;
- for (Object policyAssertion2 : wsPolicy2.getPolicyAssertions()){
- if (policyAssertion1.getClass() == policyAssertion2.getClass()){
- matched = true;
- break;
- }
- }
- if(!matched){
- return false;
- }
- }
-
- return true;
- }
-
-}
diff --git a/sca-java-2.x/tags/2.0-Beta1-RC3/modules/policy-wspolicy/src/main/java/org/apache/tuscany/sca/policy/wspolicy/xml/WSPolicyProcessor.java b/sca-java-2.x/tags/2.0-Beta1-RC3/modules/policy-wspolicy/src/main/java/org/apache/tuscany/sca/policy/wspolicy/xml/WSPolicyProcessor.java
deleted file mode 100644
index 48bf932c27..0000000000
--- a/sca-java-2.x/tags/2.0-Beta1-RC3/modules/policy-wspolicy/src/main/java/org/apache/tuscany/sca/policy/wspolicy/xml/WSPolicyProcessor.java
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- * 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 java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.xml.namespace.QName;
-import javax.xml.stream.XMLInputFactory;
-import javax.xml.stream.XMLOutputFactory;
-import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamReader;
-import javax.xml.stream.XMLStreamWriter;
-
-import org.apache.axiom.om.OMElement;
-import org.apache.axiom.om.impl.builder.StAXOMBuilder;
-import org.apache.neethi.Constants;
-import org.apache.neethi.PolicyComponent;
-import org.apache.neethi.PolicyEngine;
-import org.apache.neethi.PolicyOperator;
-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;
-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.processor.StAXAttributeProcessor;
-import org.apache.tuscany.sca.contribution.resolver.ModelResolver;
-import org.apache.tuscany.sca.core.ExtensionPointRegistry;
-import org.apache.tuscany.sca.core.FactoryExtensionPoint;
-import org.apache.tuscany.sca.policy.wspolicy.WSPolicy;
-
-/**
- * Processor for handling xml models of PolicySet definitions
- *
- * @version $Rev$ $Date$
- */
-public class WSPolicyProcessor extends BaseStAXArtifactProcessor implements
- StAXArtifactProcessor<WSPolicy> {
-
- protected ExtensionPointRegistry registry;
- protected StAXArtifactProcessor<Object> extensionProcessor;
- protected StAXAttributeProcessor<Object> extensionAttributeProcessor;
- protected XMLInputFactory inputFactory;
- protected XMLOutputFactory outputFactory;
-
- public WSPolicyProcessor(ExtensionPointRegistry registry,
- StAXArtifactProcessor extensionProcessor,
- StAXAttributeProcessor extensionAttributeProcessor) {
- this.registry = registry;
- this.extensionProcessor = extensionProcessor;
- this.extensionAttributeProcessor = extensionAttributeProcessor;
-
- FactoryExtensionPoint modelFactories = registry.getExtensionPoint(FactoryExtensionPoint.class);
- this.inputFactory = modelFactories.getFactory(XMLInputFactory.class);
- this.outputFactory = modelFactories.getFactory(XMLOutputFactory.class);
- }
-
- public QName getArtifactType() {
- return WSPolicy.WS_POLICY_QNAME;
- }
-
- public Class<WSPolicy> getModelType() {
- return WSPolicy.class;
- }
-
- public WSPolicy read(XMLStreamReader reader, ProcessorContext context)
- throws ContributionReadException, XMLStreamException {
- org.apache.neethi.Policy neethiPolicy = null;
- XMLDocumentStreamReader doc = new XMLDocumentStreamReader(reader);
- StAXOMBuilder builder = new StAXOMBuilder(doc);
- OMElement element = builder.getDocumentElement();
- neethiPolicy = PolicyEngine.getPolicy(element);
-
- WSPolicy wsPolicy = new WSPolicy();
- wsPolicy.setNeethiPolicy(neethiPolicy);
-
- // normalize the neethi tree so we can easily identify
- // the policy alternatives
- neethiPolicy.normalize(true);
-
- // top-level children of ExactlyOne are policy alternatives so
- // for each child create a policy model list and pull the
- // policies out
- for(Object alternative : neethiPolicy.getPolicyComponents()) {
- List<Object> assertions = new ArrayList<Object>();
- readPolicyAssertions(assertions, (PolicyComponent)alternative, context);
- wsPolicy.getPolicyAssertions().add(assertions);
- }
-
-
- return wsPolicy;
- }
-
- private void readPolicyAssertions(List<Object> policyAssertions, PolicyComponent policyComponent, ProcessorContext context){
-
- // recurse into the policy alternatives
- // TODO - lots of todos here as this just walks down the neethi hierarchy
- // looking for assertions to drive Tuscany processors without
- // regard to the policy alternatives. Undecided about whether to
- // commit to prepresenting this hierarchy in Tuscany or whether
- // to rely on neethi
- // Should this be in the builder? Not really as this drives the
- // Tuscany specific readers
- if (policyComponent.getType() != Constants.TYPE_ASSERTION){
- PolicyOperator policyOperator = (PolicyOperator)policyComponent;
- for(Object childComponent : policyOperator.getPolicyComponents()){
- // TODO - create assertion hierarchy in wsPolicy model
- // how we do this depends on if we continue to use neethi
- readPolicyAssertions(policyAssertions, (PolicyComponent)childComponent, context);
- }
- } else {
- try {
- // TODO - not sure we should keep the neethi model but hack for the
- // time being to get Tuscany processors to process the OMElements
- // within the neethi model
- ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
- XMLStreamWriter writer = outputFactory.createXMLStreamWriter(outputStream);
-
- policyComponent.serialize(writer);
-
- ByteArrayInputStream inputStream = new ByteArrayInputStream(outputStream.toByteArray());
- XMLStreamReader reader = inputFactory.createXMLStreamReader(inputStream);
-
- Object neethiAssertion = policyComponent;
- Object tuscanyAssertion = extensionProcessor.read(reader, context);
-
- if (tuscanyAssertion != null) {
- policyAssertions.add(tuscanyAssertion);
- } else {
- // add neethi assertion
- policyAssertions.add(neethiAssertion);
- }
- } catch (Exception ex) {
- // TODO - report the error properly
- ex.printStackTrace();
- }
- }
- }
-
- public void write(WSPolicy wsPolicy, XMLStreamWriter writer, ProcessorContext context)
- throws ContributionWriteException, XMLStreamException {
-
- // Write an <sca:policySet>
- writer.writeStartElement(WSPolicy.WS_POLICY_NS, WSPolicy.WS_POLICY);
-
- if (wsPolicy != null) {
- wsPolicy.getNeethiPolicy().serialize(writer);
- }
-
- writer.writeEndElement();
- }
-
- public void resolve(WSPolicy wsPolicy, ModelResolver resolver, ProcessorContext context)
- throws ContributionResolveException {
-
- // resolve policy assertions
- }
-
-}