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/06/28 13:37:45 UTC

svn commit: r417733 - in /incubator/tuscany/sandbox/jboynes/sca: ./ commands/launcher/src/main/resources/org/apache/tuscany/launcher/ containers/container.spring/src/main/java/org/apache/tuscany/container/spring/ containers/container.spring/src/main/ja...

Author: kentam
Date: Wed Jun 28 04:37:43 2006
New Revision: 417733

URL: http://svn.apache.org/viewvc?rev=417733&view=rev
Log:
Work on Spring container integration; add Spring SCA configuration XSD, lots of small test improvements


Added:
    incubator/tuscany/sandbox/jboynes/sca/commands/launcher/src/main/resources/org/apache/tuscany/launcher/MainLauncher.properties   (with props)
    incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/config/SCAReference.java   (with props)
    incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/config/SCAService.java   (with props)
    incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/config/ScaCompositeBeanDefinitionParser.java   (with props)
    incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/config/ScaPropertyBeanDefinitionParser.java   (with props)
    incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/resources/META-INF/
    incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/resources/META-INF/spring.handlers
    incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/resources/META-INF/spring.schemas
    incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/resources/org/
    incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/resources/org/springframework/
    incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/resources/org/springframework/sca/
    incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/resources/org/springframework/sca/xml/
    incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/resources/org/springframework/sca/xml/spring-sca.xsd   (with props)
    incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/SpringConfigSchemaTestCase.java   (with props)
    incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/SpringTestUtils.java   (with props)
    incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/test/resources/org/
    incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/test/resources/org/apache/
    incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/test/resources/org/apache/tuscany/
    incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/test/resources/org/apache/tuscany/container/
    incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/test/resources/org/apache/tuscany/container/spring/
    incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/test/resources/org/apache/tuscany/container/spring/ExplicitSpring.xml   (with props)
    incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/test/resources/org/apache/tuscany/container/spring/SpringConfigSchemaTest.xml   (with props)
Removed:
    incubator/tuscany/sandbox/jboynes/sca/commands/launcher/src/main/resources/org/apache/tuscany/launcher/Launcher.properties
Modified:
    incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SpringCompositeBuilder.java
    incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SpringCompositeComponent.java
    incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SpringImplementation.java
    incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/config/SCANamespaceHandler.java
    incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/config/SCANamespaceHandlerResolver.java
    incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/config/ScaReferenceBeanDefinitionParser.java
    incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/config/ScaServiceBeanDefinitionParser.java
    incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/ReferenceInvocationTestCase.java
    incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/ServiceInvocationTestCase.java
    incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/SpringCompositeBuilderTestCase.java
    incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/SpringInvocationTestCase.java
    incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/mock/VMBinding.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/builder/ConnectorImpl.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/loader/StringParserPropertyFactory.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/BridgingInterceptor.java
    incubator/tuscany/sandbox/jboynes/sca/pom.xml
    incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/extension/CompositeComponentExtension.java
    incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/model/BoundServiceDefinition.java

Added: incubator/tuscany/sandbox/jboynes/sca/commands/launcher/src/main/resources/org/apache/tuscany/launcher/MainLauncher.properties
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/commands/launcher/src/main/resources/org/apache/tuscany/launcher/MainLauncher.properties?rev=417733&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/commands/launcher/src/main/resources/org/apache/tuscany/launcher/MainLauncher.properties (added)
+++ incubator/tuscany/sandbox/jboynes/sca/commands/launcher/src/main/resources/org/apache/tuscany/launcher/MainLauncher.properties Wed Jun 28 04:37:43 2006
@@ -0,0 +1,20 @@
+#  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.
+#
+#  $Rev: 411440 $ $Date: 2006-06-03 07:40:55 -0700 (Sat, 03 Jun 2006) $
+#
+org.apache.tuscany.launcher.Usage=usage: java [jvm-options] -jar launcher.jar [options] arg...\n\
+  where [options] are:\n\
+  \    --classpath <path>    set the classpath for loading application classes\n
+  \    --main <classname>    specify the classname to launch (overrides manifest entries on classpath param)\n

Propchange: incubator/tuscany/sandbox/jboynes/sca/commands/launcher/src/main/resources/org/apache/tuscany/launcher/MainLauncher.properties
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SpringCompositeBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SpringCompositeBuilder.java?rev=417733&r1=417732&r2=417733&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SpringCompositeBuilder.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SpringCompositeBuilder.java Wed Jun 28 04:37:43 2006
@@ -17,7 +17,7 @@
 import org.apache.tuscany.spi.model.ReferenceTarget;
 import org.apache.tuscany.spi.wire.InboundInvocationChain;
 import org.apache.tuscany.spi.wire.InboundWire;
-import org.springframework.context.support.GenericApplicationContext;
+import org.springframework.context.ConfigurableApplicationContext;
 
 /**
  * Creates a {@link SpringCompositeComponent} from an assembly model
@@ -28,13 +28,15 @@
 
 
     public Component build(CompositeComponent<?> parent, ComponentDefinition<SpringImplementation> componentDefinition,
-                                  DeploymentContext deploymentContext) throws BuilderConfigException {
+                           DeploymentContext deploymentContext) throws BuilderConfigException {
         String name = componentDefinition.getName();
-        GenericApplicationContext applicationContext = componentDefinition.getImplementation().getApplicationContext();
-        SpringCompositeComponent context = new SpringCompositeComponent(name, applicationContext, parent,wireService);
-        CompositeComponentType<BoundServiceDefinition, BoundReferenceDefinition, ? extends Property> componentType = componentDefinition.getImplementation().getComponentType();
+        ConfigurableApplicationContext applicationContext = componentDefinition.getImplementation().getApplicationContext();
+        SpringCompositeComponent component = new SpringCompositeComponent(name, applicationContext, parent, wireService);
+        CompositeComponentType<BoundServiceDefinition, BoundReferenceDefinition, ? extends Property> componentType =
+            componentDefinition.getImplementation().getComponentType();
+
         for (BoundServiceDefinition serviceDefinition : componentType.getServices().values()) {
-            // call back into deployment context to handle building of services
+            // call back into builder registry to handle building of services
             Service<?> service = (Service) builderRegistry.build(parent,
                     serviceDefinition,
                     deploymentContext);
@@ -42,20 +44,20 @@
             InboundWire<?> wire = service.getInboundWire();
             QualifiedName targetName = new QualifiedName(serviceDefinition.getTarget().getPath());
             for (InboundInvocationChain chain : wire.getInvocationChains().values()) {
-                chain.setTargetInvoker(context.createTargetInvoker(targetName.getPartName(), chain.getMethod()));
+                chain.setTargetInvoker(component.createTargetInvoker(targetName.getPartName(), chain.getMethod()));
             }
-            context.register(service);
+            component.register(service);
         }
         // TODO is this correct?
         for (ReferenceTarget target : componentDefinition.getReferenceTargets().values()) {
             ReferenceDefinition referenceDefinition = target.getReference();
             if (referenceDefinition instanceof BoundReferenceDefinition) {
-                // call back into deployment context to handle building of references
-                context.register(builderRegistry.build(parent, (BoundReferenceDefinition<? extends Binding>)
+                // call back into builder registry to handle building of references
+                component.register(builderRegistry.build(parent, (BoundReferenceDefinition<? extends Binding>)
                         referenceDefinition, deploymentContext));
             }
         }
-        return context;
+        return component;
     }
 
     protected Class<SpringImplementation> getImplementationType() {

Modified: incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SpringCompositeComponent.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SpringCompositeComponent.java?rev=417733&r1=417732&r2=417733&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SpringCompositeComponent.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SpringCompositeComponent.java Wed Jun 28 04:37:43 2006
@@ -23,7 +23,6 @@
 import org.springframework.context.ConfigurableApplicationContext;
 import org.springframework.context.MessageSourceResolvable;
 import org.springframework.context.NoSuchMessageException;
-import org.springframework.context.support.GenericApplicationContext;
 import org.springframework.core.io.Resource;
 
 /**
@@ -33,7 +32,7 @@
  */
 public class SpringCompositeComponent extends CompositeComponentExtension {
     private static final String[] EMPTY_ARRAY = new String[0];
-    private GenericApplicationContext springContext;
+    private ConfigurableApplicationContext springContext;
     private SCAApplicationContext scaApplicationContext;
 
     /**
@@ -43,7 +42,7 @@
      * @param springContext the pre-instantiated Spring applicaiton context
      * @param parent        the SCA composite parent
      */
-    public SpringCompositeComponent(String name, GenericApplicationContext springContext, CompositeComponent parent, WireService wireService) {
+    public SpringCompositeComponent(String name, ConfigurableApplicationContext springContext, CompositeComponent parent, WireService wireService) {
         super(name, parent);
         scaApplicationContext = new SCAApplicationContext();
         springContext.setParent(scaApplicationContext);
@@ -51,6 +50,7 @@
     }
 
     public TargetInvoker createTargetInvoker(String serviceName, Method method) {
+        // Treat the serviceName as the Spring bean name to look up
         return new SpringInvoker(serviceName, method, springContext);
     }
 

Modified: incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SpringImplementation.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SpringImplementation.java?rev=417733&r1=417732&r2=417733&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SpringImplementation.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SpringImplementation.java Wed Jun 28 04:37:43 2006
@@ -2,7 +2,7 @@
 
 import org.apache.tuscany.spi.model.CompositeComponentType;
 import org.apache.tuscany.spi.model.Implementation;
-import org.springframework.context.support.GenericApplicationContext;
+import org.springframework.context.ConfigurableApplicationContext;
 
 /**
  * @version $$Rev$$ $$Date$$
@@ -10,7 +10,7 @@
 public class SpringImplementation extends Implementation<CompositeComponentType> {
 
     private String location;
-    private GenericApplicationContext applicationContext;
+    private ConfigurableApplicationContext applicationContext;
 
     public SpringImplementation() {
     }
@@ -33,11 +33,11 @@
         this.location = location;
     }
 
-    public GenericApplicationContext getApplicationContext() {
+    public ConfigurableApplicationContext getApplicationContext() {
         return applicationContext;
     }
 
-    public void setApplicationContext(GenericApplicationContext applicationContext) {
+    public void setApplicationContext(ConfigurableApplicationContext applicationContext) {
         this.applicationContext = applicationContext;
     }
 }

Modified: incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/config/SCANamespaceHandler.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/config/SCANamespaceHandler.java?rev=417733&r1=417732&r2=417733&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/config/SCANamespaceHandler.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/config/SCANamespaceHandler.java Wed Jun 28 04:37:43 2006
@@ -12,14 +12,20 @@
 
     private CompositeComponentType componentType;
 
+    public SCANamespaceHandler() {
+    }
+
+    // TODO: fix when custom HanespaceHandlerResolver impl can be plugged in 
     public SCANamespaceHandler(CompositeComponentType componentType) {
         this.componentType = componentType;
     }
 
     public void init() {
-        registerBeanDefinitionParser(ScaServiceBeanDefinitionParser.SERVICE_ELEMENT,
-                new ScaServiceBeanDefinitionParser(componentType));
         registerBeanDefinitionParser(ScaReferenceBeanDefinitionParser.REFERENCE_ELEMENT,
                 new ScaReferenceBeanDefinitionParser(componentType));
+        registerBeanDefinitionParser(ScaServiceBeanDefinitionParser.SERVICE_ELEMENT,
+                new ScaServiceBeanDefinitionParser(componentType));
+        registerBeanDefinitionParser(ScaCompositeBeanDefinitionParser.COMPOSITE_ELEMENT,
+                new ScaCompositeBeanDefinitionParser(componentType));
     }
 }

Modified: incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/config/SCANamespaceHandlerResolver.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/config/SCANamespaceHandlerResolver.java?rev=417733&r1=417732&r2=417733&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/config/SCANamespaceHandlerResolver.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/config/SCANamespaceHandlerResolver.java Wed Jun 28 04:37:43 2006
@@ -6,14 +6,16 @@
 import org.springframework.beans.factory.xml.NamespaceHandler;
 
 /**
- * Overides the default Spring namespace resolver to autmatically register {@link SCANamespaceHandler} instead
+ * Overrides the default Spring namespace resolver to automatically register {@link SCANamespaceHandler} instead
  * of requiring a value to be supplied in a Spring configuration
  *
+ * TODO: Figure out how to activate this impl
+ *
  * @version $$Rev$$ $$Date$$
  */
 public class SCANamespaceHandlerResolver extends DefaultNamespaceHandlerResolver {
 
-    private static final String SCA_NAMESPACE = ""; //FIXME
+    private static final String SCA_NAMESPACE = "http://www.springframework.org/schema/sca";
 
     private SCANamespaceHandler handler;
 
@@ -35,5 +37,4 @@
         }
         return super.resolve(namespaceUri);
     }
-
 }

Added: incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/config/SCAReference.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/config/SCAReference.java?rev=417733&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/config/SCAReference.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/config/SCAReference.java Wed Jun 28 04:37:43 2006
@@ -0,0 +1,23 @@
+package org.apache.tuscany.container.spring.config;
+
+/**
+ * Bean impl for the Spring sca:reference XML configuration element
+ * @version $$Rev: $$ $$Date: $$
+ */
+
+public class SCAReference {
+    private String name;
+    private String type;
+    private String defaultService;  // optional
+
+    public SCAReference(String name, String type) {
+        this.name = name;
+        this.type = type;
+    }
+
+    public String getName()    { return name; }
+    public String getType()    { return type; }
+
+    public String getDefault()         { return defaultService; }
+    public void   setDefault(String s) { this.defaultService = s; }
+}

Propchange: incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/config/SCAReference.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/config/SCAService.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/config/SCAService.java?rev=417733&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/config/SCAService.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/config/SCAService.java Wed Jun 28 04:37:43 2006
@@ -0,0 +1,22 @@
+package org.apache.tuscany.container.spring.config;
+
+/**
+ * Bean impl for the Spring sca:service XML configuration element
+ * @version $$Rev: $$ $$Date: $$
+ */
+
+public class SCAService {
+    private String name;
+    private String type;
+    private String target;
+
+    public SCAService( String name, String type, String target ) {
+        this.name = name;
+        this.type = type;
+        this.target = target;
+    }
+
+    public String getName()   { return name; }
+    public String getType()   { return type; }
+    public String getTarget() { return target; }
+}

Propchange: incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/config/SCAService.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/config/ScaCompositeBeanDefinitionParser.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/config/ScaCompositeBeanDefinitionParser.java?rev=417733&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/config/ScaCompositeBeanDefinitionParser.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/config/ScaCompositeBeanDefinitionParser.java Wed Jun 28 04:37:43 2006
@@ -0,0 +1,34 @@
+package org.apache.tuscany.container.spring.config;
+
+import org.apache.tuscany.spi.model.CompositeComponentType;
+import org.springframework.beans.factory.config.BeanDefinition;
+import org.springframework.beans.factory.xml.ParserContext;
+import org.springframework.beans.factory.xml.BeanDefinitionParser;
+import org.w3c.dom.Element;
+
+/**
+ * Processes <code>composite</code> elements in a Spring configuration
+ *
+ * @version $$Rev: $$ $$Date: $$
+ */
+public class ScaCompositeBeanDefinitionParser implements BeanDefinitionParser
+{
+    public static final String COMPOSITE_ELEMENT = "reference";
+    private static final String COMPONENT_ATTRIBUTE = "component";
+    private static final String SCA_ADAPTER_CLASS_ATTRIBUTE = "sca-adapter-class";
+
+    private CompositeComponentType componentType;
+
+    public ScaCompositeBeanDefinitionParser(CompositeComponentType componentType) {
+        this.componentType = componentType;
+    }
+
+    public BeanDefinition parse(Element element, ParserContext parserContext) {
+        String component = element.getAttribute(COMPONENT_ATTRIBUTE);
+        String adapterClass;
+        if (element.hasAttribute(SCA_ADAPTER_CLASS_ATTRIBUTE)) {
+            adapterClass = element.getAttribute(SCA_ADAPTER_CLASS_ATTRIBUTE);
+        }
+        return null;
+    }
+}

Propchange: incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/config/ScaCompositeBeanDefinitionParser.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/config/ScaPropertyBeanDefinitionParser.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/config/ScaPropertyBeanDefinitionParser.java?rev=417733&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/config/ScaPropertyBeanDefinitionParser.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/config/ScaPropertyBeanDefinitionParser.java Wed Jun 28 04:37:43 2006
@@ -0,0 +1,33 @@
+package org.apache.tuscany.container.spring.config;
+
+import org.springframework.beans.factory.xml.BeanDefinitionParser;
+import org.springframework.beans.factory.xml.ParserContext;
+import org.springframework.beans.factory.config.BeanDefinition;
+import org.apache.tuscany.spi.model.CompositeComponentType;
+import org.w3c.dom.Element;
+
+/**
+ * Processes <code>property</code> elements in a Spring configuration
+ *
+ * @version $$Rev: $$ $$Date: $$
+ */
+
+public class ScaPropertyBeanDefinitionParser implements BeanDefinitionParser {
+    public static final String PROPERTY_ELEMENT = "property";
+    private static final String ID_ATTRIBUTE = "id";
+    private static final String NAME_ATTRIBUTE = "name";
+    private static final String TYPE_ATTRIBUTE = "type";
+
+    private CompositeComponentType componentType;
+
+    public ScaPropertyBeanDefinitionParser(CompositeComponentType componentType) {
+        this.componentType = componentType;
+    }
+
+    public BeanDefinition parse(Element element, ParserContext parserContext) {
+        String id = element.getAttribute(ID_ATTRIBUTE);
+        String name = element.getAttribute(NAME_ATTRIBUTE);
+        String type = element.getAttribute(TYPE_ATTRIBUTE);
+        return null;
+    }
+}

Propchange: incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/config/ScaPropertyBeanDefinitionParser.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/config/ScaReferenceBeanDefinitionParser.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/config/ScaReferenceBeanDefinitionParser.java?rev=417733&r1=417732&r2=417733&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/config/ScaReferenceBeanDefinitionParser.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/config/ScaReferenceBeanDefinitionParser.java Wed Jun 28 04:37:43 2006
@@ -1,8 +1,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;
 
 import org.apache.tuscany.spi.model.CompositeComponentType;
@@ -14,28 +18,44 @@
  */
 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 SERVICE_TYPE_PROPERTY = "serviceType";
-    //private static final String COMPOSITE_PROPERTY = "scaComposite";
-//    private static final String DEFAULT_SERVICE_ATTRIBUTE = "default";
-    //private static final String DEFAULT_SERVICE_PROPERTY = "defaultServiceName";
+    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";
 
     public ScaReferenceBeanDefinitionParser(CompositeComponentType componentType) {
 //        this.componentType = componentType;
     }
 
     public BeanDefinition parse(Element element, ParserContext parserContext) {
-/*
-        String referenceName = element.getAttribute(REFERENCE_NAME_ATTRIBUTE);
+        RootBeanDefinition beanDef = new RootBeanDefinition();
+        beanDef.setBeanClass(SCAReference.class);
+
+        String name = element.getAttribute(REFERENCE_NAME_ATTRIBUTE);
         String type = element.getAttribute(TYPE_ATTRIBUTE);
-        String service;
+        String service = null;
         if (element.hasAttribute(DEFAULT_SERVICE_ATTRIBUTE)) {
             service = element.getAttribute(DEFAULT_SERVICE_ATTRIBUTE);
         }
-*/
-        return null;
-    }
 
+        ConstructorArgumentValues ctorArgs = beanDef.getConstructorArgumentValues();
+        ctorArgs.addIndexedArgumentValue(0, name);
+        ctorArgs.addIndexedArgumentValue(1, type);
+
+        if (service != null) {
+            // won't throw exception if validation is turned on (boolean type set in schema)
+            beanDef.getPropertyValues().addPropertyValue(DEFAULT_SERVICE_ATTRIBUTE, service);
+        }
+
+        // create a bean definition holder to be able to register the
+        // bean definition with the bean definition registry
+        // (obtained through the ParserContext).  Use name as key.
+        BeanDefinitionHolder holder = new BeanDefinitionHolder(beanDef, name);
+
+        // register the BeanDefinitionHolder (which contains the bean definition)
+        // with the BeanDefinitionRegistry
+        BeanDefinitionReaderUtils.registerBeanDefinition(holder, parserContext.getRegistry());
+
+        return beanDef;
+    }
 }

Modified: incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/config/ScaServiceBeanDefinitionParser.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/config/ScaServiceBeanDefinitionParser.java?rev=417733&r1=417732&r2=417733&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/config/ScaServiceBeanDefinitionParser.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/config/ScaServiceBeanDefinitionParser.java Wed Jun 28 04:37:43 2006
@@ -2,8 +2,12 @@
 
 import org.apache.tuscany.spi.model.CompositeComponentType;
 import org.springframework.beans.factory.config.BeanDefinition;
+import org.springframework.beans.factory.config.BeanDefinitionHolder;
+import org.springframework.beans.factory.config.ConstructorArgumentValues;
 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;
 
 /**
@@ -14,6 +18,9 @@
 public class ScaServiceBeanDefinitionParser implements BeanDefinitionParser {
 
     public static final String SERVICE_ELEMENT = "service";
+    private static final String NAME_ATTRIBUTE = "name";
+    private static final String TYPE_ATTRIBUTE = "type";
+    private static final String TARGET_ATTRIBUTE = "target";
 
 //    private CompositeComponentType componentType;
 
@@ -22,7 +29,27 @@
     }
 
     public BeanDefinition parse(Element element, ParserContext parserContext) {
-        return null;
-    }
+        RootBeanDefinition beanDef = new RootBeanDefinition();
+        beanDef.setBeanClass(SCAService.class);
+
+        String name = element.getAttribute(NAME_ATTRIBUTE);
+        String type = element.getAttribute(TYPE_ATTRIBUTE);
+        String target = element.getAttribute(TARGET_ATTRIBUTE);
+
+        ConstructorArgumentValues ctorArgs = beanDef.getConstructorArgumentValues();
+        ctorArgs.addIndexedArgumentValue(0, name);
+        ctorArgs.addIndexedArgumentValue(1, type);
+        ctorArgs.addIndexedArgumentValue(2, target);
+
+        // create a bean definition holder to be able to register the
+        // bean definition with the bean definition registry
+        // (obtained through the ParserContext).  Use name as key.
+        BeanDefinitionHolder holder = new BeanDefinitionHolder(beanDef, name);
+
+        // register the BeanDefinitionHolder (which contains the bean definition)
+        // with the BeanDefinitionRegistry
+        BeanDefinitionReaderUtils.registerBeanDefinition(holder, parserContext.getRegistry());
 
+        return beanDef;
+    }
 }

Added: incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/resources/META-INF/spring.handlers
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/resources/META-INF/spring.handlers?rev=417733&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/resources/META-INF/spring.handlers (added)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/resources/META-INF/spring.handlers Wed Jun 28 04:37:43 2006
@@ -0,0 +1,3 @@
+http\://www.springframework.org/schema/sca=org.apache.tuscany.container.spring.config.SCANamespaceHandler
+
+

Added: incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/resources/META-INF/spring.schemas
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/resources/META-INF/spring.schemas?rev=417733&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/resources/META-INF/spring.schemas (added)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/resources/META-INF/spring.schemas Wed Jun 28 04:37:43 2006
@@ -0,0 +1 @@
+http\://www.springframework.org/schema/sca/spring-sca.xsd=org/springframework/sca/xml/spring-sca.xsd

Added: incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/resources/org/springframework/sca/xml/spring-sca.xsd
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/resources/org/springframework/sca/xml/spring-sca.xsd?rev=417733&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/resources/org/springframework/sca/xml/spring-sca.xsd (added)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/resources/org/springframework/sca/xml/spring-sca.xsd Wed Jun 28 04:37:43 2006
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsd:schema xmlns="http://www.springframework.org/schema/sca"  
+  xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
+  attributeFormDefault="unqualified" 
+  elementFormDefault="qualified" 
+  targetNamespace="http://www.springframework.org/schema/sca">
+
+	<xsd:element name="composite">
+		<xsd:complexType>
+			<xsd:attribute name="component" use="required">
+				<xsd:simpleType>
+					<xsd:restriction base="xsd:string"/>
+				</xsd:simpleType>
+			</xsd:attribute>
+			<xsd:attribute name="sca-adapter-class" use="optional">
+				<xsd:simpleType>
+					<xsd:restriction base="xsd:string"/>
+				</xsd:simpleType>
+			</xsd:attribute>			
+		</xsd:complexType>
+	</xsd:element>
+	
+	<xsd:element name="reference">
+		<xsd:complexType>
+			<xsd:attribute name="name" use="required">
+				<xsd:simpleType>
+					<xsd:restriction base="xsd:string"/>
+				</xsd:simpleType>
+			</xsd:attribute>
+			<xsd:attribute name="type" use="required">
+				<xsd:simpleType>
+					<xsd:restriction base="xsd:string"/>
+				</xsd:simpleType>
+			</xsd:attribute>
+			<xsd:attribute name="default" use="optional">
+				<xsd:simpleType>
+					<xsd:restriction base="xsd:string"/>
+				</xsd:simpleType>
+			</xsd:attribute>
+		</xsd:complexType>		
+	</xsd:element>
+
+	<xsd:element name="property">
+		<xsd:complexType>
+			<xsd:attribute name="id" use="required">
+				<xsd:simpleType>
+					<xsd:restriction base="xsd:string"/>
+				</xsd:simpleType>
+			</xsd:attribute>
+			<xsd:attribute name="name" use="required">
+				<xsd:simpleType>
+					<xsd:restriction base="xsd:string"/>
+				</xsd:simpleType>
+			</xsd:attribute>
+			<xsd:attribute name="type" use="required">
+				<xsd:simpleType>
+					<xsd:restriction base="xsd:string"/>
+				</xsd:simpleType>
+			</xsd:attribute>
+		</xsd:complexType>		
+	</xsd:element>
+
+	<xsd:element name="service">
+		<xsd:complexType>
+			<xsd:attribute name="name" use="required">
+				<xsd:simpleType>
+					<xsd:restriction base="xsd:string"/>
+				</xsd:simpleType>
+			</xsd:attribute>
+			<xsd:attribute name="type" use="required">
+				<xsd:simpleType>
+					<xsd:restriction base="xsd:string"/>
+				</xsd:simpleType>
+			</xsd:attribute>
+			<xsd:attribute name="target" use="required">
+				<xsd:simpleType>
+					<xsd:restriction base="xsd:string"/>
+				</xsd:simpleType>
+			</xsd:attribute>
+		</xsd:complexType>		
+	</xsd:element>
+
+</xsd:schema>

Propchange: incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/resources/org/springframework/sca/xml/spring-sca.xsd
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/ReferenceInvocationTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/ReferenceInvocationTestCase.java?rev=417733&r1=417732&r2=417733&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/ReferenceInvocationTestCase.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/ReferenceInvocationTestCase.java Wed Jun 28 04:37:43 2006
@@ -10,8 +10,8 @@
 import org.springframework.beans.factory.config.BeanDefinition;
 import org.springframework.beans.factory.config.RuntimeBeanReference;
 import org.springframework.beans.factory.support.RootBeanDefinition;
-import org.springframework.context.support.GenericApplicationContext;
 import org.springframework.context.support.StaticApplicationContext;
+import org.springframework.context.ConfigurableApplicationContext;
 
 /**
  * Verifies wiring from a Spring bean to an SCA composite reference
@@ -21,7 +21,7 @@
 public class ReferenceInvocationTestCase extends MockObjectTestCase {
 
     public void testInvocation() throws Exception {
-        GenericApplicationContext ctx = createSpringContext();
+        ConfigurableApplicationContext ctx = createSpringContext();
         SpringCompositeComponent parent = new SpringCompositeComponent("spring", ctx, null, ArtifactFactory.createWireService());
         parent.start();
         TestBean referenceTarget = new TestBeanImpl();
@@ -34,7 +34,7 @@
         ctx.getBean("foo");
     }
 
-    private GenericApplicationContext createSpringContext() {
+    private ConfigurableApplicationContext createSpringContext() {
         StaticApplicationContext beanFactory = new StaticApplicationContext();
         BeanDefinition definition = new RootBeanDefinition(TestBeanImpl.class);
         RuntimeBeanReference ref = new RuntimeBeanReference("bar");

Modified: incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/ServiceInvocationTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/ServiceInvocationTestCase.java?rev=417733&r1=417732&r2=417733&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/ServiceInvocationTestCase.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/ServiceInvocationTestCase.java Wed Jun 28 04:37:43 2006
@@ -12,8 +12,8 @@
 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;
 import org.springframework.context.support.StaticApplicationContext;
+import org.springframework.context.ConfigurableApplicationContext;
 
 /**
  * Tests a simple invocation through a service to a Spring bean
@@ -24,7 +24,6 @@
 
     public void testInvocation() {
         SpringCompositeComponent context = new SpringCompositeComponent("parent", createSpringContext(), null,ArtifactFactory.createWireService());
-        context.start();
         InboundWire<TestBean> inboundWire = ArtifactFactory.createInboundWire("fooService", TestBean.class);
         OutboundWire<TestBean> outboundWire = ArtifactFactory.createOutboundWire("fooService", TestBean.class);
         ArtifactFactory.terminateWire(outboundWire);
@@ -38,11 +37,11 @@
             chain.setTargetInvoker(context.createTargetInvoker("foo", chain.getMethod()));
         }
         context.register(service);
-        assertEquals("bar", ((TestBean) context.getChild("fooService").getServiceInstance()).echo("bar"));
+        assertEquals("bar", ((TestBean) context.getService("fooService").getServiceInstance()).echo("bar"));
     }
 
 
-    private GenericApplicationContext createSpringContext() {
+    private ConfigurableApplicationContext createSpringContext() {
         StaticApplicationContext beanFactory = new StaticApplicationContext();
         BeanDefinition definition = new RootBeanDefinition(TestBeanImpl.class);
         beanFactory.registerBeanDefinition("foo", definition);

Modified: incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/SpringCompositeBuilderTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/SpringCompositeBuilderTestCase.java?rev=417733&r1=417732&r2=417733&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/SpringCompositeBuilderTestCase.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/SpringCompositeBuilderTestCase.java Wed Jun 28 04:37:43 2006
@@ -7,7 +7,6 @@
 import org.apache.tuscany.container.spring.mock.TestBeanImpl;
 import org.apache.tuscany.container.spring.mock.VMBinding;
 import org.apache.tuscany.spi.builder.Connector;
-import org.apache.tuscany.spi.QualifiedName;
 import org.apache.tuscany.spi.builder.BuilderRegistry;
 import org.apache.tuscany.spi.component.CompositeComponent;
 import org.apache.tuscany.spi.component.Service;
@@ -15,62 +14,76 @@
 import org.apache.tuscany.spi.model.BoundServiceDefinition;
 import org.apache.tuscany.spi.model.ComponentDefinition;
 import org.apache.tuscany.spi.model.CompositeComponentType;
+import org.apache.tuscany.spi.model.ServiceDefinition;
 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.test.ArtifactFactory;
 import org.jmock.Mock;
 import org.jmock.MockObjectTestCase;
+import org.jmock.core.Constraint;
+import org.jmock.core.Formatting;
 import org.springframework.beans.factory.config.BeanDefinition;
 import org.springframework.beans.factory.support.RootBeanDefinition;
-import org.springframework.context.support.GenericApplicationContext;
 import org.springframework.context.support.StaticApplicationContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+import org.springframework.context.ConfigurableApplicationContext;
 
 /**
  * @version $$Rev$$ $$Date$$
  */
 public class SpringCompositeBuilderTestCase extends MockObjectTestCase {
 
-    public void testBuild() throws Exception {
-        WireService wireService = ArtifactFactory.createWireService();
-        SpringCompositeBuilder builder = new SpringCompositeBuilder();
-        builder.setWireService(wireService);
-        SpringImplementation impl = new SpringImplementation();
-        impl.setComponentType(createComponentType());
-        impl.setApplicationContext(createSpringContext());
+    public void testBuildImplicit() throws Exception {
+
+        // Create an assembly model consisting of a component implemented by Spring
+        SpringImplementation impl = new SpringImplementation(createComponentType());
+        impl.setApplicationContext(createImplicitSpringContext());
         ComponentDefinition<SpringImplementation> componentDefinition = new ComponentDefinition<SpringImplementation>("spring", impl);
-        Mock mock = mock(BuilderRegistry.class);
+
+        // Create a service instance that the mock builder registry will return
+        WireService wireService = ArtifactFactory.createWireService();
         ServiceExtension<TestBean> serviceContext = new ServiceExtension<TestBean>("fooService", null, wireService);
-        InboundWire<TestBean> inboundWire = ArtifactFactory.createInboundWire("fooSerice", TestBean.class);
-        OutboundWire<TestBean> outboundwire = ArtifactFactory.createOutboundWire("fooService", TestBean.class);
-        outboundwire.setTargetName(new QualifiedName("foo"));
+        InboundWire<TestBean> inboundWire = ArtifactFactory.createInboundWire("fooService", TestBean.class);
+        OutboundWire<TestBean> outboundWire = ArtifactFactory.createOutboundWire("fooService", TestBean.class);
+        // REVIEW: this call appears to be unnecessary right now, is this a bug?
+        // outboundWire.setTargetName(new QualifiedName("fooBean"));
+        ArtifactFactory.terminateWire(outboundWire);
         serviceContext.setInboundWire(inboundWire);
-        serviceContext.setOutboundWire(outboundwire);
+        serviceContext.setOutboundWire(outboundWire);
         Connector connector = ArtifactFactory.createConnector();
-        connector.connect(inboundWire, outboundwire, true);
-        ArtifactFactory.terminateWire(inboundWire);
-        mock.expects(atLeastOnce()).method("build").will(returnValue(serviceContext));
+        connector.connect(inboundWire, outboundWire, true);
+
+        // Configure the mock builder registry
+        Mock mock = mock(BuilderRegistry.class);
+        mock.expects(atLeastOnce()).method("build").with(ANYTHING, serviceIsNamed("fooService") , ANYTHING)
+                                                   .will(returnValue(serviceContext));
+
+        // Test the SpringCompositeBuilder
+        SpringCompositeBuilder builder = new SpringCompositeBuilder();
+        builder.setWireService(wireService);
         builder.setBuilderRegistry((BuilderRegistry) mock.proxy());
         CompositeComponent component = (CompositeComponent) builder.build(null, componentDefinition, null);
-        Service service = (Service) component.getChild("fooService");
+        Service service = component.getService("fooService");
         TestBean bean = (TestBean) service.getServiceInstance();
-        assertEquals("foo", bean.echo("foo"));
+        assertEquals("call foo", bean.echo("call foo"));
     }
 
-    private GenericApplicationContext createSpringContext() {
+    /** Return a Spring context w/ a single bean named "fooBean", implemented by TestBeanImpl */
+    private ConfigurableApplicationContext createImplicitSpringContext() {
         StaticApplicationContext beanFactory = new StaticApplicationContext();
         BeanDefinition definition = new RootBeanDefinition(TestBeanImpl.class);
-        beanFactory.registerBeanDefinition("foo", definition);
+        beanFactory.registerBeanDefinition("fooBean", definition);
         return beanFactory;
     }
 
     private CompositeComponentType createComponentType() {
         CompositeComponentType componentType = new CompositeComponentType();
         BoundServiceDefinition<VMBinding> serviceDefinition = new BoundServiceDefinition<VMBinding>();
-        serviceDefinition.setName("FooService");
+        serviceDefinition.setName("fooService");
         serviceDefinition.setBinding(new VMBinding());
         try {
-            serviceDefinition.setTarget(new URI("foo"));
+            serviceDefinition.setTarget(new URI("fooBean"));
         } catch (URISyntaxException e) {
             throw new AssertionError();
         }
@@ -78,5 +91,26 @@
         return componentType;
     }
 
+    /** JMock constraint class to test ServiceDefinition name */
+    private class ServiceIsNamed implements Constraint {
+        private String name;
+
+        public ServiceIsNamed( String name ) {
+            this.name = name;
+        }
+
+        public boolean eval( Object o ) {
+            return o instanceof ServiceDefinition && ((ServiceDefinition)o).getName().equals(name);
+        }
 
+        public StringBuffer describeTo( StringBuffer buffer ) {
+            return buffer.append("a service named ")
+                         .append(Formatting.toReadableString(name));
+        }
+    }
+
+    /** JMock factory method for ServiceIsNamed constraint */
+    private Constraint serviceIsNamed( String name ) {
+        return new ServiceIsNamed(name);
+    }
 }

Added: incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/SpringConfigSchemaTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/SpringConfigSchemaTestCase.java?rev=417733&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/SpringConfigSchemaTestCase.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/SpringConfigSchemaTestCase.java Wed Jun 28 04:37:43 2006
@@ -0,0 +1,34 @@
+package org.apache.tuscany.container.spring;
+
+import org.springframework.context.ConfigurableApplicationContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+import org.apache.tuscany.container.spring.config.SCAService;
+import org.apache.tuscany.container.spring.config.SCAReference;
+import junit.framework.TestCase;
+
+/**
+ * Tests the SCA extensible schema elements for Spring's XML configuration files
+ * @version $$Rev: $$ $$Date: $$
+ */
+
+public class SpringConfigSchemaTestCase extends TestCase {
+
+    private ConfigurableApplicationContext applicationContext;
+
+    public void setUp() {
+        applicationContext =
+            new ClassPathXmlApplicationContext("org/apache/tuscany/container/spring/SpringConfigSchemaTest.xml");
+    }
+
+    public void testSCAService() {
+        SCAService service = (SCAService) applicationContext.getBean("fooService");
+        assertEquals("testBean", service.getTarget());
+    }
+
+    /*
+    public void testSCAReference() {
+        SCAReference ref = (SCAReference) applicationContext.getBean("fooReference");
+        assertEquals("fooReference", ref.getName());
+    }
+    */
+}

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

Modified: incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/SpringInvocationTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/SpringInvocationTestCase.java?rev=417733&r1=417732&r2=417733&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/SpringInvocationTestCase.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/SpringInvocationTestCase.java Wed Jun 28 04:37:43 2006
@@ -15,10 +15,9 @@
 
     public void testSpringInvocation() throws Exception {
         Mock mock = mock(ConfigurableApplicationContext.class);
-        mock.expects(atLeastOnce()).method("getBean").will(returnValue(new TestBeanImpl()));
+        mock.expects(atLeastOnce()).method("getBean").with(eq("foo")).will(returnValue(new TestBeanImpl()));
         ConfigurableApplicationContext ctx = (ConfigurableApplicationContext) mock.proxy();
         SpringInvoker invoker = new SpringInvoker("foo", TestBean.class.getMethod("echo", String.class), ctx);
-        assertEquals("foo", invoker.invokeTarget(new String[]{"foo"}));
+        assertEquals("call foo", invoker.invokeTarget(new String[]{"call foo"}));
     }
-
 }

Added: incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/SpringTestUtils.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/SpringTestUtils.java?rev=417733&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/SpringTestUtils.java (added)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/SpringTestUtils.java Wed Jun 28 04:37:43 2006
@@ -0,0 +1,36 @@
+package org.apache.tuscany.container.spring;
+
+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.component.Service;
+import org.apache.tuscany.spi.component.CompositeComponent;
+import org.apache.tuscany.spi.extension.ServiceExtension;
+import org.apache.tuscany.spi.QualifiedName;
+import org.apache.tuscany.spi.builder.Connector;
+import org.apache.tuscany.test.ArtifactFactory;
+
+/**
+ * @version $$Rev: $$ $$Date: $$
+ */
+
+public class SpringTestUtils {
+
+    public static <T> Service<T> createService( String name,
+                                                Class<T> serviceInterface,
+                                                CompositeComponent parent,
+                                                WireService wireService )
+    {
+        Service<T> service = new ServiceExtension<T>(name, parent, wireService);
+        InboundWire<T> inboundWire = ArtifactFactory.createInboundWire(name, serviceInterface);
+        OutboundWire<T> outboundWire = ArtifactFactory.createOutboundWire(name, serviceInterface);
+        ArtifactFactory.terminateWire(outboundWire);
+        service.setInboundWire(inboundWire);
+        service.setOutboundWire(outboundWire);
+        outboundWire.setTargetName(new QualifiedName("foo"));
+        Connector connector = ArtifactFactory.createConnector();
+        connector.connect(inboundWire, outboundWire, true);
+        ArtifactFactory.terminateWire(inboundWire);
+        return service;
+    }
+}

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

Modified: incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/mock/VMBinding.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/mock/VMBinding.java?rev=417733&r1=417732&r2=417733&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/mock/VMBinding.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/mock/VMBinding.java Wed Jun 28 04:37:43 2006
@@ -4,6 +4,8 @@
 
 
 /**
+ * A concrete local/in-VM binding for test purposes. 
+ *
  * @version $$Rev$$ $$Date$$
  */
 public class VMBinding extends Binding {

Added: incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/test/resources/org/apache/tuscany/container/spring/ExplicitSpring.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/test/resources/org/apache/tuscany/container/spring/ExplicitSpring.xml?rev=417733&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/test/resources/org/apache/tuscany/container/spring/ExplicitSpring.xml (added)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/test/resources/org/apache/tuscany/container/spring/ExplicitSpring.xml Wed Jun 28 04:37:43 2006
@@ -0,0 +1,14 @@
+<?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/SpringSCA.xsd">
+
+<sca:service name="fooBean" type="org.apache.tuscany.container.spring.mock.TestBeanImpl" target="testBean"/>
+
+<bean id="testBean" class="org.apache.tuscany.container.spring.mock.TestBeanImpl">
+</bean>
+
+</beans>

Propchange: incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/test/resources/org/apache/tuscany/container/spring/ExplicitSpring.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/test/resources/org/apache/tuscany/container/spring/SpringConfigSchemaTest.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/test/resources/org/apache/tuscany/container/spring/SpringConfigSchemaTest.xml?rev=417733&view=auto
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/test/resources/org/apache/tuscany/container/spring/SpringConfigSchemaTest.xml (added)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/test/resources/org/apache/tuscany/container/spring/SpringConfigSchemaTest.xml Wed Jun 28 04:37:43 2006
@@ -0,0 +1,18 @@
+<?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">
+
+<sca:service name="fooService" type="org.apache.tuscany.container.spring.mock.TestBeanImpl" target="testBean" />
+
+<sca:reference name="fooReference" type="org.apache.tuscany.container.spring.mock.TestBeanImpl" />
+
+<!--
+<bean id="testBean" class="org.apache.tuscany.container.spring.mock.TestBeanImpl">
+</bean>
+-->
+
+</beans>

Propchange: incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/test/resources/org/apache/tuscany/container/spring/SpringConfigSchemaTest.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/builder/ConnectorImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/builder/ConnectorImpl.java?rev=417733&r1=417732&r2=417733&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/builder/ConnectorImpl.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/builder/ConnectorImpl.java Wed Jun 28 04:37:43 2006
@@ -66,6 +66,15 @@
         }
     }
 
+    /**
+     * Connects an outbound wire to its target in a CompositeComponent.  Valid targets are either AtomicComponents
+     * contained in the CompositeComponent, or References of the CompositeComponent.
+     *
+     * @param sourceWire
+     * @param parent
+     * @param sourceScope
+     * @throws BuilderConfigException
+     */
     @SuppressWarnings("unchecked")
     public <T> void connect(OutboundWire<T> sourceWire,
                             CompositeComponent<?> parent,
@@ -136,6 +145,8 @@
                             boolean optimizable) {
         Map<Method, InboundInvocationChain> targetChains = targetWire.getInvocationChains();
         // perform optimization, if possible
+        // REVIEW: (kentaminator@gmail.com) shouldn't this check whether the interceptors in the
+        // source & target chains are marked as optimizable?  (and if so, optimize them away?)
         if (optimizable && sourceWire.getInvocationChains().isEmpty() && targetChains.isEmpty()) {
             sourceWire.setTargetWire(targetWire);
             return;

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/loader/StringParserPropertyFactory.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/loader/StringParserPropertyFactory.java?rev=417733&r1=417732&r2=417733&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/loader/StringParserPropertyFactory.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/loader/StringParserPropertyFactory.java Wed Jun 28 04:37:43 2006
@@ -33,6 +33,7 @@
 import org.apache.tuscany.core.injection.SingletonObjectFactory;
 
 /**
+ * Implementation of StAXPropertyFactory that interprets the XML as 
  * @version $Rev$ $Date$
  */
 public class StringParserPropertyFactory implements StAXPropertyFactory {
@@ -42,7 +43,7 @@
         assert type != null : "property type is null";
         String text = reader.getElementText();
 
-        // degenerate case where we are returning a String
+        // degenerate case where property type is a String
         if (String.class.equals(type)) {
             return new SingletonObjectFactory<T>(type.cast(text));
         }

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/BridgingInterceptor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/BridgingInterceptor.java?rev=417733&r1=417732&r2=417733&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/BridgingInterceptor.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/BridgingInterceptor.java Wed Jun 28 04:37:43 2006
@@ -5,7 +5,8 @@
 import org.apache.tuscany.spi.wire.MessageChannel;
 
 /**
- * Bridges between interceptors in two {@link org.apache.tuscany.spi.wire.InboundInvocationChain}s
+ * Bridges interceptors between a {@link org.apache.tuscany.spi.wire.InboundInvocationChain} and a
+ * {@link org.apache.tuscany.spi.wire.OutboundInvocationChain}.
  *
  * @version $$Rev$$ $$Date$$
  */

Modified: incubator/tuscany/sandbox/jboynes/sca/pom.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/pom.xml?rev=417733&r1=417732&r2=417733&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/pom.xml (original)
+++ incubator/tuscany/sandbox/jboynes/sca/pom.xml Wed Jun 28 04:37:43 2006
@@ -17,8 +17,8 @@
 <project>
     <parent>
         <groupId>org.apache.tuscany</groupId>
-        <artifactId>project</artifactId>
-        <version>1.0-sandbox-SNAPSHOT</version>
+        <artifactId>tuscany-project</artifactId>
+        <version>incubating-M1</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <artifactId>sca</artifactId>

Modified: incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/extension/CompositeComponentExtension.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/extension/CompositeComponentExtension.java?rev=417733&r1=417732&r2=417733&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/extension/CompositeComponentExtension.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/extension/CompositeComponentExtension.java Wed Jun 28 04:37:43 2006
@@ -48,7 +48,7 @@
     public void register(SCAObject child) {
         assert child != null : "SCAObject was null";
         if (children.get(child.getName()) != null) {
-            DuplicateNameException e = new DuplicateNameException("A context is anlready registered with name");
+            DuplicateNameException e = new DuplicateNameException("A context is already registered with name");
             e.setIdentifier(child.getName());
             e.addContextName(getName());
             throw e;

Modified: incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/model/BoundServiceDefinition.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/model/BoundServiceDefinition.java?rev=417733&r1=417732&r2=417733&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/model/BoundServiceDefinition.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/model/BoundServiceDefinition.java Wed Jun 28 04:37:43 2006
@@ -19,7 +19,7 @@
 import java.net.URI;
 
 /**
- * Represents a component service specified in an assembly
+ * Represents a service offered by a component, that has a particular binding associated with it.
  *
  * @version $Rev$ $Date$
  */



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