diff options
Diffstat (limited to 'java/sca')
4 files changed, 36 insertions, 3 deletions
diff --git a/java/sca/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringImplementation.java b/java/sca/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringImplementation.java index 56af997fae..ac3ab74f73 100644 --- a/java/sca/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringImplementation.java +++ b/java/sca/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringImplementation.java @@ -29,6 +29,7 @@ import org.apache.tuscany.sca.assembly.Reference; import org.apache.tuscany.sca.assembly.Service; import org.apache.tuscany.sca.assembly.impl.ImplementationImpl; import org.apache.tuscany.sca.implementation.spring.xml.SpringBeanElement; +import org.apache.tuscany.sca.policy.util.PolicyHandlerTuple; import org.springframework.core.io.Resource; /** @@ -46,7 +47,8 @@ public class SpringImplementation extends ImplementationImpl implements Implemen // Mapping of Services to Beans private Hashtable<String, SpringBeanElement> serviceMap; // Mapping of property names to Java class - private Hashtable<String, Class> propertyMap; + private Hashtable<String, Class> propertyMap; + private List<PolicyHandlerTuple> policyHandlerClassNames = null; protected SpringImplementation() { this.location = null; @@ -146,4 +148,12 @@ public class SpringImplementation extends ImplementationImpl implements Implemen public Class getPropertyClass(String propertyName) { return propertyMap.get(propertyName); } // end method getPropertyClass + + public List<PolicyHandlerTuple> getPolicyHandlerClassNames() { + return policyHandlerClassNames; + } + + public void setPolicyHandlerClassNames(List<PolicyHandlerTuple> policyHandlerClassNames) { + this.policyHandlerClassNames = policyHandlerClassNames; + } } diff --git a/java/sca/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringImplementationProcessor.java b/java/sca/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringImplementationProcessor.java index c886c0390c..546006e504 100644 --- a/java/sca/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringImplementationProcessor.java +++ b/java/sca/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringImplementationProcessor.java @@ -134,6 +134,9 @@ public class SpringImplementationProcessor implements StAXArtifactProcessor<Spri error("LocationAttributeMissing", reader); //throw new ContributionReadException(MSG_LOCATION_MISSING); } + + // Read policies + policyProcessor.readPolicies(springImplementation, reader); // Skip to end element while (reader.hasNext()) { diff --git a/java/sca/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringImplementationProvider.java b/java/sca/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringImplementationProvider.java index d7724f1723..537a2c9a11 100644 --- a/java/sca/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringImplementationProvider.java +++ b/java/sca/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringImplementationProvider.java @@ -19,10 +19,13 @@ package org.apache.tuscany.sca.implementation.spring; +import java.util.List; + import org.apache.tuscany.sca.core.invocation.ProxyFactory; import org.apache.tuscany.sca.implementation.java.injection.JavaPropertyValueObjectFactory; import org.apache.tuscany.sca.interfacedef.Operation; import org.apache.tuscany.sca.invocation.Invoker; +import org.apache.tuscany.sca.policy.util.PolicyHandlerTuple; import org.apache.tuscany.sca.provider.ImplementationProvider; import org.apache.tuscany.sca.runtime.RuntimeComponent; import org.apache.tuscany.sca.runtime.RuntimeComponentService; @@ -38,6 +41,8 @@ public class SpringImplementationProvider implements ImplementationProvider { // A Spring application context object private AbstractApplicationContext springContext; + + private SpringImplementation implementation; /** * Constructor for the provider - takes a component definition and a Spring implementation @@ -48,9 +53,13 @@ public class SpringImplementationProvider implements ImplementationProvider { public SpringImplementationProvider(RuntimeComponent component, SpringImplementation implementation, ProxyFactory proxyService, - JavaPropertyValueObjectFactory propertyValueObjectFactory) { + JavaPropertyValueObjectFactory propertyValueObjectFactory, + List<PolicyHandlerTuple> policyHandlerClassNames) { super(); + this.implementation = implementation; this.component = component; + this.implementation.setPolicyHandlerClassNames(policyHandlerClassNames); + SCAParentApplicationContext scaParentContext = new SCAParentApplicationContext(component, implementation, proxyService, propertyValueObjectFactory); springContext = new SCAApplicationContext(scaParentContext, implementation.getResource()); diff --git a/java/sca/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringImplementationProviderFactory.java b/java/sca/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringImplementationProviderFactory.java index f2bb1fd6e8..1789b5a4e0 100644 --- a/java/sca/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringImplementationProviderFactory.java +++ b/java/sca/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/SpringImplementationProviderFactory.java @@ -18,6 +18,8 @@ */ package org.apache.tuscany.sca.implementation.spring; +import java.util.List; + import org.apache.tuscany.sca.core.ExtensionPointRegistry; import org.apache.tuscany.sca.core.invocation.ExtensibleProxyFactory; import org.apache.tuscany.sca.core.invocation.ProxyFactory; @@ -26,6 +28,8 @@ import org.apache.tuscany.sca.databinding.DataBindingExtensionPoint; import org.apache.tuscany.sca.databinding.TransformerExtensionPoint; import org.apache.tuscany.sca.databinding.impl.MediatorImpl; import org.apache.tuscany.sca.implementation.java.injection.JavaPropertyValueObjectFactory; +import org.apache.tuscany.sca.policy.util.PolicyHandlerDefinitionsLoader; +import org.apache.tuscany.sca.policy.util.PolicyHandlerTuple; import org.apache.tuscany.sca.provider.ImplementationProvider; import org.apache.tuscany.sca.provider.ImplementationProviderFactory; import org.apache.tuscany.sca.runtime.RuntimeComponent; @@ -39,6 +43,7 @@ public class SpringImplementationProviderFactory implements ImplementationProvid private ProxyFactory proxyFactory; private JavaPropertyValueObjectFactory propertyFactory; + private List<PolicyHandlerTuple> policyHandlerClassNames = null; /** * Simple constructor @@ -55,6 +60,8 @@ public class SpringImplementationProviderFactory implements ImplementationProvid TransformerExtensionPoint transformers = extensionPoints.getExtensionPoint(TransformerExtensionPoint.class); MediatorImpl mediator = new MediatorImpl(dataBindings, transformers); propertyFactory = new JavaPropertyValueObjectFactory(mediator); + + policyHandlerClassNames = PolicyHandlerDefinitionsLoader.loadPolicyHandlerClassnames(); } /** @@ -66,7 +73,11 @@ public class SpringImplementationProviderFactory implements ImplementationProvid */ public ImplementationProvider createImplementationProvider(RuntimeComponent component, SpringImplementation implementation) { - return new SpringImplementationProvider(component, implementation, proxyFactory, propertyFactory); + return new SpringImplementationProvider(component, + implementation, + proxyFactory, + propertyFactory, + policyHandlerClassNames); } /** |