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