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