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