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/03/15 00:01:01 UTC
svn commit: r518373 - in /incubator/tuscany/java/sca/kernel/core/src:
main/java/org/apache/tuscany/core/component/
main/java/org/apache/tuscany/core/implementation/
main/java/org/apache/tuscany/core/implementation/java/
main/java/org/apache/tuscany/cor...
Author: jmarino
Date: Wed Mar 14 16:01:00 2007
New Revision: 518373
URL: http://svn.apache.org/viewvc?view=rev&rev=518373
Log:
use InjectionSource for reflective instance factory provider
Modified:
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/InstanceFactoryProvider.java
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/ReflectiveInstanceFactoryProvider.java
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/PojoComponent.java
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaPhysicalComponentBuilder.java
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/model/physical/instancefactory/InjectionSource.java
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/ReflectiveInstanceFactoryProviderTestCase.java
Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/InstanceFactoryProvider.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/InstanceFactoryProvider.java?view=diff&rev=518373&r1=518372&r2=518373
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/InstanceFactoryProvider.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/InstanceFactoryProvider.java Wed Mar 14 16:01:00 2007
@@ -22,6 +22,8 @@
import org.apache.tuscany.spi.ObjectFactory;
+import org.apache.tuscany.core.model.physical.instancefactory.InjectionSource;
+
/**
* @version $Rev$ $Date$
*/
@@ -39,7 +41,7 @@
* @param name the injection site name
* @param objectFactory the object factory
*/
- void setObjectFactory(URI name, ObjectFactory<?> objectFactory);
+ void setObjectFactory(InjectionSource name, ObjectFactory<?> objectFactory);
/**
* Returns the type for the injection site
@@ -47,7 +49,7 @@
* @param injectionSite the injection site name
* @return the required type
*/
- Class<?> getMemberType(URI injectionSite);
+ Class<?> getMemberType(InjectionSource injectionSite);
/**
* Create an instance factory that can be used to create component instances.
Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/ReflectiveInstanceFactoryProvider.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/ReflectiveInstanceFactoryProvider.java?view=diff&rev=518373&r1=518372&r2=518373
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/ReflectiveInstanceFactoryProvider.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/component/ReflectiveInstanceFactoryProvider.java Wed Mar 14 16:01:00 2007
@@ -25,13 +25,13 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import java.net.URI;
import org.apache.tuscany.core.injection.EventInvoker;
import org.apache.tuscany.core.injection.FieldInjector;
import org.apache.tuscany.core.injection.Injector;
import org.apache.tuscany.core.injection.MethodInjector;
import org.apache.tuscany.core.injection.MethodEventInvoker;
+import org.apache.tuscany.core.model.physical.instancefactory.InjectionSource;
import org.apache.tuscany.spi.ObjectFactory;
/**
@@ -40,15 +40,15 @@
public class ReflectiveInstanceFactoryProvider<T> implements InstanceFactoryProvider<T> {
private final Class<T> implementationClass;
private final Constructor<T> constructor;
- private final List<URI> constructorNames;
- private final Map<URI, Member> injectionSites;
+ private final List<InjectionSource> constructorNames;
+ private final Map<InjectionSource, Member> injectionSites;
private final EventInvoker<T> initInvoker;
private final EventInvoker<T> destroyInvoker;
- private final Map<URI, ObjectFactory<?>> factories = new HashMap<URI, ObjectFactory<?>>();
+ private final Map<InjectionSource, ObjectFactory<?>> factories = new HashMap<InjectionSource, ObjectFactory<?>>();
public ReflectiveInstanceFactoryProvider(Constructor<T> constructor,
- List<URI> constructorNames,
- Map<URI, Member> injectionSites,
+ List<InjectionSource> constructorNames,
+ Map<InjectionSource, Member> injectionSites,
Method initMethod,
Method destroyMethod) {
this.implementationClass = constructor.getDeclaringClass();
@@ -59,11 +59,11 @@
this.destroyInvoker = destroyMethod == null ? null : new MethodEventInvoker<T>(destroyMethod);
}
- public void setObjectFactory(URI name, ObjectFactory<?> objectFactory) {
+ public void setObjectFactory(InjectionSource name, ObjectFactory<?> objectFactory) {
factories.put(name, objectFactory);
}
- public Class<?> getMemberType(URI injectionSite) {
+ public Class<?> getMemberType(InjectionSource injectionSite) {
return null;
}
@@ -80,7 +80,7 @@
protected ObjectFactory<?>[] getConstructorArgs() {
ObjectFactory<?>[] initArgs = new ObjectFactory<?>[constructorNames.size()];
for (int i = 0; i < initArgs.length; i++) {
- URI name = constructorNames.get(i);
+ InjectionSource name = constructorNames.get(i);
ObjectFactory<?> factory = factories.get(name);
assert factory != null;
initArgs[i] = factory;
@@ -94,8 +94,8 @@
Injector<T>[] injectors = (Injector<T>[]) new Injector[injectionSites.size()];
int i = 0;
- for (Map.Entry<URI, Member> entry : injectionSites.entrySet()) {
- URI name = entry.getKey();
+ for (Map.Entry<InjectionSource, Member> entry : injectionSites.entrySet()) {
+ InjectionSource name = entry.getKey();
Member site = entry.getValue();
ObjectFactory<?> factory = factories.get(name);
assert factory != null;
Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/PojoComponent.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/PojoComponent.java?view=diff&rev=518373&r1=518372&r2=518373
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/PojoComponent.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/PojoComponent.java Wed Mar 14 16:01:00 2007
@@ -45,6 +45,7 @@
import org.apache.tuscany.core.component.InstanceFactory;
import org.apache.tuscany.core.component.InstanceFactoryProvider;
+import org.apache.tuscany.core.model.physical.instancefactory.InjectionSource;
/**
* Base class for Component implementations based on Java objects.
@@ -143,11 +144,11 @@
return provider.getImplementationClass();
}
- public void setObjectFactory(URI name, ObjectFactory<?> objectFactory) {
+ public void setObjectFactory(InjectionSource name, ObjectFactory<?> objectFactory) {
provider.setObjectFactory(name, objectFactory);
}
- public Class<?> getMemberType(URI injectionSite) {
+ public Class<?> getMemberType(InjectionSource injectionSite) {
return provider.getMemberType(injectionSite);
}
Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaPhysicalComponentBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaPhysicalComponentBuilder.java?view=diff&rev=518373&r1=518372&r2=518373
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaPhysicalComponentBuilder.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/java/JavaPhysicalComponentBuilder.java Wed Mar 14 16:01:00 2007
@@ -46,6 +46,9 @@
import org.apache.tuscany.core.component.InstanceFactoryProvider;
import org.apache.tuscany.core.injection.CallbackWireObjectFactory2;
import org.apache.tuscany.core.injection.InstanceObjectFactory;
+import org.apache.tuscany.core.model.physical.instancefactory.InjectionSource;
+import static org.apache.tuscany.core.model.physical.instancefactory.InjectionSource.ValueSourceType.CALLBACK;
+import static org.apache.tuscany.core.model.physical.instancefactory.InjectionSource.ValueSourceType.REFERENCE;
import org.apache.tuscany.core.model.physical.java.JavaPhysicalComponentDefinition;
import org.apache.tuscany.core.model.physical.java.JavaPhysicalWireSourceDefinition;
import org.apache.tuscany.core.model.physical.java.JavaPhysicalWireTargetDefinition;
@@ -172,21 +175,23 @@
Wire wire,
JavaPhysicalWireSourceDefinition definition) {
URI sourceUri = wire.getSourceUri();
- Class<?> type = source.getMemberType(sourceUri);
+ InjectionSource referenceSource = new InjectionSource(REFERENCE, sourceUri.getFragment());
+ Class<?> type = source.getMemberType(referenceSource);
if (definition.isOptimizable()) {
// FIXME if possible, this is not clean
assert target instanceof AtomicComponent;
ScopeContainer container = target.getScopeContainer();
ObjectFactory<?> factory = new InstanceObjectFactory((AtomicComponent) target, container);
- source.setObjectFactory(sourceUri, factory);
+ source.setObjectFactory(referenceSource, factory);
} else {
ObjectFactory<?> factory = new WireObjectFactory(type, wire, proxyService);
- source.setObjectFactory(sourceUri, factory);
+ source.setObjectFactory(referenceSource, factory);
if (!wire.getCallbackInvocationChains().isEmpty()) {
URI callbackUri = definition.getCallbackUri();
- Class<?> callbackType = source.getMemberType(callbackUri);
+ InjectionSource callbackSource = new InjectionSource(CALLBACK, callbackUri.getFragment());
+ Class<?> callbackType = source.getMemberType(callbackSource);
ObjectFactory<?> callbackFactory = new CallbackWireObjectFactory2(callbackType, proxyService);
- source.setObjectFactory(callbackUri, callbackFactory);
+ source.setObjectFactory(callbackSource, callbackFactory);
}
}
}
Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/model/physical/instancefactory/InjectionSource.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/model/physical/instancefactory/InjectionSource.java?view=diff&rev=518373&r1=518372&r2=518373
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/model/physical/instancefactory/InjectionSource.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/model/physical/instancefactory/InjectionSource.java Wed Mar 14 16:01:00 2007
@@ -21,6 +21,14 @@
PROPERTY
}
+ public InjectionSource() {
+ }
+
+ public InjectionSource(ValueSourceType valueType, String name) {
+ this.valueType = valueType;
+ this.name = name;
+ }
+
/**
* Sets the type (callback, reference, property
* @return Type.
Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/ReflectiveInstanceFactoryProviderTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/ReflectiveInstanceFactoryProviderTestCase.java?view=diff&rev=518373&r1=518372&r2=518373
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/ReflectiveInstanceFactoryProviderTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/component/ReflectiveInstanceFactoryProviderTestCase.java Wed Mar 14 16:01:00 2007
@@ -22,7 +22,6 @@
import java.lang.reflect.Field;
import java.lang.reflect.Member;
import java.lang.reflect.Method;
-import java.net.URI;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -34,6 +33,7 @@
import org.apache.tuscany.core.injection.FieldInjector;
import org.apache.tuscany.core.injection.Injector;
import org.apache.tuscany.core.injection.MethodInjector;
+import org.apache.tuscany.core.model.physical.instancefactory.InjectionSource;
import org.apache.tuscany.spi.ObjectFactory;
import org.apache.tuscany.spi.component.InstanceWrapper;
import org.apache.tuscany.spi.component.TargetInitializationException;
@@ -43,8 +43,8 @@
*/
public class ReflectiveInstanceFactoryProviderTestCase extends TestCase {
private Constructor<Foo> argConstructor;
- private List<URI> ctrNames;
- private Map<URI, Member> sites;
+ private List<InjectionSource> ctrNames;
+ private Map<InjectionSource, Member> sites;
private ObjectFactory intFactory;
private ObjectFactory stringFactory;
private ReflectiveInstanceFactoryProvider<Foo> provider;
@@ -52,8 +52,8 @@
private Field stringField;
private Method intSetter;
private Method stringSetter;
- private URI intURI = URI.create("int");
- private URI stringURI = URI.create("string");
+ private InjectionSource intProperty = new InjectionSource(InjectionSource.ValueSourceType.PROPERTY, "int");
+ private InjectionSource stringProperty = new InjectionSource(InjectionSource.ValueSourceType.PROPERTY, "string");
public void testNoConstructorArgs() {
ObjectFactory<?>[] args = provider.getConstructorArgs();
@@ -61,15 +61,15 @@
}
public void testConstructorArgs() {
- ctrNames.add(intURI);
- ctrNames.add(stringURI);
+ ctrNames.add(intProperty);
+ ctrNames.add(stringProperty);
provider = new ReflectiveInstanceFactoryProvider<Foo>(argConstructor,
ctrNames,
sites,
null,
null);
- provider.setObjectFactory(intURI, intFactory);
- provider.setObjectFactory(stringURI, stringFactory);
+ provider.setObjectFactory(intProperty, intFactory);
+ provider.setObjectFactory(stringProperty, stringFactory);
ObjectFactory<?>[] args = provider.getConstructorArgs();
assertEquals(2, args.length);
assertSame(intFactory, args[0]);
@@ -77,8 +77,8 @@
}
public void testFieldInjectors() {
- sites.put(intURI, intField);
- sites.put(stringURI, stringField);
+ sites.put(intProperty, intField);
+ sites.put(stringProperty, stringField);
Injector<Foo>[] injectors = provider.getInjectors();
assertEquals(2, injectors.length);
@@ -93,8 +93,8 @@
}
public void testMethodInjectors() {
- sites.put(intURI, intSetter);
- sites.put(stringURI, stringSetter);
+ sites.put(intProperty, intSetter);
+ sites.put(stringProperty, stringSetter);
Injector<Foo>[] injectors = provider.getInjectors();
assertEquals(2, injectors.length);
@@ -109,8 +109,8 @@
}
public void testFactory() {
- sites.put(intURI, intSetter);
- sites.put(stringURI, stringField);
+ sites.put(intProperty, intSetter);
+ sites.put(stringProperty, stringField);
InstanceFactory<Foo> instanceFactory = provider.createFactory();
InstanceWrapper<Foo> instanceWrapper = instanceFactory.newInstance();
try {
@@ -133,8 +133,8 @@
stringField = Foo.class.getField("stringField");
intSetter = Foo.class.getMethod("setIntField", int.class);
stringSetter = Foo.class.getMethod("setStringField", String.class);
- ctrNames = new ArrayList<URI>();
- sites = new HashMap<URI, Member>();
+ ctrNames = new ArrayList<InjectionSource>();
+ sites = new HashMap<InjectionSource, Member>();
provider = new ReflectiveInstanceFactoryProvider<Foo>(noArgConstructor,
ctrNames,
sites,
@@ -146,8 +146,8 @@
EasyMock.expect(stringFactory.getInstance()).andReturn("Hello");
EasyMock.replay(intFactory, stringFactory);
- provider.setObjectFactory(intURI, intFactory);
- provider.setObjectFactory(stringURI, stringFactory);
+ provider.setObjectFactory(intProperty, intFactory);
+ provider.setObjectFactory(stringProperty, stringFactory);
}
public static class Foo {
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org