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/13 22:32:44 UTC

svn commit: r517882 - in /incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core: component/ implementation/ implementation/java/

Author: jmarino
Date: Tue Mar 13 14:32:43 2007
New Revision: 517882

URL: http://svn.apache.org/viewvc?view=rev&rev=517882
Log:
add object factory for POJO types

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

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=517882&r1=517881&r2=517882
==============================================================================
--- 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 Tue Mar 13 14:32:43 2007
@@ -18,15 +18,36 @@
  */
 package org.apache.tuscany.core.component;
 
+import java.net.URI;
+
+import org.apache.tuscany.spi.ObjectFactory;
+
 /**
  * @version $Rev$ $Date$
  */
 public interface InstanceFactoryProvider<T> {
     /**
      * Return the implementation class.
+     *
      * @return the implementation class.
      */
     Class<T> getImplementationClass();
+
+    /**
+     * Sets an object factory for an injection site
+     *
+     * @param name          the injection site name
+     * @param objectFactory the object factory
+     */
+    void setObjectFactory(URI name, ObjectFactory<?> objectFactory);
+
+    /**
+     * Returns the type for the injection site
+     *
+     * @param injectionSite the injection site name
+     * @return the required type
+     */
+    Class<?> getMemberType(URI 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=517882&r1=517881&r2=517882
==============================================================================
--- 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 Tue Mar 13 14:32:43 2007
@@ -63,6 +63,10 @@
         factories.put(name, objectFactory);
     }
 
+    public Class<?> getMemberType(URI injectionSite) {
+        return null;
+    }
+
     public Class<T> getImplementationClass() {
         return implementationClass;
     }

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=517882&r1=517881&r2=517882
==============================================================================
--- 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 Tue Mar 13 14:32:43 2007
@@ -25,6 +25,7 @@
 import org.osoa.sca.ComponentContext;
 
 import org.apache.tuscany.spi.ObjectCreationException;
+import org.apache.tuscany.spi.ObjectFactory;
 import org.apache.tuscany.spi.component.AbstractSCAObject;
 import org.apache.tuscany.spi.component.AtomicComponent;
 import org.apache.tuscany.spi.component.ComponentException;
@@ -140,6 +141,14 @@
 
     public Class<T> getImplementationClass() {
         return provider.getImplementationClass();
+    }
+
+    public void setObjectFactory(URI name, ObjectFactory<?> objectFactory) {
+        provider.setObjectFactory(name, objectFactory);
+    }
+
+    public Class<?> getMemberType(URI injectionSite) {
+        return provider.getMemberType(injectionSite);
     }
 
     @Deprecated

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=517882&r1=517881&r2=517882
==============================================================================
--- 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 Tue Mar 13 14:32:43 2007
@@ -37,12 +37,14 @@
 import org.apache.tuscany.spi.services.classloading.ClassLoaderRegistry;
 import org.apache.tuscany.spi.wire.InvocationChain;
 import org.apache.tuscany.spi.wire.Wire;
+import org.apache.tuscany.spi.wire.ProxyService;
 
 import org.apache.tuscany.core.builder.physical.WireAttachException;
 import org.apache.tuscany.core.component.InstanceFactoryProvider;
 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;
+import org.apache.tuscany.core.wire.WireObjectFactory;
 
 /**
  * The physical component builder for Java implementation types. Responsible for creating the Component runtime artifact
@@ -63,6 +65,8 @@
 
     private WorkContext workContext;
 
+    private ProxyService proxyService;
+
     /**
      * Injects builder registry.
      *
@@ -79,6 +83,11 @@
         this.workContext = workContext;
     }
 
+    @Reference
+    public void setProxyService(ProxyService proxyService) {
+        this.proxyService = proxyService;
+    }
+
     /**
      * Builds a component from its physical component definition.
      *
@@ -151,8 +160,11 @@
      * @param wire
      * @param source    Source.
      */
+    @SuppressWarnings({"unchecked"})
     public void attach(JavaComponent component, Wire wire, JavaPhysicalWireSourceDefinition source) {
-        // TODO
+        Class<?> type = component.getMemberType(wire.getSourceUri());
+        WireObjectFactory<?> factory = new WireObjectFactory(type, wire, proxyService);
+        component.setObjectFactory(wire.getSourceUri(), factory);
     }
 
     /**
@@ -167,6 +179,7 @@
         ScopeContainer scopeContainer = component.getScopeContainer();
         Class<?> implementationClass = component.getImplementationClass();
         ClassLoader loader = implementationClass.getClassLoader();
+        // attach the invoker interceptor to forward invocation chains
         for (Map.Entry<PhysicalOperationDefinition, InvocationChain> entry : wire.getPhysicalInvocationChains()
             .entrySet()) {
             PhysicalOperationDefinition operation = entry.getKey();



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org