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