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