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