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 2006/05/26 06:42:49 UTC

svn commit: r409556 - in /incubator/tuscany/sandbox/jboynes/sca: containers/container.java/src/main/java/org/apache/tuscany/container/java/ containers/container.spring/src/main/java/org/apache/tuscany/container/spring/ core2/src/main/java/org/apache/tu...

Author: jmarino
Date: Thu May 25 21:42:48 2006
New Revision: 409556

URL: http://svn.apache.org/viewvc?rev=409556&view=rev
Log:
include targetinvoker in wire optimization

Modified:
    incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/JavaTargetInvoker.java
    incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SpringInvoker.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/JDKTargetWire.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/PojoTargetInvoker.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/StaticPojoTargetInvoker.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/context/MockTargetInvoker.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/wire/MockStaticInvoker.java
    incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/wire/jdk/JDKWireOptimizationTestCase.java
    incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/wire/TargetInvoker.java

Modified: incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/JavaTargetInvoker.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/JavaTargetInvoker.java?rev=409556&r1=409555&r2=409556&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/JavaTargetInvoker.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.java/src/main/java/org/apache/tuscany/container/java/JavaTargetInvoker.java Thu May 25 21:42:48 2006
@@ -30,8 +30,6 @@
 
     private JavaAtomicContext context;
     private Object target;
-    public boolean cacheable;
-
 
     /**
      * Creates a new invoker
@@ -43,14 +41,6 @@
         super(operation);
         assert (context != null) : "No atomic context specified";
         this.context = context;
-    }
-
-    public boolean isCacheable() {
-        return cacheable;
-    }
-
-    public void setCacheable(boolean cacheable) {
-        this.cacheable = cacheable;
     }
 
     /**

Modified: incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SpringInvoker.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SpringInvoker.java?rev=409556&r1=409555&r2=409556&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SpringInvoker.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/containers/container.spring/src/main/java/org/apache/tuscany/container/spring/SpringInvoker.java Thu May 25 21:42:48 2006
@@ -50,6 +50,10 @@
         this.cacheable = cacheable;
     }
 
+    public boolean isOptimizable() {
+        return false;
+    }
+
 
     public SpringInvoker clone() throws CloneNotSupportedException {
         return (SpringInvoker) super.clone();

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/JDKTargetWire.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/JDKTargetWire.java?rev=409556&r1=409555&r2=409556&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/JDKTargetWire.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/JDKTargetWire.java Thu May 25 21:42:48 2006
@@ -6,11 +6,11 @@
 
 import org.apache.tuscany.core.util.MethodHashMap;
 import org.apache.tuscany.spi.context.TargetException;
+import org.apache.tuscany.spi.wire.Interceptor;
+import org.apache.tuscany.spi.wire.MessageHandler;
 import org.apache.tuscany.spi.wire.TargetInvocationChain;
 import org.apache.tuscany.spi.wire.TargetWire;
 import org.apache.tuscany.spi.wire.WireInvocationHandler;
-import org.apache.tuscany.spi.wire.Interceptor;
-import org.apache.tuscany.spi.wire.MessageHandler;
 
 /**
  * Creates proxies that are returned to non-SCA clients using JDK dynamic proxy facilities and front a wire.
@@ -71,15 +71,19 @@
 
     public boolean isOptimizable() {
         for (TargetInvocationChain chain : invocationChains.values()) {
-            if (chain.getHeadInterceptor() != null || !chain.getRequestHandlers().isEmpty()
-                || !chain.getResponseHandlers().isEmpty()) {
+            if (chain.getTargetInvoker() != null && !chain.getTargetInvoker().isOptimizable()) {
+                return false;
+            }
+            if (chain.getHeadInterceptor() != null) {
                 Interceptor current = chain.getHeadInterceptor();
-                while(current != null){
-                     if(!current.isOptimizable()){
-                         return false;
-                     }
+                while (current != null) {
+                    if (!current.isOptimizable()) {
+                        return false;
+                    }
                     current = current.getNext();
                 }
+            }
+            if (chain.getRequestHandlers() != null &&  !chain.getRequestHandlers().isEmpty()) {
                 if (chain.getRequestHandlers() != null) {
                     for (MessageHandler handler : chain.getRequestHandlers()) {
                         if (!handler.isOptimizable()) {
@@ -87,6 +91,8 @@
                         }
                     }
                 }
+            }
+            if (chain.getResponseHandlers() != null && !chain.getResponseHandlers().isEmpty()) {
                 if (chain.getResponseHandlers() != null) {
                     for (MessageHandler handler : chain.getResponseHandlers()) {
                         if (!handler.isOptimizable()) {

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/PojoTargetInvoker.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/PojoTargetInvoker.java?rev=409556&r1=409555&r2=409556&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/PojoTargetInvoker.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/PojoTargetInvoker.java Thu May 25 21:42:48 2006
@@ -19,6 +19,7 @@
 public abstract class PojoTargetInvoker implements TargetInvoker {
 
     protected Method operation;
+    protected boolean cacheable;
 
     public PojoTargetInvoker(Method operation) {
         assert (operation != null) : "Operation method cannot be null";
@@ -49,6 +50,18 @@
 
     public void setNext(Interceptor next) {
         throw new IllegalStateException("This interceptor must be the last interceptor in an interceptor chain");
+    }
+
+    public boolean isCacheable() {
+        return cacheable;
+    }
+
+    public void setCacheable(boolean cacheable) {
+        this.cacheable = cacheable;
+    }
+
+    public boolean isOptimizable() {
+        return isCacheable(); // we only need to check if the scopes are correct
     }
 
     @Override

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/StaticPojoTargetInvoker.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/StaticPojoTargetInvoker.java?rev=409556&r1=409555&r2=409556&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/StaticPojoTargetInvoker.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/main/java/org/apache/tuscany/core/wire/jdk/StaticPojoTargetInvoker.java Thu May 25 21:42:48 2006
@@ -18,8 +18,6 @@
 
 import java.lang.reflect.Method;
 
-import org.apache.tuscany.core.wire.jdk.PojoTargetInvoker;
-
 /**
  * Caches component instances that do not need to be resolved for every wire, e.g. an wire originating from a
  * lesser scope intended for a target with a wider scope
@@ -29,7 +27,6 @@
 public class StaticPojoTargetInvoker extends PojoTargetInvoker {
 
     private Object instance;
-    private boolean cacheable;
 
     public StaticPojoTargetInvoker(Method operation, Object instance) {
         super(operation);
@@ -39,14 +36,6 @@
 
     protected Object getInstance() {
         return instance;
-    }
-
-    public boolean isCacheable() {
-        return cacheable;
-    }
-
-    public void setCacheable(boolean cacheable) {
-        this.cacheable = cacheable;
     }
 
     public StaticPojoTargetInvoker clone() throws CloneNotSupportedException {

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/context/MockTargetInvoker.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/context/MockTargetInvoker.java?rev=409556&r1=409555&r2=409556&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/context/MockTargetInvoker.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/context/MockTargetInvoker.java Thu May 25 21:42:48 2006
@@ -28,14 +28,6 @@
         this.context = context;
     }
 
-    public boolean isCacheable() {
-        return cacheable;
-    }
-
-    public void setCacheable(boolean cacheable) {
-        this.cacheable = cacheable;
-    }
-
     /**
      * Resolves the target service instance or returns a cached one
      */

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/wire/MockStaticInvoker.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/wire/MockStaticInvoker.java?rev=409556&r1=409555&r2=409556&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/wire/MockStaticInvoker.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/mock/wire/MockStaticInvoker.java Thu May 25 21:42:48 2006
@@ -33,6 +33,10 @@
         this.cacheable = cacheable;
     }
 
+    public boolean isOptimizable() {
+        return isCacheable();
+    }
+
     public Object invokeTarget(Object payload) throws InvocationTargetException {
         try {
             if (payload != null && !payload.getClass().isArray()) {

Modified: incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/wire/jdk/JDKWireOptimizationTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/wire/jdk/JDKWireOptimizationTestCase.java?rev=409556&r1=409555&r2=409556&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/wire/jdk/JDKWireOptimizationTestCase.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/core2/src/test/java/org/apache/tuscany/core/wire/jdk/JDKWireOptimizationTestCase.java Thu May 25 21:42:48 2006
@@ -12,6 +12,7 @@
 import org.apache.tuscany.spi.wire.SourceWire;
 import org.apache.tuscany.spi.wire.TargetWire;
 import org.apache.tuscany.spi.wire.TargetInvocationChain;
+import org.apache.tuscany.spi.wire.TargetInvoker;
 
 /**
  * @version $$Rev$$ $$Date$$
@@ -107,6 +108,16 @@
         TargetInvocationChain chain = new TargetInvocationChainImpl(m);
         chain.addInterceptor(new OptimizableInterceptor());
         chain.addResponseHandler(new NonOptimizableHandler());
+        wire.addInvocationChain(m, chain);
+        assertFalse(wire.isOptimizable());
+    }
+
+    public void testTargetWireNonTargetInvokerOptimization() throws Exception {
+        TargetWire<?> wire = new JDKTargetWire();
+        TargetInvocationChain chain = new TargetInvocationChainImpl(m);
+        TargetInvoker invoker = new StaticPojoTargetInvoker(m,new Object());
+        invoker.setCacheable(false);
+        chain.setTargetInvoker(invoker);
         wire.addInvocationChain(m, chain);
         assertFalse(wire.isOptimizable());
     }

Modified: incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/wire/TargetInvoker.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/wire/TargetInvoker.java?rev=409556&r1=409555&r2=409556&view=diff
==============================================================================
--- incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/wire/TargetInvoker.java (original)
+++ incubator/tuscany/sandbox/jboynes/sca/spi/src/main/java/org/apache/tuscany/spi/wire/TargetInvoker.java Thu May 25 21:42:48 2006
@@ -44,6 +44,11 @@
     public void setCacheable(boolean cacheable);
 
     /**
+     * Determines if the target invoker can be discarded during wire optimization
+     */
+    public boolean isOptimizable();
+
+    /**
      * Implementations must support deep cloning
      */
     public Object clone() throws CloneNotSupportedException;



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org