You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by ke...@apache.org on 2006/08/14 08:22:12 UTC

svn commit: r431300 - in /incubator/tuscany/java: samples/sca/ samples/sca/spring.simple/ samples/sca/spring.simple/src/ samples/sca/spring.simple/src/main/ samples/sca/spring.simple/src/main/resources/ samples/sca/spring.simple/src/main/resources/META...

Author: kentam
Date: Sun Aug 13 23:22:10 2006
New Revision: 431300

URL: http://svn.apache.org/viewvc?rev=431300&view=rev
Log:
More work on <implementation.spring>.  Fleshed out some of the component type loading code, but there are some substantial issues remaining with classloading of Spring resources.

Added an example of what it might look like to use <implementation.spring> (spring.simple example).

Added echo binding to the build.


Added:
    incubator/tuscany/java/samples/sca/spring.simple/
    incubator/tuscany/java/samples/sca/spring.simple/pom.xml   (with props)
    incubator/tuscany/java/samples/sca/spring.simple/src/
    incubator/tuscany/java/samples/sca/spring.simple/src/main/
    incubator/tuscany/java/samples/sca/spring.simple/src/main/resources/
    incubator/tuscany/java/samples/sca/spring.simple/src/main/resources/META-INF/
    incubator/tuscany/java/samples/sca/spring.simple/src/main/resources/META-INF/sca/
    incubator/tuscany/java/samples/sca/spring.simple/src/main/resources/META-INF/sca/default.scdl
    incubator/tuscany/java/sca/containers/container.spring/src/main/resources/META-INF/sca/
    incubator/tuscany/java/sca/containers/container.spring/src/main/resources/META-INF/sca/default.scdl
    incubator/tuscany/java/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/mock/TestReference.java   (with props)
Modified:
    incubator/tuscany/java/samples/sca/pom.xml
    incubator/tuscany/java/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SpringComponentTypeLoader.java
    incubator/tuscany/java/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SpringImplementationLoader.java
    incubator/tuscany/java/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/config/SCANamespaceHandler.java
    incubator/tuscany/java/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/config/ScaCompositeBeanDefinitionParser.java
    incubator/tuscany/java/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/config/ScaReferenceBeanDefinitionParser.java
    incubator/tuscany/java/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/config/ScaServiceBeanDefinitionParser.java
    incubator/tuscany/java/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/SpringCompositeBuilderTestCase.java
    incubator/tuscany/java/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/SpringConfigSchemaTestCase.java
    incubator/tuscany/java/sca/containers/container.spring/src/test/resources/org/apache/tuscany/container/spring/SpringConfigSchemaTest.xml

Modified: incubator/tuscany/java/samples/sca/pom.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/samples/sca/pom.xml?rev=431300&r1=431299&r2=431300&view=diff
==============================================================================
--- incubator/tuscany/java/samples/sca/pom.xml (original)
+++ incubator/tuscany/java/samples/sca/pom.xml Sun Aug 13 23:22:10 2006
@@ -37,5 +37,7 @@
         <module>calculator</module>
         <module>supplychain</module>
         <module>bigbank</module>
+        <module>echo.binding</module>
+        <module>spring.simple</module>
     </modules>
 </project>

Added: incubator/tuscany/java/samples/sca/spring.simple/pom.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/samples/sca/spring.simple/pom.xml?rev=431300&view=auto
==============================================================================
--- incubator/tuscany/java/samples/sca/spring.simple/pom.xml (added)
+++ incubator/tuscany/java/samples/sca/spring.simple/pom.xml Sun Aug 13 23:22:10 2006
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ *  Copyright (c) 2005-2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ *  Licensed 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.
+ -->
+<project>
+    <parent>
+        <groupId>org.apache.tuscany.samples.sca</groupId>
+        <artifactId>tuscany-samples-sca</artifactId>
+        <version>1.0-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+    <artifactId>sample-spring</artifactId>
+    <packaging>jar</packaging>
+    <name>Tuscany Spring Sample</name>
+    <description>A sample of using a Spring application context as an SCA component.</description>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.osoa</groupId>
+            <artifactId>sca-api-r0.95</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.tuscany</groupId>
+            <artifactId>test</artifactId>
+            <version>${sca.version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring</artifactId>
+            <version>2.0-rc2</version>
+            <scope>compile</scope>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-jar-plugin</artifactId>
+                <configuration>
+                    <archive>
+                        <manifest>
+                            <mainClass>spring.SpringClient</mainClass>
+                        </manifest>
+                    </archive>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+</project>

Propchange: incubator/tuscany/java/samples/sca/spring.simple/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/tuscany/java/samples/sca/spring.simple/src/main/resources/META-INF/sca/default.scdl
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/samples/sca/spring.simple/src/main/resources/META-INF/sca/default.scdl?rev=431300&view=auto
==============================================================================
--- incubator/tuscany/java/samples/sca/spring.simple/src/main/resources/META-INF/sca/default.scdl (added)
+++ incubator/tuscany/java/samples/sca/spring.simple/src/main/resources/META-INF/sca/default.scdl Sun Aug 13 23:22:10 2006
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ *  Copyright (c) 2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ *  Licensed 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.
+ -->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+           xmlns:spring="http://tuscany.apache.org/xmlns/spring/1.0"
+           name="SomeComposite">
+
+    <component name="SpringServiceComponent">
+        <spring:implementation.spring location="SpringApp"/>
+    </component>
+</composite>

Modified: incubator/tuscany/java/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SpringComponentTypeLoader.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SpringComponentTypeLoader.java?rev=431300&r1=431299&r2=431300&view=diff
==============================================================================
--- incubator/tuscany/java/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SpringComponentTypeLoader.java (original)
+++ incubator/tuscany/java/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SpringComponentTypeLoader.java Sun Aug 13 23:22:10 2006
@@ -20,14 +20,25 @@
 
 import org.springframework.beans.factory.support.DefaultListableBeanFactory;
 import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
+import org.springframework.beans.factory.config.BeanDefinition;
 import org.springframework.context.support.GenericApplicationContext;
 import org.springframework.core.io.Resource;
+import org.springframework.core.io.UrlResource;
 
-import org.apache.tuscany.container.spring.config.SCABeanDefinitionReader;
+import org.apache.tuscany.container.spring.config.SCAService;
+import org.apache.tuscany.container.spring.config.ScaServiceBeanDefinitionParser;
 import org.apache.tuscany.spi.component.CompositeComponent;
 import org.apache.tuscany.spi.deployer.DeploymentContext;
-import org.apache.tuscany.spi.loader.ComponentTypeLoader;
+import org.apache.tuscany.spi.loader.LoaderRegistry;
 import org.apache.tuscany.spi.model.CompositeComponentType;
+import org.apache.tuscany.spi.model.ServiceDefinition;
+import org.apache.tuscany.spi.annotation.Autowire;
+import org.apache.tuscany.spi.extension.ComponentTypeLoaderExtension;
+import org.apache.tuscany.core.implementation.processor.ProcessorUtils;
+import org.apache.tuscany.core.implementation.processor.IllegalCallbackException;
+import org.osoa.sca.annotations.Constructor;
+
+import java.net.URL;
 
 /**
  * Loads a component type for a Spring <code>ApplicationContext</code>. The implementation creates a new
@@ -36,18 +47,80 @@
  *
  * @version $$Rev$$ $$Date$$
  */
-public class SpringComponentTypeLoader implements ComponentTypeLoader<SpringImplementation> {
+
+public class SpringComponentTypeLoader extends ComponentTypeLoaderExtension<SpringImplementation> {
+
+    @Constructor({"registry"})
+    public SpringComponentTypeLoader(@Autowire LoaderRegistry loaderRegistry) {
+        super(loaderRegistry);
+    }
+
+    @Override
+    protected Class<SpringImplementation> getImplementationClass() {
+        return SpringImplementation.class;
+    }
 
     /* Major work in progress here */
     public void load(CompositeComponent<?> parent, SpringImplementation implementation,
                      DeploymentContext deploymentContext) {
-        Resource resource = null; //FIXME
+        URL appXml = implementation.getApplicationXml();
+
+        Resource resource = new UrlResource(appXml);
         CompositeComponentType componentType = new CompositeComponentType();
         DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory();
-        XmlBeanDefinitionReader reader = new SCABeanDefinitionReader(beanFactory, componentType);
+        XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(beanFactory);
         reader.loadBeanDefinitions(resource);
         GenericApplicationContext ctx = new GenericApplicationContext(beanFactory);
         ctx.refresh();
+
+        // If there are <sca:service> elements, they define (and limit) the services exposed
+        // in the componentType.
+        String [] serviceBeanNames = ctx.getBeanNamesForType(SCAService.class);
+        for (String serviceBeanName : serviceBeanNames) {
+            int nSuffix = serviceBeanName.indexOf(ScaServiceBeanDefinitionParser.SERVICE_BEAN_SUFFIX);
+            if (nSuffix == -1) {
+                continue;
+            }
+
+            String serviceName = serviceBeanName.substring(0, nSuffix);
+            SCAService serviceBean = (SCAService) ctx.getBean(serviceName);
+            String serviceTypeName = serviceBean.getType();
+            try {
+                Class serviceInterface = Class.forName(serviceTypeName, true, deploymentContext.getClassLoader());
+                ServiceDefinition service = ProcessorUtils.createService(serviceInterface);
+                componentType.getServices().put(serviceName, service);
+            } catch (ClassNotFoundException e) {
+                e.printStackTrace();
+            } catch (IllegalCallbackException e) {
+                e.printStackTrace();
+            }
+        }
+
+        // If there were no <sca:service> elements, expose all beans as SCA services
+        // REVIEW: this needs a lot of refinement; we almost certainly don't want to expose
+        // _all_ beans willy nilly.
+        if (serviceBeanNames.length == 0) {
+            String [] allBeanDefNames = ctx.getBeanDefinitionNames();
+            for (String beanDefName : allBeanDefNames) {
+                BeanDefinition beanDef = ctx.getBeanDefinition(beanDefName);
+                String beanClassName = beanDef.getBeanClassName();
+                String beanName = (String) beanDef.getAttribute("name");
+                try {
+                    Class beanClass = Class.forName(beanClassName, true, deploymentContext.getClassLoader());
+                    Class [] beanInterfaces = beanClass.getInterfaces();
+                    // hack, just using the 1st impl'ed interface for now
+                    if (beanInterfaces.length > 0) {
+                        ServiceDefinition service = ProcessorUtils.createService(beanInterfaces[0]);
+                        componentType.getServices().put(beanName, service);
+                    }
+                } catch (ClassNotFoundException e) {
+                    e.printStackTrace();
+                } catch (IllegalCallbackException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+
         implementation.setComponentType(componentType);
     }
 }

Modified: incubator/tuscany/java/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SpringImplementationLoader.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SpringImplementationLoader.java?rev=431300&r1=431299&r2=431300&view=diff
==============================================================================
--- incubator/tuscany/java/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SpringImplementationLoader.java (original)
+++ incubator/tuscany/java/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SpringImplementationLoader.java Sun Aug 13 23:22:10 2006
@@ -78,9 +78,9 @@
     public SpringImplementation load(CompositeComponent parent, XMLStreamReader reader, DeploymentContext deploymentContext)
             throws XMLStreamException, LoaderException {
 
-        String locationAttr = reader.getAttributeValue(null, "locationAttr");
+        String locationAttr = reader.getAttributeValue(null, "location");
         if (locationAttr == null) {
-            throw new MissingResourceException("No locationAttr supplied");
+            throw new MissingResourceException("No location supplied");
         }
 
         URL appXmlUrl = getApplicationContextUrl(locationAttr);

Modified: incubator/tuscany/java/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/config/SCANamespaceHandler.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/config/SCANamespaceHandler.java?rev=431300&r1=431299&r2=431300&view=diff
==============================================================================
--- incubator/tuscany/java/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/config/SCANamespaceHandler.java (original)
+++ incubator/tuscany/java/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/config/SCANamespaceHandler.java Sun Aug 13 23:22:10 2006
@@ -41,7 +41,5 @@
                 new ScaReferenceBeanDefinitionParser());
         registerBeanDefinitionParser(ScaServiceBeanDefinitionParser.SERVICE_ELEMENT,
                 new ScaServiceBeanDefinitionParser());
-        registerBeanDefinitionParser(ScaCompositeBeanDefinitionParser.COMPOSITE_ELEMENT,
-                new ScaCompositeBeanDefinitionParser());
     }
 }

Modified: incubator/tuscany/java/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/config/ScaCompositeBeanDefinitionParser.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/config/ScaCompositeBeanDefinitionParser.java?rev=431300&r1=431299&r2=431300&view=diff
==============================================================================
--- incubator/tuscany/java/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/config/ScaCompositeBeanDefinitionParser.java (original)
+++ incubator/tuscany/java/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/config/ScaCompositeBeanDefinitionParser.java Sun Aug 13 23:22:10 2006
@@ -29,7 +29,7 @@
  * @version $$Rev$$ $$Date$$
  */
 public class ScaCompositeBeanDefinitionParser implements BeanDefinitionParser {
-    public static final String COMPOSITE_ELEMENT = "reference";
+    public static final String COMPOSITE_ELEMENT = "composite";
 /*
     private static final String COMPONENT_ATTRIBUTE = "component";
     private static final String SCA_ADAPTER_CLASS_ATTRIBUTE = "sca-adapter-class";

Modified: incubator/tuscany/java/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/config/ScaReferenceBeanDefinitionParser.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/config/ScaReferenceBeanDefinitionParser.java?rev=431300&r1=431299&r2=431300&view=diff
==============================================================================
--- incubator/tuscany/java/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/config/ScaReferenceBeanDefinitionParser.java (original)
+++ incubator/tuscany/java/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/config/ScaReferenceBeanDefinitionParser.java Sun Aug 13 23:22:10 2006
@@ -19,8 +19,12 @@
 package org.apache.tuscany.container.spring.config;
 
 import org.springframework.beans.factory.config.BeanDefinition;
+import org.springframework.beans.factory.config.ConstructorArgumentValues;
+import org.springframework.beans.factory.config.BeanDefinitionHolder;
 import org.springframework.beans.factory.xml.BeanDefinitionParser;
 import org.springframework.beans.factory.xml.ParserContext;
+import org.springframework.beans.factory.support.RootBeanDefinition;
+import org.springframework.beans.factory.support.BeanDefinitionReaderUtils;
 import org.w3c.dom.Element;
 
 /**
@@ -31,36 +35,22 @@
 public class ScaReferenceBeanDefinitionParser implements BeanDefinitionParser {
 
     public  static final String REFERENCE_ELEMENT         = "reference";
-//    private static final String REFERENCE_NAME_ATTRIBUTE  = "name";
-//    private static final String TYPE_ATTRIBUTE            = "type";
-//    private static final String DEFAULT_SERVICE_ATTRIBUTE = "default";
+    private static final String REFERENCE_NAME_ATTRIBUTE  = "name";
+    private static final String TYPE_ATTRIBUTE            = "type";
+    private static final String DEFAULT_SERVICE_ATTRIBUTE = "default";
 
     public ScaReferenceBeanDefinitionParser() {
     }
 
     public BeanDefinition parse(Element element, ParserContext parserContext) {
 
-//        String name = element.getAttribute(REFERENCE_NAME_ATTRIBUTE);
-//        String type = element.getAttribute(TYPE_ATTRIBUTE);
-//        String service = null;
-//        if (element.hasAttribute(DEFAULT_SERVICE_ATTRIBUTE)) {
-//            service = element.getAttribute(DEFAULT_SERVICE_ATTRIBUTE);
-//        }
-
-        return null;
-
-        /*
-        BeanDefinitionBuilder proxyBean = BeanDefinitionBuilder.rootBeanDefinition(ProxyFactoryBean.class);
-        proxyBean.addPropertyReference("target", targetName);
-        proxyBean.addPropertyValue("proxyInterfaces", type);
-
-        // REVIEW: May need to account for singleton-ness of the target?  (ie, if target is singleton=false,
-        // perhaps the proxy should also be singleton=false).
-
-        parserContext.getRegistry().registerBeanDefinition(name, proxyBean.getBeanDefinition());
-        */
+        String name = element.getAttribute(REFERENCE_NAME_ATTRIBUTE);
+        String type = element.getAttribute(TYPE_ATTRIBUTE);
+        String service = null;
+        if (element.hasAttribute(DEFAULT_SERVICE_ATTRIBUTE)) {
+            service = element.getAttribute(DEFAULT_SERVICE_ATTRIBUTE);
+        }
 
-        /*
         RootBeanDefinition beanDef = new RootBeanDefinition();
         beanDef.setBeanClass(SCAReference.class);
 
@@ -83,6 +73,5 @@
         BeanDefinitionReaderUtils.registerBeanDefinition(holder, parserContext.getRegistry());
 
         return beanDef;
-        */
     }
 }

Modified: incubator/tuscany/java/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/config/ScaServiceBeanDefinitionParser.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/config/ScaServiceBeanDefinitionParser.java?rev=431300&r1=431299&r2=431300&view=diff
==============================================================================
--- incubator/tuscany/java/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/config/ScaServiceBeanDefinitionParser.java (original)
+++ incubator/tuscany/java/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/config/ScaServiceBeanDefinitionParser.java Sun Aug 13 23:22:10 2006
@@ -32,6 +32,8 @@
  */
 public class ScaServiceBeanDefinitionParser implements BeanDefinitionParser {
 
+    public static final String SERVICE_BEAN_SUFFIX = ".SCAService";
+
     public static final String SERVICE_ELEMENT = "service";
     private static final String NAME_ATTRIBUTE = "name";
     private static final String TYPE_ATTRIBUTE = "type";
@@ -46,6 +48,9 @@
         String type = element.getAttribute(TYPE_ATTRIBUTE);
         String targetName = element.getAttribute(TARGET_ATTRIBUTE);
 
+        // Register a bean with the name of the service that proxies the bean that implements
+        // the service.
+
         BeanDefinitionBuilder proxyBean = BeanDefinitionBuilder.rootBeanDefinition(ProxyFactoryBean.class);
         proxyBean.addPropertyReference("target", targetName);
         proxyBean.addPropertyValue("proxyInterfaces", type);
@@ -55,17 +60,18 @@
 
         parserContext.getRegistry().registerBeanDefinition(name, proxyBean.getBeanDefinition());
 
-        // REVIEW: It may make sense to register an additional bean to capture/expose the presence &
-        // attributes of the service element itself.  Such code as:
+        // Register an additional bean to capture/expose the presence & attributes of the
+        // <sca:service> element itself.  This bean is has the name "<service name attr>.SCAService".
+        //
+        // REVIEW: this is a hack that can be removed once a more sophisticated introspection
+        // mechanism is defined for Spring app contexts.  See SpringComponentTypeLoader.
         
-        /*
         BeanDefinitionBuilder serviceBean = BeanDefinitionBuilder.rootBeanDefinition(SCAService.class);
         serviceBean.addConstructorArg(name);
         serviceBean.addConstructorArg(type);
         serviceBean.addConstructorArg(targetName);
 
-        parserContext.getRegistry().registerBeanDefinition(name, serviceBean.getBeanDefinition());
-        */
+        parserContext.getRegistry().registerBeanDefinition(name + SERVICE_BEAN_SUFFIX, serviceBean.getBeanDefinition());
 
         return null;
     }

Added: incubator/tuscany/java/sca/containers/container.spring/src/main/resources/META-INF/sca/default.scdl
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/containers/container.spring/src/main/resources/META-INF/sca/default.scdl?rev=431300&view=auto
==============================================================================
--- incubator/tuscany/java/sca/containers/container.spring/src/main/resources/META-INF/sca/default.scdl (added)
+++ incubator/tuscany/java/sca/containers/container.spring/src/main/resources/META-INF/sca/default.scdl Sun Aug 13 23:22:10 2006
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ *  Copyright (c) 2006 The Apache Software Foundation or its licensors, as applicable.
+ *
+ *  Licensed 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.
+ -->
+<!--
+    Spring implementation extension configuration for the launcher environment.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+           xmlns:system="http://tuscany.apache.org/xmlns/system/1.0-SNAPSHOT"
+
+           name="org.apache.tuscany.launcher.SpringImplementation">
+
+    <component name="spring.implementationLoader">
+        <system:implementation.system class="org.apache.tuscany.container.spring.SpringImplementationLoader"/>
+    </component>
+
+    <component name="spring.componentTypeLoader">
+        <system:implementation.system class="org.apache.tuscany.container.spring.SpringComponentTypeLoader"/>
+    </component>
+
+    <component name="spring.componentBuilder">
+        <system:implementation.system class="org.apache.tuscany.container.spring.SpringCompositeBuilder"/>
+    </component>
+
+</composite>
\ No newline at end of file

Modified: incubator/tuscany/java/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/SpringCompositeBuilderTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/SpringCompositeBuilderTestCase.java?rev=431300&r1=431299&r2=431300&view=diff
==============================================================================
--- incubator/tuscany/java/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/SpringCompositeBuilderTestCase.java (original)
+++ incubator/tuscany/java/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/SpringCompositeBuilderTestCase.java Sun Aug 13 23:22:10 2006
@@ -61,9 +61,11 @@
         "<beans xmlns=\"http://www.springframework.org/schema/beans\"\n" +
         "       xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n" +
         "       xsi:schemaLocation=\"\n" +
-        "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd\n" +
+        "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd \n" +
+//        "http://www.springframework.org/schema/sca http://www.springframework.org/schema/sca/SpringSCA.xsd" +
         "\">\n" +
         "\n" +
+//        "<sca:service name=\"fooService\" type=\"org.apache.tuscany.container.spring.mock.TestBean\" target=\"fooBean\"/>" +
         "\n" +
         "<bean id=\"fooBean\" class=\"org.apache.tuscany.container.spring.mock.TestBeanImpl\">\n" +
         "</bean>\n" +

Modified: incubator/tuscany/java/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/SpringConfigSchemaTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/SpringConfigSchemaTestCase.java?rev=431300&r1=431299&r2=431300&view=diff
==============================================================================
--- incubator/tuscany/java/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/SpringConfigSchemaTestCase.java (original)
+++ incubator/tuscany/java/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/SpringConfigSchemaTestCase.java Sun Aug 13 23:22:10 2006
@@ -22,6 +22,7 @@
 import org.springframework.context.ConfigurableApplicationContext;
 import org.springframework.context.support.ClassPathXmlApplicationContext;
 import org.apache.tuscany.container.spring.mock.TestBean;
+import org.apache.tuscany.container.spring.config.SCAReference;
 
 /**
  * Tests the SCA extensible schema elements for Spring's XML configuration files
@@ -43,10 +44,8 @@
         assertEquals("call me", service.echo("call me"));
     }
 
-    /*
     public void testSCAReference() {
         SCAReference ref = (SCAReference) applicationContext.getBean("fooReference");
         assertEquals("fooReference", ref.getName());
     }
-    */
 }

Added: incubator/tuscany/java/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/mock/TestReference.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/mock/TestReference.java?rev=431300&view=auto
==============================================================================
--- incubator/tuscany/java/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/mock/TestReference.java (added)
+++ incubator/tuscany/java/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/mock/TestReference.java Sun Aug 13 23:22:10 2006
@@ -0,0 +1,8 @@
+package org.apache.tuscany.container.spring.mock;
+
+/**
+ * @version $$Rev: 418702 $$ $$Date: 2006-07-03 00:30:03 -0700 (Mon, 03 Jul 2006) $$
+ */
+public interface TestReference {
+    String echo(String msg);
+}

Propchange: incubator/tuscany/java/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/mock/TestReference.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: incubator/tuscany/java/sca/containers/container.spring/src/test/resources/org/apache/tuscany/container/spring/SpringConfigSchemaTest.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/containers/container.spring/src/test/resources/org/apache/tuscany/container/spring/SpringConfigSchemaTest.xml?rev=431300&r1=431299&r2=431300&view=diff
==============================================================================
--- incubator/tuscany/java/sca/containers/container.spring/src/test/resources/org/apache/tuscany/container/spring/SpringConfigSchemaTest.xml (original)
+++ incubator/tuscany/java/sca/containers/container.spring/src/test/resources/org/apache/tuscany/container/spring/SpringConfigSchemaTest.xml Sun Aug 13 23:22:10 2006
@@ -10,6 +10,8 @@
 </bean>
 
 <sca:service name="fooService" type="org.apache.tuscany.container.spring.mock.TestBean" target="testBean" />
-<sca:reference name="fooReference" type="org.apache.tuscany.container.spring.mock.TestBeanImpl" />
+
+<sca:reference name="fooReference" type="org.apache.tuscany.container.spring.mock.TestReference" />
+
 
 </beans>



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org