From 23abf7a83adcde552d434800ba489f6b082d4ee9 Mon Sep 17 00:00:00 2001 From: slaws Date: Thu, 24 Feb 2011 17:00:59 +0000 Subject: Adding a test to start looking if we can support Gang's scenario in 2.x. The idea is to prod each of the injection points to make sure we do the right thing at each stage. git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1074213 13f79535-47bb-0310-9956-ffa450edef68 --- .../src/main/java/sample/Helloworld.java | 28 +++++++ .../src/main/java/sample/HelloworldImpl.java | 42 +++++++++++ .../java/sample/ImplementationGenericPolicy.java | 57 +++++++++++++++ .../ImplementationGenericPolicyProcessor.java | 80 ++++++++++++++++++++ .../java/sample/InteractionBindingWSPolicy.java | 57 +++++++++++++++ .../InteractionBindingWSPolicyProcessor.java | 76 +++++++++++++++++++ .../InteractionBindingWSPolicyProviderFactory.java | 68 +++++++++++++++++ ...nteractionBindingWSReferencePolicyProvider.java | 85 ++++++++++++++++++++++ .../InteractionBindingWSServicePolicyProvider.java | 80 ++++++++++++++++++++ .../main/java/sample/InteractionGenericPolicy.java | 57 +++++++++++++++ .../sample/InteractionGenericPolicyProcessor.java | 76 +++++++++++++++++++ .../src/main/java/sample/TestAxisHandler.java | 43 +++++++++++ .../main/java/sample/TestPolicyInterceptor.java | 80 ++++++++++++++++++++ .../main/resources/META-INF/sca-contribution.xml | 25 +++++++ ...ca.contribution.processor.StAXArtifactProcessor | 20 +++++ ....apache.tuscany.sca.definitions.xml.Definitions | 17 +++++ ...ache.tuscany.sca.provider.PolicyProviderFactory | 18 +++++ .../src/main/resources/definitions.xml | 60 +++++++++++++++ .../src/main/resources/helloworld.composite | 50 +++++++++++++ .../src/test/java/sample/HelloworldTestCase.java | 48 ++++++++++++ 20 files changed, 1067 insertions(+) create mode 100644 sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/java/sample/Helloworld.java create mode 100644 sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/java/sample/HelloworldImpl.java create mode 100644 sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/java/sample/ImplementationGenericPolicy.java create mode 100644 sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/java/sample/ImplementationGenericPolicyProcessor.java create mode 100644 sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/java/sample/InteractionBindingWSPolicy.java create mode 100644 sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/java/sample/InteractionBindingWSPolicyProcessor.java create mode 100644 sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/java/sample/InteractionBindingWSPolicyProviderFactory.java create mode 100644 sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/java/sample/InteractionBindingWSReferencePolicyProvider.java create mode 100644 sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/java/sample/InteractionBindingWSServicePolicyProvider.java create mode 100644 sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/java/sample/InteractionGenericPolicy.java create mode 100644 sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/java/sample/InteractionGenericPolicyProcessor.java create mode 100644 sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/java/sample/TestAxisHandler.java create mode 100644 sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/java/sample/TestPolicyInterceptor.java create mode 100644 sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/resources/META-INF/sca-contribution.xml create mode 100644 sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor create mode 100644 sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/resources/META-INF/services/org.apache.tuscany.sca.definitions.xml.Definitions create mode 100644 sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/resources/META-INF/services/org.apache.tuscany.sca.provider.PolicyProviderFactory create mode 100644 sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/resources/definitions.xml create mode 100644 sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/resources/helloworld.composite create mode 100644 sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/test/java/sample/HelloworldTestCase.java (limited to 'sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src') diff --git a/sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/java/sample/Helloworld.java b/sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/java/sample/Helloworld.java new file mode 100644 index 0000000000..f4e8c50448 --- /dev/null +++ b/sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/java/sample/Helloworld.java @@ -0,0 +1,28 @@ +/* + * 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 sample; + +import org.oasisopen.sca.annotation.Remotable; + +@Remotable +public interface Helloworld { + + String sayHello(String name); + +} diff --git a/sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/java/sample/HelloworldImpl.java b/sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/java/sample/HelloworldImpl.java new file mode 100644 index 0000000000..0b3fa55b79 --- /dev/null +++ b/sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/java/sample/HelloworldImpl.java @@ -0,0 +1,42 @@ +/* + * 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 sample; + +import org.oasisopen.sca.annotation.Property; +import org.oasisopen.sca.annotation.Reference; + + +public class HelloworldImpl implements Helloworld { + + @Reference(required=false) + protected Helloworld hwRef; + + @Property + protected String componentName; + + public String sayHello(String name) { + String returnString = name + "->" + componentName; + if (hwRef != null){ + return hwRef.sayHello(returnString); + } else { + return returnString; + } + } + +} diff --git a/sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/java/sample/ImplementationGenericPolicy.java b/sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/java/sample/ImplementationGenericPolicy.java new file mode 100644 index 0000000000..2014c9f27c --- /dev/null +++ b/sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/java/sample/ImplementationGenericPolicy.java @@ -0,0 +1,57 @@ +/* + * 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 sample; + +import javax.xml.namespace.QName; + +import org.apache.tuscany.sca.assembly.xml.Constants; + +/** + * A test policy that can be applied at various places along the message + * handling chain + * + * @version $Rev: 916315 $ $Date: 2010-02-25 15:12:44 +0000 (Thu, 25 Feb 2010) $ + */ +public class ImplementationGenericPolicy { + public static final QName NAME = new QName(Constants.SCA11_TUSCANY_NS, "implementationGenericPolicy"); + + private String name; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public QName getSchemaName() { + return NAME; + } + + public boolean isUnresolved() { + return false; + } + + public void setUnresolved(boolean unresolved) { + // it's always resolved + } + +} diff --git a/sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/java/sample/ImplementationGenericPolicyProcessor.java b/sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/java/sample/ImplementationGenericPolicyProcessor.java new file mode 100644 index 0000000000..313bf13bb5 --- /dev/null +++ b/sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/java/sample/ImplementationGenericPolicyProcessor.java @@ -0,0 +1,80 @@ +/* + * 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 sample; + +import static javax.xml.stream.XMLStreamConstants.END_ELEMENT; +import static javax.xml.stream.XMLStreamConstants.START_ELEMENT; + +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.xml.Constants; +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; +import org.apache.tuscany.sca.core.FactoryExtensionPoint; +import org.apache.tuscany.sca.monitor.Monitor; + +public class ImplementationGenericPolicyProcessor implements StAXArtifactProcessor { + + public ImplementationGenericPolicyProcessor(FactoryExtensionPoint modelFactories) { + } + + public QName getArtifactType() { + return ImplementationGenericPolicy.NAME; + } + + public Class getModelType() { + return ImplementationGenericPolicy.class; + } + + public ImplementationGenericPolicy read(XMLStreamReader reader, ProcessorContext context) throws ContributionReadException, XMLStreamException { + ImplementationGenericPolicy policy = new ImplementationGenericPolicy(); + + String name = reader.getAttributeValue(null, "name"); + + if (name != null) { + policy.setName(name); + } else { + Monitor.error(context.getMonitor(), + this, + "policy-security-validation-messages", + "RequiredAttributeKeyStoreTypeMissing"); + } + + return policy; + } + + public void write(ImplementationGenericPolicy model, XMLStreamWriter writer, ProcessorContext context) throws ContributionWriteException, + XMLStreamException { + // TODO + + } + + public void resolve(ImplementationGenericPolicy model, ModelResolver resolver, ProcessorContext context) throws ContributionResolveException { + // It's resolved when it's read + } + +} diff --git a/sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/java/sample/InteractionBindingWSPolicy.java b/sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/java/sample/InteractionBindingWSPolicy.java new file mode 100644 index 0000000000..f70de96aa4 --- /dev/null +++ b/sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/java/sample/InteractionBindingWSPolicy.java @@ -0,0 +1,57 @@ +/* + * 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 sample; + +import javax.xml.namespace.QName; + +import org.apache.tuscany.sca.assembly.xml.Constants; + +/** + * A test policy that can be applied at various places along the message + * handling chain + * + * @version $Rev: 916315 $ $Date: 2010-02-25 15:12:44 +0000 (Thu, 25 Feb 2010) $ + */ +public class InteractionBindingWSPolicy { + public static final QName NAME = new QName(Constants.SCA11_TUSCANY_NS, "interactionBindingWSPolicy"); + + private String name; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public QName getSchemaName() { + return NAME; + } + + public boolean isUnresolved() { + return false; + } + + public void setUnresolved(boolean unresolved) { + // it's always resolved + } + +} diff --git a/sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/java/sample/InteractionBindingWSPolicyProcessor.java b/sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/java/sample/InteractionBindingWSPolicyProcessor.java new file mode 100644 index 0000000000..6d8f450e2a --- /dev/null +++ b/sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/java/sample/InteractionBindingWSPolicyProcessor.java @@ -0,0 +1,76 @@ +/* + * 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 sample; + +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.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; +import org.apache.tuscany.sca.core.FactoryExtensionPoint; +import org.apache.tuscany.sca.monitor.Monitor; + +public class InteractionBindingWSPolicyProcessor implements StAXArtifactProcessor { + + public InteractionBindingWSPolicyProcessor(FactoryExtensionPoint modelFactories) { + } + + public QName getArtifactType() { + return InteractionBindingWSPolicy.NAME; + } + + public Class getModelType() { + return InteractionBindingWSPolicy.class; + } + + public InteractionBindingWSPolicy read(XMLStreamReader reader, ProcessorContext context) throws ContributionReadException, XMLStreamException { + InteractionBindingWSPolicy policy = new InteractionBindingWSPolicy(); + + String name = reader.getAttributeValue(null, "name"); + + if (name != null) { + policy.setName(name); + } else { + Monitor.error(context.getMonitor(), + this, + "policy-security-validation-messages", + "RequiredAttributeKeyStoreTypeMissing"); + } + + return policy; + } + + public void write(InteractionBindingWSPolicy model, XMLStreamWriter writer, ProcessorContext context) throws ContributionWriteException, + XMLStreamException { + // TODO + + } + + public void resolve(InteractionBindingWSPolicy model, ModelResolver resolver, ProcessorContext context) throws ContributionResolveException { + // It's resolved when it's read + } + +} diff --git a/sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/java/sample/InteractionBindingWSPolicyProviderFactory.java b/sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/java/sample/InteractionBindingWSPolicyProviderFactory.java new file mode 100644 index 0000000000..3483b8b8ce --- /dev/null +++ b/sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/java/sample/InteractionBindingWSPolicyProviderFactory.java @@ -0,0 +1,68 @@ +/* + * 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 sample; + +import org.apache.tuscany.sca.assembly.Endpoint; +import org.apache.tuscany.sca.assembly.EndpointReference; +import org.apache.tuscany.sca.core.ExtensionPointRegistry; +import org.apache.tuscany.sca.provider.PolicyProvider; +import org.apache.tuscany.sca.provider.PolicyProviderFactory; +import org.apache.tuscany.sca.runtime.RuntimeComponent; + +/** + * @version $Rev: 792622 $ $Date: 2009-07-09 19:14:18 +0100 (Thu, 09 Jul 2009) $ + */ +public class InteractionBindingWSPolicyProviderFactory implements PolicyProviderFactory { + private ExtensionPointRegistry registry; + + public InteractionBindingWSPolicyProviderFactory(ExtensionPointRegistry registry) { + super(); + this.registry = registry; + } + + /** + * @see org.apache.tuscany.sca.provider.PolicyProviderFactory#createImplementationPolicyProvider(org.apache.tuscany.sca.runtime.RuntimeComponent, org.apache.tuscany.sca.assembly.Implementation) + */ + public PolicyProvider createImplementationPolicyProvider(RuntimeComponent component) { + return null; + } + + /** + * @see org.apache.tuscany.sca.provider.PolicyProviderFactory#createReferencePolicyProvider(org.apache.tuscany.sca.runtime.RuntimeComponent, org.apache.tuscany.sca.runtime.RuntimeComponentReference, org.apache.tuscany.sca.assembly.Binding) + */ + public PolicyProvider createReferencePolicyProvider(EndpointReference endpointReference) { + return new InteractionBindingWSReferencePolicyProvider(endpointReference); + } + + /** + * @see org.apache.tuscany.sca.provider.PolicyProviderFactory#createServicePolicyProvider(org.apache.tuscany.sca.runtime.RuntimeComponent, org.apache.tuscany.sca.runtime.RuntimeComponentService, org.apache.tuscany.sca.assembly.Binding) + */ + public PolicyProvider createServicePolicyProvider(Endpoint endpoint) { + return new InteractionBindingWSServicePolicyProvider(endpoint); + } + + /** + * @see org.apache.tuscany.sca.provider.ProviderFactory#getModelType() + */ + public Class getModelType() { + return InteractionBindingWSPolicy.class; + } + +} diff --git a/sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/java/sample/InteractionBindingWSReferencePolicyProvider.java b/sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/java/sample/InteractionBindingWSReferencePolicyProvider.java new file mode 100644 index 0000000000..e3c8393fbb --- /dev/null +++ b/sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/java/sample/InteractionBindingWSReferencePolicyProvider.java @@ -0,0 +1,85 @@ +/* + * 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 sample; + +import java.util.List; + +import org.apache.axis2.context.ConfigurationContext; +import org.apache.axis2.description.AxisService; +import org.apache.axis2.engine.AxisConfiguration; +import org.apache.tuscany.sca.assembly.EndpointReference; +import org.apache.tuscany.sca.binding.ws.axis2.provider.Axis2BaseBindingProvider; +import org.apache.tuscany.sca.interfacedef.Operation; +import org.apache.tuscany.sca.invocation.Phase; +import org.apache.tuscany.sca.invocation.PhasedInterceptor; +import org.apache.tuscany.sca.provider.BasePolicyProvider; + +/** + * @version $Rev: 792641 $ $Date: 2009-07-09 20:13:08 +0100 (Thu, 09 Jul 2009) $ + */ +public class InteractionBindingWSReferencePolicyProvider extends BasePolicyProvider { + + private EndpointReference endpointReference; + + public InteractionBindingWSReferencePolicyProvider(EndpointReference endpointReference) { + super(InteractionBindingWSPolicy.class, endpointReference); + + this.endpointReference = endpointReference; + } + + public void configureBinding(Object configuration) { + Axis2BaseBindingProvider bindingProvider = (Axis2BaseBindingProvider)configuration; + ConfigurationContext axisConfigurationContext = bindingProvider.getAxisConfigurationContext(); + AxisConfiguration axisConfiguration = axisConfigurationContext.getAxisConfiguration(); + List outPhases = axisConfiguration.getOutFlowPhases(); + outPhases.get(0).addHandler(new TestAxisHandler("Reference OutFlow Handler")); + List inPhases = axisConfiguration.getInFlowPhases(); + inPhases.get(0).addHandler(new TestAxisHandler("Reference InFlow Handler")); + } + + public PhasedInterceptor createBindingInterceptor() { + List policies = findPolicies(); + + if (policies.isEmpty()){ + return null; + } else { + return new TestPolicyInterceptor(subject, + getContext(), + null, + policies, + Phase.REFERENCE_BINDING_POLICY); + } + } + + public PhasedInterceptor createInterceptor(Operation operation) { + List policies = findPolicies(); + + if (policies.isEmpty()){ + return null; + } else { + return new TestPolicyInterceptor(subject, + getContext(), + operation, + policies, + Phase.REFERENCE_POLICY); + } + } + +} diff --git a/sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/java/sample/InteractionBindingWSServicePolicyProvider.java b/sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/java/sample/InteractionBindingWSServicePolicyProvider.java new file mode 100644 index 0000000000..47d0a7378a --- /dev/null +++ b/sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/java/sample/InteractionBindingWSServicePolicyProvider.java @@ -0,0 +1,80 @@ +/* + * 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 sample; + +import java.util.List; + +import org.apache.axis2.context.ConfigurationContext; +import org.apache.axis2.engine.AxisConfiguration; +import org.apache.tuscany.sca.assembly.Endpoint; +import org.apache.tuscany.sca.binding.ws.axis2.provider.Axis2BaseBindingProvider; +import org.apache.tuscany.sca.interfacedef.Operation; +import org.apache.tuscany.sca.invocation.Phase; +import org.apache.tuscany.sca.invocation.PhasedInterceptor; +import org.apache.tuscany.sca.provider.BasePolicyProvider; + +/** + * @version $Rev: 792641 $ $Date: 2009-07-09 20:13:08 +0100 (Thu, 09 Jul 2009) $ + */ +public class InteractionBindingWSServicePolicyProvider extends BasePolicyProvider { + + public InteractionBindingWSServicePolicyProvider(Endpoint endpoint) { + super(InteractionBindingWSPolicy.class, endpoint); + } + + public void configureBinding(Object configuration) { + Axis2BaseBindingProvider bindingProvider = (Axis2BaseBindingProvider)configuration; + ConfigurationContext axisConfigurationContext = bindingProvider.getAxisConfigurationContext(); + AxisConfiguration axisConfiguration = axisConfigurationContext.getAxisConfiguration(); + List inPhases = axisConfiguration.getInFlowPhases(); + inPhases.get(0).addHandler(new TestAxisHandler("Service InFlow Handler")); + List outPhases = axisConfiguration.getOutFlowPhases(); + outPhases.get(0).addHandler(new TestAxisHandler("Service OutFlow Handler")); + } + + public PhasedInterceptor createBindingInterceptor() { + List policies = findPolicies(); + + if (policies.isEmpty()){ + return null; + } else { + return new TestPolicyInterceptor(subject, + getContext(), + null, + policies, + Phase.SERVICE_BINDING_POLICY); + } + } + + public PhasedInterceptor createInterceptor(Operation operation) { + List policies = findPolicies(); + + if (policies.isEmpty()){ + return null; + } else { + return new TestPolicyInterceptor(subject, + getContext(), + operation, + policies, + Phase.SERVICE_POLICY); + } + } + +} diff --git a/sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/java/sample/InteractionGenericPolicy.java b/sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/java/sample/InteractionGenericPolicy.java new file mode 100644 index 0000000000..bde92502e3 --- /dev/null +++ b/sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/java/sample/InteractionGenericPolicy.java @@ -0,0 +1,57 @@ +/* + * 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 sample; + +import javax.xml.namespace.QName; + +import org.apache.tuscany.sca.assembly.xml.Constants; + +/** + * A test policy that can be applied at various places along the message + * handling chain + * + * @version $Rev: 916315 $ $Date: 2010-02-25 15:12:44 +0000 (Thu, 25 Feb 2010) $ + */ +public class InteractionGenericPolicy { + public static final QName NAME = new QName(Constants.SCA11_TUSCANY_NS, "interactionGenericPolicy"); + + private String name; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public QName getSchemaName() { + return NAME; + } + + public boolean isUnresolved() { + return false; + } + + public void setUnresolved(boolean unresolved) { + // it's always resolved + } + +} diff --git a/sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/java/sample/InteractionGenericPolicyProcessor.java b/sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/java/sample/InteractionGenericPolicyProcessor.java new file mode 100644 index 0000000000..30770d9cdf --- /dev/null +++ b/sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/java/sample/InteractionGenericPolicyProcessor.java @@ -0,0 +1,76 @@ +/* + * 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 sample; + +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.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; +import org.apache.tuscany.sca.core.FactoryExtensionPoint; +import org.apache.tuscany.sca.monitor.Monitor; + +public class InteractionGenericPolicyProcessor implements StAXArtifactProcessor { + + public InteractionGenericPolicyProcessor(FactoryExtensionPoint modelFactories) { + } + + public QName getArtifactType() { + return InteractionGenericPolicy.NAME; + } + + public Class getModelType() { + return InteractionGenericPolicy.class; + } + + public InteractionGenericPolicy read(XMLStreamReader reader, ProcessorContext context) throws ContributionReadException, XMLStreamException { + InteractionGenericPolicy policy = new InteractionGenericPolicy(); + + String name = reader.getAttributeValue(null, "name"); + + if (name != null) { + policy.setName(name); + } else { + Monitor.error(context.getMonitor(), + this, + "policy-security-validation-messages", + "RequiredAttributeKeyStoreTypeMissing"); + } + + return policy; + } + + public void write(InteractionGenericPolicy model, XMLStreamWriter writer, ProcessorContext context) throws ContributionWriteException, + XMLStreamException { + // TODO + + } + + public void resolve(InteractionGenericPolicy model, ModelResolver resolver, ProcessorContext context) throws ContributionResolveException { + // It's resolved when it's read + } + +} diff --git a/sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/java/sample/TestAxisHandler.java b/sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/java/sample/TestAxisHandler.java new file mode 100644 index 0000000000..2f0fd930d3 --- /dev/null +++ b/sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/java/sample/TestAxisHandler.java @@ -0,0 +1,43 @@ +/* + * 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 sample; + +import org.apache.axis2.AxisFault; +import org.apache.axis2.context.MessageContext; +import org.apache.axis2.handlers.AbstractHandler; + +/** + * An Axis handler to show that policy can add one of needs be + * + * @version $Rev: 881959 $ $Date: 2009-11-18 22:07:09 +0000 (Wed, 18 Nov 2009) $ + */ +public class TestAxisHandler extends AbstractHandler +{ + private String name; + + public TestAxisHandler(String name) + { + this.name = name; + } + + public InvocationResponse invoke(MessageContext msgContext) throws AxisFault { + System.out.println("TestAxisHandler.invoke() " + name); + return InvocationResponse.CONTINUE; + } +} diff --git a/sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/java/sample/TestPolicyInterceptor.java b/sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/java/sample/TestPolicyInterceptor.java new file mode 100644 index 0000000000..91df889a0b --- /dev/null +++ b/sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/java/sample/TestPolicyInterceptor.java @@ -0,0 +1,80 @@ +/* + * 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 sample; + +import java.util.List; +import java.util.logging.ConsoleHandler; +import java.util.logging.Handler; +import java.util.logging.Level; +import java.util.logging.Logger; + +import javax.xml.namespace.QName; + +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.core.invocation.InterceptorAsyncImpl; +import org.apache.tuscany.sca.interfacedef.Operation; +import org.apache.tuscany.sca.invocation.Invoker; +import org.apache.tuscany.sca.invocation.Message; +import org.apache.tuscany.sca.invocation.PhasedInterceptor; +import org.apache.tuscany.sca.policy.PolicySubject; + +/** + * Policy interceptor that tests the locations where interceptors can be + * added + * + * @version $Rev: 881959 $ $Date: 2009-11-18 22:07:09 +0000 (Wed, 18 Nov 2009) $ + */ +public class TestPolicyInterceptor extends InterceptorAsyncImpl implements PhasedInterceptor{ + //public static final QName policySetQName = new QName(JDKLoggingPolicy.SCA11_TUSCANY_NS, loggingPolicy); + + private Operation operation; + private List policies; + private PolicySubject subject; + private String context; + private String phase; + + public TestPolicyInterceptor(PolicySubject subject, + String context, + Operation operation, + List policies, + String phase) { + super(); + this.operation = operation; + this.policies = policies; + this.subject = subject; + this.phase = phase; + this.context = context; + } + + public Message processRequest(Message msg) { + System.out.println("TestPolicyInterceptor.processRequest() " + context + " @ " + phase); + return msg; + } + + public Message processResponse(Message msg) { + System.out.println("TestPolicyInterceptor.processResponse() " + context + " @ " + phase); + return msg; + } + + public String getPhase() { + return phase; + } +} diff --git a/sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/resources/META-INF/sca-contribution.xml b/sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/resources/META-INF/sca-contribution.xml new file mode 100644 index 0000000000..95c32fb5bf --- /dev/null +++ b/sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/resources/META-INF/sca-contribution.xml @@ -0,0 +1,25 @@ + + + + + + + diff --git a/sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor b/sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor new file mode 100644 index 0000000000..e3f31ae8d7 --- /dev/null +++ b/sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/resources/META-INF/services/org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor @@ -0,0 +1,20 @@ +# 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. + +sample.ImplementationGenericPolicyProcessor;qname=http://tuscany.apache.org/xmlns/sca/1.1#implementationGenericPolicy,model=sample.ImplementationGenericPolicy +sample.InteractionGenericPolicyProcessor;qname=http://tuscany.apache.org/xmlns/sca/1.1#interactionGenericPolicy,model=sample.InteractionGenericPolicy +sample.InteractionBindingWSPolicyProcessor;qname=http://tuscany.apache.org/xmlns/sca/1.1#interactionBindingWSPolicy,model=sample.InteractionBindingWSPolicy \ No newline at end of file diff --git a/sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/resources/META-INF/services/org.apache.tuscany.sca.definitions.xml.Definitions b/sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/resources/META-INF/services/org.apache.tuscany.sca.definitions.xml.Definitions new file mode 100644 index 0000000000..f362b64a1f --- /dev/null +++ b/sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/resources/META-INF/services/org.apache.tuscany.sca.definitions.xml.Definitions @@ -0,0 +1,17 @@ +# 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. +definitions.xml diff --git a/sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/resources/META-INF/services/org.apache.tuscany.sca.provider.PolicyProviderFactory b/sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/resources/META-INF/services/org.apache.tuscany.sca.provider.PolicyProviderFactory new file mode 100644 index 0000000000..cbfb70c346 --- /dev/null +++ b/sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/resources/META-INF/services/org.apache.tuscany.sca.provider.PolicyProviderFactory @@ -0,0 +1,18 @@ +# 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. + +sample.InteractionBindingWSPolicyProviderFactory;model=sample.InteractionBindingWSPolicy \ No newline at end of file diff --git a/sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/resources/definitions.xml b/sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/resources/definitions.xml new file mode 100644 index 0000000000..f37fde76ab --- /dev/null +++ b/sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/resources/definitions.xml @@ -0,0 +1,60 @@ + + + + + + + An intent that targets policy interceptors at the implementation + + + + + + An intent that targets policy interceptors at the binding generically + + + + + + An intent that targets policy interceptors at binding.ws + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/resources/helloworld.composite b/sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/resources/helloworld.composite new file mode 100644 index 0000000000..47488f8bbd --- /dev/null +++ b/sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/main/resources/helloworld.composite @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/test/java/sample/HelloworldTestCase.java b/sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/test/java/sample/HelloworldTestCase.java new file mode 100644 index 0000000000..fed33b38e2 --- /dev/null +++ b/sca-java-2.x/trunk/unreleased/testing/itest/interceptors/src/test/java/sample/HelloworldTestCase.java @@ -0,0 +1,48 @@ +/* + * 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 sample; + +import org.junit.Assert; + +import org.apache.tuscany.sca.Node; +import org.apache.tuscany.sca.TuscanyRuntime; +import org.junit.Test; +import org.oasisopen.sca.NoSuchServiceException; + +public class HelloworldTestCase { + + @Test + public void testSayHello() throws NoSuchServiceException { + + // Run the SCA composite in a Tuscany runtime + Node node = TuscanyRuntime.runComposite("helloworld.composite", "target/classes"); + try { + + // Get the Helloworld service proxy + Helloworld helloworld = node.getService(Helloworld.class, "HelloworldComponent1"); + + // test that it works as expected + Assert.assertEquals("Fred->HelloworldComponent1->HelloworldComponent2->HelloworldComponent3", helloworld.sayHello("Fred")); + + } finally { + // Stop the Tuscany runtime Node + node.stop(); + } + } +} -- cgit v1.2.3