diff options
Diffstat (limited to '')
-rw-r--r-- | sca-java-2.x/trunk/modules/implementation-spring-stub/src/main/java/org/apache/tuscany/sca/implementation/spring/processor/stub/SpringXMLBeanDefinitionLoaderStub.java (renamed from sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/introspect/SpringXMLLoaderStub.java) | 59 |
1 files changed, 35 insertions, 24 deletions
diff --git a/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/introspect/SpringXMLLoaderStub.java b/sca-java-2.x/trunk/modules/implementation-spring-stub/src/main/java/org/apache/tuscany/sca/implementation/spring/processor/stub/SpringXMLBeanDefinitionLoaderStub.java index 01208aba19..f34dfb8ceb 100644 --- a/sca-java-2.x/trunk/modules/implementation-spring/src/main/java/org/apache/tuscany/sca/implementation/spring/introspect/SpringXMLLoaderStub.java +++ b/sca-java-2.x/trunk/modules/implementation-spring-stub/src/main/java/org/apache/tuscany/sca/implementation/spring/processor/stub/SpringXMLBeanDefinitionLoaderStub.java @@ -17,17 +17,20 @@ * under the License. */ -package org.apache.tuscany.sca.implementation.spring.introspect; +package org.apache.tuscany.sca.implementation.spring.processor.stub; import java.lang.reflect.Method; import java.net.URL; import java.util.Arrays; import java.util.List; +import org.apache.tuscany.sca.contribution.processor.ProcessorContext; import org.apache.tuscany.sca.implementation.spring.SpringBeanElement; import org.apache.tuscany.sca.implementation.spring.SpringSCAPropertyElement; import org.apache.tuscany.sca.implementation.spring.SpringSCAReferenceElement; import org.apache.tuscany.sca.implementation.spring.SpringSCAServiceElement; +import org.apache.tuscany.sca.implementation.spring.xml.SpringXMLBeanDefinitionLoader; +import org.oasisopen.sca.ServiceRuntimeException; /** * This is the Tuscany side stub for the corresponding runtime tie class. @@ -35,13 +38,13 @@ import org.apache.tuscany.sca.implementation.spring.SpringSCAServiceElement; * needing to know about any Spring classes. See the SpringContextTie class * in the implementation-spring-runtime module for what the tie does. */ -public class SpringXMLLoaderStub { - private final static String TIE = "org.apache.tuscany.sca.implementation.spring.processor.SpringXMLLoaderTie"; +public class SpringXMLBeanDefinitionLoaderStub implements SpringXMLBeanDefinitionLoader { + private final static String TIE = "org.apache.tuscany.sca.implementation.spring.processor.tie.SpringXMLLoaderTie"; private static Method createApplicationContext; - public SpringXMLLoaderStub() throws Exception { - synchronized (SpringXMLLoaderStub.class) { + public SpringXMLBeanDefinitionLoaderStub() throws Exception { + synchronized (SpringXMLBeanDefinitionLoaderStub.class) { if (createApplicationContext == null) { Class<?> tieClass = Class.forName(TIE, false, Thread.currentThread().getContextClassLoader()); createApplicationContext = @@ -55,27 +58,35 @@ public class SpringXMLLoaderStub { return createApplicationContext.invoke(null, scaParentContext, classLoader, resources); } - public void introspect(List<URL> resources, - List<SpringSCAServiceElement> serviceElements, - List<SpringSCAReferenceElement> referenceElements, - List<SpringSCAPropertyElement> propertyElements, - List<SpringBeanElement> beanElements) throws Exception { - Object appContext = createApplicationContext(null, Thread.currentThread().getContextClassLoader(), resources); - Class<?> cls = appContext.getClass(); - Method method = cls.getMethod("getElements", Class.class); - SpringSCAServiceElement[] serviceArray = - (SpringSCAServiceElement[])method.invoke(appContext, SpringSCAServiceElement.class); - serviceElements.addAll(Arrays.asList(serviceArray)); + public Object load(List<URL> resources, + List<SpringSCAServiceElement> serviceElements, + List<SpringSCAReferenceElement> referenceElements, + List<SpringSCAPropertyElement> propertyElements, + List<SpringBeanElement> beanElements, + ProcessorContext context) { + try { + Object appContext = + createApplicationContext(null, Thread.currentThread().getContextClassLoader(), resources); + Class<?> cls = appContext.getClass(); + Method method = cls.getMethod("getElements", Class.class); + SpringSCAServiceElement[] serviceArray = + (SpringSCAServiceElement[])method.invoke(appContext, SpringSCAServiceElement.class); + serviceElements.addAll(Arrays.asList(serviceArray)); - SpringSCAReferenceElement[] referenceArray = - (SpringSCAReferenceElement[])method.invoke(appContext, SpringSCAReferenceElement.class); - referenceElements.addAll(Arrays.asList(referenceArray)); + SpringSCAReferenceElement[] referenceArray = + (SpringSCAReferenceElement[])method.invoke(appContext, SpringSCAReferenceElement.class); + referenceElements.addAll(Arrays.asList(referenceArray)); - SpringSCAPropertyElement[] propertyArray = - (SpringSCAPropertyElement[])method.invoke(appContext, SpringSCAPropertyElement.class); - propertyElements.addAll(Arrays.asList(propertyArray)); + SpringSCAPropertyElement[] propertyArray = + (SpringSCAPropertyElement[])method.invoke(appContext, SpringSCAPropertyElement.class); + propertyElements.addAll(Arrays.asList(propertyArray)); - SpringBeanElement[] beanArray = (SpringBeanElement[])method.invoke(appContext, SpringBeanElement.class); - beanElements.addAll(Arrays.asList(beanArray)); + SpringBeanElement[] beanArray = (SpringBeanElement[])method.invoke(appContext, SpringBeanElement.class); + beanElements.addAll(Arrays.asList(beanArray)); + + return appContext; + } catch (Throwable e) { + throw new ServiceRuntimeException(e); + } } } |