You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by jm...@apache.org on 2007/02/24 03:29:48 UTC

svn commit: r511195 [1/2] - in /incubator/tuscany/java/sca/extensions/spring: ./ container/ container/src/main/java/org/apache/tuscany/container/spring/context/ container/src/main/java/org/apache/tuscany/container/spring/impl/ container/src/main/java/o...

Author: jmarino
Date: Fri Feb 23 18:29:46 2007
New Revision: 511195

URL: http://svn.apache.org/viewvc?view=rev&rev=511195
Log:
move Spring container to work off latest kernel; add integration tests

Added:
    incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/impl/BeanMethodNotFound.java   (with props)
    incubator/tuscany/java/sca/extensions/spring/container/src/test/java/org/apache/tuscany/container/spring/impl/ReferenceWiringTestCase.java   (contents, props changed)
      - copied, changed from r510793, incubator/tuscany/java/sca/extensions/spring/container/src/test/java/org/apache/tuscany/container/spring/impl/ReferenceInvocationTestCase.java
    incubator/tuscany/java/sca/extensions/spring/integration-test/
    incubator/tuscany/java/sca/extensions/spring/integration-test/core/
    incubator/tuscany/java/sca/extensions/spring/integration-test/core/pom.xml   (with props)
    incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/
    incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/main/
    incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/main/java/
    incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/main/java/org/
    incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/main/java/org/apache/
    incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/main/java/org/apache/tuscany/
    incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/main/java/org/apache/tuscany/sca/
    incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/main/java/org/apache/tuscany/sca/extensions/
    incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/main/java/org/apache/tuscany/sca/extensions/spring/
    incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/main/java/org/apache/tuscany/sca/extensions/spring/TestBean.java   (with props)
    incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/main/java/org/apache/tuscany/sca/extensions/spring/TestBeanImpl.java   (with props)
    incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/main/resources/
    incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/main/resources/META-INF/
    incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/main/resources/META-INF/sca/
    incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/main/resources/META-INF/sca/spring.composite.scdl
    incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/test/
    incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/test/java/
    incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/test/java/org/
    incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/test/java/org/apache/
    incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/test/java/org/apache/tuscany/
    incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/test/java/org/apache/tuscany/sca/
    incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/test/java/org/apache/tuscany/sca/extensions/
    incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/test/java/org/apache/tuscany/sca/extensions/spring/
    incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/test/java/org/apache/tuscany/sca/extensions/spring/WiringTestComponent.java   (with props)
    incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/test/java/org/apache/tuscany/sca/extensions/spring/WiringTestComponentImpl.java   (with props)
    incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/test/resources/
    incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/test/resources/applicationContext.xml   (with props)
    incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/test/resources/itest.scdl
    incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/test/resources/system.scdl
    incubator/tuscany/java/sca/extensions/spring/integration-test/pom.xml   (with props)
Removed:
    incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/impl/SpringInterceptor.java
    incubator/tuscany/java/sca/extensions/spring/container/src/main/resources/META-INF/sca/default.scdl
    incubator/tuscany/java/sca/extensions/spring/container/src/test/java/org/apache/tuscany/container/spring/impl/ReferenceInvocationTestCase.java
    incubator/tuscany/java/sca/extensions/spring/container/src/test/java/org/apache/tuscany/container/spring/impl/ServiceInvocationTestCase.java
    incubator/tuscany/java/sca/extensions/spring/container/src/test/java/org/apache/tuscany/container/spring/integration/
    incubator/tuscany/java/sca/extensions/spring/container/src/test/java/org/apache/tuscany/container/spring/mock/binding/
Modified:
    incubator/tuscany/java/sca/extensions/spring/container/pom.xml
    incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/context/SCANamespaceHandlerResolver.java
    incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/context/ScaNamespaceHandler.java
    incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/context/ScaReferenceBeanDefinitionParser.java
    incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/context/ScaServiceBeanDefinitionParser.java
    incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/impl/SpringCompositeBuilder.java
    incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/impl/SpringCompositeComponent.java
    incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/loader/SpringImplementationLoader.java
    incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/model/SpringComponentType.java
    incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/model/SpringImplementation.java
    incubator/tuscany/java/sca/extensions/spring/container/src/main/resources/META-INF/sca/spring.system.scdl
    incubator/tuscany/java/sca/extensions/spring/container/src/test/java/org/apache/tuscany/container/spring/SpringTestUtils.java
    incubator/tuscany/java/sca/extensions/spring/container/src/test/java/org/apache/tuscany/container/spring/impl/SpringCompositeBuilderTestCase.java
    incubator/tuscany/java/sca/extensions/spring/container/src/test/java/org/apache/tuscany/container/spring/impl/SpringCompositeComponentTestCase.java
    incubator/tuscany/java/sca/extensions/spring/pom.xml

Modified: incubator/tuscany/java/sca/extensions/spring/container/pom.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/extensions/spring/container/pom.xml?view=diff&rev=511195&r1=511194&r2=511195
==============================================================================
--- incubator/tuscany/java/sca/extensions/spring/container/pom.xml (original)
+++ incubator/tuscany/java/sca/extensions/spring/container/pom.xml Fri Feb 23 18:29:46 2007
@@ -20,83 +20,17 @@
 <project>
 
     <parent>
-        <groupId>org.apache.tuscany.sca.extensions.spring</groupId>
-        <artifactId>parent</artifactId>
-        <version>1.0-incubator-SNAPSHOT</version>
+        <groupId>org.apache.tuscany.sca.spring</groupId>
+        <artifactId>spring</artifactId>
+        <version>1.0-incubating-SNAPSHOT</version>
     </parent>
 
     <modelVersion>4.0.0</modelVersion>
-    <artifactId>tuscany-spring</artifactId>
+    <groupId>org.apache.tuscany.sca.spring</groupId>
+    <artifactId>spring-container</artifactId>
+    <version>1.0-alpha-incubating-SNAPSHOT</version>
     <name>Apache Tuscany Spring Framework Container</name>
     <description>Container for managing Spring composites</description>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.tuscany.sca.kernel</groupId>
-            <artifactId>tuscany-spi</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.tuscany.sca.runtime.webapp</groupId>
-            <artifactId>webapp-api</artifactId>
-            <scope>compile</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>org.springframework</groupId>
-            <artifactId>spring-core</artifactId>
-            <version>2.0.2</version>
-            <scope>compile</scope>
-            <exclusions>
-               <exclusion>
-                  <groupId>asm</groupId>
-                  <artifactId>asm-util</artifactId>
-               </exclusion>
-            </exclusions>
-        </dependency>
-        <dependency>
-            <groupId>asm</groupId>
-            <artifactId>asm-util</artifactId>
-            <version>2.2.3</version>
-            <scope>compile</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>org.springframework</groupId>
-            <artifactId>spring-beans</artifactId>
-            <version>2.0.2</version>
-            <scope>compile</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>org.springframework</groupId>
-            <artifactId>spring-context</artifactId>
-            <version>2.0.2</version>
-            <scope>compile</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>commons-logging</groupId>
-            <artifactId>commons-logging</artifactId>
-            <version>1.0.4</version>
-            <scope>test</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.tuscany.sca</groupId>
-            <artifactId>test</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>org.easymock</groupId>
-            <artifactId>easymockclassextension</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>javax.servlet</groupId>
-            <artifactId>servlet-api</artifactId>
-        </dependency>
-
-    </dependencies>
+    <packaging>jar</packaging>
 
 </project>

Modified: incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/context/SCANamespaceHandlerResolver.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/context/SCANamespaceHandlerResolver.java?view=diff&rev=511195&r1=511194&r2=511195
==============================================================================
--- incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/context/SCANamespaceHandlerResolver.java (original)
+++ incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/context/SCANamespaceHandlerResolver.java Fri Feb 23 18:29:46 2007
@@ -28,7 +28,6 @@
  * @version $$Rev$$ $$Date$$
  */
 public class SCANamespaceHandlerResolver extends DefaultNamespaceHandlerResolver {
-
     private static final String SCA_NAMESPACE = "http://www.springframework.org/schema/sca";
 
     private ScaNamespaceHandler handler;

Modified: incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/context/ScaNamespaceHandler.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/context/ScaNamespaceHandler.java?view=diff&rev=511195&r1=511194&r2=511195
==============================================================================
--- incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/context/ScaNamespaceHandler.java (original)
+++ incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/context/ScaNamespaceHandler.java Fri Feb 23 18:29:46 2007
@@ -21,6 +21,8 @@
 
 /**
  * Handler for the &lt;sca:&gt; namespace in an application context
+ *
+ * @version $Rev$ $Date$
  */
 public class ScaNamespaceHandler extends NamespaceHandlerSupport {
 

Modified: incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/context/ScaReferenceBeanDefinitionParser.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/context/ScaReferenceBeanDefinitionParser.java?view=diff&rev=511195&r1=511194&r2=511195
==============================================================================
--- incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/context/ScaReferenceBeanDefinitionParser.java (original)
+++ incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/context/ScaReferenceBeanDefinitionParser.java Fri Feb 23 18:29:46 2007
@@ -25,6 +25,8 @@
 
 /**
  * Parser for the &lt;sca:reference&gt; element
+ *
+ * @version $Rev$ $Date$
  */
 public class ScaReferenceBeanDefinitionParser implements BeanDefinitionParser {
 

Modified: incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/context/ScaServiceBeanDefinitionParser.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/context/ScaServiceBeanDefinitionParser.java?view=diff&rev=511195&r1=511194&r2=511195
==============================================================================
--- incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/context/ScaServiceBeanDefinitionParser.java (original)
+++ incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/context/ScaServiceBeanDefinitionParser.java Fri Feb 23 18:29:46 2007
@@ -25,6 +25,8 @@
 
 /**
  * Parser for the &lt;sca:service/&gt; element
+ *
+ * @version $Rev$ $Date$
  */
 public class ScaServiceBeanDefinitionParser implements BeanDefinitionParser {
 

Added: incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/impl/BeanMethodNotFound.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/impl/BeanMethodNotFound.java?view=auto&rev=511195
==============================================================================
--- incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/impl/BeanMethodNotFound.java (added)
+++ incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/impl/BeanMethodNotFound.java Fri Feb 23 18:29:46 2007
@@ -0,0 +1,40 @@
+/*
+ * 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 org.apache.tuscany.container.spring.impl;
+
+import org.apache.tuscany.spi.component.TargetInvokerCreationException;
+import org.apache.tuscany.spi.model.Operation;
+
+/**
+ * Thrown when a service contract Operation cannot be mapped to a method on a Spring Bean class
+ *
+ * @version $Rev$ $Date$
+ */
+public class BeanMethodNotFound extends TargetInvokerCreationException {
+    private Operation operation;
+
+    public BeanMethodNotFound(Operation operation) {
+        super("Bean method not found");
+        this.operation = operation;
+    }
+
+    public Operation getOperation() {
+        return operation;
+    }
+}

Propchange: incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/impl/BeanMethodNotFound.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/impl/BeanMethodNotFound.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/impl/SpringCompositeBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/impl/SpringCompositeBuilder.java?view=diff&rev=511195&r1=511194&r2=511195
==============================================================================
--- incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/impl/SpringCompositeBuilder.java (original)
+++ incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/impl/SpringCompositeBuilder.java Fri Feb 23 18:29:46 2007
@@ -18,25 +18,15 @@
  */
 package org.apache.tuscany.container.spring.impl;
 
-import org.apache.tuscany.spi.QualifiedName;
+import java.net.URI;
+
 import org.apache.tuscany.spi.builder.BuilderException;
-import org.apache.tuscany.spi.builder.BuilderInstantiationException;
 import org.apache.tuscany.spi.component.Component;
-import org.apache.tuscany.spi.component.ComponentRegistrationException;
 import org.apache.tuscany.spi.component.CompositeComponent;
-import org.apache.tuscany.spi.component.Service;
-import org.apache.tuscany.spi.component.ServiceBinding;
-import org.apache.tuscany.spi.component.Reference;
 import org.apache.tuscany.spi.deployer.DeploymentContext;
 import org.apache.tuscany.spi.extension.ComponentBuilderExtension;
-import org.apache.tuscany.spi.model.BoundReferenceDefinition;
-import org.apache.tuscany.spi.model.BoundServiceDefinition;
 import org.apache.tuscany.spi.model.ComponentDefinition;
-import org.apache.tuscany.spi.model.Property;
-import org.apache.tuscany.spi.wire.InboundInvocationChain;
-import org.apache.tuscany.spi.wire.InboundWire;
 
-import org.apache.tuscany.container.spring.model.SpringComponentType;
 import org.apache.tuscany.container.spring.model.SpringImplementation;
 import org.springframework.core.io.Resource;
 
@@ -47,53 +37,14 @@
  */
 public class SpringCompositeBuilder extends ComponentBuilderExtension<SpringImplementation> {
 
-    @SuppressWarnings("unchecked")
     public Component build(CompositeComponent parent,
                            ComponentDefinition<SpringImplementation> componentDefinition,
                            DeploymentContext deploymentContext) throws BuilderException {
-        String name = componentDefinition.getName();
+        URI uri = componentDefinition.getUri();
         SpringImplementation implementation = componentDefinition.getImplementation();
         Resource resource = implementation.getApplicationResource();
-        SpringCompositeComponent component =
-            new SpringCompositeComponent(name, resource, parent, wireService, connector, null);
-        SpringComponentType<Property<?>> componentType = implementation.getComponentType();
-
-        // We need to set the target invoker as opposed to having the connector do it since the
-        // Spring context is "opaque" to the wiring fabric. In other words, the Spring context does not expose
-        // its beans as SCA components to the connector to wire the serviceBindings to
-        for (BoundServiceDefinition serviceDefinition : componentType.getServices().values()) {
-            // call back into builder registry to handle building of serviceBindings
-            Service service = builderRegistry.build(parent, serviceDefinition, deploymentContext);
-            for (ServiceBinding binding : service.getServiceBindings()) {
-                // wire service to bean invokers
-                InboundWire wire = binding.getInboundWire();
-                QualifiedName targetName = new QualifiedName(serviceDefinition.getTarget().getPath());
-                for (InboundInvocationChain chain : wire.getInvocationChains().values()) {
-                    // FIXME this should go to the connector and get policy and be invoked from
-                    // SpringComposite.prepare()
-                    chain.addInterceptor(new SpringInterceptor());
-                    chain.setTargetInvoker(component.createTargetInvoker(targetName.getPartName(),
-                        chain.getOperation(),
-                        null));
-                }
-            }
-            try {
-                component.register(service);
-            } catch (ComponentRegistrationException e) {
-                throw new BuilderInstantiationException("Error registering service", e);
-            }
-        }
-        for (BoundReferenceDefinition referenceDefinition : componentType.getReferences().values()) {
-            // call back into builder registry to handle building of references
-            Reference reference = builderRegistry.build(parent, referenceDefinition, deploymentContext);
-            connector.connect(reference);
-            try {
-                component.register(reference);
-            } catch (ComponentRegistrationException e) {
-                throw new BuilderInstantiationException("Error registering reference", e);
-            }
-        }
-        return component;
+        ClassLoader cl = implementation.getClassLoader();
+        return new SpringCompositeComponent(uri, resource, proxyService, null, cl);
     }
 
     protected Class<SpringImplementation> getImplementationType() {

Modified: incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/impl/SpringCompositeComponent.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/impl/SpringCompositeComponent.java?view=diff&rev=511195&r1=511194&r2=511195
==============================================================================
--- incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/impl/SpringCompositeComponent.java (original)
+++ incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/impl/SpringCompositeComponent.java Fri Feb 23 18:29:46 2007
@@ -20,24 +20,24 @@
 
 import java.io.IOException;
 import java.lang.reflect.Method;
+import java.net.URI;
+import java.util.List;
 import java.util.Locale;
 import java.util.Map;
 
 import org.w3c.dom.Document;
 
-import org.apache.tuscany.spi.builder.Connector;
-import org.apache.tuscany.spi.component.CompositeComponent;
 import org.apache.tuscany.spi.component.Reference;
 import org.apache.tuscany.spi.component.SCAObject;
-import org.apache.tuscany.spi.component.ScopeContainer;
 import org.apache.tuscany.spi.component.ServiceBinding;
+import org.apache.tuscany.spi.component.TargetInvokerCreationException;
 import org.apache.tuscany.spi.extension.CompositeComponentExtension;
 import static org.apache.tuscany.spi.idl.java.JavaIDLUtils.findMethod;
 import org.apache.tuscany.spi.model.Operation;
 import org.apache.tuscany.spi.model.ServiceContract;
-import org.apache.tuscany.spi.wire.InboundWire;
+import org.apache.tuscany.spi.wire.ProxyService;
 import org.apache.tuscany.spi.wire.TargetInvoker;
-import org.apache.tuscany.spi.wire.WireService;
+import org.apache.tuscany.spi.wire.Wire;
 
 import org.apache.tuscany.container.spring.context.SCAApplicationContext;
 import org.springframework.beans.BeansException;
@@ -62,62 +62,57 @@
     private static final String[] EMPTY_ARRAY = new String[0];
     private AbstractApplicationContext springContext;
     private Resource resource;
-    private WireService wireService;
+    private ProxyService proxyService;
+    private ClassLoader loader;
 
     /**
      * Creates a new composite
      *
-     * @param name           the name of the SCA composite
+     * @param uri            the uri of the SCA composite
      * @param resource       a resource pointing to the application context
-     * @param parent         the SCA composite parent
-     * @param wireService    the wire service to create proxies
-     * @param connector      the connector to use for wiring children
      * @param propertyValues the values of this composite's Properties
      */
-    public SpringCompositeComponent(String name,
+    public SpringCompositeComponent(URI uri,
                                     Resource resource,
-                                    CompositeComponent parent,
-                                    WireService wireService,
-                                    Connector connector,
-                                    Map<String, Document> propertyValues) {
-        super(name, parent, connector, propertyValues);
+                                    ProxyService proxyService,
+                                    Map<String, Document> propertyValues,
+                                    ClassLoader loader) {
+        super(uri, propertyValues);
         this.resource = resource;
-        this.wireService = wireService;
+        this.proxyService = proxyService;
+        this.loader = loader;
     }
 
-    /**
-     * Creates a new composite
-     *
-     * @param name           the name of the SCA composite
-     * @param context        the Spring application context
-     * @param parent         the SCA composite parent
-     * @param connector      the connector to use for wiring children
-     * @param propertyValues the values of this composite's Properties
-     */
-    public SpringCompositeComponent(String name,
-                                    AbstractApplicationContext context,
-                                    CompositeComponent parent,
-                                    Connector connector,
-                                    Map<String, Document> propertyValues) {
-        super(name, parent, connector, propertyValues);
-        this.springContext = context;
-        SCAParentApplicationContext scaApplicationContext = new SCAParentApplicationContext();
-        springContext.setParent(scaApplicationContext);
-        // REVIEW we need to refresh to pick up the parent but this is not optimal
-        springContext.refresh();
-    }
-
-    public TargetInvoker createTargetInvoker(String targetName, Operation operation, InboundWire callbackWire) {
+    public TargetInvoker createTargetInvoker(String targetName, Operation operation)
+        throws TargetInvokerCreationException {
+        TargetInvoker invoker = super.createTargetInvoker(targetName, operation);
+        if (invoker != null) {
+            return invoker;
+        }
+        // no service found, wire to a bean using the service name as the bean name
         ServiceContract contract = operation.getServiceContract();
         Method[] methods = contract.getInterfaceClass().getMethods();
         Method method = findMethod(operation, methods);
-        // FIXME test m == null
-        // Treat the serviceName as the Spring bean name to look up
+        if (method == null) {
+            throw new BeanMethodNotFound(operation);
+        }
         return new SpringInvoker(targetName, method, this);
     }
 
-    public void setScopeContainer(ScopeContainer scopeContainer) {
-        // not needed
+    public List<Wire> getWires(String name) {
+        throw new UnsupportedOperationException();
+    }
+
+    public void attachCallbackWire(Wire wire) {
+        throw new UnsupportedOperationException();
+    }
+
+    public void attachWire(Wire wire) {
+        throw new UnsupportedOperationException();
+    }
+
+    public void attachWires(List<Wire> wires) {
+        throw new UnsupportedOperationException();
     }
 
     public ConfigurableApplicationContext getApplicationContext() {
@@ -135,8 +130,16 @@
         }
         if (springContext == null) {
             SCAParentApplicationContext scaApplicationContext = new SCAParentApplicationContext();
-            springContext = new SCAApplicationContext(scaApplicationContext, resource);
-            springContext.start();
+            ClassLoader cl = Thread.currentThread().getContextClassLoader();
+            try {
+                // FIXME this is horrible
+                Thread.currentThread().setContextClassLoader(loader);
+                springContext = new SCAApplicationContext(scaApplicationContext, resource);
+                springContext.start();
+            } finally {
+                Thread.currentThread().setContextClassLoader(cl);
+
+            }
         }
     }
 
@@ -150,9 +153,15 @@
     }
 
     /**
-     * An inner class is required to act as the Spring application context parent as opposed to implementing the
-     * interface since the return types for {@link org.springframework.context.ApplicationContext#getParent()} and
-     * {@link org.apache.tuscany.spi.component.CompositeComponent#getParent()} clash
+     * Used in unit testing
+     */
+    void setSpringContext(AbstractApplicationContext springContext) {
+        this.springContext = springContext;
+    }
+    
+    /**
+     * TODO remove need for inner class as SCA.getParent() has been removed and no longer clashes with
+     * ApplicaitonContext.getParent
      */
     private class SCAParentApplicationContext implements ApplicationContext {
 
@@ -169,25 +178,25 @@
             Class<?> type = null;
             if (object instanceof Reference) {
                 Reference reference = (Reference) object;
-                InboundWire wire = null;
+                Wire wire = null;
                 if (!reference.getReferenceBindings().isEmpty()) {
                     // FIXME JFM provide a better way for the runtime to select the binding as opposed to the first one
-                    wire = reference.getReferenceBindings().get(0).getInboundWire();
-                    type = wire.getServiceContract().getInterfaceClass();
+                    wire = reference.getReferenceBindings().get(0).getWire();
+                    type = wire.getSourceContract().getInterfaceClass();
                 }
                 if (requiredType != null && requiredType.isAssignableFrom(type)) {
                     // need null check since Spring may pass in a null
                     throw new BeanNotOfRequiredTypeException(name, requiredType, type);
                 }
-                return wireService.createProxy(type, wire);
+                return proxyService.createProxy(type, wire);
             } else if (object instanceof ServiceBinding) {
                 ServiceBinding serviceBinding = (ServiceBinding) object;
-                type = serviceBinding.getInboundWire().getServiceContract().getInterfaceClass();
+                type = serviceBinding.getWire().getSourceContract().getInterfaceClass();
                 if (requiredType != null && requiredType.isAssignableFrom(type)) {
                     // need null check since Spring may pass in a null
                     throw new BeanNotOfRequiredTypeException(name, requiredType, type);
                 }
-                return wireService.createProxy(type, serviceBinding.getInboundWire());
+                return proxyService.createProxy(type, serviceBinding.getWire());
             } else {
                 throw new AssertionError("Illegal object type [" + name + "]");
             }
@@ -222,7 +231,7 @@
         }
 
         public String getDisplayName() {
-            return getName();
+            return getUri().toString();
         }
 
         public long getStartupDate() {

Modified: incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/loader/SpringImplementationLoader.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/loader/SpringImplementationLoader.java?view=diff&rev=511195&r1=511194&r2=511195
==============================================================================
--- incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/loader/SpringImplementationLoader.java (original)
+++ incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/loader/SpringImplementationLoader.java Fri Feb 23 18:29:46 2007
@@ -22,6 +22,7 @@
 import java.io.FileInputStream;
 import java.io.IOException;
 import java.net.MalformedURLException;
+import java.net.URI;
 import java.net.URL;
 import java.util.jar.Attributes;
 import java.util.jar.JarEntry;
@@ -33,7 +34,7 @@
 import javax.xml.stream.XMLStreamException;
 import javax.xml.stream.XMLStreamReader;
 
-import static org.osoa.sca.Version.XML_NAMESPACE_1_0;
+import org.osoa.sca.Constants;
 
 import org.apache.tuscany.spi.annotation.Autowire;
 import org.apache.tuscany.spi.component.CompositeComponent;
@@ -42,9 +43,9 @@
 import org.apache.tuscany.spi.loader.LoaderException;
 import org.apache.tuscany.spi.loader.LoaderRegistry;
 import org.apache.tuscany.spi.loader.MissingResourceException;
-import org.apache.tuscany.spi.model.BoundReferenceDefinition;
-import org.apache.tuscany.spi.model.BoundServiceDefinition;
 import org.apache.tuscany.spi.model.ModelObject;
+import org.apache.tuscany.spi.model.ReferenceDefinition;
+import org.apache.tuscany.spi.model.ServiceDefinition;
 
 import org.apache.tuscany.container.spring.model.SpringComponentType;
 import org.apache.tuscany.container.spring.model.SpringImplementation;
@@ -54,14 +55,16 @@
 import org.springframework.core.io.UrlResource;
 
 /**
- * Loader for handling Spring <spring:implementation.spring> elements.
+ * Loader for handling Spring <implementation.spring> elements.
+ *
+ * @version $Rev$ $Date$
  */
 public class SpringImplementationLoader extends LoaderExtension<SpringImplementation> {
     private static final QName IMPLEMENTATION_SPRING = new QName("http://www.osoa.org/xmlns/sca/1.0",
         "implementation.spring");
     private static final String APPLICATION_CONTEXT = "applicationContext.xml";
-    private static final QName SERVICE_ELEMENT = new QName(XML_NAMESPACE_1_0, "service");
-    private static final QName REFERENCE_ELEMENT = new QName(XML_NAMESPACE_1_0, "reference");
+    private static final QName SERVICE_ELEMENT = new QName(Constants.SCA_NS, "service");
+    private static final QName REFERENCE_ELEMENT = new QName(Constants.SCA_NS, "reference");
 
     private final RuntimeInfo runtimeInfo;
 
@@ -85,8 +88,8 @@
             throw new MissingResourceException("No location supplied");
         }
 
-        SpringImplementation implementation = new SpringImplementation();
         ClassLoader classLoader = deploymentContext.getClassLoader();
+        SpringImplementation implementation = new SpringImplementation(classLoader);
         implementation.setApplicationResource(getApplicationContextResource(locationAttr, classLoader));
         registry.loadComponentType(parent, implementation, deploymentContext);
         SpringComponentType type = implementation.getComponentType();
@@ -95,19 +98,19 @@
                 case START_ELEMENT:
                     QName qname = reader.getName();
                     if (SERVICE_ELEMENT.equals(qname)) {
-                        BoundServiceDefinition service =
-                            (BoundServiceDefinition) registry.load(parent, null, reader, deploymentContext);
+                        ServiceDefinition service =
+                            (ServiceDefinition) registry.load(parent, null, reader, deploymentContext);
                         if (!type.isExposeAllBeans()) {
-                            String name = service.getName();
+                            URI name = service.getUri();
                             if (!type.getServiceDeclarations().containsKey(name)) {
-                                throw new LoaderException("No service defined in Spring context for ", name);
+                                throw new LoaderException("No service defined in Spring context for ", name.toString());
                             }
                         }
-                        type.getDeclaredServices().put(service.getName(), service);
+                        type.getDeclaredServices().put(service.getUri(), service);
                     } else if (REFERENCE_ELEMENT.equals(qname)) {
-                        BoundReferenceDefinition reference =
-                            (BoundReferenceDefinition) registry.load(parent, null, reader, deploymentContext);
-                        type.getDeclaredReferences().put(reference.getName(), reference);
+                        ReferenceDefinition reference =
+                            (ReferenceDefinition) registry.load(parent, null, reader, deploymentContext);
+                        type.getDeclaredReferences().put(reference.getUri(), reference);
                     }
                     break;
                 case END_ELEMENT:
@@ -124,9 +127,9 @@
         File appXmlFile;
         File locationFile = new File(locationAttr);
 
-        if (!locationFile.isAbsolute()) {
-            locationFile = new File(runtimeInfo.getApplicationRootDirectory(), locationAttr);
-        }
+//        if (!locationFile.isAbsolute()) {
+//            locationFile = new File(runtimeInfo.getApplicationRootDirectory(), locationAttr);
+//        }
         if (!locationFile.exists()) {
             // FIXME hack
             URL url;

Modified: incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/model/SpringComponentType.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/model/SpringComponentType.java?view=diff&rev=511195&r1=511194&r2=511195
==============================================================================
--- incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/model/SpringComponentType.java (original)
+++ incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/model/SpringComponentType.java Fri Feb 23 18:29:46 2007
@@ -21,10 +21,10 @@
 import java.util.HashMap;
 import java.util.Map;
 
-import org.apache.tuscany.spi.model.BoundReferenceDefinition;
-import org.apache.tuscany.spi.model.BoundServiceDefinition;
 import org.apache.tuscany.spi.model.CompositeComponentType;
 import org.apache.tuscany.spi.model.Property;
+import org.apache.tuscany.spi.model.ReferenceDefinition;
+import org.apache.tuscany.spi.model.ServiceDefinition;
 
 /**
  * Component type information for a Spring composite component implementation type. A component type is associated with
@@ -33,7 +33,7 @@
  * @version $Rev$ $Date$
  */
 public class SpringComponentType<P extends Property<?>>
-    extends CompositeComponentType<BoundServiceDefinition, BoundReferenceDefinition, P> {
+    extends CompositeComponentType<ServiceDefinition, ReferenceDefinition, P> {
     private Map<String, ServiceDeclaration> serviceDeclarations = new HashMap<String, ServiceDeclaration>();
     private Map<String, ReferenceDeclaration> referenceDeclarations = new HashMap<String, ReferenceDeclaration>();
     private boolean exposeAllBeans;

Modified: incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/model/SpringImplementation.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/model/SpringImplementation.java?view=diff&rev=511195&r1=511194&r2=511195
==============================================================================
--- incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/model/SpringImplementation.java (original)
+++ incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/model/SpringImplementation.java Fri Feb 23 18:29:46 2007
@@ -31,12 +31,17 @@
 public class SpringImplementation extends Implementation<SpringComponentType<Property<?>>> {
     private String location;
     private Resource applicationResource;
+    private ClassLoader classLoader;
 
-    public SpringImplementation() {
+    public SpringImplementation(ClassLoader classloader) {
+        this.classLoader = classloader;
     }
 
-    public SpringImplementation(SpringComponentType<Property<?>> componentType) {
-        super(componentType);
+    /**
+     * Returns the classloader of the Spring application context
+     */
+    public ClassLoader getClassLoader() {
+        return classLoader;
     }
 
     /**

Modified: incubator/tuscany/java/sca/extensions/spring/container/src/main/resources/META-INF/sca/spring.system.scdl
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/extensions/spring/container/src/main/resources/META-INF/sca/spring.system.scdl?view=diff&rev=511195&r1=511194&r2=511195
==============================================================================
--- incubator/tuscany/java/sca/extensions/spring/container/src/main/resources/META-INF/sca/spring.system.scdl (original)
+++ incubator/tuscany/java/sca/extensions/spring/container/src/main/resources/META-INF/sca/spring.system.scdl Fri Feb 23 18:29:46 2007
@@ -25,11 +25,11 @@
 
            name="org.apache.tuscany.launcher.SpringImplementation">
 
-    <dependency xmlns="http://tuscany.apache.org/xmlns/1.0-SNAPSHOT">
+   <!-- <dependency xmlns="http://tuscany.apache.org/xmlns/1.0-SNAPSHOT">
         <group>org.apache.tuscany.sca.extensions.spring</group>
         <name>tuscany-spring</name>
         <version>1.0-incubator-SNAPSHOT</version>
-    </dependency>
+    </dependency>  -->
 
     <component name="spring.implementationLoader">
         <system:implementation.system class="org.apache.tuscany.container.spring.loader.SpringImplementationLoader"/>

Modified: incubator/tuscany/java/sca/extensions/spring/container/src/test/java/org/apache/tuscany/container/spring/SpringTestUtils.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/extensions/spring/container/src/test/java/org/apache/tuscany/container/spring/SpringTestUtils.java?view=diff&rev=511195&r1=511194&r2=511195
==============================================================================
--- incubator/tuscany/java/sca/extensions/spring/container/src/test/java/org/apache/tuscany/container/spring/SpringTestUtils.java (original)
+++ incubator/tuscany/java/sca/extensions/spring/container/src/test/java/org/apache/tuscany/container/spring/SpringTestUtils.java Fri Feb 23 18:29:46 2007
@@ -18,20 +18,18 @@
  */
 package org.apache.tuscany.container.spring;
 
+import java.net.URI;
 import javax.xml.namespace.QName;
 
-import org.apache.tuscany.spi.QualifiedName;
-import org.apache.tuscany.spi.builder.Connector;
 import org.apache.tuscany.spi.builder.WiringException;
-import org.apache.tuscany.spi.component.CompositeComponent;
 import org.apache.tuscany.spi.component.ServiceBinding;
+import org.apache.tuscany.spi.component.TargetInvokerCreationException;
 import org.apache.tuscany.spi.extension.ServiceBindingExtension;
 import org.apache.tuscany.spi.idl.InvalidServiceContractException;
-import org.apache.tuscany.spi.wire.InboundWire;
-import org.apache.tuscany.spi.wire.OutboundWire;
+import org.apache.tuscany.spi.model.Operation;
+import org.apache.tuscany.spi.wire.TargetInvoker;
 
 import org.apache.tuscany.container.spring.mock.TestBeanImpl;
-import org.apache.tuscany.test.ArtifactFactory;
 import org.springframework.beans.factory.config.BeanDefinition;
 import org.springframework.beans.factory.support.RootBeanDefinition;
 import org.springframework.context.support.GenericApplicationContext;
@@ -44,25 +42,18 @@
     private SpringTestUtils() {
     }
 
-    public static <T> ServiceBinding createService(String name,
-                                                   Class<T> serviceInterface,
-                                                   CompositeComponent parent)
+    public static <T> ServiceBinding createService(URI uri, Class<T> serviceInterface)
         throws InvalidServiceContractException, WiringException {
-        ServiceBinding serviceBinding = new ServiceBindingExtension(name, parent) {
+        return new ServiceBindingExtension(uri) {
             public QName getBindingType() {
                 return null;
             }
+
+            public TargetInvoker createTargetInvoker(String targetName, Operation operation)
+                throws TargetInvokerCreationException {
+                return null;
+            }
         };
-        InboundWire inboundWire = ArtifactFactory.createLocalInboundWire(name, serviceInterface);
-        OutboundWire outboundWire = ArtifactFactory.createLocalOutboundWire(name, serviceInterface);
-        ArtifactFactory.terminateWire(outboundWire);
-        serviceBinding.setInboundWire(inboundWire);
-        serviceBinding.setOutboundWire(outboundWire);
-        outboundWire.setTargetName(new QualifiedName("foo"));
-        Connector connector = ArtifactFactory.createConnector();
-        connector.connect(serviceBinding);
-        ArtifactFactory.terminateWire(inboundWire);
-        return serviceBinding;
     }
 
 

Copied: incubator/tuscany/java/sca/extensions/spring/container/src/test/java/org/apache/tuscany/container/spring/impl/ReferenceWiringTestCase.java (from r510793, incubator/tuscany/java/sca/extensions/spring/container/src/test/java/org/apache/tuscany/container/spring/impl/ReferenceInvocationTestCase.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/extensions/spring/container/src/test/java/org/apache/tuscany/container/spring/impl/ReferenceWiringTestCase.java?view=diff&rev=511195&p1=incubator/tuscany/java/sca/extensions/spring/container/src/test/java/org/apache/tuscany/container/spring/impl/ReferenceInvocationTestCase.java&r1=510793&p2=incubator/tuscany/java/sca/extensions/spring/container/src/test/java/org/apache/tuscany/container/spring/impl/ReferenceWiringTestCase.java&r2=511195
==============================================================================
--- incubator/tuscany/java/sca/extensions/spring/container/src/test/java/org/apache/tuscany/container/spring/impl/ReferenceInvocationTestCase.java (original)
+++ incubator/tuscany/java/sca/extensions/spring/container/src/test/java/org/apache/tuscany/container/spring/impl/ReferenceWiringTestCase.java Fri Feb 23 18:29:46 2007
@@ -18,21 +18,35 @@
  */
 package org.apache.tuscany.container.spring.impl;
 
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Method;
+import java.lang.reflect.Proxy;
+import java.net.URI;
 import java.net.URL;
-import java.util.List;
 import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import javax.xml.namespace.QName;
+
+import org.osoa.sca.CallableReference;
 
-import org.apache.tuscany.spi.component.ReferenceBinding;
 import org.apache.tuscany.spi.component.Reference;
+import org.apache.tuscany.spi.component.ReferenceBinding;
+import org.apache.tuscany.spi.component.TargetInvokerCreationException;
 import org.apache.tuscany.spi.model.ServiceContract;
-import org.apache.tuscany.spi.wire.InboundWire;
+import org.apache.tuscany.spi.model.Operation;
+import org.apache.tuscany.spi.wire.ChainHolder;
+import org.apache.tuscany.spi.wire.IncompatibleServiceContractException;
+import org.apache.tuscany.spi.wire.ProxyCreationException;
+import org.apache.tuscany.spi.wire.ProxyService;
+import org.apache.tuscany.spi.wire.Wire;
+import org.apache.tuscany.spi.wire.TargetInvoker;
+import org.apache.tuscany.spi.extension.ReferenceBindingExtension;
 
 import junit.framework.TestCase;
 import org.apache.tuscany.container.spring.mock.TestBean;
 import org.easymock.EasyMock;
-import static org.easymock.EasyMock.createMock;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.replay;
 import org.springframework.core.io.Resource;
 import org.springframework.core.io.UrlResource;
 
@@ -41,32 +55,87 @@
  *
  * @version $$Rev$$ $$Date$$
  */
-public class ReferenceInvocationTestCase extends TestCase {
+public class ReferenceWiringTestCase extends TestCase {
 
     public void testInvocation() throws Exception {
-        URL url = getClass().getClassLoader().getResource("META-INF/sca/testReferenceContext.xml");
+        ClassLoader loader = getClass().getClassLoader();
+        URL url = loader.getResource("META-INF/sca/testReferenceContext.xml");
         Resource resource = new UrlResource(url);
-        SpringCompositeComponent parent = new SpringCompositeComponent("spring", resource, null, null, null, null);
-        InboundWire inboundWire = EasyMock.createMock(InboundWire.class);
-        EasyMock.expect(inboundWire.getServiceContract()).andReturn(new ServiceContract(TestBean.class) {
-        }).atLeastOnce();
-        EasyMock.replay(inboundWire);
-        ReferenceBinding referenceBinding = createMock(ReferenceBinding.class);
-        expect(referenceBinding.isSystem()).andReturn(false).atLeastOnce();
-        expect(referenceBinding.getInboundWire()).andStubReturn(inboundWire);
+        URI uri = URI.create("spring");
+        ProxyService proxyService = new MockProxyService();
+        SpringCompositeComponent parent = new SpringCompositeComponent(uri, resource, proxyService, null, loader);
+        Wire wire = EasyMock.createMock(Wire.class);
+        ServiceContract<?> contract = new ServiceContract(TestBean.class) {
+        };
+        EasyMock.expect(wire.getSourceContract()).andReturn(contract).atLeastOnce();
+        EasyMock.replay(wire);
+        ReferenceBinding referenceBinding = EasyMock.createMock(ReferenceBinding.class);
+        EasyMock.expect(referenceBinding.getWire()).andStubReturn(wire);
         referenceBinding.start();
-        replay(referenceBinding);
+        EasyMock.replay(referenceBinding);
+
+        URI referenceUri = URI.create("spring#testReference");
+        ReferenceBinding binding = new ReferenceBindingExtension(referenceUri, null){
+
+            public QName getBindingType() {
+                return null;
+            }
 
+            public TargetInvoker createTargetInvoker(String targetName, Operation operation)
+            throws TargetInvokerCreationException {
+                throw new UnsupportedOperationException();
+            }
+        };
+        binding.setWire(wire);
+        List<ReferenceBinding> bindings = new ArrayList<ReferenceBinding>();
+        bindings.add(binding);
         Reference reference = EasyMock.createMock(Reference.class);
-        expect(reference.isSystem()).andReturn(false).atLeastOnce();
-        expect(reference.getName()).andReturn("bar").anyTimes();
-        List<ReferenceBinding> bindings = new ArrayList <ReferenceBinding>();
-        expect(reference.getReferenceBindings()).andReturn(bindings);
+        EasyMock.expect(reference.getUri()).andReturn(referenceUri).anyTimes();
+        EasyMock.expect(reference.getReferenceBindings()).andReturn(bindings).atLeastOnce();
         reference.start();
-        replay(reference);
+        EasyMock.replay(reference);
         parent.register(reference);
         parent.start();
-        parent.getBean(TestBean.class, "testBean");
+        TestBean bean = parent.getBean(TestBean.class, "testBean");
+        assertNotNull(bean.getBean());
+        EasyMock.verify(reference);
+    }
+
+    private class MockInvocationHandler implements InvocationHandler {
+
+        public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
+            return null;
+        }
+    }
+
+    private class MockProxyService implements ProxyService {
+
+        public <T> T createProxy(Class<T> interfaze, Wire wire) throws ProxyCreationException {
+            ClassLoader cl = interfaze.getClassLoader();
+            Class[] interfaces = new Class[]{interfaze};
+            MockInvocationHandler handler = new MockInvocationHandler();
+            return interfaze.cast(Proxy.newProxyInstance(cl, interfaces, handler));
+        }
+
+        public <T> T createProxy(Class<T> interfaze, Wire wire, Map<Method, ChainHolder> mapping)
+            throws ProxyCreationException {
+            throw new UnsupportedOperationException();
+        }
+
+        public Object createCallbackProxy(Class<?> interfaze, List<Wire> wires) throws ProxyCreationException {
+            throw new UnsupportedOperationException();
+        }
+
+        public <B, R extends CallableReference<B>> R cast(B target) throws IllegalArgumentException {
+            throw new UnsupportedOperationException();
+        }
+
+        public boolean checkCompatibility(ServiceContract<?> source,
+                                          ServiceContract<?> target,
+                                          boolean ignoreCallback,
+                                          boolean silent) throws IncompatibleServiceContractException {
+            throw new UnsupportedOperationException();
+        }
     }
 
 }

Propchange: incubator/tuscany/java/sca/extensions/spring/container/src/test/java/org/apache/tuscany/container/spring/impl/ReferenceWiringTestCase.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/extensions/spring/container/src/test/java/org/apache/tuscany/container/spring/impl/ReferenceWiringTestCase.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: incubator/tuscany/java/sca/extensions/spring/container/src/test/java/org/apache/tuscany/container/spring/impl/SpringCompositeBuilderTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/extensions/spring/container/src/test/java/org/apache/tuscany/container/spring/impl/SpringCompositeBuilderTestCase.java?view=diff&rev=511195&r1=511194&r2=511195
==============================================================================
--- incubator/tuscany/java/sca/extensions/spring/container/src/test/java/org/apache/tuscany/container/spring/impl/SpringCompositeBuilderTestCase.java (original)
+++ incubator/tuscany/java/sca/extensions/spring/container/src/test/java/org/apache/tuscany/container/spring/impl/SpringCompositeBuilderTestCase.java Fri Feb 23 18:29:46 2007
@@ -19,36 +19,21 @@
 package org.apache.tuscany.container.spring.impl;
 
 import java.net.URI;
-import java.net.URISyntaxException;
 import java.net.URL;
 
-import javax.xml.namespace.QName;
-
 import org.apache.tuscany.spi.builder.BuilderRegistry;
-import org.apache.tuscany.spi.builder.Connector;
 import org.apache.tuscany.spi.component.CompositeComponent;
 import org.apache.tuscany.spi.component.Service;
 import org.apache.tuscany.spi.deployer.DeploymentContext;
-import org.apache.tuscany.spi.extension.ServiceBindingExtension;
-import org.apache.tuscany.spi.model.BoundServiceDefinition;
 import org.apache.tuscany.spi.model.ComponentDefinition;
 import org.apache.tuscany.spi.model.Property;
-import org.apache.tuscany.spi.wire.InboundWire;
-import org.apache.tuscany.spi.wire.OutboundWire;
-import org.apache.tuscany.spi.wire.WireService;
+import org.apache.tuscany.spi.model.ReferenceDefinition;
+import org.apache.tuscany.spi.model.ServiceDefinition;
 
 import junit.framework.TestCase;
-import org.apache.tuscany.container.spring.mock.TestBean;
 import org.apache.tuscany.container.spring.model.SpringComponentType;
 import org.apache.tuscany.container.spring.model.SpringImplementation;
-import org.apache.tuscany.test.ArtifactFactory;
-import org.apache.tuscany.test.binding.TestBindingDefinition;
-import static org.easymock.EasyMock.createMock;
-import static org.easymock.EasyMock.createNiceMock;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.isA;
-import static org.easymock.EasyMock.replay;
-import static org.easymock.EasyMock.verify;
+import org.easymock.EasyMock;
 import org.springframework.core.io.Resource;
 import org.springframework.core.io.UrlResource;
 
@@ -56,74 +41,89 @@
  * @version $$Rev$$ $$Date$$
  */
 public class SpringCompositeBuilderTestCase extends TestCase {
-    private ComponentDefinition<SpringImplementation> definition;
 
     /**
-     * Verifies that the builder calls back into the registry to load serviceBindings and wires them to bean targets
-     * when no <code>sca:service</code> tag is specified in the Spring application.xml
+     * Verifies that the builder calls back into the registry to load services and references when no
+     * <code>sca:service</code> tag is specified in the Spring application.xml
      */
-    @SuppressWarnings("unchecked")
     public void testImplicitServiceWiring() throws Exception {
-        // Create a service instance that the mock builder registry will return
-        WireService wireService = ArtifactFactory.createWireService();
-        ServiceBindingExtension binding =
-            new ServiceBindingExtension("fooServiceBinding", null) {
-                public QName getBindingType() {
-                    return null;
-                }
-            };
-        InboundWire inboundWire = ArtifactFactory.createLocalInboundWire("fooServiceBinding", TestBean.class);
-        OutboundWire outboundWire = ArtifactFactory.createLocalOutboundWire("fooServiceBinding", TestBean.class);
-        ArtifactFactory.terminateWire(outboundWire);
-        binding.setInboundWire(inboundWire);
-        binding.setOutboundWire(outboundWire);
-        inboundWire.setContainer(binding);
-        outboundWire.setContainer(binding);
-        Connector connector = ArtifactFactory.createConnector();
-        connector.connect(inboundWire, outboundWire, true);
-
-        Service service = ArtifactFactory.createService("fooServiceBinding", null, outboundWire.getServiceContract());
-        service.addServiceBinding(binding);
+        Service service = EasyMock.createMock(Service.class);
         // Configure the mock builder registry
-        BuilderRegistry registry = createMock(BuilderRegistry.class);
-        expect(registry.build(isA(CompositeComponent.class),
-            isA(BoundServiceDefinition.class),
-            isA(DeploymentContext.class))).andStubReturn(service);
-        replay(registry);
+        BuilderRegistry registry = EasyMock.createMock(BuilderRegistry.class);
+        EasyMock.expect(registry.build(EasyMock.isA(CompositeComponent.class),
+            EasyMock.isA(ServiceDefinition.class),
+            EasyMock.isA(DeploymentContext.class))).andStubReturn(service);
+        EasyMock.replay(registry);
+        SpringCompositeBuilder builder = new SpringCompositeBuilder();
+        builder.setBuilderRegistry(registry);
+        ComponentDefinition<SpringImplementation> definition = createDefinitionWithService();
+        CompositeComponent component = (CompositeComponent) builder.build(null, definition, null);
+        assertNotNull(component);
+        EasyMock.verify(registry);
+    }
 
-        // Test the SpringCompositeBuilder
+    /**
+     * Verifies that the builder calls back into the registry to load services and references when no
+     * <code>sca:reference</code> tag is specified in the Spring application.xml
+     */
+    public void testImplicitReferenceWiring() throws Exception {
+        Service service = EasyMock.createMock(Service.class);
+        // Configure the mock builder registry
+        BuilderRegistry registry = EasyMock.createMock(BuilderRegistry.class);
+        EasyMock.expect(registry.build(EasyMock.isA(CompositeComponent.class),
+            EasyMock.isA(ServiceDefinition.class),
+            EasyMock.isA(DeploymentContext.class))).andStubReturn(service);
+        EasyMock.replay(registry);
         SpringCompositeBuilder builder = new SpringCompositeBuilder();
-        builder.setWireService(wireService);
         builder.setBuilderRegistry(registry);
-        CompositeComponent parent = createNiceMock(CompositeComponent.class);
-        DeploymentContext context = createNiceMock(DeploymentContext.class);
-        CompositeComponent component = (CompositeComponent) builder.build(parent, definition, context);
-        component.start();
-        TestBean bean = wireService.createProxy(TestBean.class, component.getInboundWire("fooServiceBinding"));
-        assertEquals("call foo", bean.echo("call foo"));
-        verify(registry);
+        ComponentDefinition<SpringImplementation> definition = createDefinitionWithReference();
+        CompositeComponent component = (CompositeComponent) builder.build(null, definition, null);
+        assertNotNull(component);
+        EasyMock.verify(registry);
     }
 
-    protected void setUp() throws Exception {
+    protected ComponentDefinition<SpringImplementation> createDefinitionWithService() throws Exception {
         super.setUp();
-        URL url = getClass().getClassLoader().getResource("META-INF/sca/testServiceContext.xml");
+        ClassLoader loader = getClass().getClassLoader();
+        URL url = loader.getResource("META-INF/sca/testServiceContext.xml");
         Resource resource = new UrlResource(url);
-        SpringImplementation impl = new SpringImplementation(createComponentType());
-        definition = new ComponentDefinition<SpringImplementation>("spring", impl);
+        SpringComponentType<Property<?>> type = createComponentTypeWithService();
+        SpringImplementation impl = new SpringImplementation(loader);
+        impl.setComponentType(type);
+        URI uri = URI.create("composite");
+        ComponentDefinition<SpringImplementation> definition = new ComponentDefinition<SpringImplementation>(uri, impl);
         impl.setApplicationResource(resource);
+        return definition;
     }
 
-    private SpringComponentType<Property<?>> createComponentType() {
+    protected ComponentDefinition<SpringImplementation> createDefinitionWithReference() throws Exception {
+        super.setUp();
+        ClassLoader loader = getClass().getClassLoader();
+        URL url = loader.getResource("META-INF/sca/testServiceContext.xml");
+        Resource resource = new UrlResource(url);
+        SpringComponentType<Property<?>> type = createComponentTypeWithReference();
+        SpringImplementation impl = new SpringImplementation(loader);
+        impl.setComponentType(type);
+        URI uri = URI.create("composite");
+        ComponentDefinition<SpringImplementation> definition = new ComponentDefinition<SpringImplementation>(uri, impl);
+        impl.setApplicationResource(resource);
+        return definition;
+    }
+
+    private SpringComponentType<Property<?>> createComponentTypeWithService() {
         SpringComponentType<Property<?>> componentType = new SpringComponentType<Property<?>>();
-        BoundServiceDefinition serviceDefinition = new BoundServiceDefinition();
-        serviceDefinition.setName("fooService");
-        serviceDefinition.addBinding(new TestBindingDefinition());
-        try {
-            serviceDefinition.setTarget(new URI("testBean"));
-        } catch (URISyntaxException e) {
-            throw new AssertionError();
-        }
+        ServiceDefinition serviceDefinition = new ServiceDefinition();
+        serviceDefinition.setUri(URI.create("fooService"));
+        serviceDefinition.setTarget(URI.create("testBean"));
         componentType.add(serviceDefinition);
+        return componentType;
+    }
+
+    private SpringComponentType<Property<?>> createComponentTypeWithReference() {
+        SpringComponentType<Property<?>> componentType = new SpringComponentType<Property<?>>();
+        ReferenceDefinition referenceDefinition = new ReferenceDefinition();
+        referenceDefinition.setUri(URI.create("fooReference"));
+        componentType.add(referenceDefinition);
         return componentType;
     }
 

Modified: incubator/tuscany/java/sca/extensions/spring/container/src/test/java/org/apache/tuscany/container/spring/impl/SpringCompositeComponentTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/extensions/spring/container/src/test/java/org/apache/tuscany/container/spring/impl/SpringCompositeComponentTestCase.java?view=diff&rev=511195&r1=511194&r2=511195
==============================================================================
--- incubator/tuscany/java/sca/extensions/spring/container/src/test/java/org/apache/tuscany/container/spring/impl/SpringCompositeComponentTestCase.java (original)
+++ incubator/tuscany/java/sca/extensions/spring/container/src/test/java/org/apache/tuscany/container/spring/impl/SpringCompositeComponentTestCase.java Fri Feb 23 18:29:46 2007
@@ -1,39 +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 org.apache.tuscany.container.spring.impl;
 
+import java.lang.reflect.Type;
+import java.net.URI;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.tuscany.spi.component.Service;
+import org.apache.tuscany.spi.model.Operation;
+import org.apache.tuscany.spi.model.ServiceContract;
+
 import junit.framework.TestCase;
+import org.easymock.classextension.EasyMock;
+import org.springframework.context.support.AbstractApplicationContext;
 
 /**
  * @version $Rev$ $Date$
  */
 public class SpringCompositeComponentTestCase extends TestCase {
-//
+    private SpringCompositeComponent component;
+
+    public void testChildStart() throws Exception {
+        AbstractApplicationContext appContext = EasyMock.createNiceMock(AbstractApplicationContext.class);
+        EasyMock.replay(appContext);
+        Service service = EasyMock.createMock(Service.class);
+        URI uri = URI.create("composite#service");
+        EasyMock.expect(service.getUri()).andReturn(uri).atLeastOnce();
+        service.start();
+        EasyMock.replay(service);
+        component.setSpringContext(appContext);
+        component.register(service);
+        component.start();
+        EasyMock.verify(service);
+    }
 
-    public void testAppContextStart() {
-//        AbstractApplicationContext appContext = EasyMock.createMock(AbstractApplicationContext.class);
-//        appContext.refresh();
-//        appContext.setParent(EasyMock.isA(ApplicationContext.class));
-//        appContext.start();
-//        replay(appContext);
-//        SpringCompositeComponent component = new SpringCompositeComponent("spring", appContext, null, null, null);
-//        component.start();
-//        verify(appContext);
+    public void testTargetInvokerCreation() throws Exception {
+        ServiceContract<Type> contract = new ServiceContract<Type>(Foo.class) {
+        };
+        Operation<Type> operation = new Operation<Type>("operation", null, null, null);
+        Map<String, Operation<Type>> operations = new HashMap<String, Operation<Type>>();
+        operations.put("operation", operation);
+        contract.setOperations(operations);
+        operation.setServiceContract(contract);
+        component.createTargetInvoker("bean", operation);
     }
-//
-//    public void testChildStart() {
-//        AbstractApplicationContext appContext = EasyMock.createNiceMock(AbstractApplicationContext.class);
-//        replay(appContext);
-//        ServiceBinding service = EasyMock.createMock(ServiceBinding.class);
-//        EasyMock.expect(service.getName()).andReturn("foo").anyTimes();
-//        service.start();
-//        service.getInterface();
-//        EasyMock.expectLastCall().andReturn(Object.class);
-//        expect(service.isSystem()).andReturn(false).atLeastOnce();
-//        replay(service);
-//        SpringCompositeComponent component = new SpringCompositeComponent("spring", appContext, null, null, null);
-//        component.register(service);
-//        component.start();
-//        verify(service);
-//    }
 
 
+    protected void setUp() throws Exception {
+        super.setUp();
+        URI compositeUri = URI.create("composite");
+        component = new SpringCompositeComponent(compositeUri, null, null, null, null);
+
+    }
+
+    private interface Foo {
+        void operation();
+    }
 }

Added: incubator/tuscany/java/sca/extensions/spring/integration-test/core/pom.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/extensions/spring/integration-test/core/pom.xml?view=auto&rev=511195
==============================================================================
--- incubator/tuscany/java/sca/extensions/spring/integration-test/core/pom.xml (added)
+++ incubator/tuscany/java/sca/extensions/spring/integration-test/core/pom.xml Fri Feb 23 18:29:46 2007
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * 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.
+-->
+<project>
+    <parent>
+        <groupId>org.apache.tuscany.sca.spring</groupId>
+        <artifactId>spring-integration-test</artifactId>
+        <version>1.0-alpha-incubating-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+    <groupId>org.apache.tuscany.sca.extensions.spring.spring-integration-test</groupId>
+    <artifactId>spring-integration-test-core</artifactId>
+    <packaging>jar</packaging>
+    <name>Core Integration Test Suite for the Spring Extension</name>
+    <description>Tests core Spring extension functionality</description>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.tuscany</groupId>
+                <artifactId>tuscany-itest-plugin</artifactId>
+                <configuration>
+                    <systemScdl>file:./src/test/resources/system.scdl</systemScdl>
+                </configuration>
+                <dependencies>
+                    <dependency>
+                        <groupId>org.apache.tuscany.sca.spring</groupId>
+                        <artifactId>spring-container</artifactId>
+                        <version>1.0-alpha-incubating-SNAPSHOT</version>
+                        <scope>compile</scope>
+                    </dependency>
+                </dependencies>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>test</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+</project>
\ No newline at end of file

Propchange: incubator/tuscany/java/sca/extensions/spring/integration-test/core/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/extensions/spring/integration-test/core/pom.xml
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/main/java/org/apache/tuscany/sca/extensions/spring/TestBean.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/main/java/org/apache/tuscany/sca/extensions/spring/TestBean.java?view=auto&rev=511195
==============================================================================
--- incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/main/java/org/apache/tuscany/sca/extensions/spring/TestBean.java (added)
+++ incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/main/java/org/apache/tuscany/sca/extensions/spring/TestBean.java Fri Feb 23 18:29:46 2007
@@ -0,0 +1,26 @@
+/*
+ * 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 org.apache.tuscany.sca.extensions.spring;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public interface TestBean {
+    String echo(String msg);
+}

Propchange: incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/main/java/org/apache/tuscany/sca/extensions/spring/TestBean.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/main/java/org/apache/tuscany/sca/extensions/spring/TestBean.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/main/java/org/apache/tuscany/sca/extensions/spring/TestBeanImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/main/java/org/apache/tuscany/sca/extensions/spring/TestBeanImpl.java?view=auto&rev=511195
==============================================================================
--- incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/main/java/org/apache/tuscany/sca/extensions/spring/TestBeanImpl.java (added)
+++ incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/main/java/org/apache/tuscany/sca/extensions/spring/TestBeanImpl.java Fri Feb 23 18:29:46 2007
@@ -0,0 +1,29 @@
+/*
+ * 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 org.apache.tuscany.sca.extensions.spring;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class TestBeanImpl implements TestBean {
+
+    public String echo(String msg) {
+        return msg;
+    }
+}

Propchange: incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/main/java/org/apache/tuscany/sca/extensions/spring/TestBeanImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/main/java/org/apache/tuscany/sca/extensions/spring/TestBeanImpl.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/main/resources/META-INF/sca/spring.composite.scdl
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/main/resources/META-INF/sca/spring.composite.scdl?view=auto&rev=511195
==============================================================================
--- incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/main/resources/META-INF/sca/spring.composite.scdl (added)
+++ incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/main/resources/META-INF/sca/spring.composite.scdl Fri Feb 23 18:29:46 2007
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * 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.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+           xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.0"
+           name="SpringSmoketestComposite">
+
+   <component name="SpringComposite">
+        <implementation.spring location="applicationContext.xml"/>
+    </component>
+    
+</composite>
+
+

Added: incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/test/java/org/apache/tuscany/sca/extensions/spring/WiringTestComponent.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/test/java/org/apache/tuscany/sca/extensions/spring/WiringTestComponent.java?view=auto&rev=511195
==============================================================================
--- incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/test/java/org/apache/tuscany/sca/extensions/spring/WiringTestComponent.java (added)
+++ incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/test/java/org/apache/tuscany/sca/extensions/spring/WiringTestComponent.java Fri Feb 23 18:29:46 2007
@@ -0,0 +1,25 @@
+/*
+ * 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 org.apache.tuscany.sca.extensions.spring;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public interface WiringTestComponent {
+}

Propchange: incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/test/java/org/apache/tuscany/sca/extensions/spring/WiringTestComponent.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/test/java/org/apache/tuscany/sca/extensions/spring/WiringTestComponent.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/test/java/org/apache/tuscany/sca/extensions/spring/WiringTestComponentImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/test/java/org/apache/tuscany/sca/extensions/spring/WiringTestComponentImpl.java?view=auto&rev=511195
==============================================================================
--- incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/test/java/org/apache/tuscany/sca/extensions/spring/WiringTestComponentImpl.java (added)
+++ incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/test/java/org/apache/tuscany/sca/extensions/spring/WiringTestComponentImpl.java Fri Feb 23 18:29:46 2007
@@ -0,0 +1,50 @@
+/*
+ * 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 org.apache.tuscany.sca.extensions.spring;
+
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Service;
+
+import junit.framework.TestCase;
+
+/**
+ * Verifies beans contained in a Spring composite are properly wired to as targets.
+ *
+ * @version $Rev$ $Date$
+ */
+@Service(WiringTestComponent.class)
+public class WiringTestComponentImpl extends TestCase {
+    private TestBean bean;
+
+    /**
+     * Constructor. Accepts a reference to a Spring Bean
+     *
+     * @param bean the Spring Bean
+     */
+    public WiringTestComponentImpl(@Reference(name = "bean")TestBean bean) {
+        this.bean = bean;
+    }
+
+    /**
+     * Invoke to a target Spring Bean
+     */
+    public void testTargetInvocation() {
+        assertEquals("test", bean.echo("test"));
+    }
+}

Propchange: incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/test/java/org/apache/tuscany/sca/extensions/spring/WiringTestComponentImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/test/java/org/apache/tuscany/sca/extensions/spring/WiringTestComponentImpl.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/test/resources/applicationContext.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/test/resources/applicationContext.xml?view=auto&rev=511195
==============================================================================
--- incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/test/resources/applicationContext.xml (added)
+++ incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/test/resources/applicationContext.xml Fri Feb 23 18:29:46 2007
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xmlns:sca="http://www.springframework.org/schema/sca"
+       xsi:schemaLocation="
+http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+http://www.springframework.org/schema/sca http://www.springframework.org/schema/sca/spring-sca.xsd">
+
+ <bean id="TestBean" class="org.apache.tuscany.sca.extensions.spring.TestBeanImpl"/> 
+
+</beans>

Propchange: incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/test/resources/applicationContext.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/test/resources/applicationContext.xml
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/test/resources/itest.scdl
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/test/resources/itest.scdl?view=auto&rev=511195
==============================================================================
--- incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/test/resources/itest.scdl (added)
+++ incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/test/resources/itest.scdl Fri Feb 23 18:29:46 2007
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * 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.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+           xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.0"
+           xmlns:system="http://tuscany.apache.org/xmlns/system/1.0-SNAPSHOT"
+           name="SpecTestHarnessComposite">
+
+   <include scdlResource="META-INF/sca/spring.composite.scdl"/> 
+
+    <component name="WiringTestComponent">
+        <tuscany:junit class="org.apache.tuscany.sca.extensions.spring.WiringTestComponentImpl"/>
+        <reference name="bean">SpringComposite/TestBean</reference>
+    </component>
+
+</composite>



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