You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by mb...@apache.org on 2012/09/20 18:19:37 UTC
svn commit: r1388097 - in /commons/proper/proxy/branches/version-2.0-work:
cglib/src/main/java/org/apache/commons/proxy2/cglib/
core/src/test/java/org/apache/commons/proxy2/
javassist/src/main/java/org/apache/commons/proxy2/javassist/
jdk/src/main/java...
Author: mbenson
Date: Thu Sep 20 16:19:37 2012
New Revision: 1388097
URL: http://svn.apache.org/viewvc?rev=1388097&view=rev
Log:
[PROXY-18] Invocation should return the proxy object, rather than the target, from #getProxy()
Modified:
commons/proper/proxy/branches/version-2.0-work/cglib/src/main/java/org/apache/commons/proxy2/cglib/CglibProxyFactory.java
commons/proper/proxy/branches/version-2.0-work/core/src/test/java/org/apache/commons/proxy2/AbstractProxyFactoryTestCase.java
commons/proper/proxy/branches/version-2.0-work/javassist/src/main/java/org/apache/commons/proxy2/javassist/JavassistInvocation.java
commons/proper/proxy/branches/version-2.0-work/javassist/src/main/java/org/apache/commons/proxy2/javassist/JavassistProxyFactory.java
commons/proper/proxy/branches/version-2.0-work/jdk/src/main/java/org/apache/commons/proxy2/jdk/JdkProxyFactory.java
commons/proper/proxy/branches/version-2.0-work/stub/src/main/java/org/apache/commons/proxy2/stub/AnnotationFactory.java
Modified: commons/proper/proxy/branches/version-2.0-work/cglib/src/main/java/org/apache/commons/proxy2/cglib/CglibProxyFactory.java
URL: http://svn.apache.org/viewvc/commons/proper/proxy/branches/version-2.0-work/cglib/src/main/java/org/apache/commons/proxy2/cglib/CglibProxyFactory.java?rev=1388097&r1=1388096&r2=1388097&view=diff
==============================================================================
--- commons/proper/proxy/branches/version-2.0-work/cglib/src/main/java/org/apache/commons/proxy2/cglib/CglibProxyFactory.java (original)
+++ commons/proper/proxy/branches/version-2.0-work/cglib/src/main/java/org/apache/commons/proxy2/cglib/CglibProxyFactory.java Thu Sep 20 16:19:37 2012
@@ -148,8 +148,8 @@ public class CglibProxyFactory extends A
/** Serialization version */
private static final long serialVersionUID = 1L;
- private final Interceptor inner;
private final Object target;
+ private final Interceptor inner;
public InterceptorBridge(Object target, Interceptor inner)
{
@@ -159,7 +159,7 @@ public class CglibProxyFactory extends A
public Object intercept(Object object, Method method, Object[] args, MethodProxy methodProxy) throws Throwable
{
- return inner.intercept(new MethodProxyInvocation(target, method, args, methodProxy));
+ return inner.intercept(new MethodProxyInvocation(object, target, method, args, methodProxy));
}
}
@@ -186,13 +186,15 @@ public class CglibProxyFactory extends A
/** Serialization version */
private static final long serialVersionUID = 1L;
- private final MethodProxy methodProxy;
+ private final Object proxy;
+ private final Object target;
private final Method method;
private final Object[] args;
- private final Object target;
+ private final MethodProxy methodProxy;
- public MethodProxyInvocation(Object target, Method method, Object[] args, MethodProxy methodProxy)
+ public MethodProxyInvocation(Object proxy, Object target, Method method, Object[] args, MethodProxy methodProxy)
{
+ this.proxy = proxy;
this.target = target;
this.method = method;
this.methodProxy = methodProxy;
@@ -216,7 +218,7 @@ public class CglibProxyFactory extends A
public Object getProxy()
{
- return target;
+ return proxy;
}
}
Modified: commons/proper/proxy/branches/version-2.0-work/core/src/test/java/org/apache/commons/proxy2/AbstractProxyFactoryTestCase.java
URL: http://svn.apache.org/viewvc/commons/proper/proxy/branches/version-2.0-work/core/src/test/java/org/apache/commons/proxy2/AbstractProxyFactoryTestCase.java?rev=1388097&r1=1388096&r2=1388097&view=diff
==============================================================================
--- commons/proper/proxy/branches/version-2.0-work/core/src/test/java/org/apache/commons/proxy2/AbstractProxyFactoryTestCase.java (original)
+++ commons/proper/proxy/branches/version-2.0-work/core/src/test/java/org/apache/commons/proxy2/AbstractProxyFactoryTestCase.java Thu Sep 20 16:19:37 2012
@@ -294,7 +294,7 @@ public abstract class AbstractProxyFacto
assertNotNull(tester.arguments);
assertEquals(0, tester.arguments.length);
assertEquals(Echo.class.getMethod("echo"), tester.method);
- assertEquals(target, tester.proxy);
+ assertSame(proxy, tester.proxy);
proxy.echoBack("Hello");
assertNotNull(tester.arguments);
assertEquals(1, tester.arguments.length);
Modified: commons/proper/proxy/branches/version-2.0-work/javassist/src/main/java/org/apache/commons/proxy2/javassist/JavassistInvocation.java
URL: http://svn.apache.org/viewvc/commons/proper/proxy/branches/version-2.0-work/javassist/src/main/java/org/apache/commons/proxy2/javassist/JavassistInvocation.java?rev=1388097&r1=1388096&r2=1388097&view=diff
==============================================================================
--- commons/proper/proxy/branches/version-2.0-work/javassist/src/main/java/org/apache/commons/proxy2/javassist/JavassistInvocation.java (original)
+++ commons/proper/proxy/branches/version-2.0-work/javassist/src/main/java/org/apache/commons/proxy2/javassist/JavassistInvocation.java Thu Sep 20 16:19:37 2012
@@ -47,12 +47,15 @@ public abstract class JavassistInvocatio
private static WeakHashMap<ClassLoader, Map<String, WeakReference<Class<?>>>> loaderToClassCache = new WeakHashMap<ClassLoader, Map<String,WeakReference<Class<?>>>>();
- /** The invoked method */
- private final Method method;
+ /** The proxy object */
+ private final Object proxy;
/** The target object */
private final Object target;
+ /** The invoked method */
+ private final Method method;
+
/** The method arguments */
private final Object[] arguments;
@@ -82,14 +85,14 @@ public abstract class JavassistInvocatio
"_invocation",
JavassistInvocation.class);
final CtConstructor constructor = new CtConstructor(
- JavassistUtils.resolve(new Class[] {Method.class, Object.class, Object[].class}),
+ JavassistUtils.resolve(new Class[] { Object.class, Object.class, Method.class, Object[].class }),
ctClass);
constructor.setBody("{\n\tsuper($$);\n}");
ctClass.addConstructor(constructor);
final CtMethod proceedMethod = new CtMethod(JavassistUtils.resolve(Object.class), "proceed",
JavassistUtils.resolve(new Class[0]), ctClass);
final Class<?>[] argumentTypes = interfaceMethod.getParameterTypes();
- final StringBuffer proceedBody = new StringBuffer("{\n");
+ final StringBuilder proceedBody = new StringBuilder("{\n");
if( !Void.TYPE.equals(interfaceMethod.getReturnType()) )
{
proceedBody.append("\treturn ");
@@ -201,10 +204,11 @@ public abstract class JavassistInvocatio
// Constructors
//**********************************************************************************************************************
- public JavassistInvocation( Method method, Object target, Object[] arguments )
+ public JavassistInvocation( Object proxy, Object target, Method method, Object[] arguments )
{
- this.method = method;
+ this.proxy = proxy;
this.target = target;
+ this.method = method;
this.arguments = ArrayUtils.clone(arguments);
}
@@ -228,6 +232,6 @@ public abstract class JavassistInvocatio
public Object getProxy()
{
- return target;
+ return proxy;
}
}
Modified: commons/proper/proxy/branches/version-2.0-work/javassist/src/main/java/org/apache/commons/proxy2/javassist/JavassistProxyFactory.java
URL: http://svn.apache.org/viewvc/commons/proper/proxy/branches/version-2.0-work/javassist/src/main/java/org/apache/commons/proxy2/javassist/JavassistProxyFactory.java?rev=1388097&r1=1388096&r2=1388097&view=diff
==============================================================================
--- commons/proper/proxy/branches/version-2.0-work/javassist/src/main/java/org/apache/commons/proxy2/javassist/JavassistProxyFactory.java (original)
+++ commons/proper/proxy/branches/version-2.0-work/javassist/src/main/java/org/apache/commons/proxy2/javassist/JavassistProxyFactory.java Thu Sep 20 16:19:37 2012
@@ -202,8 +202,8 @@ public class JavassistProxyFactory exten
.getMethodInvocationClass(classLoader, methods[i]);
final String body = "{\n\t return ( $r ) interceptor.intercept( new " + invocationClass.getName() +
- "( " + GET_METHOD_METHOD_NAME + "(\"" + methods[i].getDeclaringClass().getName() +
- "\", \"" + methods[i].getName() + "\", $sig), target, $args ) );\n }";
+ "( this, target, " + GET_METHOD_METHOD_NAME + "(\"" + methods[i].getDeclaringClass().getName() +
+ "\", \"" + methods[i].getName() + "\", $sig), $args ) );\n }";
method.setBody(body);
proxyClass.addMethod(method);
}
Modified: commons/proper/proxy/branches/version-2.0-work/jdk/src/main/java/org/apache/commons/proxy2/jdk/JdkProxyFactory.java
URL: http://svn.apache.org/viewvc/commons/proper/proxy/branches/version-2.0-work/jdk/src/main/java/org/apache/commons/proxy2/jdk/JdkProxyFactory.java?rev=1388097&r1=1388096&r2=1388097&view=diff
==============================================================================
--- commons/proper/proxy/branches/version-2.0-work/jdk/src/main/java/org/apache/commons/proxy2/jdk/JdkProxyFactory.java (original)
+++ commons/proper/proxy/branches/version-2.0-work/jdk/src/main/java/org/apache/commons/proxy2/jdk/JdkProxyFactory.java Thu Sep 20 16:19:37 2012
@@ -159,7 +159,7 @@ public class JdkProxyFactory extends Abs
public Object invokeImpl( Object proxy, Method method, Object[] args ) throws Throwable
{
- final ReflectionInvocation invocation = new ReflectionInvocation(target, method, args);
+ final ReflectionInvocation invocation = new ReflectionInvocation(proxy, target, method, args);
return methodInterceptor.intercept(invocation);
}
}
@@ -187,15 +187,17 @@ public class JdkProxyFactory extends Abs
/** Serialization version */
private static final long serialVersionUID = 1L;
+ private final Object proxy;
+ private final Object target;
private final Method method;
private final Object[] arguments;
- private final Object target;
- public ReflectionInvocation( Object target, Method method, Object[] arguments )
+ public ReflectionInvocation( Object proxy, Object target, Method method, Object[] arguments )
{
+ this.proxy = proxy;
+ this.target = target;
this.method = method;
this.arguments = ( arguments == null ? ProxyUtils.EMPTY_ARGUMENTS : arguments );
- this.target = target;
}
public Object[] getArguments()
@@ -210,7 +212,7 @@ public class JdkProxyFactory extends Abs
public Object getProxy()
{
- return target;
+ return proxy;
}
public Object proceed() throws Throwable
Modified: commons/proper/proxy/branches/version-2.0-work/stub/src/main/java/org/apache/commons/proxy2/stub/AnnotationFactory.java
URL: http://svn.apache.org/viewvc/commons/proper/proxy/branches/version-2.0-work/stub/src/main/java/org/apache/commons/proxy2/stub/AnnotationFactory.java?rev=1388097&r1=1388096&r2=1388097&view=diff
==============================================================================
--- commons/proper/proxy/branches/version-2.0-work/stub/src/main/java/org/apache/commons/proxy2/stub/AnnotationFactory.java (original)
+++ commons/proper/proxy/branches/version-2.0-work/stub/src/main/java/org/apache/commons/proxy2/stub/AnnotationFactory.java Thu Sep 20 16:19:37 2012
@@ -110,7 +110,7 @@ public class AnnotationFactory {
if ("toString".equals(method.getName()) && method.getParameterTypes().length == 0) {
return AnnotationUtils.toString((Annotation) proxy);
}
- final ReflectionInvocation invocation = new ReflectionInvocation(target, method, args);
+ final ReflectionInvocation invocation = new ReflectionInvocation(proxy, target, method, args);
return methodInterceptor.intercept(invocation);
}
@@ -120,14 +120,16 @@ public class AnnotationFactory {
/** Serialization version */
private static final long serialVersionUID = 1L;
+ private final Object proxy;
+ private final Object target;
private final Method method;
private final Object[] arguments;
- private final Object target;
- public ReflectionInvocation(Object target, Method method, Object[] arguments) {
+ public ReflectionInvocation(Object proxy, Object target, Method method, Object[] arguments) {
+ this.proxy = proxy;
+ this.target = target;
this.method = method;
this.arguments = (arguments == null ? ProxyUtils.EMPTY_ARGUMENTS : arguments);
- this.target = target;
}
public Object[] getArguments() {
@@ -139,7 +141,7 @@ public class AnnotationFactory {
}
public Object getProxy() {
- return target;
+ return proxy;
}
public Object proceed() throws Throwable {