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/14 22:30:53 UTC
svn commit: r518332 - in /incubator/tuscany/java/sca/kernel:
core/src/main/java/org/apache/tuscany/core/builder/
core/src/main/java/org/apache/tuscany/core/builder/physical/
core/src/main/java/org/apache/tuscany/core/implementation/java/
core/src/main/...
Author: jmarino
Date: Wed Mar 14 14:30:52 2007
New Revision: 518332
URL: http://svn.apache.org/viewvc?view=rev&rev=518332
Log:
support wire optimization with federated deployment
Modified:
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/ConnectorImpl.java
incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/physical/WireAttacherRegistryImpl.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/wire/OptimizedWireObjectFactory.java
incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/physical/WireAttacherRegistryTestCase.java
incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/physical/WireAttacher.java
incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/physical/WireAttacherRegistry.java
incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/Component.java
incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/AbstractComponentExtension.java
Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/ConnectorImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/ConnectorImpl.java?view=diff&rev=518332&r1=518331&r2=518332
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/ConnectorImpl.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/ConnectorImpl.java Wed Mar 14 14:30:52 2007
@@ -124,7 +124,7 @@
throw new ComponentNotFoundException("Wire target component not found", baseTargetUri);
}
Wire wire = createWire(definition);
- attacherRegistry.attach(source, wire, definition.getSource());
+ attacherRegistry.attach(source, target, wire, definition.getSource());
attacherRegistry.attach(target, wire, definition.getTarget());
}
Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/physical/WireAttacherRegistryImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/physical/WireAttacherRegistryImpl.java?view=diff&rev=518332&r1=518331&r2=518332
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/physical/WireAttacherRegistryImpl.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/builder/physical/WireAttacherRegistryImpl.java Wed Mar 14 14:30:52 2007
@@ -48,16 +48,17 @@
}
@SuppressWarnings("unchecked")
- public <C extends Component, PWSD extends PhysicalWireSourceDefinition> void attach(C component,
+ public <C extends Component, PWSD extends PhysicalWireSourceDefinition> void attach(C source,
+ Component target,
Wire wire,
- PWSD source)
+ PWSD definition)
throws WiringException {
- Class<? extends Component> type = component.getClass();
+ Class<? extends Component> type = source.getClass();
WireAttacher attacher = attachers.get(type);
if (attacher == null) {
- throw new WireAttacherNotRegistered(type, component.getUri(), wire.getTargetUri());
+ throw new WireAttacherNotRegistered(type, source.getUri(), wire.getTargetUri());
}
- attacher.attach(component, wire, source);
+ attacher.attach(source, target, wire, definition);
}
@SuppressWarnings("unchecked")
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=518332&r1=518331&r2=518332
==============================================================================
--- 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 Wed Mar 14 14:30:52 2007
@@ -30,6 +30,8 @@
import org.apache.tuscany.spi.builder.physical.PhysicalComponentBuilder;
import org.apache.tuscany.spi.builder.physical.PhysicalComponentBuilderRegistry;
import org.apache.tuscany.spi.builder.physical.WireAttacher;
+import org.apache.tuscany.spi.component.AtomicComponent;
+import org.apache.tuscany.spi.component.Component;
import org.apache.tuscany.spi.component.ScopeContainer;
import org.apache.tuscany.spi.component.ScopeRegistry;
import org.apache.tuscany.spi.component.WorkContext;
@@ -43,6 +45,7 @@
import org.apache.tuscany.core.builder.physical.WireAttachException;
import org.apache.tuscany.core.component.InstanceFactoryProvider;
import org.apache.tuscany.core.injection.CallbackWireObjectFactory2;
+import org.apache.tuscany.core.injection.InstanceObjectFactory;
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;
@@ -158,24 +161,36 @@
/**
* Attaches the source to the component.
*
- * @param component the source component
- * @param wire the wire for the callback
- * @param source the attach metadata
+ * @param definition the attach metadata
+ * @param target the source component
+ * @param wire the wire for the callback
+ * @param definition the attach metadata
*/
@SuppressWarnings({"unchecked"})
- public void attach(JavaComponent component, Wire wire, JavaPhysicalWireSourceDefinition source) {
+ public void attach(JavaComponent source,
+ Component target,
+ Wire wire,
+ JavaPhysicalWireSourceDefinition definition) {
URI sourceUri = wire.getSourceUri();
- Class<?> type = component.getMemberType(sourceUri);
- ObjectFactory<?> factory = new WireObjectFactory(type, wire, proxyService);
- component.setObjectFactory(sourceUri, factory);
- if (!wire.getCallbackInvocationChains().isEmpty()) {
- URI callbackUri = source.getCallbackUri();
- Class<?> callbackType = component.getMemberType(callbackUri);
- ObjectFactory<?> callbackFactory = new CallbackWireObjectFactory2(callbackType, proxyService);
- component.setObjectFactory(callbackUri, callbackFactory);
+ Class<?> type = source.getMemberType(sourceUri);
+ if (definition.isOptimizable()) {
+ // FIXME if possible, this is not clean
+ assert target instanceof AtomicComponent;
+ ScopeContainer container = target.getScopeContainer();
+ ObjectFactory<?> factory = new InstanceObjectFactory((AtomicComponent) target, container);
+ source.setObjectFactory(sourceUri, factory);
+ } else {
+ ObjectFactory<?> factory = new WireObjectFactory(type, wire, proxyService);
+ source.setObjectFactory(sourceUri, factory);
+ if (!wire.getCallbackInvocationChains().isEmpty()) {
+ URI callbackUri = definition.getCallbackUri();
+ Class<?> callbackType = source.getMemberType(callbackUri);
+ ObjectFactory<?> callbackFactory = new CallbackWireObjectFactory2(callbackType, proxyService);
+ source.setObjectFactory(callbackUri, callbackFactory);
+ }
}
}
-
+
/**
* Attaches the target to the component.
*
Modified: incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/OptimizedWireObjectFactory.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/OptimizedWireObjectFactory.java?view=diff&rev=518332&r1=518331&r2=518332
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/OptimizedWireObjectFactory.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/main/java/org/apache/tuscany/core/wire/OptimizedWireObjectFactory.java Wed Mar 14 14:30:52 2007
@@ -27,6 +27,7 @@
* Returns a target instance directly from a wire
*
* @version $Rev$ $Date$
+ * @Deprecated
*/
public class OptimizedWireObjectFactory<B> implements ObjectFactory<B> {
private final Class<B> type;
Modified: incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/physical/WireAttacherRegistryTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/physical/WireAttacherRegistryTestCase.java?view=diff&rev=518332&r1=518331&r2=518332
==============================================================================
--- incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/physical/WireAttacherRegistryTestCase.java (original)
+++ incubator/tuscany/java/sca/kernel/core/src/test/java/org/apache/tuscany/core/builder/physical/WireAttacherRegistryTestCase.java Wed Mar 14 14:30:52 2007
@@ -35,17 +35,21 @@
@SuppressWarnings("unchecked")
public void testSourceAttachDispatch() throws Exception {
- Component component = EasyMock.createMock(Component.class);
- EasyMock.replay(component);
+ Component source = EasyMock.createMock(Component.class);
+ EasyMock.replay(source);
+ Component target = EasyMock.createMock(Component.class);
+ EasyMock.replay(target);
+
Wire wire = EasyMock.createMock(Wire.class);
EasyMock.replay(wire);
WireAttacher attacher = EasyMock.createMock(WireAttacher.class);
attacher.attach(EasyMock.isA(Component.class),
+ EasyMock.isA(Component.class),
EasyMock.isA(Wire.class),
EasyMock.isA(PhysicalWireSourceDefinition.class));
EasyMock.replay(attacher);
- registry.register(component.getClass(), attacher);
- registry.attach(component, wire, new PhysicalWireSourceDefinition());
+ registry.register(source.getClass(), attacher);
+ registry.attach(source, target, wire, new PhysicalWireSourceDefinition());
EasyMock.verify(attacher);
}
Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/physical/WireAttacher.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/physical/WireAttacher.java?view=diff&rev=518332&r1=518331&r2=518332
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/physical/WireAttacher.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/physical/WireAttacher.java Wed Mar 14 14:30:52 2007
@@ -38,12 +38,12 @@
/**
* Attaches a wire to a source component.
*
- * @param component the component.
+ * @param source
+ *@param target the component.
* @param wire the wire
- * @param definition metadata for performing the attach.
- * @throws WiringException if an exception occurs during the attach operation
+ * @param definition metadata for performing the attach. @throws WiringException if an exception occurs during the attach operation
*/
- void attach(C component, Wire wire, PWSD definition) throws WiringException;
+ void attach(C source, Component target, Wire wire, PWSD definition) throws WiringException;
/**
* Attaches a wire to a target component.
Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/physical/WireAttacherRegistry.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/physical/WireAttacherRegistry.java?view=diff&rev=518332&r1=518331&r2=518332
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/physical/WireAttacherRegistry.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/builder/physical/WireAttacherRegistry.java Wed Mar 14 14:30:52 2007
@@ -35,17 +35,21 @@
PWSD extends PhysicalWireSourceDefinition,
PWTD extends PhysicalWireTargetDefinition> void register(Class<?> clazz, WireAttacher<C, PWSD, PWTD> attacher);
- <C extends Component, PWSD extends PhysicalWireSourceDefinition> void attach(C component, Wire wire, PWSD source)
+ <C extends Component, PWSD extends PhysicalWireSourceDefinition> void attach(C source,
+ Component target,
+ Wire wire,
+ PWSD definition)
throws WiringException;
/**
* Attaches the wire to the target component.
*
* @param component Component.
- * @param wire
+ * @param wire the wire
* @param definition Target wire definition. @throws WiringException
+ * @throws WiringException if an error is encountered during the attach operation
*/
- <C extends Component, PWTD extends PhysicalWireTargetDefinition> void attach(C component,
+ <C extends Component, PWTD extends PhysicalWireTargetDefinition> void attach(C component,
Wire wire,
PWTD definition)
throws WiringException;
Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/Component.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/Component.java?view=diff&rev=518332&r1=518331&r2=518332
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/Component.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/component/Component.java Wed Mar 14 14:30:52 2007
@@ -64,6 +64,14 @@
void setDefaultPropertyValues(Map<String, PropertyValue<?>> defaultPropertyValues);
/**
+ * Returns the ScopeContainer responsible for managing implementation instance or null if a ScopeContainer is not
+ * associated with the Component
+ *
+ * @return the scope container
+ */
+ ScopeContainer getScopeContainer();
+
+ /**
* Returns the component scope
*
* @return the component scope
Modified: incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/AbstractComponentExtension.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/AbstractComponentExtension.java?view=diff&rev=518332&r1=518331&r2=518332
==============================================================================
--- incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/AbstractComponentExtension.java (original)
+++ incubator/tuscany/java/sca/kernel/spi/src/main/java/org/apache/tuscany/spi/extension/AbstractComponentExtension.java Wed Mar 14 14:30:52 2007
@@ -55,6 +55,10 @@
super(name);
}
+ public ScopeContainer getScopeContainer() {
+ return scopeContainer;
+ }
+
public void setScopeContainer(ScopeContainer scopeContainer) {
this.scopeContainer = scopeContainer;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org