Author: mbenson
Date: Thu Sep 12 02:02:02 2013
New Revision: 1522105
URL: http://svn.apache.org/r1522105
Log:
no need to use InvocationHandler interface
Modified:
commons/proper/proxy/branches/version-2.0-work/asm4/src/main/java/org/apache/commons/proxy2/asm4/ASM4ProxyFactory.java
Modified:
commons/proper/proxy/branches/version-2.0-work/asm4/src/main/java/org/apache/commons/proxy2/asm4/ASM4ProxyFactory.java
URL:
http://svn.apache.org/viewvc/commons/proper/proxy/branches/version-2.0-work/asm4/src/main/java/org/apache/commons/proxy2/asm4/ASM4ProxyFactory.java?rev=1522105&r1=1522104&r2=1522105&view=diff
==============================================================================
---
commons/proper/proxy/branches/version-2.0-work/asm4/src/main/java/org/apache/commons/proxy2/asm4/ASM4ProxyFactory.java
(original)
+++
commons/proper/proxy/branches/version-2.0-work/asm4/src/main/java/org/apache/commons/proxy2/asm4/ASM4ProxyFactory.java
Thu Sep 12 02:02:02 2013
@@ -17,7 +17,6 @@
package org.apache.commons.proxy2.asm4;
import java.io.Serializable;
-import java.lang.reflect.InvocationHandler;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
@@ -46,29 +45,28 @@ public class ASM4ProxyFactory extends Ab
@Override
public <T> T createDelegatorProxy(final ClassLoader classLoader, final
ObjectProvider<?> delegateProvider, final Class<?>... proxyClasses)
{
- return createProxy(classLoader, new
DelegatorInvocationHandler(delegateProvider), proxyClasses);
+ return createProxy(classLoader, new
DelegatorInvoker(delegateProvider), proxyClasses);
}
@Override
public <T> T createInterceptorProxy(final ClassLoader classLoader, final
Object target, final Interceptor interceptor, final Class<?>... proxyClasses)
{
- return createProxy(classLoader, new
InterceptorInvocationHandler(target, interceptor), proxyClasses);
+ return createProxy(classLoader, new InterceptorInvoker(target,
interceptor), proxyClasses);
}
@Override
public <T> T createInvokerProxy(final ClassLoader classLoader, final
Invoker invoker, final Class<?>... proxyClasses)
{
- return createProxy(classLoader, new InvokerInvocationHandler(invoker),
proxyClasses);
+ return createProxy(classLoader, new InvokerInvoker(invoker),
proxyClasses);
}
- private <T> T createProxy(final ClassLoader classLoader, final
InvocationHandler invocationHandler, final Class<?>... proxyClasses)
+ private <T> T createProxy(final ClassLoader classLoader, final
AbstractInvoker invoker, final Class<?>... proxyClasses)
{
- final Class<?> proxyClass = PROXY_CLASS_CACHE.getProxyClass(
- classLoader, proxyClasses);
+ final Class<?> proxyClass =
PROXY_CLASS_CACHE.getProxyClass(classLoader, proxyClasses);
try
{
@SuppressWarnings("unchecked")
- final T result = (T)
proxyClass.getConstructor(InvocationHandler.class).newInstance(invocationHandler);
+ final T result = (T)
proxyClass.getConstructor(Invoker.class).newInstance(invoker);
return result;
}
catch (Exception e)
@@ -82,7 +80,7 @@ public class ASM4ProxyFactory extends Ab
private static final AtomicInteger CLASS_NUMBER = new AtomicInteger(0);
private static final String CLASSNAME_PREFIX = "CommonsProxyASM4_";
private static final String HANDLER_NAME = "__handler";
- private static final Type HANDLER_TYPE =
Type.getType(InvocationHandler.class);
+ private static final Type INVOKER_TYPE = Type.getType(Invoker.class);
@Override
public Class<?> generateProxyClass(final ClassLoader classLoader,
final Class<?>... proxyClasses)
@@ -120,8 +118,8 @@ public class ASM4ProxyFactory extends Ab
final Type superType = Type.getType(classToProxy);
cw.visit(V1_6, ACC_PUBLIC + ACC_SUPER,
proxyType.getInternalName(), null, superType.getInternalName(), interfaceNames);
- // push InvocationHandler fields
- cw.visitField(ACC_FINAL + ACC_PRIVATE, HANDLER_NAME,
HANDLER_TYPE.getDescriptor(), null, null).visitEnd();
+ // create Invoker field
+ cw.visitField(ACC_FINAL + ACC_PRIVATE, HANDLER_NAME,
INVOKER_TYPE.getDescriptor(), null, null).visitEnd();
init(cw, proxyType, superType);
@@ -136,7 +134,7 @@ public class ASM4ProxyFactory extends Ab
private static void init(final ClassWriter cw, final Type proxyType,
Type superType)
{
final GeneratorAdapter mg = new GeneratorAdapter(ACC_PUBLIC, new
org.objectweb.asm.commons.Method("<init>",
- Type.VOID_TYPE, new Type[] { HANDLER_TYPE }), null, null,
cw);
+ Type.VOID_TYPE, new Type[] { INVOKER_TYPE }), null, null,
cw);
// invoke super constructor:
mg.loadThis();
mg.invokeConstructor(superType,
org.objectweb.asm.commons.Method.getMethod("void <init> ()"));
@@ -144,7 +142,7 @@ public class ASM4ProxyFactory extends Ab
// assign handler:
mg.loadThis();
mg.loadArg(0);
- mg.putField(proxyType, HANDLER_NAME, HANDLER_TYPE);
+ mg.putField(proxyType, HANDLER_NAME, INVOKER_TYPE);
mg.returnValue();
mg.endMethod();
}
@@ -202,11 +200,11 @@ public class ASM4ProxyFactory extends Ab
// store the returned method for later
// the following code generates bytecode equivalent to:
- // return ((<returntype>) invocationHandler.invoke(this, method,
new Object[] { <function arguments }))[.<primitive>Value()];
+ // return ((<returntype>) invoker.invoke(this, method, new
Object[] { <function arguments }))[.<primitive>Value()];
mg.loadThis();
- mg.getField(proxyType, handlerName, HANDLER_TYPE);
+ mg.getField(proxyType, handlerName, INVOKER_TYPE);
// put below method:
mg.swap();
@@ -236,8 +234,8 @@ public class ASM4ProxyFactory extends Ab
mg.arrayStore(objectType);
}
- // invoke the invocationHandler
- mg.invokeInterface(HANDLER_TYPE,
org.objectweb.asm.commons.Method.getMethod("Object invoke(Object,
java.lang.reflect.Method, Object[])"));
+ // invoke the invoker
+ mg.invokeInterface(INVOKER_TYPE,
org.objectweb.asm.commons.Method.getMethod("Object invoke(Object,
java.lang.reflect.Method, Object[])"));
// cast the result
mg.unbox(sig.getReturnType());
@@ -335,11 +333,11 @@ public class ASM4ProxyFactory extends Ab
//////////////// these classes should be protected in ProxyFactory
@SuppressWarnings("serial")
- private static class DelegatorInvocationHandler extends
AbstractInvocationHandler
+ private static class DelegatorInvoker extends AbstractInvoker
{
private final ObjectProvider<?> delegateProvider;
- protected DelegatorInvocationHandler(ObjectProvider<?>
delegateProvider)
+ protected DelegatorInvoker(ObjectProvider<?> delegateProvider)
{
this.delegateProvider = delegateProvider;
}
@@ -358,12 +356,12 @@ public class ASM4ProxyFactory extends Ab
}
@SuppressWarnings("serial")
- private static class InterceptorInvocationHandler extends
AbstractInvocationHandler
+ private static class InterceptorInvoker extends AbstractInvoker
{
private final Object target;
private final Interceptor methodInterceptor;
- public InterceptorInvocationHandler(Object target, Interceptor
methodInterceptor)
+ public InterceptorInvoker(Object target, Interceptor methodInterceptor)
{
this.target = target;
this.methodInterceptor = methodInterceptor;
@@ -377,7 +375,7 @@ public class ASM4ProxyFactory extends Ab
}
@SuppressWarnings("serial")
- private abstract static class AbstractInvocationHandler implements
InvocationHandler, Serializable
+ private abstract static class AbstractInvoker implements Invoker,
Serializable
{
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable
{
@@ -396,11 +394,11 @@ public class ASM4ProxyFactory extends Ab
}
@SuppressWarnings("serial")
- private static class InvokerInvocationHandler extends
AbstractInvocationHandler
+ private static class InvokerInvoker extends AbstractInvoker
{
private final Invoker invoker;
- public InvokerInvocationHandler(Invoker invoker)
+ public InvokerInvoker(Invoker invoker)
{
this.invoker = invoker;
}