You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by jc...@apache.org on 2005/10/17 16:12:22 UTC
svn commit: r325897 [1/2] - in /jakarta/commons/sandbox/proxy/trunk:
src/java/org/apache/commons/proxy/
src/java/org/apache/commons/proxy/factory/cglib/
src/java/org/apache/commons/proxy/factory/javassist/
src/java/org/apache/commons/proxy/factory/refl...
Author: jcarman
Date: Mon Oct 17 07:11:52 2005
New Revision: 325897
URL: http://svn.apache.org/viewcvs?rev=325897&view=rev
Log:
API Cleanup:
1. Introduced our own interfaces instead of relying upon outside classes/interfaces.
2. Renamed some classes for consistency.
3. Updated documentation to match the new API.
Added:
jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/Interceptor.java (with props)
jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/Invoker.java (with props)
jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/javassist/JavassistInvocation.java (contents, props changed)
- copied, changed from r321332, jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/javassist/JavassistMethodInvocation.java
jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/reflect/DelegatorInvocationHandler.java (contents, props changed)
- copied, changed from r321183, jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/reflect/DelegatingInvocationHandler.java
jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/reflect/InterceptorInvocationHandler.java (contents, props changed)
- copied, changed from r321183, jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/reflect/MethodInterceptorInvocationHandler.java
jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/reflect/InvokerInvocationHandler.java (with props)
jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/reflect/ReflectionInvocation.java (contents, props changed)
- copied, changed from r321183, jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/reflect/ReflectionMethodInvocation.java
jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/ExecutorInterceptor.java (contents, props changed)
- copied, changed from r321183, jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/ExecutorMethodInterceptor.java
jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/FilteredInterceptor.java (contents, props changed)
- copied, changed from r321183, jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/FilteredMethodInterceptor.java
jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/InterceptorChain.java (contents, props changed)
- copied, changed from r321183, jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/MethodInterceptorChain.java
jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/LoggingInterceptor.java (contents, props changed)
- copied, changed from r321332, jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/LoggingMethodInterceptor.java
jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/MethodInterceptorAdapter.java (with props)
jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/filter/PatternFilter.java (contents, props changed)
- copied, changed from r321183, jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/filter/PatternMethodFilter.java
jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/filter/SimpleFilter.java (contents, props changed)
- copied, changed from r321183, jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/filter/SimpleMethodFilter.java
jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/invoker/
- copied from r321183, jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/handler/
jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/invoker/InvocationHandlerAdapter.java (with props)
jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/invoker/NullInvoker.java (contents, props changed)
- copied, changed from r321183, jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/handler/NullInvocationHandler.java
jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/invoker/XmlRpcInvoker.java (contents, props changed)
- copied, changed from r321183, jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/handler/XmlRpcInvocationHandler.java
jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/interceptor/TestExecutorInterceptor.java (contents, props changed)
- copied, changed from r321183, jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/interceptor/TestExecutorMethodInterceptor.java
jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/interceptor/TestFilteredInterceptor.java (contents, props changed)
- copied, changed from r321183, jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/interceptor/TestFilteredMethodInterceptor.java
jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/interceptor/TestInterceptorChain.java (contents, props changed)
- copied, changed from r321183, jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/interceptor/TestMethodInterceptorChain.java
jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/interceptor/TestLoggingInterceptor.java (contents, props changed)
- copied, changed from r321183, jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/interceptor/TestLoggingMethodInterceptor.java
jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/interceptor/filter/TestPatternFilter.java (contents, props changed)
- copied, changed from r321183, jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/interceptor/filter/TestPatternMethodFilter.java
jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/interceptor/filter/TestSimpleFilter.java (contents, props changed)
- copied, changed from r321183, jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/interceptor/filter/TestSimpleMethodFilter.java
jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/invoker/
- copied from r321183, jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/handler/
jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/invoker/TestNullInvoker.java (with props)
jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/invoker/TestXmlRpcInvoker.java (with props)
jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/util/SuffixInterceptor.java (contents, props changed)
- copied, changed from r321183, jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/util/SuffixMethodInterceptor.java
Removed:
jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/javassist/JavassistMethodInvocation.java
jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/reflect/AbstractInvocationHandler.java
jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/reflect/DelegateProviderInvocationHandler.java
jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/reflect/DelegatingInvocationHandler.java
jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/reflect/MethodInterceptorInvocationHandler.java
jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/reflect/ReflectionMethodInvocation.java
jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/handler/
jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/ExecutorMethodInterceptor.java
jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/FilteredMethodInterceptor.java
jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/LoggingMethodInterceptor.java
jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/MethodInterceptorChain.java
jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/filter/PatternMethodFilter.java
jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/filter/SimpleMethodFilter.java
jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/invoker/NullInvocationHandler.java
jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/invoker/XmlRpcInvocationHandler.java
jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/factory/reflect/TestAbstractInvocationHandler.java
jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/factory/reflect/TestDelegatingInvocationHandler.java
jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/handler/
jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/interceptor/TestExecutorMethodInterceptor.java
jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/interceptor/TestFilteredMethodInterceptor.java
jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/interceptor/TestLoggingMethodInterceptor.java
jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/interceptor/TestMethodInterceptorChain.java
jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/interceptor/filter/TestPatternMethodFilter.java
jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/interceptor/filter/TestSimpleMethodFilter.java
jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/invoker/TestNullInvocationHandler.java
jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/invoker/TestXmlRpcInvocationHandler.java
jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/util/SuffixMethodInterceptor.java
Modified:
jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/ProxyFactory.java
jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/ProxyUtils.java
jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/cglib/CglibProxyFactory.java
jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/javassist/JavassistProxyFactory.java
jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/reflect/ReflectionProxyFactory.java
jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/util/AbstractProxyFactory.java
jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/factory/AbstractProxyFactoryTestCase.java
jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/factory/AbstractSubclassingProxyFactoryTestCase.java
jakarta/commons/sandbox/proxy/trunk/xdocs/index.xml
Added: jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/Interceptor.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/Interceptor.java?rev=325897&view=auto
==============================================================================
--- jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/Interceptor.java (added)
+++ jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/Interceptor.java Mon Oct 17 07:11:52 2005
@@ -0,0 +1,26 @@
+/* $Id$
+ *
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.commons.proxy;
+
+/**
+ * @author James Carman
+ * @version 1.0
+ */
+public interface Interceptor
+{
+ public Object intercept( Invocation invocation ) throws Throwable;
+}
Propchange: jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/Interceptor.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/Interceptor.java
------------------------------------------------------------------------------
svn:keywords = Id
Added: jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/Invoker.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/Invoker.java?rev=325897&view=auto
==============================================================================
--- jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/Invoker.java (added)
+++ jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/Invoker.java Mon Oct 17 07:11:52 2005
@@ -0,0 +1,28 @@
+/* $Id$
+ *
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.commons.proxy;
+
+import java.lang.reflect.Method;
+
+/**
+ * @author James Carman
+ * @version 1.0
+ */
+public interface Invoker
+{
+ public Object invoke( Object proxy, Method method, Object[] arguments ) throws Throwable;
+}
Propchange: jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/Invoker.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/Invoker.java
------------------------------------------------------------------------------
svn:keywords = Id
Modified: jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/ProxyFactory.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/ProxyFactory.java?rev=325897&r1=325896&r2=325897&view=diff
==============================================================================
--- jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/ProxyFactory.java (original)
+++ jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/ProxyFactory.java Mon Oct 17 07:11:52 2005
@@ -16,12 +16,8 @@
*/
package org.apache.commons.proxy;
-import org.aopalliance.intercept.MethodInterceptor;
-
-import java.lang.reflect.InvocationHandler;
-
/**
- * A <code>ProxyFactory</code> essentially encapsulates a "proxying strategy." All <code>commons-proxy</code> proxies
+ * A <code>ProxyFactory</code> essentially encapsulates a "proxying strategy." All Commons Proxy proxies
* are created using a <code>ProxyFactory</code>. So, to change the proxying strategy, simply provide a different
* <code>ProxyFactory</code> implementation.
*
@@ -56,50 +52,50 @@
Class[] proxyClasses );
/**
- * Creates a proxy which passes through a {@link MethodInterceptor method interceptor} before eventually reaching
+ * Creates a proxy which passes through a {@link Interceptor interceptor} before eventually reaching
* the <code>target</code> object. The proxy will be generated using the current thread's "context class loader."
*
* @param target the target object
* @param interceptor the method interceptor
* @param proxyClasses the interfaces that the proxy should implement
- * @return a proxy which passes through a {@link MethodInterceptor method interceptor} before eventually reaching
+ * @return a proxy which passes through a {@link Interceptor interceptor} before eventually reaching
* the <code>target</code> object.
*/
- public Object createInterceptorProxy( Object target, MethodInterceptor interceptor, Class[] proxyClasses );
+ public Object createInterceptorProxy( Object target, Interceptor interceptor, Class[] proxyClasses );
/**
- * Creates a proxy which passes through a {@link org.aopalliance.intercept.MethodInterceptor method interceptor}
+ * Creates a proxy which passes through a {@link Interceptor interceptor}
* before eventually reaching the <code>target</code> object.
*
* @param classLoader the class loader to use when generating the proxy
* @param target the target object
* @param interceptor the method interceptor
* @param proxyClasses the interfaces that the proxy should implement.
- * @return a proxy which passes through a {@link org.aopalliance.intercept.MethodInterceptor method interceptor}
+ * @return a proxy which passes through a {@link Interceptor interceptor}
* before eventually reaching the <code>target</code> object.
*/
- public Object createInterceptorProxy( ClassLoader classLoader, Object target, MethodInterceptor interceptor,
+ public Object createInterceptorProxy( ClassLoader classLoader, Object target, Interceptor interceptor,
Class[] proxyClasses );
/**
- * Creates a proxy which uses the provided {@link InvocationHandler} to handle all method invocations. The proxy
+ * Creates a proxy which uses the provided {@link Invoker} to handle all method invocations. The proxy
* will be generated using the current thread's "context class loader."
*
- * @param invocationHandler the invocation handler
+ * @param invoker the invoker
* @param proxyClasses the interfaces that the proxy should implement
- * @return a proxy which uses the provided {@link InvocationHandler} to handle all method invocations
+ * @return a proxy which uses the provided {@link Invoker} to handle all method invocations
*/
- public Object createInvocationHandlerProxy( InvocationHandler invocationHandler, Class[] proxyClasses );
+ public Object createInvokerProxy( Invoker invoker, Class[] proxyClasses );
/**
- * Creates a proxy which uses the provided {@link InvocationHandler} to handle all method invocations.
+ * Creates a proxy which uses the provided {@link Invoker} to handle all method invocations.
*
* @param classLoader the class loader to use when generating the proxy
- * @param invocationHandler the invocation handler
+ * @param invoker the invoker
* @param proxyClasses the interfaces that the proxy should implement
- * @return a proxy which uses the provided {@link InvocationHandler} to handle all method invocations
+ * @return a proxy which uses the provided {@link Invoker} to handle all method invocations
*/
- public Object createInvocationHandlerProxy( ClassLoader classLoader, InvocationHandler invocationHandler,
+ public Object createInvokerProxy( ClassLoader classLoader, Invoker invoker,
Class[] proxyClasses );
/**
Modified: jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/ProxyUtils.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/ProxyUtils.java?rev=325897&r1=325896&r2=325897&view=diff
==============================================================================
--- jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/ProxyUtils.java (original)
+++ jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/ProxyUtils.java Mon Oct 17 07:11:52 2005
@@ -17,7 +17,7 @@
package org.apache.commons.proxy;
import org.apache.commons.proxy.exception.ProxyFactoryException;
-import org.apache.commons.proxy.handler.NullInvocationHandler;
+import org.apache.commons.proxy.invoker.NullInvoker;
import java.util.ArrayList;
import java.util.Iterator;
@@ -50,7 +50,7 @@
*/
public static Object createNullObject( ProxyFactory proxyFactory, Class[] proxyClasses )
{
- return proxyFactory.createInvocationHandlerProxy( new NullInvocationHandler(), proxyClasses );
+ return proxyFactory.createInvokerProxy( new NullInvoker(), proxyClasses );
}
/**
@@ -63,7 +63,7 @@
*/
public static Object createNullObject( ProxyFactory proxyFactory, ClassLoader classLoader, Class[] proxyClasses )
{
- return proxyFactory.createInvocationHandlerProxy( classLoader, new NullInvocationHandler(), proxyClasses );
+ return proxyFactory.createInvokerProxy( classLoader, new NullInvoker(), proxyClasses );
}
/**
Modified: jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/cglib/CglibProxyFactory.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/cglib/CglibProxyFactory.java?rev=325897&r1=325896&r2=325897&view=diff
==============================================================================
--- jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/cglib/CglibProxyFactory.java (original)
+++ jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/cglib/CglibProxyFactory.java Mon Oct 17 07:11:52 2005
@@ -19,14 +19,14 @@
import net.sf.cglib.proxy.Dispatcher;
import net.sf.cglib.proxy.Enhancer;
import net.sf.cglib.proxy.MethodProxy;
-import org.aopalliance.intercept.MethodInterceptor;
-import org.aopalliance.intercept.MethodInvocation;
+import org.apache.commons.proxy.Invocation;
+import org.apache.commons.proxy.Interceptor;
+import org.apache.commons.proxy.Invoker;
import org.apache.commons.proxy.ObjectProvider;
import org.apache.commons.proxy.ProxyUtils;
import org.apache.commons.proxy.factory.util.AbstractSubclassingProxyFactory;
import java.lang.reflect.AccessibleObject;
-import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
/**
@@ -53,7 +53,7 @@
return enhancer.create();
}
- public Object createInterceptorProxy( ClassLoader classLoader, Object target, MethodInterceptor interceptor,
+ public Object createInterceptorProxy( ClassLoader classLoader, Object target, Interceptor interceptor,
Class[] proxyClasses )
{
final Enhancer enhancer = new Enhancer();
@@ -64,14 +64,14 @@
return enhancer.create();
}
- public Object createInvocationHandlerProxy( ClassLoader classLoader, InvocationHandler invocationHandler,
+ public Object createInvokerProxy( ClassLoader classLoader, Invoker invoker,
Class[] proxyClasses )
{
final Enhancer enhancer = new Enhancer();
enhancer.setClassLoader( classLoader );
enhancer.setInterfaces( toInterfaces( proxyClasses ) );
enhancer.setSuperclass( getSuperclass( proxyClasses ) );
- enhancer.setCallback( new InvocationHandlerBridge( invocationHandler ) );
+ enhancer.setCallback( new InvokerBridge( invoker ) );
return enhancer.create();
}
@@ -79,11 +79,11 @@
// Inner Classes
//----------------------------------------------------------------------------------------------------------------------
- private class InvocationHandlerBridge implements net.sf.cglib.proxy.InvocationHandler
+ private class InvokerBridge implements net.sf.cglib.proxy.InvocationHandler
{
- private final InvocationHandler original;
+ private final Invoker original;
- public InvocationHandlerBridge( InvocationHandler original )
+ public InvokerBridge( Invoker original )
{
this.original = original;
}
@@ -96,10 +96,10 @@
private class InterceptorBridge implements net.sf.cglib.proxy.MethodInterceptor
{
- private final MethodInterceptor inner;
+ private final Interceptor inner;
private final Object target;
- public InterceptorBridge( Object target, MethodInterceptor inner )
+ public InterceptorBridge( Object target, Interceptor inner )
{
this.inner = inner;
this.target = target;
@@ -107,18 +107,18 @@
public Object intercept( Object object, Method method, Object[] args, MethodProxy methodProxy ) throws Throwable
{
- return inner.invoke( new MethodProxyMethodInvocation( target, method, args, methodProxy ) );
+ return inner.intercept( new MethodProxyInvocation( target, method, args, methodProxy ) );
}
}
- private class MethodProxyMethodInvocation implements MethodInvocation
+ private class MethodProxyInvocation implements Invocation
{
private final MethodProxy methodProxy;
private final Method method;
private final Object[] args;
private final Object target;
- public MethodProxyMethodInvocation( Object target, Method method, Object[] args, MethodProxy methodProxy )
+ public MethodProxyInvocation( Object target, Method method, Object[] args, MethodProxy methodProxy )
{
this.target = target;
this.method = method;
@@ -141,7 +141,7 @@
return methodProxy.invoke( target, args );
}
- public Object getThis()
+ public Object getProxy()
{
return target;
}
Copied: jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/javassist/JavassistInvocation.java (from r321332, jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/javassist/JavassistMethodInvocation.java)
URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/javassist/JavassistInvocation.java?p2=jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/javassist/JavassistInvocation.java&p1=jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/javassist/JavassistMethodInvocation.java&r1=321332&r2=325897&rev=325897&view=diff
==============================================================================
--- jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/javassist/JavassistMethodInvocation.java (original)
+++ jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/javassist/JavassistInvocation.java Mon Oct 17 07:11:52 2005
@@ -20,11 +20,10 @@
import javassist.CtClass;
import javassist.CtConstructor;
import javassist.CtMethod;
-import org.aopalliance.intercept.MethodInvocation;
+import org.apache.commons.proxy.Invocation;
import org.apache.commons.proxy.ProxyUtils;
import java.lang.ref.WeakReference;
-import java.lang.reflect.AccessibleObject;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;
@@ -34,7 +33,7 @@
* @author James Carman
* @version 1.0
*/
-public abstract class JavassistMethodInvocation implements MethodInvocation
+public abstract class JavassistInvocation implements Invocation
{
//----------------------------------------------------------------------------------------------------------------------
// Fields
@@ -49,56 +48,6 @@
// Static Methods
//----------------------------------------------------------------------------------------------------------------------
- public synchronized static Class getMethodInvocationClass( ClassLoader classLoader, Method interfaceMethod )
- throws CannotCompileException
- {
- final Map classCache = getClassCache( classLoader );
- final String key = toClassCacheKey( interfaceMethod );
- final WeakReference invocationClassRef = ( WeakReference )classCache.get( key );
- Class invocationClass;
- if( invocationClassRef == null )
- {
- invocationClass = createInvocationClass( classLoader, interfaceMethod );
- classCache.put( key, new WeakReference( invocationClass ) );
- }
- else
- {
- synchronized( invocationClassRef )
- {
- invocationClass = ( Class )invocationClassRef.get();
- if( invocationClass == null )
- {
- invocationClass = createInvocationClass( classLoader, interfaceMethod );
- classCache.put( key, new WeakReference( invocationClass ) );
- }
- }
- }
- return invocationClass;
- }
-
- private static Map getClassCache( ClassLoader classLoader )
- {
- Map cache = ( Map )loaderToClassCache.get( classLoader );
- if( cache == null )
- {
- cache = new HashMap();
- loaderToClassCache.put( classLoader, cache );
- }
- return cache;
- }
-
- private static String toClassCacheKey( Method method )
- {
- return String.valueOf( method );
- }
-
- private static String getSimpleName( Class c )
- {
- final String name = c.getName();
- final int ndx = name.lastIndexOf( '.' );
- return ndx == -1 ? name : name.substring( ndx + 1 );
- }
-
private static Class createInvocationClass( ClassLoader classLoader, Method interfaceMethod )
throws CannotCompileException
{
@@ -106,7 +55,7 @@
final CtClass ctClass = JavassistUtils.createClass(
getSimpleName( interfaceMethod.getDeclaringClass() ) + "_" + interfaceMethod.getName() +
"_invocation",
- JavassistMethodInvocation.class );
+ JavassistInvocation.class );
final CtConstructor constructor = new CtConstructor(
JavassistUtils.resolve( new Class[]{Method.class, Object.class, Object[].class} ), ctClass );
constructor.setBody( "{\n\tsuper($$);\n}" );
@@ -152,11 +101,61 @@
return invocationClass;
}
+ private static Map getClassCache( ClassLoader classLoader )
+ {
+ Map cache = ( Map )loaderToClassCache.get( classLoader );
+ if( cache == null )
+ {
+ cache = new HashMap();
+ loaderToClassCache.put( classLoader, cache );
+ }
+ return cache;
+ }
+
+ public synchronized static Class getMethodInvocationClass( ClassLoader classLoader, Method interfaceMethod )
+ throws CannotCompileException
+ {
+ final Map classCache = getClassCache( classLoader );
+ final String key = toClassCacheKey( interfaceMethod );
+ final WeakReference invocationClassRef = ( WeakReference )classCache.get( key );
+ Class invocationClass;
+ if( invocationClassRef == null )
+ {
+ invocationClass = createInvocationClass( classLoader, interfaceMethod );
+ classCache.put( key, new WeakReference( invocationClass ) );
+ }
+ else
+ {
+ synchronized( invocationClassRef )
+ {
+ invocationClass = ( Class )invocationClassRef.get();
+ if( invocationClass == null )
+ {
+ invocationClass = createInvocationClass( classLoader, interfaceMethod );
+ classCache.put( key, new WeakReference( invocationClass ) );
+ }
+ }
+ }
+ return invocationClass;
+ }
+
+ private static String getSimpleName( Class c )
+ {
+ final String name = c.getName();
+ final int ndx = name.lastIndexOf( '.' );
+ return ndx == -1 ? name : name.substring( ndx + 1 );
+ }
+
+ private static String toClassCacheKey( Method method )
+ {
+ return String.valueOf( method );
+ }
+
//----------------------------------------------------------------------------------------------------------------------
// Constructors
//----------------------------------------------------------------------------------------------------------------------
- public JavassistMethodInvocation( Method method, Object target, Object[] arguments )
+ public JavassistInvocation( Method method, Object target, Object[] arguments )
{
this.method = method;
this.target = target;
@@ -172,27 +171,14 @@
return arguments;
}
-//----------------------------------------------------------------------------------------------------------------------
-// Joinpoint Implementation
-//----------------------------------------------------------------------------------------------------------------------
-
- public AccessibleObject getStaticPart()
+ public Method getMethod()
{
return method;
}
- public Object getThis()
+ public Object getProxy()
{
return target;
- }
-
-//----------------------------------------------------------------------------------------------------------------------
-// MethodInvocation Implementation
-//----------------------------------------------------------------------------------------------------------------------
-
- public Method getMethod()
- {
- return method;
}
}
Propchange: jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/javassist/JavassistInvocation.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/javassist/JavassistInvocation.java
------------------------------------------------------------------------------
svn:keywords = Id
Modified: jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/javassist/JavassistProxyFactory.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/javassist/JavassistProxyFactory.java?rev=325897&r1=325896&r2=325897&view=diff
==============================================================================
--- jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/javassist/JavassistProxyFactory.java (original)
+++ jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/javassist/JavassistProxyFactory.java Mon Oct 17 07:11:52 2005
@@ -20,14 +20,14 @@
import javassist.CtClass;
import javassist.CtConstructor;
import javassist.CtMethod;
-import org.aopalliance.intercept.MethodInterceptor;
+import org.apache.commons.proxy.Interceptor;
+import org.apache.commons.proxy.Invoker;
import org.apache.commons.proxy.ObjectProvider;
import org.apache.commons.proxy.exception.ProxyFactoryException;
import org.apache.commons.proxy.factory.util.AbstractProxyClassGenerator;
import org.apache.commons.proxy.factory.util.AbstractSubclassingProxyFactory;
import org.apache.commons.proxy.factory.util.ProxyClassCache;
-import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
/**
@@ -44,10 +44,10 @@
//----------------------------------------------------------------------------------------------------------------------
private static final ProxyClassCache delegatingProxyClassCache = new ProxyClassCache(
new DelegatingProxyClassGenerator() );
- private static final ProxyClassCache interceptingProxyClassCache = new ProxyClassCache(
- new InterceptingProxyClassGenerator() );
+ private static final ProxyClassCache interceptorProxyClassCache = new ProxyClassCache(
+ new InterceptorProxyClassGenerator() );
private static final ProxyClassCache invocationHandlerProxyClassCache = new ProxyClassCache(
- new InvocationHandlerProxyClassGenerator() );
+ new InvokerProxyClassGenerator() );
//----------------------------------------------------------------------------------------------------------------------
// ProxyFactory Implementation
@@ -68,14 +68,14 @@
}
}
- public Object createInterceptorProxy( ClassLoader classLoader, Object target, MethodInterceptor interceptor,
+ public Object createInterceptorProxy( ClassLoader classLoader, Object target, Interceptor interceptor,
Class[] proxyClasses )
{
try
{
- final Class clazz = interceptingProxyClassCache.getProxyClass( classLoader, proxyClasses );
+ final Class clazz = interceptorProxyClassCache.getProxyClass( classLoader, proxyClasses );
final Method[] methods = AbstractProxyClassGenerator.getImplementationMethods( proxyClasses );
- return clazz.getConstructor( new Class[]{ Method[].class, Object.class, MethodInterceptor.class } )
+ return clazz.getConstructor( new Class[]{ Method[].class, Object.class, Interceptor.class } )
.newInstance( new Object[]{ methods, target, interceptor } );
}
catch( Exception e )
@@ -84,15 +84,15 @@
}
}
- public Object createInvocationHandlerProxy( ClassLoader classLoader, InvocationHandler invocationHandler,
+ public Object createInvokerProxy( ClassLoader classLoader, Invoker invoker,
Class[] proxyClasses )
{
try
{
final Class clazz = invocationHandlerProxyClassCache.getProxyClass( classLoader, proxyClasses );
final Method[] methods = AbstractProxyClassGenerator.getImplementationMethods( proxyClasses );
- return clazz.getConstructor( new Class[]{ Method[].class, InvocationHandler.class } )
- .newInstance( new Object[]{ methods, invocationHandler } );
+ return clazz.getConstructor( new Class[]{ Method[].class, Invoker.class } )
+ .newInstance( new Object[]{ methods, invoker } );
}
catch( Exception e )
{
@@ -104,7 +104,7 @@
// Inner Classes
//----------------------------------------------------------------------------------------------------------------------
- private static class InvocationHandlerProxyClassGenerator extends AbstractProxyClassGenerator
+ private static class InvokerProxyClassGenerator extends AbstractProxyClassGenerator
{
public Class generateProxyClass( ClassLoader classLoader, Class[] proxyClasses )
{
@@ -114,13 +114,13 @@
final Method[] methods = getImplementationMethods( proxyClasses );
JavassistUtils.addInterfaces( proxyClass, toInterfaces( proxyClasses ) );
JavassistUtils.addField( Method[].class, "methods", proxyClass );
- JavassistUtils.addField( InvocationHandler.class, "invocationHandler", proxyClass );
+ JavassistUtils.addField( Invoker.class, "invoker", proxyClass );
final CtConstructor proxyConstructor = new CtConstructor(
JavassistUtils.resolve(
- new Class[]{ Method[].class, InvocationHandler.class } ),
+ new Class[]{ Method[].class, Invoker.class } ),
proxyClass );
proxyConstructor
- .setBody( "{\n\tthis.methods = $1;\n\tthis.invocationHandler = $2; }" );
+ .setBody( "{\n\tthis.methods = $1;\n\tthis.invoker = $2; }" );
proxyClass.addConstructor( proxyConstructor );
for( int i = 0; i < methods.length; ++i )
{
@@ -128,7 +128,7 @@
methods[i].getName(),
JavassistUtils.resolve( methods[i].getParameterTypes() ),
proxyClass );
- final String body = "{\n\t return ( $r ) invocationHandler.invoke( this, methods[" + i +
+ final String body = "{\n\t return ( $r ) invoker.invoke( this, methods[" + i +
"], $args );\n }";
method.setBody( body );
proxyClass.addMethod( method );
@@ -142,7 +142,7 @@
}
}
- private static class InterceptingProxyClassGenerator extends AbstractProxyClassGenerator
+ private static class InterceptorProxyClassGenerator extends AbstractProxyClassGenerator
{
public Class generateProxyClass( ClassLoader classLoader, Class[] proxyClasses )
{
@@ -153,10 +153,10 @@
JavassistUtils.addInterfaces( proxyClass, toInterfaces( proxyClasses ) );
JavassistUtils.addField( Method[].class, "methods", proxyClass );
JavassistUtils.addField( Object.class, "target", proxyClass );
- JavassistUtils.addField( MethodInterceptor.class, "interceptor", proxyClass );
+ JavassistUtils.addField( Interceptor.class, "interceptor", proxyClass );
final CtConstructor proxyConstructor = new CtConstructor(
JavassistUtils.resolve(
- new Class[]{ Method[].class, Object.class, MethodInterceptor.class } ),
+ new Class[]{ Method[].class, Object.class, Interceptor.class } ),
proxyClass );
proxyConstructor
.setBody( "{\n\tthis.methods = $1;\n\tthis.target = $2;\n\tthis.interceptor = $3; }" );
@@ -167,9 +167,9 @@
methods[i].getName(),
JavassistUtils.resolve( methods[i].getParameterTypes() ),
proxyClass );
- final Class invocationClass = JavassistMethodInvocation
+ final Class invocationClass = JavassistInvocation
.getMethodInvocationClass( classLoader, methods[i] );
- final String body = "{\n\t return ( $r ) interceptor.invoke( new " + invocationClass.getName() +
+ final String body = "{\n\t return ( $r ) interceptor.intercept( new " + invocationClass.getName() +
"( methods[" + i + "], target, $args ) );\n }";
method.setBody( body );
proxyClass.addMethod( method );
Copied: jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/reflect/DelegatorInvocationHandler.java (from r321183, jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/reflect/DelegatingInvocationHandler.java)
URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/reflect/DelegatorInvocationHandler.java?p2=jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/reflect/DelegatorInvocationHandler.java&p1=jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/reflect/DelegatingInvocationHandler.java&r1=321183&r2=325897&rev=325897&view=diff
==============================================================================
--- jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/reflect/DelegatingInvocationHandler.java (original)
+++ jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/reflect/DelegatorInvocationHandler.java Mon Oct 17 07:11:52 2005
@@ -16,24 +16,34 @@
*/
package org.apache.commons.proxy.factory.reflect;
-import org.apache.commons.proxy.ProxyUtils;
+import org.apache.commons.proxy.ObjectProvider;
+import java.lang.reflect.InvocationHandler;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
/**
- * An invocation handler which delegates to another object.
+ * An invocation handler which delegates to an object provided by an {@link ObjectProvider}.
*
* @author James Carman
* @version 1.0
*/
-public abstract class DelegatingInvocationHandler extends AbstractInvocationHandler
+class DelegatorInvocationHandler implements InvocationHandler
{
//----------------------------------------------------------------------------------------------------------------------
-// Abstract Methods
+// Fields
//----------------------------------------------------------------------------------------------------------------------
- protected abstract Object getDelegate();
+ private final ObjectProvider delegateProvider;
+
+//----------------------------------------------------------------------------------------------------------------------
+// Constructors
+//----------------------------------------------------------------------------------------------------------------------
+
+ protected DelegatorInvocationHandler( ObjectProvider delegateProvider )
+ {
+ this.delegateProvider = delegateProvider;
+ }
//----------------------------------------------------------------------------------------------------------------------
// InvocationHandler Implementation
@@ -43,38 +53,12 @@
{
try
{
- return method.invoke( getDelegate(), args );
+ return method.invoke( delegateProvider.getObject(), args );
}
catch( InvocationTargetException e )
{
throw e.getTargetException();
}
- }
-
-//----------------------------------------------------------------------------------------------------------------------
-// Other Methods
-//----------------------------------------------------------------------------------------------------------------------
-
- /**
- * A simplified proxy creation method which merely creates a proxy which supports all the interfaces implemented by
- * the delegate.
- *
- * @return a proxy which supports all the interfaces implemented by the delegate
- */
- public Object createProxy()
- {
- return createProxy( ProxyUtils.getAllInterfaces( getDelegate().getClass() ) );
- }
-
- /**
- * A simplified proxy creation method which merely creates a proxy which supports all the interfaces implemented by
- * the delegate, using the specified class loader.
- *
- * @return a proxy which supports all the interfaces implemented by the delegate, using the specified class loader.
- */
- public Object createProxy( ClassLoader classLoader )
- {
- return createProxy( classLoader, ProxyUtils.getAllInterfaces( getDelegate().getClass() ) );
}
}
Propchange: jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/reflect/DelegatorInvocationHandler.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/reflect/DelegatorInvocationHandler.java
------------------------------------------------------------------------------
svn:keywords = Id
Copied: jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/reflect/InterceptorInvocationHandler.java (from r321183, jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/reflect/MethodInterceptorInvocationHandler.java)
URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/reflect/InterceptorInvocationHandler.java?p2=jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/reflect/InterceptorInvocationHandler.java&p1=jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/reflect/MethodInterceptorInvocationHandler.java&r1=321183&r2=325897&rev=325897&view=diff
==============================================================================
--- jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/reflect/MethodInterceptorInvocationHandler.java (original)
+++ jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/reflect/InterceptorInvocationHandler.java Mon Oct 17 07:11:52 2005
@@ -16,30 +16,31 @@
*/
package org.apache.commons.proxy.factory.reflect;
-import org.aopalliance.intercept.MethodInterceptor;
+import org.apache.commons.proxy.Interceptor;
import java.lang.reflect.Method;
+import java.lang.reflect.InvocationHandler;
/**
- * An invocation handler that passes through a <code>MethodInterceptor</code>.
+ * An invocation invoker that passes through a {@link Interceptor}.
*
* @author James Carman
* @version 1.0
*/
-public class MethodInterceptorInvocationHandler extends AbstractInvocationHandler
+class InterceptorInvocationHandler implements InvocationHandler
{
//----------------------------------------------------------------------------------------------------------------------
// Fields
//----------------------------------------------------------------------------------------------------------------------
private final Object target;
- private final MethodInterceptor methodInterceptor;
+ private final Interceptor methodInterceptor;
//----------------------------------------------------------------------------------------------------------------------
// Constructors
//----------------------------------------------------------------------------------------------------------------------
- public MethodInterceptorInvocationHandler( Object target, MethodInterceptor methodInterceptor )
+ public InterceptorInvocationHandler( Object target, Interceptor methodInterceptor )
{
this.target = target;
this.methodInterceptor = methodInterceptor;
@@ -51,8 +52,8 @@
public Object invoke( Object proxy, Method method, Object[] args ) throws Throwable
{
- final ReflectionMethodInvocation invocation = new ReflectionMethodInvocation( target, method, args );
- return methodInterceptor.invoke( invocation );
+ final ReflectionInvocation invocation = new ReflectionInvocation( target, method, args );
+ return methodInterceptor.intercept( invocation );
}
}
Propchange: jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/reflect/InterceptorInvocationHandler.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/reflect/InterceptorInvocationHandler.java
------------------------------------------------------------------------------
svn:keywords = Id
Added: jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/reflect/InvokerInvocationHandler.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/reflect/InvokerInvocationHandler.java?rev=325897&view=auto
==============================================================================
--- jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/reflect/InvokerInvocationHandler.java (added)
+++ jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/reflect/InvokerInvocationHandler.java Mon Oct 17 07:11:52 2005
@@ -0,0 +1,58 @@
+/* $Id$
+ *
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.commons.proxy.factory.reflect;
+
+import org.apache.commons.proxy.Invoker;
+
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Method;
+
+/**
+ * Adaptor class to adapt the commons-proxy {@link Invoker} interface to the
+ * {@link InvocationHandler} interface.
+ *
+ * @author James Carman
+ * @version 1.0
+ */
+class InvokerInvocationHandler implements InvocationHandler
+{
+//----------------------------------------------------------------------------------------------------------------------
+// Fields
+//----------------------------------------------------------------------------------------------------------------------
+
+ private final Invoker invoker;
+
+//----------------------------------------------------------------------------------------------------------------------
+// Constructors
+//----------------------------------------------------------------------------------------------------------------------
+
+ public InvokerInvocationHandler( Invoker invoker )
+ {
+ this.invoker = invoker;
+ }
+
+//----------------------------------------------------------------------------------------------------------------------
+// InvocationHandler Implementation
+//----------------------------------------------------------------------------------------------------------------------
+
+
+ public Object invoke( Object proxy, Method method, Object[] args ) throws Throwable
+ {
+ return invoker.invoke( proxy, method, args );
+ }
+}
+
Propchange: jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/reflect/InvokerInvocationHandler.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/reflect/InvokerInvocationHandler.java
------------------------------------------------------------------------------
svn:keywords = Id
Copied: jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/reflect/ReflectionInvocation.java (from r321183, jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/reflect/ReflectionMethodInvocation.java)
URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/reflect/ReflectionInvocation.java?p2=jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/reflect/ReflectionInvocation.java&p1=jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/reflect/ReflectionMethodInvocation.java&r1=321183&r2=325897&rev=325897&view=diff
==============================================================================
--- jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/reflect/ReflectionMethodInvocation.java (original)
+++ jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/reflect/ReflectionInvocation.java Mon Oct 17 07:11:52 2005
@@ -16,20 +16,19 @@
*/
package org.apache.commons.proxy.factory.reflect;
-import org.aopalliance.intercept.MethodInvocation;
+import org.apache.commons.proxy.Invocation;
import org.apache.commons.proxy.ProxyUtils;
-import java.lang.reflect.AccessibleObject;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
/**
- * A reflection-based implementation of the <code>MethodInvocation</code> interface.
+ * A reflection-based implementation of the {@link Invocation} interface.
*
* @author James Carman
* @version 1.0
*/
-class ReflectionMethodInvocation implements MethodInvocation
+class ReflectionInvocation implements Invocation
{
//----------------------------------------------------------------------------------------------------------------------
// Fields
@@ -43,7 +42,7 @@
// Constructors
//----------------------------------------------------------------------------------------------------------------------
- public ReflectionMethodInvocation( Object target, Method method, Object[] arguments )
+ public ReflectionInvocation( Object target, Method method, Object[] arguments )
{
this.method = method;
this.arguments = ( arguments == null ? ProxyUtils.EMPTY_ARGUMENTS : arguments );
@@ -54,21 +53,18 @@
// Invocation Implementation
//----------------------------------------------------------------------------------------------------------------------
+
public Object[] getArguments()
{
return arguments;
}
-//----------------------------------------------------------------------------------------------------------------------
-// Joinpoint Implementation
-//----------------------------------------------------------------------------------------------------------------------
-
- public AccessibleObject getStaticPart()
+ public Method getMethod()
{
return method;
}
- public Object getThis()
+ public Object getProxy()
{
return target;
}
@@ -83,15 +79,6 @@
{
throw e.getTargetException();
}
- }
-
-//----------------------------------------------------------------------------------------------------------------------
-// MethodInvocation Implementation
-//----------------------------------------------------------------------------------------------------------------------
-
- public Method getMethod()
- {
- return method;
}
}
Propchange: jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/reflect/ReflectionInvocation.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/reflect/ReflectionInvocation.java
------------------------------------------------------------------------------
svn:keywords = Id
Modified: jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/reflect/ReflectionProxyFactory.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/reflect/ReflectionProxyFactory.java?rev=325897&r1=325896&r2=325897&view=diff
==============================================================================
--- jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/reflect/ReflectionProxyFactory.java (original)
+++ jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/reflect/ReflectionProxyFactory.java Mon Oct 17 07:11:52 2005
@@ -16,11 +16,11 @@
*/
package org.apache.commons.proxy.factory.reflect;
-import org.aopalliance.intercept.MethodInterceptor;
+import org.apache.commons.proxy.Interceptor;
+import org.apache.commons.proxy.Invoker;
import org.apache.commons.proxy.ObjectProvider;
import org.apache.commons.proxy.factory.util.AbstractProxyFactory;
-import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Proxy;
/**
@@ -39,20 +39,20 @@
Class[] proxyClasses )
{
return Proxy.newProxyInstance( classLoader, proxyClasses,
- new DelegateProviderInvocationHandler( targetProvider ) );
+ new DelegatorInvocationHandler( targetProvider ) );
}
- public Object createInterceptorProxy( ClassLoader classLoader, Object target, MethodInterceptor interceptor,
+ public Object createInterceptorProxy( ClassLoader classLoader, Object target, Interceptor interceptor,
Class[] proxyClasses )
{
- return new MethodInterceptorInvocationHandler( target, interceptor )
- .createProxy( classLoader, proxyClasses );
+ return Proxy
+ .newProxyInstance( classLoader, proxyClasses, new InterceptorInvocationHandler( target, interceptor ) );
}
- public Object createInvocationHandlerProxy( ClassLoader classLoader, InvocationHandler invocationHandler,
- Class[] proxyClasses )
+ public Object createInvokerProxy( ClassLoader classLoader, Invoker invoker,
+ Class[] proxyClasses )
{
- return Proxy.newProxyInstance( classLoader, proxyClasses, invocationHandler );
+ return Proxy.newProxyInstance( classLoader, proxyClasses, new InvokerInvocationHandler( invoker ) );
}
}
Modified: jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/util/AbstractProxyFactory.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/util/AbstractProxyFactory.java?rev=325897&r1=325896&r2=325897&view=diff
==============================================================================
--- jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/util/AbstractProxyFactory.java (original)
+++ jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/util/AbstractProxyFactory.java Mon Oct 17 07:11:52 2005
@@ -16,12 +16,11 @@
*/
package org.apache.commons.proxy.factory.util;
-import org.aopalliance.intercept.MethodInterceptor;
+import org.apache.commons.proxy.Interceptor;
+import org.apache.commons.proxy.Invoker;
import org.apache.commons.proxy.ObjectProvider;
import org.apache.commons.proxy.ProxyFactory;
-import java.lang.reflect.InvocationHandler;
-
/**
* A helpful superclass for {@link org.apache.commons.proxy.ProxyFactory} implementations.
*
@@ -58,16 +57,16 @@
return createDelegatorProxy( Thread.currentThread().getContextClassLoader(), targetProvider, proxyClasses );
}
- public final Object createInterceptorProxy( Object target, MethodInterceptor interceptor,
+ public final Object createInterceptorProxy( Object target, Interceptor interceptor,
Class[] proxyClasses )
{
return createInterceptorProxy( Thread.currentThread().getContextClassLoader(), target, interceptor,
proxyClasses );
}
- public final Object createInvocationHandlerProxy( InvocationHandler invocationHandler, Class[] proxyClasses )
+ public final Object createInvokerProxy( Invoker invocationHandler, Class[] proxyClasses )
{
- return createInvocationHandlerProxy( Thread.currentThread().getContextClassLoader(), invocationHandler,
+ return createInvokerProxy( Thread.currentThread().getContextClassLoader(), invocationHandler,
proxyClasses );
}
}
Copied: jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/ExecutorInterceptor.java (from r321183, jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/ExecutorMethodInterceptor.java)
URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/ExecutorInterceptor.java?p2=jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/ExecutorInterceptor.java&p1=jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/ExecutorMethodInterceptor.java&r1=321183&r2=325897&rev=325897&view=diff
==============================================================================
--- jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/ExecutorMethodInterceptor.java (original)
+++ jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/ExecutorInterceptor.java Mon Oct 17 07:11:52 2005
@@ -17,36 +17,36 @@
package org.apache.commons.proxy.interceptor;
import EDU.oswego.cs.dl.util.concurrent.Executor;
-import org.aopalliance.intercept.MethodInterceptor;
-import org.aopalliance.intercept.MethodInvocation;
+import org.apache.commons.proxy.Invocation;
+import org.apache.commons.proxy.Interceptor;
/**
* A method interceptor that uses an {@link Executor} to execute the method invocation.
* <p/>
* <b>Note</b>: Only <em>void</em> methods can be intercepted using this class! Any attempts to intercept non-void
* methods will result in an {@link IllegalArgumentException}. If the proxy interfaces include non-void methods, try
- * using a {@link FilteredMethodInterceptor} along with a
+ * using a {@link FilteredInterceptor} along with a
* {@link org.apache.commons.proxy.interceptor.filter.ReturnTypeFilter} to wrap an instance of this class.
*
* @author James Carman
* @version 1.0
*/
-public class ExecutorMethodInterceptor implements MethodInterceptor
+public class ExecutorInterceptor implements Interceptor
{
private final Executor executor;
- public ExecutorMethodInterceptor( Executor executor )
+ public ExecutorInterceptor( Executor executor )
{
this.executor = executor;
}
- public Object invoke( final MethodInvocation methodInvocation ) throws Throwable
+ public Object intercept( final Invocation invocation ) throws Throwable
{
- if( Void.TYPE.equals( methodInvocation.getMethod().getReturnType() ) )
+ if( Void.TYPE.equals( invocation.getMethod().getReturnType() ) )
{
// Special case for finalize() method (should not be run in a different thread)...
- if( !( methodInvocation.getMethod().getName().equals( "finalize" ) &&
- methodInvocation.getMethod().getParameterTypes().length == 0 ) )
+ if( !( invocation.getMethod().getName().equals( "finalize" ) &&
+ invocation.getMethod().getParameterTypes().length == 0 ) )
{
executor.execute( new Runnable()
{
@@ -54,7 +54,7 @@
{
try
{
- methodInvocation.proceed();
+ invocation.proceed();
}
catch( Throwable t )
{
@@ -66,7 +66,7 @@
}
else
{
- return methodInvocation.proceed();
+ return invocation.proceed();
}
}
else
Propchange: jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/ExecutorInterceptor.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/ExecutorInterceptor.java
------------------------------------------------------------------------------
svn:keywords = Id
Copied: jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/FilteredInterceptor.java (from r321183, jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/FilteredMethodInterceptor.java)
URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/FilteredInterceptor.java?p2=jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/FilteredInterceptor.java&p1=jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/FilteredMethodInterceptor.java&r1=321183&r2=325897&rev=325897&view=diff
==============================================================================
--- jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/FilteredMethodInterceptor.java (original)
+++ jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/FilteredInterceptor.java Mon Oct 17 07:11:52 2005
@@ -16,8 +16,8 @@
*/
package org.apache.commons.proxy.interceptor;
-import org.aopalliance.intercept.MethodInterceptor;
-import org.aopalliance.intercept.MethodInvocation;
+import org.apache.commons.proxy.Invocation;
+import org.apache.commons.proxy.Interceptor;
/**
* Decorates another <code>MethodInterceptor</code> by only calling it if the method is accepted by the supplied
@@ -26,20 +26,20 @@
* @author James Carman
* @version 1.0
*/
-public class FilteredMethodInterceptor implements MethodInterceptor
+public class FilteredInterceptor implements Interceptor
{
//----------------------------------------------------------------------------------------------------------------------
// Fields
//----------------------------------------------------------------------------------------------------------------------
- private final MethodInterceptor inner;
+ private final Interceptor inner;
private final MethodFilter filter;
//----------------------------------------------------------------------------------------------------------------------
// Constructors
//----------------------------------------------------------------------------------------------------------------------
- public FilteredMethodInterceptor( MethodInterceptor inner, MethodFilter filter )
+ public FilteredInterceptor( Interceptor inner, MethodFilter filter )
{
this.inner = inner;
this.filter = filter;
@@ -49,15 +49,15 @@
// MethodInterceptor Implementation
//----------------------------------------------------------------------------------------------------------------------
- public Object invoke( MethodInvocation methodInvocation ) throws Throwable
+ public Object intercept( Invocation invocation ) throws Throwable
{
- if( filter.accepts( methodInvocation.getMethod() ) )
+ if( filter.accepts( invocation.getMethod() ) )
{
- return inner.invoke( methodInvocation );
+ return inner.intercept( invocation );
}
else
{
- return methodInvocation.proceed();
+ return invocation.proceed();
}
}
}
Propchange: jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/FilteredInterceptor.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/FilteredInterceptor.java
------------------------------------------------------------------------------
svn:keywords = Id
Copied: jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/InterceptorChain.java (from r321183, jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/MethodInterceptorChain.java)
URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/InterceptorChain.java?p2=jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/InterceptorChain.java&p1=jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/MethodInterceptorChain.java&r1=321183&r2=325897&rev=325897&view=diff
==============================================================================
--- jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/MethodInterceptorChain.java (original)
+++ jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/InterceptorChain.java Mon Oct 17 07:11:52 2005
@@ -16,10 +16,10 @@
*/
package org.apache.commons.proxy.interceptor;
-import org.aopalliance.intercept.MethodInterceptor;
import org.apache.commons.proxy.ObjectProvider;
import org.apache.commons.proxy.ProxyFactory;
import org.apache.commons.proxy.ProxyUtils;
+import org.apache.commons.proxy.Interceptor;
/**
* A <code>MethodInterceptorChain</code> assists with creating proxies which go through a series of
@@ -28,18 +28,18 @@
* @author James Carman
* @version 1.0
*/
-public class MethodInterceptorChain
+public class InterceptorChain
{
//----------------------------------------------------------------------------------------------------------------------
// Fields
//----------------------------------------------------------------------------------------------------------------------
- private final MethodInterceptor[] interceptors;
+ private final Interceptor[] interceptors;
//----------------------------------------------------------------------------------------------------------------------
// Constructors
//----------------------------------------------------------------------------------------------------------------------
- public MethodInterceptorChain( MethodInterceptor[] interceptors )
+ public InterceptorChain( Interceptor[] interceptors )
{
this.interceptors = interceptors;
}
Propchange: jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/InterceptorChain.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/InterceptorChain.java
------------------------------------------------------------------------------
svn:keywords = Id
Copied: jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/LoggingInterceptor.java (from r321332, jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/LoggingMethodInterceptor.java)
URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/LoggingInterceptor.java?p2=jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/LoggingInterceptor.java&p1=jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/LoggingMethodInterceptor.java&r1=321332&r2=325897&rev=325897&view=diff
==============================================================================
--- jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/LoggingMethodInterceptor.java (original)
+++ jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/LoggingInterceptor.java Mon Oct 17 07:11:52 2005
@@ -16,10 +16,10 @@
*/
package org.apache.commons.proxy.interceptor;
-import org.aopalliance.intercept.MethodInterceptor;
-import org.aopalliance.intercept.MethodInvocation;
import org.apache.commons.logging.Log;
import org.apache.commons.proxy.ProxyUtils;
+import org.apache.commons.proxy.Interceptor;
+import org.apache.commons.proxy.Invocation;
/**
* An interceptor which logs each method invocation.
@@ -29,7 +29,7 @@
* @author James Carman
* @version 1.0
*/
-public class LoggingMethodInterceptor implements MethodInterceptor
+public class LoggingInterceptor implements Interceptor
{
//----------------------------------------------------------------------------------------------------------------------
// Fields
@@ -42,7 +42,7 @@
// Constructors
//----------------------------------------------------------------------------------------------------------------------
- public LoggingMethodInterceptor( Log log )
+ public LoggingInterceptor( Log log )
{
this.log = log;
}
@@ -51,16 +51,16 @@
// MethodInterceptor Implementation
//----------------------------------------------------------------------------------------------------------------------
- public Object invoke( MethodInvocation methodInvocation ) throws Throwable
+ public Object intercept( Invocation invocation ) throws Throwable
{
if( log.isDebugEnabled() )
{
- final String methodName = methodInvocation.getMethod().getName();
- entry( methodName, methodInvocation.getArguments() );
+ final String methodName = invocation.getMethod().getName();
+ entry( methodName, invocation.getArguments() );
try
{
- Object result = methodInvocation.proceed();
- if( Void.TYPE.equals( methodInvocation.getMethod().getReturnType() ) )
+ Object result = invocation.proceed();
+ if( Void.TYPE.equals( invocation.getMethod().getReturnType() ) )
{
voidExit( methodName );
}
@@ -78,7 +78,7 @@
}
else
{
- return methodInvocation.proceed();
+ return invocation.proceed();
}
}
Propchange: jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/LoggingInterceptor.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/LoggingInterceptor.java
------------------------------------------------------------------------------
svn:keywords = Id
Added: jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/MethodInterceptorAdapter.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/MethodInterceptorAdapter.java?rev=325897&view=auto
==============================================================================
--- jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/MethodInterceptorAdapter.java (added)
+++ jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/MethodInterceptorAdapter.java Mon Oct 17 07:11:52 2005
@@ -0,0 +1,82 @@
+/* $Id$
+ *
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.commons.proxy.interceptor;
+
+import org.aopalliance.intercept.MethodInterceptor;
+import org.aopalliance.intercept.MethodInvocation;
+import org.apache.commons.proxy.Interceptor;
+import org.apache.commons.proxy.Invocation;
+
+import java.lang.reflect.AccessibleObject;
+import java.lang.reflect.Method;
+
+/**
+ * An adapter class to adapt AOP Alliance's {@link MethodInterceptor} interface to Commons Proxy's
+ * {@link Interceptor} interface.
+ *
+ * @author James Carman
+ * @version 1.0
+ */
+public class MethodInterceptorAdapter implements Interceptor
+{
+ private final MethodInterceptor methodInterceptor;
+
+ public MethodInterceptorAdapter( MethodInterceptor methodInterceptor )
+ {
+ this.methodInterceptor = methodInterceptor;
+ }
+
+ public Object intercept( Invocation invocation ) throws Throwable
+ {
+ return methodInterceptor.invoke( new MethodInvocationAdapter( invocation ) );
+ }
+
+ private static class MethodInvocationAdapter implements MethodInvocation
+ {
+ private final Invocation invocation;
+
+ public MethodInvocationAdapter( Invocation invocation )
+ {
+ this.invocation = invocation;
+ }
+
+ public Method getMethod()
+ {
+ return invocation.getMethod();
+ }
+
+ public Object[] getArguments()
+ {
+ return invocation.getArguments();
+ }
+
+ public Object proceed() throws Throwable
+ {
+ return invocation.proceed();
+ }
+
+ public Object getThis()
+ {
+ return invocation.getProxy();
+ }
+
+ public AccessibleObject getStaticPart()
+ {
+ return invocation.getMethod();
+ }
+ }
+}
Propchange: jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/MethodInterceptorAdapter.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/MethodInterceptorAdapter.java
------------------------------------------------------------------------------
svn:keywords = Id
Copied: jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/filter/PatternFilter.java (from r321183, jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/filter/PatternMethodFilter.java)
URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/filter/PatternFilter.java?p2=jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/filter/PatternFilter.java&p1=jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/filter/PatternMethodFilter.java&r1=321183&r2=325897&rev=325897&view=diff
==============================================================================
--- jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/filter/PatternMethodFilter.java (original)
+++ jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/filter/PatternFilter.java Mon Oct 17 07:11:52 2005
@@ -27,19 +27,34 @@
* @author James Carman
* @version 1.0
*/
-public class PatternMethodFilter implements MethodFilter
+public class PatternFilter implements MethodFilter
{
//----------------------------------------------------------------------------------------------------------------------
// Fields
//----------------------------------------------------------------------------------------------------------------------
+ public static String GETTER_SETTER_PATTERN = "get\\w+|set\\w+";
private final String pattern;
//----------------------------------------------------------------------------------------------------------------------
+// Static Methods
+//----------------------------------------------------------------------------------------------------------------------
+
+ /**
+ * Returns a {@link MethodFilter} which accepts only "getters" and "setters."
+ *
+ * @return a {@link MethodFilter} which accepts only "getters" and "setters."
+ */
+ public static MethodFilter getterSetterFilter()
+ {
+ return new PatternFilter( GETTER_SETTER_PATTERN );
+ }
+
+//----------------------------------------------------------------------------------------------------------------------
// Constructors
//----------------------------------------------------------------------------------------------------------------------
- public PatternMethodFilter( String pattern )
+ public PatternFilter( String pattern )
{
this.pattern = pattern;
}
Propchange: jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/filter/PatternFilter.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/filter/PatternFilter.java
------------------------------------------------------------------------------
svn:keywords = Id
Copied: jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/filter/SimpleFilter.java (from r321183, jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/filter/SimpleMethodFilter.java)
URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/filter/SimpleFilter.java?p2=jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/filter/SimpleFilter.java&p1=jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/filter/SimpleMethodFilter.java&r1=321183&r2=325897&rev=325897&view=diff
==============================================================================
--- jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/filter/SimpleMethodFilter.java (original)
+++ jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/filter/SimpleFilter.java Mon Oct 17 07:11:52 2005
@@ -29,7 +29,7 @@
* @author James Carman
* @version 1.0
*/
-public class SimpleMethodFilter implements MethodFilter
+public class SimpleFilter implements MethodFilter
{
//----------------------------------------------------------------------------------------------------------------------
// Fields
@@ -41,12 +41,12 @@
// Constructors
//----------------------------------------------------------------------------------------------------------------------
- public SimpleMethodFilter()
+ public SimpleFilter()
{
this.methodNames = new HashSet();
}
- public SimpleMethodFilter( String[] methodNames )
+ public SimpleFilter( String[] methodNames )
{
this.methodNames = new HashSet( Arrays.asList( methodNames ) );
}
Propchange: jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/filter/SimpleFilter.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/filter/SimpleFilter.java
------------------------------------------------------------------------------
svn:keywords = Id
Added: jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/invoker/InvocationHandlerAdapter.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/invoker/InvocationHandlerAdapter.java?rev=325897&view=auto
==============================================================================
--- jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/invoker/InvocationHandlerAdapter.java (added)
+++ jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/invoker/InvocationHandlerAdapter.java Mon Oct 17 07:11:52 2005
@@ -0,0 +1,44 @@
+/* $Id$
+ *
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.commons.proxy.invoker;
+
+import org.apache.commons.proxy.Invoker;
+
+import java.lang.reflect.Method;
+import java.lang.reflect.InvocationHandler;
+
+/**
+ * An adapter class to adapt the JDK's {@link InvocationHandler} interface to Commons Proxy's
+ * {@link Invoker} interface.
+ *
+ * @author James Carman
+ * @version 1.0
+ */
+public class InvocationHandlerAdapter implements Invoker
+{
+ private final InvocationHandler invocationHandler;
+
+ public InvocationHandlerAdapter( InvocationHandler invocationHandler )
+ {
+ this.invocationHandler = invocationHandler;
+ }
+
+ public Object invoke( Object proxy, Method method, Object[] arguments ) throws Throwable
+ {
+ return invocationHandler.invoke( proxy, method, arguments );
+ }
+}
Propchange: jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/invoker/InvocationHandlerAdapter.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/invoker/InvocationHandlerAdapter.java
------------------------------------------------------------------------------
svn:keywords = Id
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org