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 2006/08/29 07:03:22 UTC
svn commit: r437966 - in /incubator/tuscany/java/sca:
containers/container.spring/
containers/container.spring/src/main/java/org/apache/tuscany/container/spring/impl/
containers/container.spring/src/main/java/org/springframework/sca/
containers/contain...
Author: jmarino
Date: Mon Aug 28 22:03:21 2006
New Revision: 437966
URL: http://svn.apache.org/viewvc?rev=437966&view=rev
Log:
get references working with Spring; upgrade Spring to rc3; add reference capabilities to the test project
Added:
incubator/tuscany/java/sca/test/src/main/java/org/apache/tuscany/test/binding/TestBindingReference.java (with props)
incubator/tuscany/java/sca/test/src/main/java/org/apache/tuscany/test/binding/TestInvoker.java (with props)
Modified:
incubator/tuscany/java/sca/containers/container.spring/pom.xml
incubator/tuscany/java/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/impl/SpringCompositeBuilder.java
incubator/tuscany/java/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/impl/SpringCompositeComponent.java
incubator/tuscany/java/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/impl/SpringImplementationLoader.java
incubator/tuscany/java/sca/containers/container.spring/src/main/java/org/springframework/sca/ScaPostProcessor.java
incubator/tuscany/java/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/impl/ReferenceInvocationTestCase.java
incubator/tuscany/java/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/impl/ServiceInvocationTestCase.java
incubator/tuscany/java/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/integration/BootstrapTestCase.java
incubator/tuscany/java/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/mock/TestBeanImpl.java
incubator/tuscany/java/sca/containers/container.spring/src/test/resources/META-INF/sca/application-context.xml
incubator/tuscany/java/sca/containers/container.spring/src/test/resources/META-INF/sca/default.scdl
incubator/tuscany/java/sca/containers/container.spring/src/test/resources/test.xml
incubator/tuscany/java/sca/spi/src/main/java/org/apache/tuscany/spi/extension/ComponentBuilderExtension.java
incubator/tuscany/java/sca/test/src/main/java/org/apache/tuscany/test/binding/TestBindingBuilder.java
Modified: incubator/tuscany/java/sca/containers/container.spring/pom.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/containers/container.spring/pom.xml?rev=437966&r1=437965&r2=437966&view=diff
==============================================================================
--- incubator/tuscany/java/sca/containers/container.spring/pom.xml (original)
+++ incubator/tuscany/java/sca/containers/container.spring/pom.xml Mon Aug 28 22:03:21 2006
@@ -41,7 +41,7 @@
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
- <version>2.0-rc2</version>
+ <version>2.0-rc3</version>
<scope>compile</scope>
</dependency>
Modified: incubator/tuscany/java/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/impl/SpringCompositeBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/impl/SpringCompositeBuilder.java?rev=437966&r1=437965&r2=437966&view=diff
==============================================================================
--- incubator/tuscany/java/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/impl/SpringCompositeBuilder.java (original)
+++ incubator/tuscany/java/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/impl/SpringCompositeBuilder.java Mon Aug 28 22:03:21 2006
@@ -23,6 +23,7 @@
import org.apache.tuscany.spi.component.Component;
import org.apache.tuscany.spi.component.CompositeComponent;
import org.apache.tuscany.spi.component.Service;
+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.Binding;
@@ -31,8 +32,6 @@
import org.apache.tuscany.spi.model.ComponentDefinition;
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.ReferenceTarget;
import org.apache.tuscany.spi.wire.InboundInvocationChain;
import org.apache.tuscany.spi.wire.InboundWire;
@@ -46,14 +45,14 @@
*/
public class SpringCompositeBuilder extends ComponentBuilderExtension<SpringImplementation> {
-
public Component build(CompositeComponent<?> parent,
ComponentDefinition<SpringImplementation> componentDefinition,
DeploymentContext deploymentContext) throws BuilderConfigException {
String name = componentDefinition.getName();
SpringImplementation implementation = componentDefinition.getImplementation();
AbstractApplicationContext applicationContext = implementation.getComponentType().getApplicationContext();
- SpringCompositeComponent<?> component = new SpringCompositeComponent(name, applicationContext, parent, null);
+ SpringCompositeComponent<?> component = new SpringCompositeComponent(name, applicationContext, parent, null
+ );
CompositeComponentType<BoundServiceDefinition<? extends Binding>,
BoundReferenceDefinition<? extends Binding>,
? extends Property> componentType = implementation.getComponentType();
@@ -72,13 +71,11 @@
}
component.register(service);
}
- for (ReferenceTarget target : componentDefinition.getReferenceTargets().values()) {
- ReferenceDefinition referenceDefinition = componentType.getReferences().get(target.getReferenceName());
- if (referenceDefinition instanceof BoundReferenceDefinition) {
- // call back into builder registry to handle building of references
- component.register(builderRegistry.build(parent, (BoundReferenceDefinition<? extends Binding>)
- referenceDefinition, deploymentContext));
- }
+ for (BoundReferenceDefinition<?> referenceDefinition : componentType.getReferences().values()) {
+ // call back into builder registry to handle building of references
+ Reference<?> reference = (Reference)builderRegistry.build(parent, referenceDefinition, deploymentContext);
+ connector.connect(reference);
+ component.register(reference);
}
return component;
}
Modified: incubator/tuscany/java/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/impl/SpringCompositeComponent.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/impl/SpringCompositeComponent.java?rev=437966&r1=437965&r2=437966&view=diff
==============================================================================
--- incubator/tuscany/java/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/impl/SpringCompositeComponent.java (original)
+++ incubator/tuscany/java/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/impl/SpringCompositeComponent.java Mon Aug 28 22:03:21 2006
@@ -32,6 +32,7 @@
import org.apache.tuscany.spi.component.Service;
import org.apache.tuscany.spi.extension.CompositeComponentExtension;
import org.apache.tuscany.spi.wire.TargetInvoker;
+import org.apache.tuscany.spi.builder.Connector;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.BeanFactory;
@@ -66,10 +67,13 @@
public SpringCompositeComponent(String name,
AbstractApplicationContext springContext,
CompositeComponent parent,
- Map<String, Document> propertyValues) {
+ Map<String, Document> propertyValues
+ ) {
super(name, parent, propertyValues);
SCAApplicationContext scaApplicationContext = new SCAApplicationContext();
springContext.setParent(scaApplicationContext);
+ // REVIEW we need to refresh to pick up the parent but this is not optimal
+ springContext.refresh();
this.springContext = springContext;
// Spring wires itself
this.selfWiring = true;
@@ -106,32 +110,28 @@
private class SCAApplicationContext implements ApplicationContext {
public Object getBean(String name) throws BeansException {
- SCAObject context = (SCAObject) children.get(name); // keep cast due to compiler error
- if (context == null) {
- throw new NoSuchBeanDefinitionException("SCA service not found [" + name + "]");
- }
- return context.getServiceInstance();
+ return getBean(name, null);
}
@SuppressWarnings("unchecked")
public Object getBean(String name, Class requiredType) throws BeansException {
- SCAObject context = (SCAObject) children.get(name); // keep cast due to compiler error
- if (context == null) {
+ SCAObject object = (SCAObject) children.get(name); // keep cast due to compiler error
+ if (object == null) {
throw new NoSuchBeanDefinitionException("SCA service not found [" + name + "]");
}
Class<?> type;
- if (context instanceof Reference) {
- type = ((Reference) context).getInterface();
- } else if (context instanceof Service) {
- type = ((Service) context).getInterface();
+ if (object instanceof Reference) {
+ type = ((Reference) object).getInterface();
+ } else if (object instanceof Service) {
+ type = ((Service) object).getInterface();
} else {
- throw new AssertionError("Illegal context type [" + name + "]");
+ throw new AssertionError("Illegal object type [" + name + "]");
}
if (requiredType != null && requiredType.isAssignableFrom(type)) {
// need null check since Spring may pass in a null
throw new BeanNotOfRequiredTypeException(name, requiredType, type);
}
- return context.getServiceInstance();
+ return object.getServiceInstance();
}
public boolean containsBean(String name) {
Modified: incubator/tuscany/java/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/impl/SpringImplementationLoader.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/impl/SpringImplementationLoader.java?rev=437966&r1=437965&r2=437966&view=diff
==============================================================================
--- incubator/tuscany/java/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/impl/SpringImplementationLoader.java (original)
+++ incubator/tuscany/java/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/impl/SpringImplementationLoader.java Mon Aug 28 22:03:21 2006
@@ -50,7 +50,6 @@
import javax.xml.stream.XMLStreamReader;
import static org.osoa.sca.Version.XML_NAMESPACE_1_0;
-import org.osoa.sca.annotations.Constructor;
import org.apache.tuscany.spi.annotation.Autowire;
import org.apache.tuscany.spi.component.CompositeComponent;
@@ -59,6 +58,7 @@
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.services.info.RuntimeInfo;
@@ -123,7 +123,9 @@
}
implementation.getComponentType().getServices().put(service.getName(), service);
} else if (REFERENCE_ELEMENT.equals(qname)) {
- throw new UnsupportedOperationException();
+ BoundReferenceDefinition reference =
+ (BoundReferenceDefinition) registry.load(parent, reader, deploymentContext);
+ implementation.getComponentType().getReferences().put(reference.getName(), reference);
}
break;
case END_ELEMENT:
Modified: incubator/tuscany/java/sca/containers/container.spring/src/main/java/org/springframework/sca/ScaPostProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/containers/container.spring/src/main/java/org/springframework/sca/ScaPostProcessor.java?rev=437966&r1=437965&r2=437966&view=diff
==============================================================================
--- incubator/tuscany/java/sca/containers/container.spring/src/main/java/org/springframework/sca/ScaPostProcessor.java (original)
+++ incubator/tuscany/java/sca/containers/container.spring/src/main/java/org/springframework/sca/ScaPostProcessor.java Mon Aug 28 22:03:21 2006
@@ -16,6 +16,8 @@
package org.springframework.sca;
+import java.beans.PropertyDescriptor;
+
import org.springframework.aop.framework.ProxyFactory;
import org.springframework.beans.BeansException;
import org.springframework.beans.PropertyValues;
@@ -87,6 +89,11 @@
//
}
return true;
+ }
+
+ public PropertyValues postProcessPropertyValues(PropertyValues pvs, PropertyDescriptor[] pds, Object bean,
+ String beanName) throws BeansException {
+ return pvs;
}
public PropertyValues postProcessPropertyValues(PropertyValues propertyValues, Object object, String string)
Modified: incubator/tuscany/java/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/impl/ReferenceInvocationTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/impl/ReferenceInvocationTestCase.java?rev=437966&r1=437965&r2=437966&view=diff
==============================================================================
--- incubator/tuscany/java/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/impl/ReferenceInvocationTestCase.java (original)
+++ incubator/tuscany/java/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/impl/ReferenceInvocationTestCase.java Mon Aug 28 22:03:21 2006
@@ -56,7 +56,9 @@
private AbstractApplicationContext createSpringContext() {
StaticApplicationContext beanFactory = new StaticApplicationContext();
- BeanDefinition definition = new RootBeanDefinition(TestBeanImpl.class);
+ RootBeanDefinition definition = new RootBeanDefinition(TestBeanImpl.class);
+ //REVIEW we need to figure out how to handle eager init components
+ definition.setLazyInit(true);
RuntimeBeanReference ref = new RuntimeBeanReference("bar");
PropertyValue val = new PropertyValue("bean", ref);
definition.getPropertyValues().addPropertyValue(val);
Modified: incubator/tuscany/java/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/impl/ServiceInvocationTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/impl/ServiceInvocationTestCase.java?rev=437966&r1=437965&r2=437966&view=diff
==============================================================================
--- incubator/tuscany/java/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/impl/ServiceInvocationTestCase.java (original)
+++ incubator/tuscany/java/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/impl/ServiceInvocationTestCase.java Mon Aug 28 22:03:21 2006
@@ -42,7 +42,8 @@
public class ServiceInvocationTestCase extends TestCase {
public void testInvocation() {
- SpringCompositeComponent<?> context = new SpringCompositeComponent("parent", createSpringContext(), null, null);
+ SpringCompositeComponent<?> context = new SpringCompositeComponent("parent", createSpringContext(), null, null
+ );
InboundWire<TestBean> inboundWire = ArtifactFactory.createInboundWire("fooService", TestBean.class);
OutboundWire<TestBean> outboundWire = ArtifactFactory.createOutboundWire("fooService", TestBean.class);
ArtifactFactory.terminateWire(outboundWire);
@@ -63,7 +64,8 @@
private AbstractApplicationContext createSpringContext() {
StaticApplicationContext beanFactory = new StaticApplicationContext();
- BeanDefinition definition = new RootBeanDefinition(TestBeanImpl.class);
+ RootBeanDefinition definition = new RootBeanDefinition(TestBeanImpl.class);
+ definition.setLazyInit(true);
beanFactory.registerBeanDefinition("foo", definition);
return beanFactory;
}
Modified: incubator/tuscany/java/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/integration/BootstrapTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/integration/BootstrapTestCase.java?rev=437966&r1=437965&r2=437966&view=diff
==============================================================================
--- incubator/tuscany/java/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/integration/BootstrapTestCase.java (original)
+++ incubator/tuscany/java/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/integration/BootstrapTestCase.java Mon Aug 28 22:03:21 2006
@@ -26,6 +26,7 @@
Service service = (Service) comp.getChild("fooService");
TestBean bean = (TestBean) service.getServiceInstance();
bean.echo("foo");
+ bean.getBean().echo("foo");
}
protected void setUp() throws Exception {
Modified: incubator/tuscany/java/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/mock/TestBeanImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/mock/TestBeanImpl.java?rev=437966&r1=437965&r2=437966&view=diff
==============================================================================
--- incubator/tuscany/java/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/mock/TestBeanImpl.java (original)
+++ incubator/tuscany/java/sca/containers/container.spring/src/test/java/org/apache/tuscany/container/spring/mock/TestBeanImpl.java Mon Aug 28 22:03:21 2006
@@ -25,6 +25,10 @@
private TestBean bean;
+ public TestBeanImpl() {
+ System.out.println("");
+ }
+
public String echo(String msg) {
return msg;
}
Modified: incubator/tuscany/java/sca/containers/container.spring/src/test/resources/META-INF/sca/application-context.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/containers/container.spring/src/test/resources/META-INF/sca/application-context.xml?rev=437966&r1=437965&r2=437966&view=diff
==============================================================================
--- incubator/tuscany/java/sca/containers/container.spring/src/test/resources/META-INF/sca/application-context.xml (original)
+++ incubator/tuscany/java/sca/containers/container.spring/src/test/resources/META-INF/sca/application-context.xml Mon Aug 28 22:03:21 2006
@@ -6,7 +6,9 @@
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">
- <bean id="testBean" class="org.apache.tuscany.container.spring.mock.TestBeanImpl">
+ <bean id="testBean" class="org.apache.tuscany.container.spring.mock.TestBeanImpl" lazy-init="true">
+ <property name="bean" ref="testReference"/>
</bean>
+ <!-- <sca:reference name="testReference" type="org.apache.tuscany.container.spring.mock.TestReference"/> -->
</beans>
Modified: incubator/tuscany/java/sca/containers/container.spring/src/test/resources/META-INF/sca/default.scdl
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/containers/container.spring/src/test/resources/META-INF/sca/default.scdl?rev=437966&r1=437965&r2=437966&view=diff
==============================================================================
--- incubator/tuscany/java/sca/containers/container.spring/src/test/resources/META-INF/sca/default.scdl (original)
+++ incubator/tuscany/java/sca/containers/container.spring/src/test/resources/META-INF/sca/default.scdl Mon Aug 28 22:03:21 2006
@@ -24,6 +24,10 @@
<interface.java class="org.apache.tuscany.container.spring.mock.TestBean"/>
<reference>testBean</reference>
</service>
+ <reference name="testReference">
+ <interface.java class="org.apache.tuscany.container.spring.mock.TestBean"/>
+ <binding.test/>
+ </reference>
</implementation.spring>
</component>
Modified: incubator/tuscany/java/sca/containers/container.spring/src/test/resources/test.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/containers/container.spring/src/test/resources/test.xml?rev=437966&r1=437965&r2=437966&view=diff
==============================================================================
--- incubator/tuscany/java/sca/containers/container.spring/src/test/resources/test.xml (original)
+++ incubator/tuscany/java/sca/containers/container.spring/src/test/resources/test.xml Mon Aug 28 22:03:21 2006
@@ -6,7 +6,6 @@
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">
- <bean id="testBean" class="org.apache.tuscany.container.spring.mock.TestBeanImpl">
- </bean>
+ <bean id="testBean" class="org.apache.tuscany.container.spring.mock.TestBeanImpl"/>
</beans>
Modified: incubator/tuscany/java/sca/spi/src/main/java/org/apache/tuscany/spi/extension/ComponentBuilderExtension.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/spi/src/main/java/org/apache/tuscany/spi/extension/ComponentBuilderExtension.java?rev=437966&r1=437965&r2=437966&view=diff
==============================================================================
--- incubator/tuscany/java/sca/spi/src/main/java/org/apache/tuscany/spi/extension/ComponentBuilderExtension.java (original)
+++ incubator/tuscany/java/sca/spi/src/main/java/org/apache/tuscany/spi/extension/ComponentBuilderExtension.java Mon Aug 28 22:03:21 2006
@@ -24,6 +24,7 @@
import org.apache.tuscany.spi.annotation.Autowire;
import org.apache.tuscany.spi.builder.BuilderRegistry;
import org.apache.tuscany.spi.builder.ComponentBuilder;
+import org.apache.tuscany.spi.builder.Connector;
import org.apache.tuscany.spi.component.ScopeRegistry;
import org.apache.tuscany.spi.component.WorkContext;
import org.apache.tuscany.spi.model.Implementation;
@@ -46,6 +47,7 @@
protected WorkScheduler workScheduler;
protected WorkContext workContext;
protected PolicyBuilderRegistry policyBuilderRegistry;
+ protected Connector connector;
@Autowire
public void setBuilderRegistry(BuilderRegistry registry) {
@@ -75,6 +77,11 @@
@Autowire
public void setPolicyBuilderRegistry(PolicyBuilderRegistry registry) {
policyBuilderRegistry = registry;
+ }
+
+ @Autowire
+ public void setConnector(Connector connector) {
+ this.connector = connector;
}
@Init(eager = true)
Modified: incubator/tuscany/java/sca/test/src/main/java/org/apache/tuscany/test/binding/TestBindingBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/test/src/main/java/org/apache/tuscany/test/binding/TestBindingBuilder.java?rev=437966&r1=437965&r2=437966&view=diff
==============================================================================
--- incubator/tuscany/java/sca/test/src/main/java/org/apache/tuscany/test/binding/TestBindingBuilder.java (original)
+++ incubator/tuscany/java/sca/test/src/main/java/org/apache/tuscany/test/binding/TestBindingBuilder.java Mon Aug 28 22:03:21 2006
@@ -23,6 +23,7 @@
import org.apache.tuscany.spi.deployer.DeploymentContext;
import org.apache.tuscany.spi.extension.BindingBuilderExtension;
import org.apache.tuscany.spi.model.BoundServiceDefinition;
+import org.apache.tuscany.spi.model.BoundReferenceDefinition;
/**
* @version $Rev$ $Date$
@@ -35,6 +36,15 @@
DeploymentContext context) {
Class<?> interfaze = definition.getServiceContract().getInterfaceClass();
return new TestBindingService(definition.getName(), interfaze, parent, wireService);
+ }
+
+ @SuppressWarnings("unchecked")
+ public SCAObject build(CompositeComponent parent,
+ BoundReferenceDefinition<TestBinding> definition,
+ DeploymentContext context) {
+ Class<?> interfaze = definition.getServiceContract().getInterfaceClass();
+ String name = definition.getName();
+ return new TestBindingReference(name, interfaze, parent, wireService);
}
protected Class<TestBinding> getBindingType() {
Added: incubator/tuscany/java/sca/test/src/main/java/org/apache/tuscany/test/binding/TestBindingReference.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/test/src/main/java/org/apache/tuscany/test/binding/TestBindingReference.java?rev=437966&view=auto
==============================================================================
--- incubator/tuscany/java/sca/test/src/main/java/org/apache/tuscany/test/binding/TestBindingReference.java (added)
+++ incubator/tuscany/java/sca/test/src/main/java/org/apache/tuscany/test/binding/TestBindingReference.java Mon Aug 28 22:03:21 2006
@@ -0,0 +1,22 @@
+package org.apache.tuscany.test.binding;
+
+import java.lang.reflect.Method;
+
+import org.apache.tuscany.spi.component.CompositeComponent;
+import org.apache.tuscany.spi.extension.ReferenceExtension;
+import org.apache.tuscany.spi.wire.TargetInvoker;
+import org.apache.tuscany.spi.wire.WireService;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class TestBindingReference<T> extends ReferenceExtension<T> {
+
+ public TestBindingReference(String name, Class<T> interfaze, CompositeComponent parent, WireService wireService) {
+ super(name, interfaze, parent, wireService);
+ }
+
+ public TargetInvoker createTargetInvoker(Method operation) {
+ return new TestInvoker();
+ }
+}
Propchange: incubator/tuscany/java/sca/test/src/main/java/org/apache/tuscany/test/binding/TestBindingReference.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/test/src/main/java/org/apache/tuscany/test/binding/TestBindingReference.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Added: incubator/tuscany/java/sca/test/src/main/java/org/apache/tuscany/test/binding/TestInvoker.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/test/src/main/java/org/apache/tuscany/test/binding/TestInvoker.java?rev=437966&view=auto
==============================================================================
--- incubator/tuscany/java/sca/test/src/main/java/org/apache/tuscany/test/binding/TestInvoker.java (added)
+++ incubator/tuscany/java/sca/test/src/main/java/org/apache/tuscany/test/binding/TestInvoker.java Mon Aug 28 22:03:21 2006
@@ -0,0 +1,48 @@
+package org.apache.tuscany.test.binding;
+
+import java.lang.reflect.InvocationTargetException;
+
+import org.apache.tuscany.spi.wire.TargetInvoker;
+import org.apache.tuscany.spi.wire.Message;
+import org.apache.tuscany.spi.wire.InvocationRuntimeException;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class TestInvoker implements TargetInvoker {
+
+ private boolean cacheable;
+
+ public boolean isCacheable() {
+ return cacheable;
+ }
+
+ public void setCacheable(boolean cacheable) {
+ this.cacheable = cacheable;
+ }
+
+ public boolean isOptimizable() {
+ return isCacheable();
+ }
+
+ public Object invokeTarget(final Object payload) throws InvocationTargetException {
+ // echo back the result, a real binding would invoke some API for flowing the request
+ return ((Object[])payload)[0];
+ }
+
+ public Message invoke(Message msg) throws InvocationRuntimeException {
+ try {
+ Object resp = invokeTarget(msg.getBody());
+ msg.setBody(resp);
+ } catch (InvocationTargetException e) {
+ msg.setBody(e.getCause());
+ } catch (Throwable e) {
+ msg.setBody(e);
+ }
+ return msg;
+ }
+
+ public Object clone() throws CloneNotSupportedException {
+ return super.clone();
+ }
+}
Propchange: incubator/tuscany/java/sca/test/src/main/java/org/apache/tuscany/test/binding/TestInvoker.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/test/src/main/java/org/apache/tuscany/test/binding/TestInvoker.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org