You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by jm...@apache.org on 2007/02/24 03:29:48 UTC
svn commit: r511195 [1/2] - in
/incubator/tuscany/java/sca/extensions/spring: ./ container/
container/src/main/java/org/apache/tuscany/container/spring/context/
container/src/main/java/org/apache/tuscany/container/spring/impl/
container/src/main/java/o...
Author: jmarino
Date: Fri Feb 23 18:29:46 2007
New Revision: 511195
URL: http://svn.apache.org/viewvc?view=rev&rev=511195
Log:
move Spring container to work off latest kernel; add integration tests
Added:
incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/impl/BeanMethodNotFound.java (with props)
incubator/tuscany/java/sca/extensions/spring/container/src/test/java/org/apache/tuscany/container/spring/impl/ReferenceWiringTestCase.java (contents, props changed)
- copied, changed from r510793, incubator/tuscany/java/sca/extensions/spring/container/src/test/java/org/apache/tuscany/container/spring/impl/ReferenceInvocationTestCase.java
incubator/tuscany/java/sca/extensions/spring/integration-test/
incubator/tuscany/java/sca/extensions/spring/integration-test/core/
incubator/tuscany/java/sca/extensions/spring/integration-test/core/pom.xml (with props)
incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/
incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/main/
incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/main/java/
incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/main/java/org/
incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/main/java/org/apache/
incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/main/java/org/apache/tuscany/
incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/main/java/org/apache/tuscany/sca/
incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/main/java/org/apache/tuscany/sca/extensions/
incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/main/java/org/apache/tuscany/sca/extensions/spring/
incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/main/java/org/apache/tuscany/sca/extensions/spring/TestBean.java (with props)
incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/main/java/org/apache/tuscany/sca/extensions/spring/TestBeanImpl.java (with props)
incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/main/resources/
incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/main/resources/META-INF/
incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/main/resources/META-INF/sca/
incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/main/resources/META-INF/sca/spring.composite.scdl
incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/test/
incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/test/java/
incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/test/java/org/
incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/test/java/org/apache/
incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/test/java/org/apache/tuscany/
incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/test/java/org/apache/tuscany/sca/
incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/test/java/org/apache/tuscany/sca/extensions/
incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/test/java/org/apache/tuscany/sca/extensions/spring/
incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/test/java/org/apache/tuscany/sca/extensions/spring/WiringTestComponent.java (with props)
incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/test/java/org/apache/tuscany/sca/extensions/spring/WiringTestComponentImpl.java (with props)
incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/test/resources/
incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/test/resources/applicationContext.xml (with props)
incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/test/resources/itest.scdl
incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/test/resources/system.scdl
incubator/tuscany/java/sca/extensions/spring/integration-test/pom.xml (with props)
Removed:
incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/impl/SpringInterceptor.java
incubator/tuscany/java/sca/extensions/spring/container/src/main/resources/META-INF/sca/default.scdl
incubator/tuscany/java/sca/extensions/spring/container/src/test/java/org/apache/tuscany/container/spring/impl/ReferenceInvocationTestCase.java
incubator/tuscany/java/sca/extensions/spring/container/src/test/java/org/apache/tuscany/container/spring/impl/ServiceInvocationTestCase.java
incubator/tuscany/java/sca/extensions/spring/container/src/test/java/org/apache/tuscany/container/spring/integration/
incubator/tuscany/java/sca/extensions/spring/container/src/test/java/org/apache/tuscany/container/spring/mock/binding/
Modified:
incubator/tuscany/java/sca/extensions/spring/container/pom.xml
incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/context/SCANamespaceHandlerResolver.java
incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/context/ScaNamespaceHandler.java
incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/context/ScaReferenceBeanDefinitionParser.java
incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/context/ScaServiceBeanDefinitionParser.java
incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/impl/SpringCompositeBuilder.java
incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/impl/SpringCompositeComponent.java
incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/loader/SpringImplementationLoader.java
incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/model/SpringComponentType.java
incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/model/SpringImplementation.java
incubator/tuscany/java/sca/extensions/spring/container/src/main/resources/META-INF/sca/spring.system.scdl
incubator/tuscany/java/sca/extensions/spring/container/src/test/java/org/apache/tuscany/container/spring/SpringTestUtils.java
incubator/tuscany/java/sca/extensions/spring/container/src/test/java/org/apache/tuscany/container/spring/impl/SpringCompositeBuilderTestCase.java
incubator/tuscany/java/sca/extensions/spring/container/src/test/java/org/apache/tuscany/container/spring/impl/SpringCompositeComponentTestCase.java
incubator/tuscany/java/sca/extensions/spring/pom.xml
Modified: incubator/tuscany/java/sca/extensions/spring/container/pom.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/extensions/spring/container/pom.xml?view=diff&rev=511195&r1=511194&r2=511195
==============================================================================
--- incubator/tuscany/java/sca/extensions/spring/container/pom.xml (original)
+++ incubator/tuscany/java/sca/extensions/spring/container/pom.xml Fri Feb 23 18:29:46 2007
@@ -20,83 +20,17 @@
<project>
<parent>
- <groupId>org.apache.tuscany.sca.extensions.spring</groupId>
- <artifactId>parent</artifactId>
- <version>1.0-incubator-SNAPSHOT</version>
+ <groupId>org.apache.tuscany.sca.spring</groupId>
+ <artifactId>spring</artifactId>
+ <version>1.0-incubating-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
- <artifactId>tuscany-spring</artifactId>
+ <groupId>org.apache.tuscany.sca.spring</groupId>
+ <artifactId>spring-container</artifactId>
+ <version>1.0-alpha-incubating-SNAPSHOT</version>
<name>Apache Tuscany Spring Framework Container</name>
<description>Container for managing Spring composites</description>
-
- <dependencies>
- <dependency>
- <groupId>org.apache.tuscany.sca.kernel</groupId>
- <artifactId>tuscany-spi</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.apache.tuscany.sca.runtime.webapp</groupId>
- <artifactId>webapp-api</artifactId>
- <scope>compile</scope>
- </dependency>
-
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-core</artifactId>
- <version>2.0.2</version>
- <scope>compile</scope>
- <exclusions>
- <exclusion>
- <groupId>asm</groupId>
- <artifactId>asm-util</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>asm</groupId>
- <artifactId>asm-util</artifactId>
- <version>2.2.3</version>
- <scope>compile</scope>
- </dependency>
-
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-beans</artifactId>
- <version>2.0.2</version>
- <scope>compile</scope>
- </dependency>
-
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-context</artifactId>
- <version>2.0.2</version>
- <scope>compile</scope>
- </dependency>
-
- <dependency>
- <groupId>commons-logging</groupId>
- <artifactId>commons-logging</artifactId>
- <version>1.0.4</version>
- <scope>test</scope>
- </dependency>
-
- <dependency>
- <groupId>org.apache.tuscany.sca</groupId>
- <artifactId>test</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.easymock</groupId>
- <artifactId>easymockclassextension</artifactId>
- </dependency>
-
- <dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>servlet-api</artifactId>
- </dependency>
-
- </dependencies>
+ <packaging>jar</packaging>
</project>
Modified: incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/context/SCANamespaceHandlerResolver.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/context/SCANamespaceHandlerResolver.java?view=diff&rev=511195&r1=511194&r2=511195
==============================================================================
--- incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/context/SCANamespaceHandlerResolver.java (original)
+++ incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/context/SCANamespaceHandlerResolver.java Fri Feb 23 18:29:46 2007
@@ -28,7 +28,6 @@
* @version $$Rev$$ $$Date$$
*/
public class SCANamespaceHandlerResolver extends DefaultNamespaceHandlerResolver {
-
private static final String SCA_NAMESPACE = "http://www.springframework.org/schema/sca";
private ScaNamespaceHandler handler;
Modified: incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/context/ScaNamespaceHandler.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/context/ScaNamespaceHandler.java?view=diff&rev=511195&r1=511194&r2=511195
==============================================================================
--- incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/context/ScaNamespaceHandler.java (original)
+++ incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/context/ScaNamespaceHandler.java Fri Feb 23 18:29:46 2007
@@ -21,6 +21,8 @@
/**
* Handler for the <sca:> namespace in an application context
+ *
+ * @version $Rev$ $Date$
*/
public class ScaNamespaceHandler extends NamespaceHandlerSupport {
Modified: incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/context/ScaReferenceBeanDefinitionParser.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/context/ScaReferenceBeanDefinitionParser.java?view=diff&rev=511195&r1=511194&r2=511195
==============================================================================
--- incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/context/ScaReferenceBeanDefinitionParser.java (original)
+++ incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/context/ScaReferenceBeanDefinitionParser.java Fri Feb 23 18:29:46 2007
@@ -25,6 +25,8 @@
/**
* Parser for the <sca:reference> element
+ *
+ * @version $Rev$ $Date$
*/
public class ScaReferenceBeanDefinitionParser implements BeanDefinitionParser {
Modified: incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/context/ScaServiceBeanDefinitionParser.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/context/ScaServiceBeanDefinitionParser.java?view=diff&rev=511195&r1=511194&r2=511195
==============================================================================
--- incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/context/ScaServiceBeanDefinitionParser.java (original)
+++ incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/context/ScaServiceBeanDefinitionParser.java Fri Feb 23 18:29:46 2007
@@ -25,6 +25,8 @@
/**
* Parser for the <sca:service/> element
+ *
+ * @version $Rev$ $Date$
*/
public class ScaServiceBeanDefinitionParser implements BeanDefinitionParser {
Added: incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/impl/BeanMethodNotFound.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/impl/BeanMethodNotFound.java?view=auto&rev=511195
==============================================================================
--- incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/impl/BeanMethodNotFound.java (added)
+++ incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/impl/BeanMethodNotFound.java Fri Feb 23 18:29:46 2007
@@ -0,0 +1,40 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tuscany.container.spring.impl;
+
+import org.apache.tuscany.spi.component.TargetInvokerCreationException;
+import org.apache.tuscany.spi.model.Operation;
+
+/**
+ * Thrown when a service contract Operation cannot be mapped to a method on a Spring Bean class
+ *
+ * @version $Rev$ $Date$
+ */
+public class BeanMethodNotFound extends TargetInvokerCreationException {
+ private Operation operation;
+
+ public BeanMethodNotFound(Operation operation) {
+ super("Bean method not found");
+ this.operation = operation;
+ }
+
+ public Operation getOperation() {
+ return operation;
+ }
+}
Propchange: incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/impl/BeanMethodNotFound.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/impl/BeanMethodNotFound.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified: incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/impl/SpringCompositeBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/impl/SpringCompositeBuilder.java?view=diff&rev=511195&r1=511194&r2=511195
==============================================================================
--- incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/impl/SpringCompositeBuilder.java (original)
+++ incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/impl/SpringCompositeBuilder.java Fri Feb 23 18:29:46 2007
@@ -18,25 +18,15 @@
*/
package org.apache.tuscany.container.spring.impl;
-import org.apache.tuscany.spi.QualifiedName;
+import java.net.URI;
+
import org.apache.tuscany.spi.builder.BuilderException;
-import org.apache.tuscany.spi.builder.BuilderInstantiationException;
import org.apache.tuscany.spi.component.Component;
-import org.apache.tuscany.spi.component.ComponentRegistrationException;
import org.apache.tuscany.spi.component.CompositeComponent;
-import org.apache.tuscany.spi.component.Service;
-import org.apache.tuscany.spi.component.ServiceBinding;
-import org.apache.tuscany.spi.component.Reference;
import org.apache.tuscany.spi.deployer.DeploymentContext;
import org.apache.tuscany.spi.extension.ComponentBuilderExtension;
-import org.apache.tuscany.spi.model.BoundReferenceDefinition;
-import org.apache.tuscany.spi.model.BoundServiceDefinition;
import org.apache.tuscany.spi.model.ComponentDefinition;
-import org.apache.tuscany.spi.model.Property;
-import org.apache.tuscany.spi.wire.InboundInvocationChain;
-import org.apache.tuscany.spi.wire.InboundWire;
-import org.apache.tuscany.container.spring.model.SpringComponentType;
import org.apache.tuscany.container.spring.model.SpringImplementation;
import org.springframework.core.io.Resource;
@@ -47,53 +37,14 @@
*/
public class SpringCompositeBuilder extends ComponentBuilderExtension<SpringImplementation> {
- @SuppressWarnings("unchecked")
public Component build(CompositeComponent parent,
ComponentDefinition<SpringImplementation> componentDefinition,
DeploymentContext deploymentContext) throws BuilderException {
- String name = componentDefinition.getName();
+ URI uri = componentDefinition.getUri();
SpringImplementation implementation = componentDefinition.getImplementation();
Resource resource = implementation.getApplicationResource();
- SpringCompositeComponent component =
- new SpringCompositeComponent(name, resource, parent, wireService, connector, null);
- SpringComponentType<Property<?>> componentType = implementation.getComponentType();
-
- // We need to set the target invoker as opposed to having the connector do it since the
- // Spring context is "opaque" to the wiring fabric. In other words, the Spring context does not expose
- // its beans as SCA components to the connector to wire the serviceBindings to
- for (BoundServiceDefinition serviceDefinition : componentType.getServices().values()) {
- // call back into builder registry to handle building of serviceBindings
- Service service = builderRegistry.build(parent, serviceDefinition, deploymentContext);
- for (ServiceBinding binding : service.getServiceBindings()) {
- // wire service to bean invokers
- InboundWire wire = binding.getInboundWire();
- QualifiedName targetName = new QualifiedName(serviceDefinition.getTarget().getPath());
- for (InboundInvocationChain chain : wire.getInvocationChains().values()) {
- // FIXME this should go to the connector and get policy and be invoked from
- // SpringComposite.prepare()
- chain.addInterceptor(new SpringInterceptor());
- chain.setTargetInvoker(component.createTargetInvoker(targetName.getPartName(),
- chain.getOperation(),
- null));
- }
- }
- try {
- component.register(service);
- } catch (ComponentRegistrationException e) {
- throw new BuilderInstantiationException("Error registering service", e);
- }
- }
- for (BoundReferenceDefinition referenceDefinition : componentType.getReferences().values()) {
- // call back into builder registry to handle building of references
- Reference reference = builderRegistry.build(parent, referenceDefinition, deploymentContext);
- connector.connect(reference);
- try {
- component.register(reference);
- } catch (ComponentRegistrationException e) {
- throw new BuilderInstantiationException("Error registering reference", e);
- }
- }
- return component;
+ ClassLoader cl = implementation.getClassLoader();
+ return new SpringCompositeComponent(uri, resource, proxyService, null, cl);
}
protected Class<SpringImplementation> getImplementationType() {
Modified: incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/impl/SpringCompositeComponent.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/impl/SpringCompositeComponent.java?view=diff&rev=511195&r1=511194&r2=511195
==============================================================================
--- incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/impl/SpringCompositeComponent.java (original)
+++ incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/impl/SpringCompositeComponent.java Fri Feb 23 18:29:46 2007
@@ -20,24 +20,24 @@
import java.io.IOException;
import java.lang.reflect.Method;
+import java.net.URI;
+import java.util.List;
import java.util.Locale;
import java.util.Map;
import org.w3c.dom.Document;
-import org.apache.tuscany.spi.builder.Connector;
-import org.apache.tuscany.spi.component.CompositeComponent;
import org.apache.tuscany.spi.component.Reference;
import org.apache.tuscany.spi.component.SCAObject;
-import org.apache.tuscany.spi.component.ScopeContainer;
import org.apache.tuscany.spi.component.ServiceBinding;
+import org.apache.tuscany.spi.component.TargetInvokerCreationException;
import org.apache.tuscany.spi.extension.CompositeComponentExtension;
import static org.apache.tuscany.spi.idl.java.JavaIDLUtils.findMethod;
import org.apache.tuscany.spi.model.Operation;
import org.apache.tuscany.spi.model.ServiceContract;
-import org.apache.tuscany.spi.wire.InboundWire;
+import org.apache.tuscany.spi.wire.ProxyService;
import org.apache.tuscany.spi.wire.TargetInvoker;
-import org.apache.tuscany.spi.wire.WireService;
+import org.apache.tuscany.spi.wire.Wire;
import org.apache.tuscany.container.spring.context.SCAApplicationContext;
import org.springframework.beans.BeansException;
@@ -62,62 +62,57 @@
private static final String[] EMPTY_ARRAY = new String[0];
private AbstractApplicationContext springContext;
private Resource resource;
- private WireService wireService;
+ private ProxyService proxyService;
+ private ClassLoader loader;
/**
* Creates a new composite
*
- * @param name the name of the SCA composite
+ * @param uri the uri of the SCA composite
* @param resource a resource pointing to the application context
- * @param parent the SCA composite parent
- * @param wireService the wire service to create proxies
- * @param connector the connector to use for wiring children
* @param propertyValues the values of this composite's Properties
*/
- public SpringCompositeComponent(String name,
+ public SpringCompositeComponent(URI uri,
Resource resource,
- CompositeComponent parent,
- WireService wireService,
- Connector connector,
- Map<String, Document> propertyValues) {
- super(name, parent, connector, propertyValues);
+ ProxyService proxyService,
+ Map<String, Document> propertyValues,
+ ClassLoader loader) {
+ super(uri, propertyValues);
this.resource = resource;
- this.wireService = wireService;
+ this.proxyService = proxyService;
+ this.loader = loader;
}
- /**
- * Creates a new composite
- *
- * @param name the name of the SCA composite
- * @param context the Spring application context
- * @param parent the SCA composite parent
- * @param connector the connector to use for wiring children
- * @param propertyValues the values of this composite's Properties
- */
- public SpringCompositeComponent(String name,
- AbstractApplicationContext context,
- CompositeComponent parent,
- Connector connector,
- Map<String, Document> propertyValues) {
- super(name, parent, connector, propertyValues);
- this.springContext = context;
- SCAParentApplicationContext scaApplicationContext = new SCAParentApplicationContext();
- springContext.setParent(scaApplicationContext);
- // REVIEW we need to refresh to pick up the parent but this is not optimal
- springContext.refresh();
- }
-
- public TargetInvoker createTargetInvoker(String targetName, Operation operation, InboundWire callbackWire) {
+ public TargetInvoker createTargetInvoker(String targetName, Operation operation)
+ throws TargetInvokerCreationException {
+ TargetInvoker invoker = super.createTargetInvoker(targetName, operation);
+ if (invoker != null) {
+ return invoker;
+ }
+ // no service found, wire to a bean using the service name as the bean name
ServiceContract contract = operation.getServiceContract();
Method[] methods = contract.getInterfaceClass().getMethods();
Method method = findMethod(operation, methods);
- // FIXME test m == null
- // Treat the serviceName as the Spring bean name to look up
+ if (method == null) {
+ throw new BeanMethodNotFound(operation);
+ }
return new SpringInvoker(targetName, method, this);
}
- public void setScopeContainer(ScopeContainer scopeContainer) {
- // not needed
+ public List<Wire> getWires(String name) {
+ throw new UnsupportedOperationException();
+ }
+
+ public void attachCallbackWire(Wire wire) {
+ throw new UnsupportedOperationException();
+ }
+
+ public void attachWire(Wire wire) {
+ throw new UnsupportedOperationException();
+ }
+
+ public void attachWires(List<Wire> wires) {
+ throw new UnsupportedOperationException();
}
public ConfigurableApplicationContext getApplicationContext() {
@@ -135,8 +130,16 @@
}
if (springContext == null) {
SCAParentApplicationContext scaApplicationContext = new SCAParentApplicationContext();
- springContext = new SCAApplicationContext(scaApplicationContext, resource);
- springContext.start();
+ ClassLoader cl = Thread.currentThread().getContextClassLoader();
+ try {
+ // FIXME this is horrible
+ Thread.currentThread().setContextClassLoader(loader);
+ springContext = new SCAApplicationContext(scaApplicationContext, resource);
+ springContext.start();
+ } finally {
+ Thread.currentThread().setContextClassLoader(cl);
+
+ }
}
}
@@ -150,9 +153,15 @@
}
/**
- * An inner class is required to act as the Spring application context parent as opposed to implementing the
- * interface since the return types for {@link org.springframework.context.ApplicationContext#getParent()} and
- * {@link org.apache.tuscany.spi.component.CompositeComponent#getParent()} clash
+ * Used in unit testing
+ */
+ void setSpringContext(AbstractApplicationContext springContext) {
+ this.springContext = springContext;
+ }
+
+ /**
+ * TODO remove need for inner class as SCA.getParent() has been removed and no longer clashes with
+ * ApplicaitonContext.getParent
*/
private class SCAParentApplicationContext implements ApplicationContext {
@@ -169,25 +178,25 @@
Class<?> type = null;
if (object instanceof Reference) {
Reference reference = (Reference) object;
- InboundWire wire = null;
+ Wire wire = null;
if (!reference.getReferenceBindings().isEmpty()) {
// FIXME JFM provide a better way for the runtime to select the binding as opposed to the first one
- wire = reference.getReferenceBindings().get(0).getInboundWire();
- type = wire.getServiceContract().getInterfaceClass();
+ wire = reference.getReferenceBindings().get(0).getWire();
+ type = wire.getSourceContract().getInterfaceClass();
}
if (requiredType != null && requiredType.isAssignableFrom(type)) {
// need null check since Spring may pass in a null
throw new BeanNotOfRequiredTypeException(name, requiredType, type);
}
- return wireService.createProxy(type, wire);
+ return proxyService.createProxy(type, wire);
} else if (object instanceof ServiceBinding) {
ServiceBinding serviceBinding = (ServiceBinding) object;
- type = serviceBinding.getInboundWire().getServiceContract().getInterfaceClass();
+ type = serviceBinding.getWire().getSourceContract().getInterfaceClass();
if (requiredType != null && requiredType.isAssignableFrom(type)) {
// need null check since Spring may pass in a null
throw new BeanNotOfRequiredTypeException(name, requiredType, type);
}
- return wireService.createProxy(type, serviceBinding.getInboundWire());
+ return proxyService.createProxy(type, serviceBinding.getWire());
} else {
throw new AssertionError("Illegal object type [" + name + "]");
}
@@ -222,7 +231,7 @@
}
public String getDisplayName() {
- return getName();
+ return getUri().toString();
}
public long getStartupDate() {
Modified: incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/loader/SpringImplementationLoader.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/loader/SpringImplementationLoader.java?view=diff&rev=511195&r1=511194&r2=511195
==============================================================================
--- incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/loader/SpringImplementationLoader.java (original)
+++ incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/loader/SpringImplementationLoader.java Fri Feb 23 18:29:46 2007
@@ -22,6 +22,7 @@
import java.io.FileInputStream;
import java.io.IOException;
import java.net.MalformedURLException;
+import java.net.URI;
import java.net.URL;
import java.util.jar.Attributes;
import java.util.jar.JarEntry;
@@ -33,7 +34,7 @@
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
-import static org.osoa.sca.Version.XML_NAMESPACE_1_0;
+import org.osoa.sca.Constants;
import org.apache.tuscany.spi.annotation.Autowire;
import org.apache.tuscany.spi.component.CompositeComponent;
@@ -42,9 +43,9 @@
import org.apache.tuscany.spi.loader.LoaderException;
import org.apache.tuscany.spi.loader.LoaderRegistry;
import org.apache.tuscany.spi.loader.MissingResourceException;
-import org.apache.tuscany.spi.model.BoundReferenceDefinition;
-import org.apache.tuscany.spi.model.BoundServiceDefinition;
import org.apache.tuscany.spi.model.ModelObject;
+import org.apache.tuscany.spi.model.ReferenceDefinition;
+import org.apache.tuscany.spi.model.ServiceDefinition;
import org.apache.tuscany.container.spring.model.SpringComponentType;
import org.apache.tuscany.container.spring.model.SpringImplementation;
@@ -54,14 +55,16 @@
import org.springframework.core.io.UrlResource;
/**
- * Loader for handling Spring <spring:implementation.spring> elements.
+ * Loader for handling Spring <implementation.spring> elements.
+ *
+ * @version $Rev$ $Date$
*/
public class SpringImplementationLoader extends LoaderExtension<SpringImplementation> {
private static final QName IMPLEMENTATION_SPRING = new QName("http://www.osoa.org/xmlns/sca/1.0",
"implementation.spring");
private static final String APPLICATION_CONTEXT = "applicationContext.xml";
- private static final QName SERVICE_ELEMENT = new QName(XML_NAMESPACE_1_0, "service");
- private static final QName REFERENCE_ELEMENT = new QName(XML_NAMESPACE_1_0, "reference");
+ private static final QName SERVICE_ELEMENT = new QName(Constants.SCA_NS, "service");
+ private static final QName REFERENCE_ELEMENT = new QName(Constants.SCA_NS, "reference");
private final RuntimeInfo runtimeInfo;
@@ -85,8 +88,8 @@
throw new MissingResourceException("No location supplied");
}
- SpringImplementation implementation = new SpringImplementation();
ClassLoader classLoader = deploymentContext.getClassLoader();
+ SpringImplementation implementation = new SpringImplementation(classLoader);
implementation.setApplicationResource(getApplicationContextResource(locationAttr, classLoader));
registry.loadComponentType(parent, implementation, deploymentContext);
SpringComponentType type = implementation.getComponentType();
@@ -95,19 +98,19 @@
case START_ELEMENT:
QName qname = reader.getName();
if (SERVICE_ELEMENT.equals(qname)) {
- BoundServiceDefinition service =
- (BoundServiceDefinition) registry.load(parent, null, reader, deploymentContext);
+ ServiceDefinition service =
+ (ServiceDefinition) registry.load(parent, null, reader, deploymentContext);
if (!type.isExposeAllBeans()) {
- String name = service.getName();
+ URI name = service.getUri();
if (!type.getServiceDeclarations().containsKey(name)) {
- throw new LoaderException("No service defined in Spring context for ", name);
+ throw new LoaderException("No service defined in Spring context for ", name.toString());
}
}
- type.getDeclaredServices().put(service.getName(), service);
+ type.getDeclaredServices().put(service.getUri(), service);
} else if (REFERENCE_ELEMENT.equals(qname)) {
- BoundReferenceDefinition reference =
- (BoundReferenceDefinition) registry.load(parent, null, reader, deploymentContext);
- type.getDeclaredReferences().put(reference.getName(), reference);
+ ReferenceDefinition reference =
+ (ReferenceDefinition) registry.load(parent, null, reader, deploymentContext);
+ type.getDeclaredReferences().put(reference.getUri(), reference);
}
break;
case END_ELEMENT:
@@ -124,9 +127,9 @@
File appXmlFile;
File locationFile = new File(locationAttr);
- if (!locationFile.isAbsolute()) {
- locationFile = new File(runtimeInfo.getApplicationRootDirectory(), locationAttr);
- }
+// if (!locationFile.isAbsolute()) {
+// locationFile = new File(runtimeInfo.getApplicationRootDirectory(), locationAttr);
+// }
if (!locationFile.exists()) {
// FIXME hack
URL url;
Modified: incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/model/SpringComponentType.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/model/SpringComponentType.java?view=diff&rev=511195&r1=511194&r2=511195
==============================================================================
--- incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/model/SpringComponentType.java (original)
+++ incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/model/SpringComponentType.java Fri Feb 23 18:29:46 2007
@@ -21,10 +21,10 @@
import java.util.HashMap;
import java.util.Map;
-import org.apache.tuscany.spi.model.BoundReferenceDefinition;
-import org.apache.tuscany.spi.model.BoundServiceDefinition;
import org.apache.tuscany.spi.model.CompositeComponentType;
import org.apache.tuscany.spi.model.Property;
+import org.apache.tuscany.spi.model.ReferenceDefinition;
+import org.apache.tuscany.spi.model.ServiceDefinition;
/**
* Component type information for a Spring composite component implementation type. A component type is associated with
@@ -33,7 +33,7 @@
* @version $Rev$ $Date$
*/
public class SpringComponentType<P extends Property<?>>
- extends CompositeComponentType<BoundServiceDefinition, BoundReferenceDefinition, P> {
+ extends CompositeComponentType<ServiceDefinition, ReferenceDefinition, P> {
private Map<String, ServiceDeclaration> serviceDeclarations = new HashMap<String, ServiceDeclaration>();
private Map<String, ReferenceDeclaration> referenceDeclarations = new HashMap<String, ReferenceDeclaration>();
private boolean exposeAllBeans;
Modified: incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/model/SpringImplementation.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/model/SpringImplementation.java?view=diff&rev=511195&r1=511194&r2=511195
==============================================================================
--- incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/model/SpringImplementation.java (original)
+++ incubator/tuscany/java/sca/extensions/spring/container/src/main/java/org/apache/tuscany/container/spring/model/SpringImplementation.java Fri Feb 23 18:29:46 2007
@@ -31,12 +31,17 @@
public class SpringImplementation extends Implementation<SpringComponentType<Property<?>>> {
private String location;
private Resource applicationResource;
+ private ClassLoader classLoader;
- public SpringImplementation() {
+ public SpringImplementation(ClassLoader classloader) {
+ this.classLoader = classloader;
}
- public SpringImplementation(SpringComponentType<Property<?>> componentType) {
- super(componentType);
+ /**
+ * Returns the classloader of the Spring application context
+ */
+ public ClassLoader getClassLoader() {
+ return classLoader;
}
/**
Modified: incubator/tuscany/java/sca/extensions/spring/container/src/main/resources/META-INF/sca/spring.system.scdl
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/extensions/spring/container/src/main/resources/META-INF/sca/spring.system.scdl?view=diff&rev=511195&r1=511194&r2=511195
==============================================================================
--- incubator/tuscany/java/sca/extensions/spring/container/src/main/resources/META-INF/sca/spring.system.scdl (original)
+++ incubator/tuscany/java/sca/extensions/spring/container/src/main/resources/META-INF/sca/spring.system.scdl Fri Feb 23 18:29:46 2007
@@ -25,11 +25,11 @@
name="org.apache.tuscany.launcher.SpringImplementation">
- <dependency xmlns="http://tuscany.apache.org/xmlns/1.0-SNAPSHOT">
+ <!-- <dependency xmlns="http://tuscany.apache.org/xmlns/1.0-SNAPSHOT">
<group>org.apache.tuscany.sca.extensions.spring</group>
<name>tuscany-spring</name>
<version>1.0-incubator-SNAPSHOT</version>
- </dependency>
+ </dependency> -->
<component name="spring.implementationLoader">
<system:implementation.system class="org.apache.tuscany.container.spring.loader.SpringImplementationLoader"/>
Modified: incubator/tuscany/java/sca/extensions/spring/container/src/test/java/org/apache/tuscany/container/spring/SpringTestUtils.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/extensions/spring/container/src/test/java/org/apache/tuscany/container/spring/SpringTestUtils.java?view=diff&rev=511195&r1=511194&r2=511195
==============================================================================
--- incubator/tuscany/java/sca/extensions/spring/container/src/test/java/org/apache/tuscany/container/spring/SpringTestUtils.java (original)
+++ incubator/tuscany/java/sca/extensions/spring/container/src/test/java/org/apache/tuscany/container/spring/SpringTestUtils.java Fri Feb 23 18:29:46 2007
@@ -18,20 +18,18 @@
*/
package org.apache.tuscany.container.spring;
+import java.net.URI;
import javax.xml.namespace.QName;
-import org.apache.tuscany.spi.QualifiedName;
-import org.apache.tuscany.spi.builder.Connector;
import org.apache.tuscany.spi.builder.WiringException;
-import org.apache.tuscany.spi.component.CompositeComponent;
import org.apache.tuscany.spi.component.ServiceBinding;
+import org.apache.tuscany.spi.component.TargetInvokerCreationException;
import org.apache.tuscany.spi.extension.ServiceBindingExtension;
import org.apache.tuscany.spi.idl.InvalidServiceContractException;
-import org.apache.tuscany.spi.wire.InboundWire;
-import org.apache.tuscany.spi.wire.OutboundWire;
+import org.apache.tuscany.spi.model.Operation;
+import org.apache.tuscany.spi.wire.TargetInvoker;
import org.apache.tuscany.container.spring.mock.TestBeanImpl;
-import org.apache.tuscany.test.ArtifactFactory;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.beans.factory.support.RootBeanDefinition;
import org.springframework.context.support.GenericApplicationContext;
@@ -44,25 +42,18 @@
private SpringTestUtils() {
}
- public static <T> ServiceBinding createService(String name,
- Class<T> serviceInterface,
- CompositeComponent parent)
+ public static <T> ServiceBinding createService(URI uri, Class<T> serviceInterface)
throws InvalidServiceContractException, WiringException {
- ServiceBinding serviceBinding = new ServiceBindingExtension(name, parent) {
+ return new ServiceBindingExtension(uri) {
public QName getBindingType() {
return null;
}
+
+ public TargetInvoker createTargetInvoker(String targetName, Operation operation)
+ throws TargetInvokerCreationException {
+ return null;
+ }
};
- InboundWire inboundWire = ArtifactFactory.createLocalInboundWire(name, serviceInterface);
- OutboundWire outboundWire = ArtifactFactory.createLocalOutboundWire(name, serviceInterface);
- ArtifactFactory.terminateWire(outboundWire);
- serviceBinding.setInboundWire(inboundWire);
- serviceBinding.setOutboundWire(outboundWire);
- outboundWire.setTargetName(new QualifiedName("foo"));
- Connector connector = ArtifactFactory.createConnector();
- connector.connect(serviceBinding);
- ArtifactFactory.terminateWire(inboundWire);
- return serviceBinding;
}
Copied: incubator/tuscany/java/sca/extensions/spring/container/src/test/java/org/apache/tuscany/container/spring/impl/ReferenceWiringTestCase.java (from r510793, incubator/tuscany/java/sca/extensions/spring/container/src/test/java/org/apache/tuscany/container/spring/impl/ReferenceInvocationTestCase.java)
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/extensions/spring/container/src/test/java/org/apache/tuscany/container/spring/impl/ReferenceWiringTestCase.java?view=diff&rev=511195&p1=incubator/tuscany/java/sca/extensions/spring/container/src/test/java/org/apache/tuscany/container/spring/impl/ReferenceInvocationTestCase.java&r1=510793&p2=incubator/tuscany/java/sca/extensions/spring/container/src/test/java/org/apache/tuscany/container/spring/impl/ReferenceWiringTestCase.java&r2=511195
==============================================================================
--- incubator/tuscany/java/sca/extensions/spring/container/src/test/java/org/apache/tuscany/container/spring/impl/ReferenceInvocationTestCase.java (original)
+++ incubator/tuscany/java/sca/extensions/spring/container/src/test/java/org/apache/tuscany/container/spring/impl/ReferenceWiringTestCase.java Fri Feb 23 18:29:46 2007
@@ -18,21 +18,35 @@
*/
package org.apache.tuscany.container.spring.impl;
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Method;
+import java.lang.reflect.Proxy;
+import java.net.URI;
import java.net.URL;
-import java.util.List;
import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import javax.xml.namespace.QName;
+
+import org.osoa.sca.CallableReference;
-import org.apache.tuscany.spi.component.ReferenceBinding;
import org.apache.tuscany.spi.component.Reference;
+import org.apache.tuscany.spi.component.ReferenceBinding;
+import org.apache.tuscany.spi.component.TargetInvokerCreationException;
import org.apache.tuscany.spi.model.ServiceContract;
-import org.apache.tuscany.spi.wire.InboundWire;
+import org.apache.tuscany.spi.model.Operation;
+import org.apache.tuscany.spi.wire.ChainHolder;
+import org.apache.tuscany.spi.wire.IncompatibleServiceContractException;
+import org.apache.tuscany.spi.wire.ProxyCreationException;
+import org.apache.tuscany.spi.wire.ProxyService;
+import org.apache.tuscany.spi.wire.Wire;
+import org.apache.tuscany.spi.wire.TargetInvoker;
+import org.apache.tuscany.spi.extension.ReferenceBindingExtension;
import junit.framework.TestCase;
import org.apache.tuscany.container.spring.mock.TestBean;
import org.easymock.EasyMock;
-import static org.easymock.EasyMock.createMock;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.replay;
import org.springframework.core.io.Resource;
import org.springframework.core.io.UrlResource;
@@ -41,32 +55,87 @@
*
* @version $$Rev$$ $$Date$$
*/
-public class ReferenceInvocationTestCase extends TestCase {
+public class ReferenceWiringTestCase extends TestCase {
public void testInvocation() throws Exception {
- URL url = getClass().getClassLoader().getResource("META-INF/sca/testReferenceContext.xml");
+ ClassLoader loader = getClass().getClassLoader();
+ URL url = loader.getResource("META-INF/sca/testReferenceContext.xml");
Resource resource = new UrlResource(url);
- SpringCompositeComponent parent = new SpringCompositeComponent("spring", resource, null, null, null, null);
- InboundWire inboundWire = EasyMock.createMock(InboundWire.class);
- EasyMock.expect(inboundWire.getServiceContract()).andReturn(new ServiceContract(TestBean.class) {
- }).atLeastOnce();
- EasyMock.replay(inboundWire);
- ReferenceBinding referenceBinding = createMock(ReferenceBinding.class);
- expect(referenceBinding.isSystem()).andReturn(false).atLeastOnce();
- expect(referenceBinding.getInboundWire()).andStubReturn(inboundWire);
+ URI uri = URI.create("spring");
+ ProxyService proxyService = new MockProxyService();
+ SpringCompositeComponent parent = new SpringCompositeComponent(uri, resource, proxyService, null, loader);
+ Wire wire = EasyMock.createMock(Wire.class);
+ ServiceContract<?> contract = new ServiceContract(TestBean.class) {
+ };
+ EasyMock.expect(wire.getSourceContract()).andReturn(contract).atLeastOnce();
+ EasyMock.replay(wire);
+ ReferenceBinding referenceBinding = EasyMock.createMock(ReferenceBinding.class);
+ EasyMock.expect(referenceBinding.getWire()).andStubReturn(wire);
referenceBinding.start();
- replay(referenceBinding);
+ EasyMock.replay(referenceBinding);
+
+ URI referenceUri = URI.create("spring#testReference");
+ ReferenceBinding binding = new ReferenceBindingExtension(referenceUri, null){
+
+ public QName getBindingType() {
+ return null;
+ }
+ public TargetInvoker createTargetInvoker(String targetName, Operation operation)
+ throws TargetInvokerCreationException {
+ throw new UnsupportedOperationException();
+ }
+ };
+ binding.setWire(wire);
+ List<ReferenceBinding> bindings = new ArrayList<ReferenceBinding>();
+ bindings.add(binding);
Reference reference = EasyMock.createMock(Reference.class);
- expect(reference.isSystem()).andReturn(false).atLeastOnce();
- expect(reference.getName()).andReturn("bar").anyTimes();
- List<ReferenceBinding> bindings = new ArrayList <ReferenceBinding>();
- expect(reference.getReferenceBindings()).andReturn(bindings);
+ EasyMock.expect(reference.getUri()).andReturn(referenceUri).anyTimes();
+ EasyMock.expect(reference.getReferenceBindings()).andReturn(bindings).atLeastOnce();
reference.start();
- replay(reference);
+ EasyMock.replay(reference);
parent.register(reference);
parent.start();
- parent.getBean(TestBean.class, "testBean");
+ TestBean bean = parent.getBean(TestBean.class, "testBean");
+ assertNotNull(bean.getBean());
+ EasyMock.verify(reference);
+ }
+
+ private class MockInvocationHandler implements InvocationHandler {
+
+ public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
+ return null;
+ }
+ }
+
+ private class MockProxyService implements ProxyService {
+
+ public <T> T createProxy(Class<T> interfaze, Wire wire) throws ProxyCreationException {
+ ClassLoader cl = interfaze.getClassLoader();
+ Class[] interfaces = new Class[]{interfaze};
+ MockInvocationHandler handler = new MockInvocationHandler();
+ return interfaze.cast(Proxy.newProxyInstance(cl, interfaces, handler));
+ }
+
+ public <T> T createProxy(Class<T> interfaze, Wire wire, Map<Method, ChainHolder> mapping)
+ throws ProxyCreationException {
+ throw new UnsupportedOperationException();
+ }
+
+ public Object createCallbackProxy(Class<?> interfaze, List<Wire> wires) throws ProxyCreationException {
+ throw new UnsupportedOperationException();
+ }
+
+ public <B, R extends CallableReference<B>> R cast(B target) throws IllegalArgumentException {
+ throw new UnsupportedOperationException();
+ }
+
+ public boolean checkCompatibility(ServiceContract<?> source,
+ ServiceContract<?> target,
+ boolean ignoreCallback,
+ boolean silent) throws IncompatibleServiceContractException {
+ throw new UnsupportedOperationException();
+ }
}
}
Propchange: incubator/tuscany/java/sca/extensions/spring/container/src/test/java/org/apache/tuscany/container/spring/impl/ReferenceWiringTestCase.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/extensions/spring/container/src/test/java/org/apache/tuscany/container/spring/impl/ReferenceWiringTestCase.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified: incubator/tuscany/java/sca/extensions/spring/container/src/test/java/org/apache/tuscany/container/spring/impl/SpringCompositeBuilderTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/extensions/spring/container/src/test/java/org/apache/tuscany/container/spring/impl/SpringCompositeBuilderTestCase.java?view=diff&rev=511195&r1=511194&r2=511195
==============================================================================
--- incubator/tuscany/java/sca/extensions/spring/container/src/test/java/org/apache/tuscany/container/spring/impl/SpringCompositeBuilderTestCase.java (original)
+++ incubator/tuscany/java/sca/extensions/spring/container/src/test/java/org/apache/tuscany/container/spring/impl/SpringCompositeBuilderTestCase.java Fri Feb 23 18:29:46 2007
@@ -19,36 +19,21 @@
package org.apache.tuscany.container.spring.impl;
import java.net.URI;
-import java.net.URISyntaxException;
import java.net.URL;
-import javax.xml.namespace.QName;
-
import org.apache.tuscany.spi.builder.BuilderRegistry;
-import org.apache.tuscany.spi.builder.Connector;
import org.apache.tuscany.spi.component.CompositeComponent;
import org.apache.tuscany.spi.component.Service;
import org.apache.tuscany.spi.deployer.DeploymentContext;
-import org.apache.tuscany.spi.extension.ServiceBindingExtension;
-import org.apache.tuscany.spi.model.BoundServiceDefinition;
import org.apache.tuscany.spi.model.ComponentDefinition;
import org.apache.tuscany.spi.model.Property;
-import org.apache.tuscany.spi.wire.InboundWire;
-import org.apache.tuscany.spi.wire.OutboundWire;
-import org.apache.tuscany.spi.wire.WireService;
+import org.apache.tuscany.spi.model.ReferenceDefinition;
+import org.apache.tuscany.spi.model.ServiceDefinition;
import junit.framework.TestCase;
-import org.apache.tuscany.container.spring.mock.TestBean;
import org.apache.tuscany.container.spring.model.SpringComponentType;
import org.apache.tuscany.container.spring.model.SpringImplementation;
-import org.apache.tuscany.test.ArtifactFactory;
-import org.apache.tuscany.test.binding.TestBindingDefinition;
-import static org.easymock.EasyMock.createMock;
-import static org.easymock.EasyMock.createNiceMock;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.isA;
-import static org.easymock.EasyMock.replay;
-import static org.easymock.EasyMock.verify;
+import org.easymock.EasyMock;
import org.springframework.core.io.Resource;
import org.springframework.core.io.UrlResource;
@@ -56,74 +41,89 @@
* @version $$Rev$$ $$Date$$
*/
public class SpringCompositeBuilderTestCase extends TestCase {
- private ComponentDefinition<SpringImplementation> definition;
/**
- * Verifies that the builder calls back into the registry to load serviceBindings and wires them to bean targets
- * when no <code>sca:service</code> tag is specified in the Spring application.xml
+ * Verifies that the builder calls back into the registry to load services and references when no
+ * <code>sca:service</code> tag is specified in the Spring application.xml
*/
- @SuppressWarnings("unchecked")
public void testImplicitServiceWiring() throws Exception {
- // Create a service instance that the mock builder registry will return
- WireService wireService = ArtifactFactory.createWireService();
- ServiceBindingExtension binding =
- new ServiceBindingExtension("fooServiceBinding", null) {
- public QName getBindingType() {
- return null;
- }
- };
- InboundWire inboundWire = ArtifactFactory.createLocalInboundWire("fooServiceBinding", TestBean.class);
- OutboundWire outboundWire = ArtifactFactory.createLocalOutboundWire("fooServiceBinding", TestBean.class);
- ArtifactFactory.terminateWire(outboundWire);
- binding.setInboundWire(inboundWire);
- binding.setOutboundWire(outboundWire);
- inboundWire.setContainer(binding);
- outboundWire.setContainer(binding);
- Connector connector = ArtifactFactory.createConnector();
- connector.connect(inboundWire, outboundWire, true);
-
- Service service = ArtifactFactory.createService("fooServiceBinding", null, outboundWire.getServiceContract());
- service.addServiceBinding(binding);
+ Service service = EasyMock.createMock(Service.class);
// Configure the mock builder registry
- BuilderRegistry registry = createMock(BuilderRegistry.class);
- expect(registry.build(isA(CompositeComponent.class),
- isA(BoundServiceDefinition.class),
- isA(DeploymentContext.class))).andStubReturn(service);
- replay(registry);
+ BuilderRegistry registry = EasyMock.createMock(BuilderRegistry.class);
+ EasyMock.expect(registry.build(EasyMock.isA(CompositeComponent.class),
+ EasyMock.isA(ServiceDefinition.class),
+ EasyMock.isA(DeploymentContext.class))).andStubReturn(service);
+ EasyMock.replay(registry);
+ SpringCompositeBuilder builder = new SpringCompositeBuilder();
+ builder.setBuilderRegistry(registry);
+ ComponentDefinition<SpringImplementation> definition = createDefinitionWithService();
+ CompositeComponent component = (CompositeComponent) builder.build(null, definition, null);
+ assertNotNull(component);
+ EasyMock.verify(registry);
+ }
- // Test the SpringCompositeBuilder
+ /**
+ * Verifies that the builder calls back into the registry to load services and references when no
+ * <code>sca:reference</code> tag is specified in the Spring application.xml
+ */
+ public void testImplicitReferenceWiring() throws Exception {
+ Service service = EasyMock.createMock(Service.class);
+ // Configure the mock builder registry
+ BuilderRegistry registry = EasyMock.createMock(BuilderRegistry.class);
+ EasyMock.expect(registry.build(EasyMock.isA(CompositeComponent.class),
+ EasyMock.isA(ServiceDefinition.class),
+ EasyMock.isA(DeploymentContext.class))).andStubReturn(service);
+ EasyMock.replay(registry);
SpringCompositeBuilder builder = new SpringCompositeBuilder();
- builder.setWireService(wireService);
builder.setBuilderRegistry(registry);
- CompositeComponent parent = createNiceMock(CompositeComponent.class);
- DeploymentContext context = createNiceMock(DeploymentContext.class);
- CompositeComponent component = (CompositeComponent) builder.build(parent, definition, context);
- component.start();
- TestBean bean = wireService.createProxy(TestBean.class, component.getInboundWire("fooServiceBinding"));
- assertEquals("call foo", bean.echo("call foo"));
- verify(registry);
+ ComponentDefinition<SpringImplementation> definition = createDefinitionWithReference();
+ CompositeComponent component = (CompositeComponent) builder.build(null, definition, null);
+ assertNotNull(component);
+ EasyMock.verify(registry);
}
- protected void setUp() throws Exception {
+ protected ComponentDefinition<SpringImplementation> createDefinitionWithService() throws Exception {
super.setUp();
- URL url = getClass().getClassLoader().getResource("META-INF/sca/testServiceContext.xml");
+ ClassLoader loader = getClass().getClassLoader();
+ URL url = loader.getResource("META-INF/sca/testServiceContext.xml");
Resource resource = new UrlResource(url);
- SpringImplementation impl = new SpringImplementation(createComponentType());
- definition = new ComponentDefinition<SpringImplementation>("spring", impl);
+ SpringComponentType<Property<?>> type = createComponentTypeWithService();
+ SpringImplementation impl = new SpringImplementation(loader);
+ impl.setComponentType(type);
+ URI uri = URI.create("composite");
+ ComponentDefinition<SpringImplementation> definition = new ComponentDefinition<SpringImplementation>(uri, impl);
impl.setApplicationResource(resource);
+ return definition;
}
- private SpringComponentType<Property<?>> createComponentType() {
+ protected ComponentDefinition<SpringImplementation> createDefinitionWithReference() throws Exception {
+ super.setUp();
+ ClassLoader loader = getClass().getClassLoader();
+ URL url = loader.getResource("META-INF/sca/testServiceContext.xml");
+ Resource resource = new UrlResource(url);
+ SpringComponentType<Property<?>> type = createComponentTypeWithReference();
+ SpringImplementation impl = new SpringImplementation(loader);
+ impl.setComponentType(type);
+ URI uri = URI.create("composite");
+ ComponentDefinition<SpringImplementation> definition = new ComponentDefinition<SpringImplementation>(uri, impl);
+ impl.setApplicationResource(resource);
+ return definition;
+ }
+
+ private SpringComponentType<Property<?>> createComponentTypeWithService() {
SpringComponentType<Property<?>> componentType = new SpringComponentType<Property<?>>();
- BoundServiceDefinition serviceDefinition = new BoundServiceDefinition();
- serviceDefinition.setName("fooService");
- serviceDefinition.addBinding(new TestBindingDefinition());
- try {
- serviceDefinition.setTarget(new URI("testBean"));
- } catch (URISyntaxException e) {
- throw new AssertionError();
- }
+ ServiceDefinition serviceDefinition = new ServiceDefinition();
+ serviceDefinition.setUri(URI.create("fooService"));
+ serviceDefinition.setTarget(URI.create("testBean"));
componentType.add(serviceDefinition);
+ return componentType;
+ }
+
+ private SpringComponentType<Property<?>> createComponentTypeWithReference() {
+ SpringComponentType<Property<?>> componentType = new SpringComponentType<Property<?>>();
+ ReferenceDefinition referenceDefinition = new ReferenceDefinition();
+ referenceDefinition.setUri(URI.create("fooReference"));
+ componentType.add(referenceDefinition);
return componentType;
}
Modified: incubator/tuscany/java/sca/extensions/spring/container/src/test/java/org/apache/tuscany/container/spring/impl/SpringCompositeComponentTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/extensions/spring/container/src/test/java/org/apache/tuscany/container/spring/impl/SpringCompositeComponentTestCase.java?view=diff&rev=511195&r1=511194&r2=511195
==============================================================================
--- incubator/tuscany/java/sca/extensions/spring/container/src/test/java/org/apache/tuscany/container/spring/impl/SpringCompositeComponentTestCase.java (original)
+++ incubator/tuscany/java/sca/extensions/spring/container/src/test/java/org/apache/tuscany/container/spring/impl/SpringCompositeComponentTestCase.java Fri Feb 23 18:29:46 2007
@@ -1,39 +1,76 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
package org.apache.tuscany.container.spring.impl;
+import java.lang.reflect.Type;
+import java.net.URI;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.tuscany.spi.component.Service;
+import org.apache.tuscany.spi.model.Operation;
+import org.apache.tuscany.spi.model.ServiceContract;
+
import junit.framework.TestCase;
+import org.easymock.classextension.EasyMock;
+import org.springframework.context.support.AbstractApplicationContext;
/**
* @version $Rev$ $Date$
*/
public class SpringCompositeComponentTestCase extends TestCase {
-//
+ private SpringCompositeComponent component;
+
+ public void testChildStart() throws Exception {
+ AbstractApplicationContext appContext = EasyMock.createNiceMock(AbstractApplicationContext.class);
+ EasyMock.replay(appContext);
+ Service service = EasyMock.createMock(Service.class);
+ URI uri = URI.create("composite#service");
+ EasyMock.expect(service.getUri()).andReturn(uri).atLeastOnce();
+ service.start();
+ EasyMock.replay(service);
+ component.setSpringContext(appContext);
+ component.register(service);
+ component.start();
+ EasyMock.verify(service);
+ }
- public void testAppContextStart() {
-// AbstractApplicationContext appContext = EasyMock.createMock(AbstractApplicationContext.class);
-// appContext.refresh();
-// appContext.setParent(EasyMock.isA(ApplicationContext.class));
-// appContext.start();
-// replay(appContext);
-// SpringCompositeComponent component = new SpringCompositeComponent("spring", appContext, null, null, null);
-// component.start();
-// verify(appContext);
+ public void testTargetInvokerCreation() throws Exception {
+ ServiceContract<Type> contract = new ServiceContract<Type>(Foo.class) {
+ };
+ Operation<Type> operation = new Operation<Type>("operation", null, null, null);
+ Map<String, Operation<Type>> operations = new HashMap<String, Operation<Type>>();
+ operations.put("operation", operation);
+ contract.setOperations(operations);
+ operation.setServiceContract(contract);
+ component.createTargetInvoker("bean", operation);
}
-//
-// public void testChildStart() {
-// AbstractApplicationContext appContext = EasyMock.createNiceMock(AbstractApplicationContext.class);
-// replay(appContext);
-// ServiceBinding service = EasyMock.createMock(ServiceBinding.class);
-// EasyMock.expect(service.getName()).andReturn("foo").anyTimes();
-// service.start();
-// service.getInterface();
-// EasyMock.expectLastCall().andReturn(Object.class);
-// expect(service.isSystem()).andReturn(false).atLeastOnce();
-// replay(service);
-// SpringCompositeComponent component = new SpringCompositeComponent("spring", appContext, null, null, null);
-// component.register(service);
-// component.start();
-// verify(service);
-// }
+ protected void setUp() throws Exception {
+ super.setUp();
+ URI compositeUri = URI.create("composite");
+ component = new SpringCompositeComponent(compositeUri, null, null, null, null);
+
+ }
+
+ private interface Foo {
+ void operation();
+ }
}
Added: incubator/tuscany/java/sca/extensions/spring/integration-test/core/pom.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/extensions/spring/integration-test/core/pom.xml?view=auto&rev=511195
==============================================================================
--- incubator/tuscany/java/sca/extensions/spring/integration-test/core/pom.xml (added)
+++ incubator/tuscany/java/sca/extensions/spring/integration-test/core/pom.xml Fri Feb 23 18:29:46 2007
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<project>
+ <parent>
+ <groupId>org.apache.tuscany.sca.spring</groupId>
+ <artifactId>spring-integration-test</artifactId>
+ <version>1.0-alpha-incubating-SNAPSHOT</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.apache.tuscany.sca.extensions.spring.spring-integration-test</groupId>
+ <artifactId>spring-integration-test-core</artifactId>
+ <packaging>jar</packaging>
+ <name>Core Integration Test Suite for the Spring Extension</name>
+ <description>Tests core Spring extension functionality</description>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.tuscany</groupId>
+ <artifactId>tuscany-itest-plugin</artifactId>
+ <configuration>
+ <systemScdl>file:./src/test/resources/system.scdl</systemScdl>
+ </configuration>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.tuscany.sca.spring</groupId>
+ <artifactId>spring-container</artifactId>
+ <version>1.0-alpha-incubating-SNAPSHOT</version>
+ <scope>compile</scope>
+ </dependency>
+ </dependencies>
+ <executions>
+ <execution>
+ <goals>
+ <goal>test</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
\ No newline at end of file
Propchange: incubator/tuscany/java/sca/extensions/spring/integration-test/core/pom.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/extensions/spring/integration-test/core/pom.xml
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/main/java/org/apache/tuscany/sca/extensions/spring/TestBean.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/main/java/org/apache/tuscany/sca/extensions/spring/TestBean.java?view=auto&rev=511195
==============================================================================
--- incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/main/java/org/apache/tuscany/sca/extensions/spring/TestBean.java (added)
+++ incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/main/java/org/apache/tuscany/sca/extensions/spring/TestBean.java Fri Feb 23 18:29:46 2007
@@ -0,0 +1,26 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tuscany.sca.extensions.spring;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public interface TestBean {
+ String echo(String msg);
+}
Propchange: incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/main/java/org/apache/tuscany/sca/extensions/spring/TestBean.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/main/java/org/apache/tuscany/sca/extensions/spring/TestBean.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/main/java/org/apache/tuscany/sca/extensions/spring/TestBeanImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/main/java/org/apache/tuscany/sca/extensions/spring/TestBeanImpl.java?view=auto&rev=511195
==============================================================================
--- incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/main/java/org/apache/tuscany/sca/extensions/spring/TestBeanImpl.java (added)
+++ incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/main/java/org/apache/tuscany/sca/extensions/spring/TestBeanImpl.java Fri Feb 23 18:29:46 2007
@@ -0,0 +1,29 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tuscany.sca.extensions.spring;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class TestBeanImpl implements TestBean {
+
+ public String echo(String msg) {
+ return msg;
+ }
+}
Propchange: incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/main/java/org/apache/tuscany/sca/extensions/spring/TestBeanImpl.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/main/java/org/apache/tuscany/sca/extensions/spring/TestBeanImpl.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/main/resources/META-INF/sca/spring.composite.scdl
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/main/resources/META-INF/sca/spring.composite.scdl?view=auto&rev=511195
==============================================================================
--- incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/main/resources/META-INF/sca/spring.composite.scdl (added)
+++ incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/main/resources/META-INF/sca/spring.composite.scdl Fri Feb 23 18:29:46 2007
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.0"
+ name="SpringSmoketestComposite">
+
+ <component name="SpringComposite">
+ <implementation.spring location="applicationContext.xml"/>
+ </component>
+
+</composite>
+
+
Added: incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/test/java/org/apache/tuscany/sca/extensions/spring/WiringTestComponent.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/test/java/org/apache/tuscany/sca/extensions/spring/WiringTestComponent.java?view=auto&rev=511195
==============================================================================
--- incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/test/java/org/apache/tuscany/sca/extensions/spring/WiringTestComponent.java (added)
+++ incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/test/java/org/apache/tuscany/sca/extensions/spring/WiringTestComponent.java Fri Feb 23 18:29:46 2007
@@ -0,0 +1,25 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tuscany.sca.extensions.spring;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public interface WiringTestComponent {
+}
Propchange: incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/test/java/org/apache/tuscany/sca/extensions/spring/WiringTestComponent.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/test/java/org/apache/tuscany/sca/extensions/spring/WiringTestComponent.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/test/java/org/apache/tuscany/sca/extensions/spring/WiringTestComponentImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/test/java/org/apache/tuscany/sca/extensions/spring/WiringTestComponentImpl.java?view=auto&rev=511195
==============================================================================
--- incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/test/java/org/apache/tuscany/sca/extensions/spring/WiringTestComponentImpl.java (added)
+++ incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/test/java/org/apache/tuscany/sca/extensions/spring/WiringTestComponentImpl.java Fri Feb 23 18:29:46 2007
@@ -0,0 +1,50 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.tuscany.sca.extensions.spring;
+
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Service;
+
+import junit.framework.TestCase;
+
+/**
+ * Verifies beans contained in a Spring composite are properly wired to as targets.
+ *
+ * @version $Rev$ $Date$
+ */
+@Service(WiringTestComponent.class)
+public class WiringTestComponentImpl extends TestCase {
+ private TestBean bean;
+
+ /**
+ * Constructor. Accepts a reference to a Spring Bean
+ *
+ * @param bean the Spring Bean
+ */
+ public WiringTestComponentImpl(@Reference(name = "bean")TestBean bean) {
+ this.bean = bean;
+ }
+
+ /**
+ * Invoke to a target Spring Bean
+ */
+ public void testTargetInvocation() {
+ assertEquals("test", bean.echo("test"));
+ }
+}
Propchange: incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/test/java/org/apache/tuscany/sca/extensions/spring/WiringTestComponentImpl.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/test/java/org/apache/tuscany/sca/extensions/spring/WiringTestComponentImpl.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/test/resources/applicationContext.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/test/resources/applicationContext.xml?view=auto&rev=511195
==============================================================================
--- incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/test/resources/applicationContext.xml (added)
+++ incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/test/resources/applicationContext.xml Fri Feb 23 18:29:46 2007
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:sca="http://www.springframework.org/schema/sca"
+ xsi:schemaLocation="
+http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+http://www.springframework.org/schema/sca http://www.springframework.org/schema/sca/spring-sca.xsd">
+
+ <bean id="TestBean" class="org.apache.tuscany.sca.extensions.spring.TestBeanImpl"/>
+
+</beans>
Propchange: incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/test/resources/applicationContext.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/test/resources/applicationContext.xml
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/test/resources/itest.scdl
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/test/resources/itest.scdl?view=auto&rev=511195
==============================================================================
--- incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/test/resources/itest.scdl (added)
+++ incubator/tuscany/java/sca/extensions/spring/integration-test/core/src/test/resources/itest.scdl Fri Feb 23 18:29:46 2007
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.0"
+ xmlns:system="http://tuscany.apache.org/xmlns/system/1.0-SNAPSHOT"
+ name="SpecTestHarnessComposite">
+
+ <include scdlResource="META-INF/sca/spring.composite.scdl"/>
+
+ <component name="WiringTestComponent">
+ <tuscany:junit class="org.apache.tuscany.sca.extensions.spring.WiringTestComponentImpl"/>
+ <reference name="bean">SpringComposite/TestBean</reference>
+ </component>
+
+</composite>
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org