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