From d8df6f699d7c5de11382b5f6dc5f148da523b19e Mon Sep 17 00:00:00 2001 From: ramkumar Date: Wed, 2 Sep 2009 11:57:20 +0000 Subject: Fixes for TUSCANY-3249 - providing on/off feature for multiple application context support git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@810466 13f79535-47bb-0310-9956-ffa450edef68 --- .../introspect/SpringXMLComponentTypeLoader.java | 9 +++++--- .../ConfigurationPropertiesExtensionPoint.java | 2 ++ ...faultConfigurationPropertiesExtensionPoint.java | 8 ++++++- .../spring/invocation/SpringContextStub.java | 12 ++++++----- .../invocation/SpringImplementationProvider.java | 5 +++-- .../SpringImplementationProviderFactory.java | 5 ++++- .../spring/xml/SpringImplementationProcessor.java | 25 ++++++++++++++++------ 7 files changed, 47 insertions(+), 19 deletions(-) (limited to 'branches/sca-java-1.5.1/modules/implementation-spring') diff --git a/branches/sca-java-1.5.1/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/introspect/SpringXMLComponentTypeLoader.java b/branches/sca-java-1.5.1/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/introspect/SpringXMLComponentTypeLoader.java index 4df4e8c964..39445d5c04 100644 --- a/branches/sca-java-1.5.1/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/introspect/SpringXMLComponentTypeLoader.java +++ b/branches/sca-java-1.5.1/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/introspect/SpringXMLComponentTypeLoader.java @@ -91,19 +91,22 @@ public class SpringXMLComponentTypeLoader { private AssemblyFactory assemblyFactory; private JavaInterfaceFactory javaFactory; private PolicyFactory policyFactory; + private boolean isMultipleContextSupported; private SpringBeanIntrospector beanIntrospector; public SpringXMLComponentTypeLoader(ModelFactoryExtensionPoint factories, AssemblyFactory assemblyFactory, JavaInterfaceFactory javaFactory, - PolicyFactory policyFactory) { + PolicyFactory policyFactory, + boolean multipleContextSupport) { super(); this.assemblyFactory = assemblyFactory; this.javaFactory = javaFactory; this.policyFactory = policyFactory; this.contributionFactory = factories.getFactory(ContributionFactory.class); this.xmlInputFactory = factories.getFactory(XMLInputFactory.class); + this.isMultipleContextSupported = multipleContextSupport; } protected Class getImplementationClass() { @@ -338,7 +341,7 @@ public class SpringXMLComponentTypeLoader { if (reader.getAttributeValue(null, "value") != null) { String value = reader.getAttributeValue(null, "value"); constructorArg.addValue(value); - if ((value.indexOf(".xml") != -1)) { + if ((isMultipleContextSupported) && (value.indexOf(".xml") != -1)) { if (bean.getClassName().indexOf(".ClassPathXmlApplicationContext") != -1) { XMLStreamReader creader = getApplicationContextReader(resolver, value); // Read the context definition for the constructor-arg resources @@ -359,7 +362,7 @@ public class SpringXMLComponentTypeLoader { if (constructorArg != null) { constructorArg.addValue(value); // Identify the XML resource specified for the constructor-arg element - if ((value.indexOf(".xml") != -1)) { + if ((isMultipleContextSupported) && (value.indexOf(".xml") != -1)) { if (bean.getClassName().indexOf(".ClassPathXmlApplicationContext") != -1) { XMLStreamReader creader = getApplicationContextReader(resolver, value); // Read the context definition for the constructor-arg resources diff --git a/branches/sca-java-1.5.1/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/ConfigurationPropertiesExtensionPoint.java b/branches/sca-java-1.5.1/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/ConfigurationPropertiesExtensionPoint.java index 0464355565..4fdcb52241 100644 --- a/branches/sca-java-1.5.1/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/ConfigurationPropertiesExtensionPoint.java +++ b/branches/sca-java-1.5.1/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/ConfigurationPropertiesExtensionPoint.java @@ -4,6 +4,8 @@ public interface ConfigurationPropertiesExtensionPoint { boolean isAnnotationSupported(); + boolean isMultipleContextSupported(); + String getSupportedVersion(); } diff --git a/branches/sca-java-1.5.1/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/DefaultConfigurationPropertiesExtensionPoint.java b/branches/sca-java-1.5.1/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/DefaultConfigurationPropertiesExtensionPoint.java index a0e7186eab..94b8e0eb36 100644 --- a/branches/sca-java-1.5.1/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/DefaultConfigurationPropertiesExtensionPoint.java +++ b/branches/sca-java-1.5.1/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/DefaultConfigurationPropertiesExtensionPoint.java @@ -8,11 +8,17 @@ public class DefaultConfigurationPropertiesExtensionPoint implements Configurati } // By default SCA annotations for implementation.spring - // will be supproted. + // will be supproted for Tuscany. public boolean isAnnotationSupported() { return true; } + // By default multiple application context implementation.spring + // will be supproted for Tuscany. + public boolean isMultipleContextSupported() { + return true; + } + // By defauly all the Spring version are supported for // Tuscany. public String getSupportedVersion() { diff --git a/branches/sca-java-1.5.1/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/SpringContextStub.java b/branches/sca-java-1.5.1/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/SpringContextStub.java index 55dd1d6027..818bc4e102 100644 --- a/branches/sca-java-1.5.1/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/SpringContextStub.java +++ b/branches/sca-java-1.5.1/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/SpringContextStub.java @@ -47,9 +47,10 @@ public class SpringContextStub { ProxyFactory proxyService, JavaPropertyValueObjectFactory propertyValueObjectFactory, boolean annotationSupport, - String versionSupported) { + String versionSupported, + boolean multipleContextSupport) { - initTie(component, implementation, propertyValueObjectFactory, annotationSupport, versionSupported); + initTie(component, implementation, propertyValueObjectFactory, annotationSupport, versionSupported, multipleContextSupport); } @@ -57,7 +58,8 @@ public class SpringContextStub { SpringImplementation implementation, JavaPropertyValueObjectFactory propertyValueObjectFactory, boolean annotationSupport, - String versionSupported) { + String versionSupported, + boolean multipleContextSupport) { // TODO: what class loader to use? ClassLoader cl = Thread.currentThread().getContextClassLoader(); @@ -69,8 +71,8 @@ public class SpringContextStub { Object stub = stubConstructor.newInstance(new SpringImplementationTie(implementation, component, propertyValueObjectFactory)); Class tieClass = Class.forName("org.apache.tuscany.sca.implementation.spring.runtime.context.SpringContextTie", true, cl); - Constructor tieConstructor = tieClass.getConstructor(new Class[]{stubClass, URL.class, boolean.class, String.class}); - this.tie = tieConstructor.newInstance(stub, implementation.getResource(), annotationSupport, versionSupported); + Constructor tieConstructor = tieClass.getConstructor(new Class[]{stubClass, URL.class, boolean.class, String.class, boolean.class}); + this.tie = tieConstructor.newInstance(stub, implementation.getResource(), annotationSupport, versionSupported, multipleContextSupport); this.startMethod = tieClass.getMethod("start"); this.closeMethod = tieClass.getMethod("close"); diff --git a/branches/sca-java-1.5.1/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/SpringImplementationProvider.java b/branches/sca-java-1.5.1/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/SpringImplementationProvider.java index 1fc01b2627..105bb4a553 100644 --- a/branches/sca-java-1.5.1/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/SpringImplementationProvider.java +++ b/branches/sca-java-1.5.1/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/SpringImplementationProvider.java @@ -52,13 +52,14 @@ public class SpringImplementationProvider implements ImplementationProvider { ProxyFactory proxyService, JavaPropertyValueObjectFactory propertyValueObjectFactory, boolean annotationSupport, - String versionSupported) { + String versionSupported, + boolean multipleContextSupport) { super(); this.implementation = implementation; this.component = component; this.propertyValueObjectFactory = propertyValueObjectFactory; - springContext = new SpringContextStub(component, implementation, proxyService, propertyValueObjectFactory, annotationSupport, versionSupported); + springContext = new SpringContextStub(component, implementation, proxyService, propertyValueObjectFactory, annotationSupport, versionSupported, multipleContextSupport); } // end constructor diff --git a/branches/sca-java-1.5.1/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/SpringImplementationProviderFactory.java b/branches/sca-java-1.5.1/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/SpringImplementationProviderFactory.java index 4796aa0de9..e0d31203bc 100644 --- a/branches/sca-java-1.5.1/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/SpringImplementationProviderFactory.java +++ b/branches/sca-java-1.5.1/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/invocation/SpringImplementationProviderFactory.java @@ -41,6 +41,7 @@ public class SpringImplementationProviderFactory implements ImplementationProvid private ConfigurationPropertiesExtensionPoint configProperties; private boolean annotationSupport; private String versionSupported; + private boolean multipleContextSupport; /** * Simple constructor @@ -58,6 +59,7 @@ public class SpringImplementationProviderFactory implements ImplementationProvid } annotationSupport = configProperties.isAnnotationSupported(); versionSupported = configProperties.getSupportedVersion(); + multipleContextSupport = configProperties.isMultipleContextSupported(); // TODO: could the runtime have a default PropertyValueObjectFactory? propertyFactory = new JavaPropertyValueObjectFactory(new MediatorImpl(extensionPoints)); @@ -77,7 +79,8 @@ public class SpringImplementationProviderFactory implements ImplementationProvid proxyFactory, propertyFactory, annotationSupport, - versionSupported); + versionSupported, + multipleContextSupport); } /** diff --git a/branches/sca-java-1.5.1/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/xml/SpringImplementationProcessor.java b/branches/sca-java-1.5.1/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/xml/SpringImplementationProcessor.java index 20bf2d0d94..29dc0a38a1 100644 --- a/branches/sca-java-1.5.1/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/xml/SpringImplementationProcessor.java +++ b/branches/sca-java-1.5.1/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/xml/SpringImplementationProcessor.java @@ -31,6 +31,7 @@ import org.apache.tuscany.sca.assembly.ComponentType; import org.apache.tuscany.sca.assembly.xml.Constants; import org.apache.tuscany.sca.assembly.xml.PolicyAttachPointProcessor; import org.apache.tuscany.sca.contribution.ModelFactoryExtensionPoint; +import org.apache.tuscany.sca.core.ExtensionPointRegistry; import org.apache.tuscany.sca.contribution.processor.StAXArtifactProcessor; import org.apache.tuscany.sca.contribution.resolver.ModelResolver; import org.apache.tuscany.sca.contribution.service.ContributionReadException; @@ -38,6 +39,8 @@ import org.apache.tuscany.sca.contribution.service.ContributionResolveException; import org.apache.tuscany.sca.contribution.service.ContributionWriteException; import org.apache.tuscany.sca.implementation.spring.SpringImplementation; import org.apache.tuscany.sca.implementation.spring.introspect.SpringXMLComponentTypeLoader; +import org.apache.tuscany.sca.implementation.spring.invocation.ConfigurationPropertiesExtensionPoint; +import org.apache.tuscany.sca.implementation.spring.invocation.DefaultConfigurationPropertiesExtensionPoint; import org.apache.tuscany.sca.interfacedef.java.JavaInterfaceFactory; import org.apache.tuscany.sca.monitor.Monitor; import org.apache.tuscany.sca.monitor.Problem; @@ -62,16 +65,24 @@ public class SpringImplementationProcessor implements StAXArtifactProcessor