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 19:28:33 UTC

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

Author: jmarino
Date: Tue Mar 13 11:28:32 2007
New Revision: 517809

URL: http://svn.apache.org/viewvc?view=rev&rev=517809
Log:
provide attacher with access to the scope container and implementation class

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=517809&r1=517808&r2=517809
==============================================================================
--- 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 11:28:32 2007
@@ -23,6 +23,12 @@
  */
 public interface InstanceFactoryProvider<T> {
     /**
+     * Return the implementation class.
+     * @return the implementation class.
+     */
+    Class<T> getImplementationClass();
+
+    /**
      * Create an instance factory that can be used to create component instances.
      *
      * @return a new instance factory

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=517809&r1=517808&r2=517809
==============================================================================
--- 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 11:28:32 2007
@@ -38,6 +38,7 @@
  * @version $Rev$ $Date$
  */
 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;
@@ -50,6 +51,7 @@
                                              Map<URI, Member> injectionSites,
                                              Method initMethod,
                                              Method destroyMethod) {
+        this.implementationClass = constructor.getDeclaringClass();
         this.constructor = constructor;
         this.constructorNames = constructorNames;
         this.injectionSites = injectionSites;
@@ -59,6 +61,10 @@
 
     public void setObjectFactory(URI name, ObjectFactory<?> objectFactory) {
         factories.put(name, objectFactory);
+    }
+
+    public Class<T> getImplementationClass() {
+        return implementationClass;
     }
 
     public InstanceFactory<T> createFactory() {

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=517809&r1=517808&r2=517809
==============================================================================
--- 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 11:28:32 2007
@@ -61,7 +61,8 @@
 
     public PojoComponent(URI componentId,
                          InstanceFactoryProvider<T> provider,
-                         ScopeContainer scopeContainer, int initLevel,
+                         ScopeContainer scopeContainer,
+                         int initLevel,
                          long maxIdleTime,
                          long maxAge) {
         super(componentId);
@@ -131,6 +132,14 @@
     }
 
     public void setDefaultPropertyValues(Map<String, PropertyValue<?>> defaultPropertyValues) {
+    }
+
+    public ScopeContainer getScopeContainer() {
+        return scopeContainer;
+    }
+
+    public Class<T> getImplementationClass() {
+        return provider.getImplementationClass();
     }
 
     @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=517809&r1=517808&r2=517809
==============================================================================
--- 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 11:28:32 2007
@@ -159,21 +159,20 @@
      * Attaches the target to the component.
      *
      * @param component Component.
-     * @param wire
+     * @param wire      the wire to attach
      * @param target    Target.
      */
     public void attach(JavaComponent component, Wire wire, JavaPhysicalWireTargetDefinition target)
         throws WireAttachException {
-        //TODO get impl class
-        Class<?> implementationClass = null;
-
+        ScopeContainer scopeContainer = component.getScopeContainer();
+        Class<?> implementationClass = component.getImplementationClass();
+        ClassLoader loader = implementationClass.getClassLoader();
         for (Map.Entry<PhysicalOperationDefinition, InvocationChain> entry : wire.getPhysicalInvocationChains()
             .entrySet()) {
             PhysicalOperationDefinition operation = entry.getKey();
             InvocationChain chain = entry.getValue();
             List<String> params = operation.getParameters();
             Class<?>[] paramTypes = new Class<?>[params.size()];
-            ClassLoader loader = implementationClass.getClassLoader();
             assert loader != null;
             for (int i = 0; i < params.size(); i++) {
                 String param = params.get(i);
@@ -193,8 +192,7 @@
                 URI targetUri = wire.getTargetUri();
                 throw new WireAttachException("No matching method found", sourceUri, targetUri, e);
             }
-            // TODO deal with scope  container
-            chain.addInterceptor(new JavaInvokerInterceptor(method, component, null, workContext));
+            chain.addInterceptor(new JavaInvokerInterceptor(method, component, scopeContainer, workContext));
         }
     }
 



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