You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by jb...@apache.org on 2007/03/19 02:25:38 UTC

svn commit: r519785 - in /incubator/tuscany/java/sca/kernel/core/src: main/java/org/apache/tuscany/core/implementation/ main/java/org/apache/tuscany/core/implementation/java/ main/java/org/apache/tuscany/core/implementation/system/builder/ test/java/or...

Author: jboynes
Date: Sun Mar 18 18:25:37 2007
New Revision: 519785

URL: http://svn.apache.org/viewvc?view=rev&rev=519785
Log:
hook Java/System PCBs to the classloader registry

Modified:
    incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/POJOPhysicalComponentBuilder.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/implementation/system/builder/SystemPhysicalComponentBuilder.java
    incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/builder/SystemPhysicalComponentBuilderTestCase.java

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/POJOPhysicalComponentBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/POJOPhysicalComponentBuilder.java?view=diff&rev=519785&r1=519784&r2=519785
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/POJOPhysicalComponentBuilder.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/POJOPhysicalComponentBuilder.java Sun Mar 18 18:25:37 2007
@@ -27,6 +27,7 @@
 import org.apache.tuscany.spi.component.ScopeRegistry;
 import org.apache.tuscany.spi.model.physical.PhysicalComponentDefinition;
 import org.apache.tuscany.spi.model.physical.InstanceFactoryProviderDefinition;
+import org.apache.tuscany.spi.services.classloading.ClassLoaderRegistry;
 import org.apache.tuscany.core.implementation.system.model.SystemPhysicalComponentDefinition;
 import org.apache.tuscany.core.component.instancefactory.IFProviderBuilderRegistry;
 import org.apache.tuscany.core.component.instancefactory.IFProviderBuilderException;
@@ -43,14 +44,17 @@
     protected final PhysicalComponentBuilderRegistry builderRegistry;
     protected final ScopeRegistry scopeRegistry;
     protected final IFProviderBuilderRegistry providerBuilders;
+    protected final ClassLoaderRegistry classLoaderRegistry;
 
     protected POJOPhysicalComponentBuilder(
         @Reference(name = "builderRegistry")PhysicalComponentBuilderRegistry builderRegistry,
         @Reference(name = "scopeRegistry")ScopeRegistry scopeRegistry,
-        @Reference(name = "providerBuilders")IFProviderBuilderRegistry providerBuilders) {
+        @Reference(name = "providerBuilders")IFProviderBuilderRegistry providerBuilders,
+        @Reference(name = "classloaderRegistry")ClassLoaderRegistry classLoaderRegistry) {
         this.builderRegistry = builderRegistry;
         this.scopeRegistry = scopeRegistry;
         this.providerBuilders = providerBuilders;
+        this.classLoaderRegistry = classLoaderRegistry;
     }
 
     @Init

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=519785&r1=519784&r2=519785
==============================================================================
--- 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 Sun Mar 18 18:25:37 2007
@@ -30,6 +30,7 @@
 import org.apache.tuscany.core.component.InstanceFactoryProvider;
 import org.apache.tuscany.core.component.instancefactory.IFProviderBuilderRegistry;
 import org.apache.tuscany.core.implementation.POJOPhysicalComponentBuilder;
+import org.apache.tuscany.core.implementation.system.component.SystemComponent;
 import org.apache.tuscany.core.injection.CallbackWireObjectFactory2;
 import org.apache.tuscany.core.injection.InstanceObjectFactory;
 import org.apache.tuscany.core.model.physical.instancefactory.InjectionSource;
@@ -50,6 +51,8 @@
 import org.apache.tuscany.spi.component.ScopeContainer;
 import org.apache.tuscany.spi.component.ScopeRegistry;
 import org.apache.tuscany.spi.model.physical.PhysicalOperationDefinition;
+import org.apache.tuscany.spi.model.physical.InstanceFactoryProviderDefinition;
+import org.apache.tuscany.spi.model.Scope;
 import org.apache.tuscany.spi.services.classloading.ClassLoaderRegistry;
 import org.apache.tuscany.spi.wire.InvocationChain;
 import org.apache.tuscany.spi.wire.ProxyService;
@@ -68,16 +71,14 @@
     extends POJOPhysicalComponentBuilder<JavaPhysicalComponentDefinition<T>, JavaComponent<T>>
     implements WireAttacher<JavaComponent, JavaPhysicalWireSourceDefinition, JavaPhysicalWireTargetDefinition> {
 
-    // Classloader registry
-    private ClassLoaderRegistry classLoaderRegistry;
-
     private ProxyService proxyService;
 
     public JavaPhysicalComponentBuilder(
         @Reference(name = "builderRegistry")PhysicalComponentBuilderRegistry builderRegistry,
         @Reference(name = "scopeRegistry")ScopeRegistry scopeRegistry,
-        @Reference(name = "providerBuilders")IFProviderBuilderRegistry providerBuilders) {
-        super(builderRegistry, scopeRegistry, providerBuilders);
+        @Reference(name = "providerBuilders")IFProviderBuilderRegistry providerBuilders,
+        @Reference(name = "classloaderRegistry")ClassLoaderRegistry classLoaderRegistry) {
+        super(builderRegistry, scopeRegistry, providerBuilders, classLoaderRegistry);
     }
 
     @Reference
@@ -85,48 +86,21 @@
         this.proxyService = proxyService;
     }
 
-    /**
-     * Injects classloader registry.
-     *
-     * @param classLoaderRegistry Class loader registry.
-     */
-    @Reference
-    public void setClassLoaderRegistry(ClassLoaderRegistry classLoaderRegistry) {
-        this.classLoaderRegistry = classLoaderRegistry;
-    }
-
-    /**
-     * Builds a component from its physical component definition.
-     *
-     * @param componentDefinition Physical component definition of the component to be built.
-     * @return A component instance that is ready to go live.
-     * @throws BuilderException If unable to build the component.
-     */
-    public JavaComponent<T> build(JavaPhysicalComponentDefinition<T> componentDefinition) throws BuilderException {
-
-        URI componentId = componentDefinition.getComponentId();
-        InstanceFactoryProvider<T> provider = null;
-        JavaComponent<T> component = new JavaComponent<T>(componentId, provider, null, null, 0, -1, -1);
-
-        setInstanceFactoryClass(componentDefinition, component);
-
-        return component;
-    }
+    public JavaComponent<T> build(JavaPhysicalComponentDefinition<T> definition) throws BuilderException {
+        URI componentId = definition.getComponentId();
+        int initLevel = definition.getInitLevel();
+        URI groupId = definition.getGroupId();
+        ClassLoader classLoader = classLoaderRegistry.getClassLoader(definition.getClassLoaderId());
+
+        // get the scope container for this component
+        Scope scope = definition.getScope();
+        ScopeContainer<?> scopeContainer = scopeRegistry.getScopeContainer(scope);
+
+        // create the InstanceFactoryProvider based on the definition in the model
+        InstanceFactoryProviderDefinition<T> providerDefinition = definition.getInstanceFactoryProviderDefinition();
+        InstanceFactoryProvider<T> provider = providerBuilders.build(providerDefinition, classLoader);
 
-    /*
-     * Sets the instance factory class.
-     */
-    private void setInstanceFactoryClass(JavaPhysicalComponentDefinition componentDefinition, JavaComponent component) {
-/*
-        // TODO use MPCL to load IF class
-        URI classLoaderId = componentDefinition.getClassLoaderId();
-        byte[] instanceFactoryByteCode = componentDefinition.getInstanceFactoryByteCode(); //NOPMD
-        ClassLoader appCl = classLoaderRegistry.getClassLoader(classLoaderId); //NOPMD
-        ClassLoader systemCl = getClass().getClassLoader(); //NOPMD        
-        ClassLoader mpcl = null; //NOPMD
-        Class<InstanceFactory<?>> instanceFactoryClass = null;
-        component.setInstanceFactoryClass(instanceFactoryClass);
-*/
+        return new JavaComponent<T>(componentId, provider, scopeContainer, groupId, initLevel, -1, -1);
     }
 
     /**

Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/builder/SystemPhysicalComponentBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/builder/SystemPhysicalComponentBuilder.java?view=diff&rev=519785&r1=519784&r2=519785
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/builder/SystemPhysicalComponentBuilder.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/implementation/system/builder/SystemPhysicalComponentBuilder.java Sun Mar 18 18:25:37 2007
@@ -34,6 +34,7 @@
 import org.apache.tuscany.spi.component.ScopeRegistry;
 import org.apache.tuscany.spi.model.physical.InstanceFactoryProviderDefinition;
 import org.apache.tuscany.spi.model.Scope;
+import org.apache.tuscany.spi.services.classloading.ClassLoaderRegistry;
 
 /**
  * @version $Rev$ $Date$
@@ -45,14 +46,16 @@
     public SystemPhysicalComponentBuilder(
         @Reference(name = "builderRegistry")PhysicalComponentBuilderRegistry builderRegistry,
         @Reference(name = "scopeRegistry")ScopeRegistry scopeRegistry,
-        @Reference(name = "providerBuilders")IFProviderBuilderRegistry providerBuilders) {
-        super(builderRegistry, scopeRegistry, providerBuilders);
+        @Reference(name = "providerBuilders")IFProviderBuilderRegistry providerBuilders,
+        @Reference(name = "classloaderRegistry")ClassLoaderRegistry classLoaderRegistry) {
+        super(builderRegistry, scopeRegistry, providerBuilders, classLoaderRegistry);
     }
 
     public SystemComponent<T> build(SystemPhysicalComponentDefinition<T> definition) throws BuilderException {
         URI componentId = definition.getComponentId();
         int initLevel = definition.getInitLevel();
         URI groupId = definition.getGroupId();
+        ClassLoader classLoader = classLoaderRegistry.getClassLoader(definition.getClassLoaderId());
 
         // get the scope container for this component
         Scope scope = definition.getScope();
@@ -60,7 +63,7 @@
 
         // create the InstanceFactoryProvider based on the definition in the model
         InstanceFactoryProviderDefinition<T> providerDefinition = definition.getInstanceFactoryProviderDefinition();
-        InstanceFactoryProvider<T> provider = providerBuilders.build(providerDefinition, null);
+        InstanceFactoryProvider<T> provider = providerBuilders.build(providerDefinition, classLoader);
 
         return new SystemComponent<T>(componentId, provider, scopeContainer, groupId, initLevel, -1, -1);
     }

Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/builder/SystemPhysicalComponentBuilderTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/builder/SystemPhysicalComponentBuilderTestCase.java?view=diff&rev=519785&r1=519784&r2=519785
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/builder/SystemPhysicalComponentBuilderTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/implementation/system/builder/SystemPhysicalComponentBuilderTestCase.java Sun Mar 18 18:25:37 2007
@@ -31,6 +31,7 @@
 import org.apache.tuscany.spi.component.ScopeRegistry;
 import org.apache.tuscany.spi.model.Scope;
 import org.apache.tuscany.spi.model.physical.InstanceFactoryProviderDefinition;
+import org.apache.tuscany.spi.services.classloading.ClassLoaderRegistry;
 
 /**
  * @version $Rev$ $Date$
@@ -45,6 +46,8 @@
     private SystemPhysicalComponentDefinition<T> definition;
     private URI componentId;
     private URI groupId;
+    private ClassLoaderRegistry classLoaderRegistry;
+    private ClassLoader classLoader;
 
     public void testBuildSimplePOJO() throws Exception {
         SystemComponent<T> component = builder.build(definition);
@@ -55,22 +58,32 @@
     @SuppressWarnings("unchecked")
     protected void setUp() throws Exception {
         super.setUp();
+        groupId = URI.create("sca://./composite");
+        componentId = URI.create("sca://./component");
+
         builderRegistry = EasyMock.createMock(PhysicalComponentBuilderRegistry.class);
         scopeRegistry = EasyMock.createMock(ScopeRegistry.class);
 
+        classLoader = getClass().getClassLoader();
+        classLoaderRegistry = EasyMock.createMock(ClassLoaderRegistry.class);
+        EasyMock.expect(classLoaderRegistry.getClassLoader(groupId)).andStubReturn(classLoader);
+        EasyMock.replay(classLoaderRegistry);
+
         providerBuilders = EasyMock.createMock(IFProviderBuilderRegistry.class);
         providerDefinition = new InstanceFactoryProviderDefinition();
         instanceFactoryProvider = EasyMock.createMock(InstanceFactoryProvider.class);
-        EasyMock.expect(providerBuilders.build(providerDefinition, null)).andStubReturn(instanceFactoryProvider);
+        EasyMock.expect(providerBuilders.build(providerDefinition, classLoader)).andStubReturn(instanceFactoryProvider);
         EasyMock.replay(providerBuilders);
 
-        builder = new SystemPhysicalComponentBuilder<T>(builderRegistry, scopeRegistry, providerBuilders);
+        builder = new SystemPhysicalComponentBuilder<T>(builderRegistry,
+                                                        scopeRegistry,
+                                                        providerBuilders,
+                                                        classLoaderRegistry);
 
-        groupId = URI.create("sca://./composite");
-        componentId = URI.create("sca://./component");
         definition = new SystemPhysicalComponentDefinition<T>();
         definition.setGroupId(groupId);
         definition.setComponentId(componentId);
+        definition.setClassLoaderId(groupId);
         definition.setScope(Scope.COMPOSITE);
         definition.setInitLevel(-1);
         definition.setInstanceFactoryProviderDefinition(providerDefinition);



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