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 19:20:13 UTC
svn commit: r325936 - in /jakarta/commons/sandbox/proxy/trunk/src:
java/org/apache/commons/proxy/ java/org/apache/commons/proxy/factory/cglib/
java/org/apache/commons/proxy/factory/javassist/
java/org/apache/commons/proxy/interceptor/ java/org/apache/c...
Author: jcarman
Date: Mon Oct 17 10:20:02 2005
New Revision: 325936
URL: http://svn.apache.org/viewcvs?rev=325936&view=rev
Log:
Improving test coverage.
Added:
jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/exception/TestInvocationHandlerException.java (with props)
jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/interceptor/TestMethodInterceptorAdapter.java (with props)
jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/invoker/TestInvocationHandlerAdapter.java (with props)
Modified:
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/JavassistInvocation.java
jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/javassist/JavassistUtils.java
jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/LoggingInterceptor.java
jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/provider/PooledProvider.java
jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/provider/ProviderUtils.java
jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/TestProxyUtils.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/provider/TestCloningProvider.java
jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/provider/TestPooledProvider.java
jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/util/AbstractEcho.java
jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/util/EchoImpl.java
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=325936&r1=325935&r2=325936&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 10:20:02 2005
@@ -22,6 +22,7 @@
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
+import java.util.LinkedList;
/**
* @author James Carman
@@ -83,17 +84,16 @@
*/
public static Class[] getAllInterfaces( Class cls )
{
- final List interfaces = getAllInterfacesImpl( cls );
- return ( Class[] ) interfaces.toArray( new Class[interfaces.size()] );
+ final List interfaces = getAllInterfacesImpl( cls, new LinkedList() );
+ return interfaces == null ? null : ( Class[] ) interfaces.toArray( new Class[interfaces.size()] );
}
- private static List getAllInterfacesImpl( Class cls )
+ private static List getAllInterfacesImpl( Class cls, List list )
{
if( cls == null )
{
return null;
}
- List list = new ArrayList();
while( cls != null )
{
Class[] interfaces = cls.getInterfaces();
@@ -103,15 +103,7 @@
{
list.add( interfaces[i] );
}
- List superInterfaces = getAllInterfacesImpl( interfaces[i] );
- for( Iterator it = superInterfaces.iterator(); it.hasNext(); )
- {
- Class intface = ( Class ) it.next();
- if( !list.contains( intface ) )
- {
- list.add( intface );
- }
- }
+ getAllInterfacesImpl( interfaces[i], list );
}
cls = cls.getSuperclass();
}
@@ -193,7 +185,7 @@
return null;
}
Class proxyFactoryClass = classLoader.loadClass( className );
- if( proxyFactoryClass.isAssignableFrom( ProxyFactory.class ) )
+ if( !ProxyFactory.class.isAssignableFrom( proxyFactoryClass ) )
{
return null;
}
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=325936&r1=325935&r2=325936&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 10:20:02 2005
@@ -19,14 +19,12 @@
import net.sf.cglib.proxy.Dispatcher;
import net.sf.cglib.proxy.Enhancer;
import net.sf.cglib.proxy.MethodProxy;
-import org.apache.commons.proxy.Invocation;
import org.apache.commons.proxy.Interceptor;
+import org.apache.commons.proxy.Invocation;
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.Method;
/**
@@ -123,7 +121,7 @@
this.target = target;
this.method = method;
this.methodProxy = methodProxy;
- this.args = args == null ? ProxyUtils.EMPTY_ARGUMENTS : args;
+ this.args = args;
}
public Method getMethod()
@@ -144,11 +142,6 @@
public Object getProxy()
{
return target;
- }
-
- public AccessibleObject getStaticPart()
- {
- return method;
}
}
Modified: jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/javassist/JavassistInvocation.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/javassist/JavassistInvocation.java?rev=325936&r1=325935&r2=325936&view=diff
==============================================================================
--- jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/javassist/JavassistInvocation.java (original)
+++ jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/javassist/JavassistInvocation.java Mon Oct 17 10:20:02 2005
@@ -159,7 +159,7 @@
{
this.method = method;
this.target = target;
- this.arguments = ( arguments == null ? ProxyUtils.EMPTY_ARGUMENTS : arguments );
+ this.arguments = arguments;
}
//----------------------------------------------------------------------------------------------------------------------
Modified: jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/javassist/JavassistUtils.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/javassist/JavassistUtils.java?rev=325936&r1=325935&r2=325936&view=diff
==============================================================================
--- jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/javassist/JavassistUtils.java (original)
+++ jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/javassist/JavassistUtils.java Mon Oct 17 10:20:02 2005
@@ -69,20 +69,10 @@
ctClass.addInterface( resolve( proxyInterface ) );
}
}
-
- public static CtClass createClass()
- {
- return createClass( DEFAULT_BASE_NAME );
- }
-
+
public static CtClass createClass( Class superclass )
{
return createClass( DEFAULT_BASE_NAME, superclass );
- }
-
- public static CtClass createClass( String baseName )
- {
- return createClass( baseName, Object.class );
}
public synchronized static CtClass createClass( String baseName, Class superclass )
Modified: jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/LoggingInterceptor.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/LoggingInterceptor.java?rev=325936&r1=325935&r2=325936&view=diff
==============================================================================
--- jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/LoggingInterceptor.java (original)
+++ jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/LoggingInterceptor.java Mon Oct 17 10:20:02 2005
@@ -92,7 +92,7 @@
buffer.append( "BEGIN " );
buffer.append( methodName );
buffer.append( "(" );
- int count = ( args == null ) ? 0 : args.length;
+ int count = args.length;
for( int i = 0; i < count; i++ )
{
Object arg = args[i];
Modified: jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/provider/PooledProvider.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/provider/PooledProvider.java?rev=325936&r1=325935&r2=325936&view=diff
==============================================================================
--- jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/provider/PooledProvider.java (original)
+++ jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/provider/PooledProvider.java Mon Oct 17 10:20:02 2005
@@ -43,8 +43,13 @@
public PooledProvider( ObjectProvider inner )
{
+ this( inner, new GenericObjectPool.Config() );
+ }
+
+ public PooledProvider( ObjectProvider inner, GenericObjectPool.Config config )
+ {
super( inner );
- pool = new GenericObjectPool( new Factory() );
+ pool = new GenericObjectPool( new Factory(), config );
}
//----------------------------------------------------------------------------------------------------------------------
@@ -92,65 +97,6 @@
public void setCache( Cache cache )
{
this.cache = cache;
- }
-
-//----------------------------------------------------------------------------------------------------------------------
-// Other Methods
-//----------------------------------------------------------------------------------------------------------------------
-
- public void setMaxActive( int i )
- {
- pool.setMaxActive( i );
- }
-
- public void setMaxIdle( int i )
- {
- pool.setMaxIdle( i );
- }
-
- public void setMaxWait( long l )
- {
- pool.setMaxWait( l );
- }
-
- public void setMinEvictableIdleTimeMillis( long l )
- {
- pool.setMinEvictableIdleTimeMillis( l );
- }
-
- public void setMinIdle( int i )
- {
- pool.setMinIdle( i );
- }
-
- public void setNumTestsPerEvictionRun( int i )
- {
- pool.setNumTestsPerEvictionRun( i );
- }
-
- public void setTestOnBorrow( boolean b )
- {
- pool.setTestOnBorrow( b );
- }
-
- public void setTestOnReturn( boolean b )
- {
- pool.setTestOnReturn( b );
- }
-
- public void setTestWhileIdle( boolean b )
- {
- pool.setTestWhileIdle( b );
- }
-
- public void setTimeBetweenEvictionRunsMillis( long l )
- {
- pool.setTimeBetweenEvictionRunsMillis( l );
- }
-
- public void setWhenExhaustedAction( byte b )
- {
- pool.setWhenExhaustedAction( b );
}
//----------------------------------------------------------------------------------------------------------------------
Modified: jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/provider/ProviderUtils.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/provider/ProviderUtils.java?rev=325936&r1=325935&r2=325936&view=diff
==============================================================================
--- jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/provider/ProviderUtils.java (original)
+++ jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/provider/ProviderUtils.java Mon Oct 17 10:20:02 2005
@@ -42,10 +42,5 @@
{
return new SingletonProvider( inner );
}
-
- public static ObjectProvider synchronizedProvider( ObjectProvider inner )
- {
- return new SynchronizedProvider( inner );
- }
}
Modified: jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/TestProxyUtils.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/TestProxyUtils.java?rev=325936&r1=325935&r2=325936&view=diff
==============================================================================
--- jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/TestProxyUtils.java (original)
+++ jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/TestProxyUtils.java Mon Oct 17 10:20:02 2005
@@ -15,18 +15,40 @@
* limitations under the License.
*/
package org.apache.commons.proxy;
+
import junit.framework.TestCase;
+import org.apache.commons.proxy.exception.ProxyFactoryException;
import org.apache.commons.proxy.factory.cglib.CglibProxyFactory;
import org.apache.commons.proxy.factory.javassist.JavassistProxyFactory;
import org.apache.commons.proxy.factory.reflect.ReflectionProxyFactory;
+import org.apache.commons.proxy.factory.util.AbstractProxyFactory;
+import org.apache.commons.proxy.util.DuplicateEcho;
import org.apache.commons.proxy.util.Echo;
-import org.apache.commons.proxy.exception.ProxyFactoryException;
+import org.apache.commons.proxy.util.EchoImpl;
+
+import java.io.Serializable;
+import java.util.Arrays;
+import java.util.Properties;
public class TestProxyUtils extends TestCase
{
+ private Properties prevProperties;
+
+ protected void setUp() throws Exception
+ {
+ prevProperties = System.getProperties();
+ System.setProperties( new Properties() );
+ }
+
+ protected void tearDown() throws Exception
+ {
+ System.setProperties( prevProperties );
+ }
+
public void testCreateNullObject() throws Exception
{
- final Echo nullEcho = ( Echo )ProxyUtils.createNullObject( new JavassistProxyFactory(), new Class[] { Echo.class } );
+ final Echo nullEcho = ( Echo ) ProxyUtils
+ .createNullObject( new JavassistProxyFactory(), new Class[]{ Echo.class } );
assertNull( nullEcho.echoBack( "hello" ) );
assertNull( nullEcho.echoBack( "hello", "world" ) );
assertEquals( ( int ) 0, nullEcho.echoBack( 12345 ) );
@@ -34,12 +56,20 @@
public void testCreateNullObjectWithClassLoader() throws Exception
{
- final Echo nullEcho = ( Echo )ProxyUtils.createNullObject( new JavassistProxyFactory(), Echo.class.getClassLoader(), new Class[] { Echo.class } );
+ final Echo nullEcho = ( Echo ) ProxyUtils.createNullObject( new JavassistProxyFactory(),
+ Echo.class.getClassLoader(),
+ new Class[]{ Echo.class } );
assertNull( nullEcho.echoBack( "hello" ) );
assertNull( nullEcho.echoBack( "hello", "world" ) );
assertEquals( ( int ) 0, nullEcho.echoBack( 12345 ) );
}
+ public void testGetAllInterfaces()
+ {
+ assertNull( ProxyUtils.getAllInterfaces( null ) );
+ assertEquals( Arrays.asList( new Class[] { DuplicateEcho.class, Serializable.class, Echo.class } ), Arrays.asList( ProxyUtils.getAllInterfaces( EchoImpl.class ) ) );
+ }
+
public void testGetJavaClassName() throws Exception
{
assertEquals( "java.lang.Object[]", ProxyUtils.getJavaClassName( Object[].class ) );
@@ -55,15 +85,20 @@
assertEquals( "boolean", ProxyUtils.getJavaClassName( Boolean.TYPE ) );
}
+
+
public void testGetProxyFactory() throws Exception
{
assertTrue( ProxyUtils.getProxyFactory() instanceof JavassistProxyFactory );
+ System.setProperty( ProxyUtils.PROXY_FACTORY_PROPERTY, "java.lang.String" );
+ assertTrue( ProxyUtils.getProxyFactory() instanceof JavassistProxyFactory );
System.setProperty( ProxyUtils.PROXY_FACTORY_PROPERTY, CglibProxyFactory.class.getName() );
assertTrue( ProxyUtils.getProxyFactory() instanceof CglibProxyFactory );
System.setProperty( ProxyUtils.PROXY_FACTORY_PROPERTY, ReflectionProxyFactory.class.getName() );
assertTrue( ProxyUtils.getProxyFactory() instanceof ReflectionProxyFactory );
System.setProperty( ProxyUtils.PROXY_FACTORY_PROPERTY, "" );
- ClassLoader cl = new IsolatingClassLoader( JavassistProxyFactory.class, Thread.currentThread().getContextClassLoader() );
+ ClassLoader cl = new IsolatingClassLoader( JavassistProxyFactory.class,
+ Thread.currentThread().getContextClassLoader() );
assertTrue( ProxyUtils.getProxyFactory( cl ) instanceof CglibProxyFactory );
cl = new IsolatingClassLoader( CglibProxyFactory.class, cl );
assertTrue( ProxyUtils.getProxyFactory( cl ) instanceof ReflectionProxyFactory );
@@ -75,10 +110,22 @@
}
catch( ProxyFactoryException e )
{
-
}
}
+ public void testPrivateProxyFactoryConstructor()
+ {
+ System.setProperty( ProxyUtils.PROXY_FACTORY_PROPERTY, PrivateProxyFactory.class.getName() );
+ assertTrue( ProxyUtils.getProxyFactory() instanceof JavassistProxyFactory );
+
+ }
+
+ public void testNonConcreteProxyFactoryClass()
+ {
+ System.setProperty( ProxyUtils.PROXY_FACTORY_PROPERTY, AbstractProxyFactory.class.getName() );
+ assertTrue( ProxyUtils.getProxyFactory() instanceof JavassistProxyFactory );
+ }
+
private static class IsolatingClassLoader extends ClassLoader
{
private Class isolatedClass;
@@ -96,6 +143,13 @@
throw new ClassNotFoundException( name + " not found." );
}
return getParent().loadClass( name );
+ }
+ }
+
+ public static class PrivateProxyFactory extends ReflectionProxyFactory
+ {
+ private PrivateProxyFactory()
+ {
}
}
}
Added: jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/exception/TestInvocationHandlerException.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/exception/TestInvocationHandlerException.java?rev=325936&view=auto
==============================================================================
--- jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/exception/TestInvocationHandlerException.java (added)
+++ jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/exception/TestInvocationHandlerException.java Mon Oct 17 10:20:02 2005
@@ -0,0 +1,27 @@
+/* $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.exception;
+import junit.framework.*;
+import org.apache.commons.proxy.exception.InvocationHandlerException;
+
+public class TestInvocationHandlerException extends AbstractExceptionClassTestCase
+{
+ public TestInvocationHandlerException()
+ {
+ super( InvocationHandlerException.class );
+ }
+}
\ No newline at end of file
Propchange: jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/exception/TestInvocationHandlerException.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/exception/TestInvocationHandlerException.java
------------------------------------------------------------------------------
svn:keywords = Id
Modified: jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/factory/AbstractProxyFactoryTestCase.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/factory/AbstractProxyFactoryTestCase.java?rev=325936&r1=325935&r2=325936&view=diff
==============================================================================
--- jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/factory/AbstractProxyFactoryTestCase.java (original)
+++ jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/factory/AbstractProxyFactoryTestCase.java Mon Oct 17 10:20:02 2005
@@ -61,7 +61,7 @@
set.add( "Hello" );
}
- public void testInvocationHandlerProxy() throws Exception
+ public void testInvokerProxy() throws Exception
{
final InvokerTester tester = new InvokerTester();
final Echo echo = ( Echo )factory.createInvokerProxy( tester, ECHO_ONLY );
Added: jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/interceptor/TestMethodInterceptorAdapter.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/interceptor/TestMethodInterceptorAdapter.java?rev=325936&view=auto
==============================================================================
--- jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/interceptor/TestMethodInterceptorAdapter.java (added)
+++ jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/interceptor/TestMethodInterceptorAdapter.java Mon Oct 17 10:20:02 2005
@@ -0,0 +1,86 @@
+/* $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 junit.framework.TestCase;
+import org.aopalliance.intercept.MethodInterceptor;
+import org.aopalliance.intercept.MethodInvocation;
+import org.apache.commons.proxy.ProxyUtils;
+import org.apache.commons.proxy.util.Echo;
+import org.apache.commons.proxy.util.EchoImpl;
+
+public class TestMethodInterceptorAdapter extends TestCase
+{
+ public void testMethodInterception()
+ {
+ final Echo proxy = ( Echo ) ProxyUtils.getProxyFactory().createInterceptorProxy( new EchoImpl(),
+ new MethodInterceptorAdapter( new SuffixMethodInterceptor(
+ " suffix" ) ),
+ new Class[]{ Echo.class } );
+ assertEquals( "message suffix", proxy.echoBack( "message" ) );
+ }
+
+ public void testMethodInvocationImplementation() throws Exception
+ {
+ final InterceptorTester tester = new InterceptorTester();
+ final EchoImpl target = new EchoImpl();
+ final Echo proxy = ( Echo ) ProxyUtils.getProxyFactory().createInterceptorProxy( target, new MethodInterceptorAdapter( tester ), new Class[] { Echo.class } );
+ proxy.echo();
+ assertNotNull( tester.invocation.getArguments() );
+ assertEquals( 0, tester.invocation.getArguments().length );
+ assertEquals( Echo.class.getMethod( "echo", new Class[] {} ), tester.invocation.getMethod() );
+ assertEquals( Echo.class.getMethod( "echo", new Class[] {} ), tester.invocation.getStaticPart() );
+ assertEquals( target, tester.invocation.getThis() );
+ proxy.echoBack( "Hello" );
+ assertNotNull( tester.invocation.getArguments() );
+ assertEquals( 1, tester.invocation.getArguments().length );
+ assertEquals( "Hello", tester.invocation.getArguments()[0] );
+ assertEquals( Echo.class.getMethod( "echoBack", new Class[] { String.class } ), tester.invocation.getMethod() );
+ assertEquals( Echo.class.getMethod( "echoBack", new Class[] { String.class } ), tester.invocation.getStaticPart() );
+ proxy.echoBack( "Hello", "World" );
+ assertNotNull( tester.invocation.getArguments() );
+ assertEquals( 2, tester.invocation.getArguments().length );
+ assertEquals( "Hello", tester.invocation.getArguments()[0] );
+ assertEquals( "World", tester.invocation.getArguments()[1] );
+ assertEquals( Echo.class.getMethod( "echoBack", new Class[] { String.class, String.class } ), tester.invocation.getMethod() );
+ assertEquals( Echo.class.getMethod( "echoBack", new Class[] { String.class, String.class } ), tester.invocation.getStaticPart() );
+ }
+ private static class InterceptorTester implements MethodInterceptor
+ {
+ private MethodInvocation invocation;
+
+ public Object invoke( MethodInvocation methodInvocation ) throws Throwable
+ {
+ this.invocation = methodInvocation;
+ return methodInvocation.proceed();
+ }
+ }
+ private class SuffixMethodInterceptor implements MethodInterceptor
+ {
+ private final String suffix;
+
+ public SuffixMethodInterceptor( String suffix )
+ {
+ this.suffix = suffix;
+ }
+
+ public Object invoke( MethodInvocation methodInvocation ) throws Throwable
+ {
+ return methodInvocation.proceed() + suffix;
+ }
+ }
+}
\ No newline at end of file
Propchange: jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/interceptor/TestMethodInterceptorAdapter.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/interceptor/TestMethodInterceptorAdapter.java
------------------------------------------------------------------------------
svn:keywords = Id
Added: jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/invoker/TestInvocationHandlerAdapter.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/invoker/TestInvocationHandlerAdapter.java?rev=325936&view=auto
==============================================================================
--- jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/invoker/TestInvocationHandlerAdapter.java (added)
+++ jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/invoker/TestInvocationHandlerAdapter.java Mon Oct 17 10:20:02 2005
@@ -0,0 +1,54 @@
+/* $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 junit.framework.*;
+import org.apache.commons.proxy.invoker.InvocationHandlerAdapter;
+import org.apache.commons.proxy.util.Echo;
+import org.apache.commons.proxy.ProxyUtils;
+
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Method;
+
+public class TestInvocationHandlerAdapter extends TestCase
+{
+ public void testMethodInvocation() throws Exception
+ {
+ InvocationHandlerTester tester = new InvocationHandlerTester();
+ final Echo echo = ( Echo ) ProxyUtils.getProxyFactory().createInvokerProxy( new InvocationHandlerAdapter( tester ), new Class[] { Echo.class } );
+ echo.echoBack( "hello" );
+ assertEquals( Echo.class.getMethod( "echoBack", new Class[] { String.class } ), tester.method );
+ assertSame( echo, tester.proxy );
+ assertNotNull( tester.arguments );
+ assertEquals( 1, tester.arguments.length );
+ assertEquals( "hello", tester.arguments[0] );
+ }
+
+ private class InvocationHandlerTester implements InvocationHandler
+ {
+ private Object proxy;
+ private Method method;
+ private Object[] arguments;
+
+ public Object invoke( Object proxy, Method method, Object[] args ) throws Throwable
+ {
+ this.proxy = proxy;
+ this.method = method;
+ this.arguments = args;
+ return null;
+ }
+ }
+}
\ No newline at end of file
Propchange: jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/invoker/TestInvocationHandlerAdapter.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/invoker/TestInvocationHandlerAdapter.java
------------------------------------------------------------------------------
svn:keywords = Id
Modified: jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/provider/TestCloningProvider.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/provider/TestCloningProvider.java?rev=325936&r1=325935&r2=325936&view=diff
==============================================================================
--- jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/provider/TestCloningProvider.java (original)
+++ jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/provider/TestCloningProvider.java Mon Oct 17 10:20:02 2005
@@ -27,9 +27,13 @@
{
final Date now = new Date();
final CloningProvider provider = new CloningProvider( now );
- final Date clone = ( Date ) provider.getObject();
- assertEquals( now, clone );
- assertNotSame( now, clone );
+ final Date clone1 = ( Date ) provider.getObject();
+ assertEquals( now, clone1 );
+ assertNotSame( now, clone1 );
+ final Date clone2 = ( Date )provider.getObject();
+ assertEquals( now, clone2 );
+ assertNotSame( now, clone2 );
+ assertNotSame( clone2, clone1 );
}
public void testWithInvalidCloneable()
Modified: jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/provider/TestPooledProvider.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/provider/TestPooledProvider.java?rev=325936&r1=325935&r2=325936&view=diff
==============================================================================
--- jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/provider/TestPooledProvider.java (original)
+++ jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/provider/TestPooledProvider.java Mon Oct 17 10:20:02 2005
@@ -22,6 +22,9 @@
import org.apache.commons.proxy.provider.cache.ThreadLocalCache;
import org.apache.commons.proxy.util.Echo;
import org.apache.commons.proxy.util.EchoImpl;
+import org.apache.commons.proxy.ObjectProvider;
+import org.apache.commons.proxy.ProxyUtils;
+import org.apache.commons.proxy.exception.ObjectProviderException;
public class TestPooledProvider extends TestCase
{
@@ -43,15 +46,9 @@
public void testWithThreadLocalCache() throws Exception
{
final CountingProvider counter = new CountingProvider( ProviderUtils.constantProvider( new EchoImpl() ) );
- final PooledProvider provider = new PooledProvider( counter );
- provider.setMaxActive( 10 );
- provider.setMinIdle( 5 );
- provider.setWhenExhaustedAction( GenericObjectPool.WHEN_EXHAUSTED_GROW );
- provider.setMaxWait( 1000 );
- provider.setMinEvictableIdleTimeMillis( 10000 );
- provider.setTestOnBorrow( false );
- provider.setTestOnReturn( false );
- provider.setTestWhileIdle( false );
+ final GenericObjectPool.Config config = new GenericObjectPool.Config();
+ config.whenExhaustedAction = GenericObjectPool.WHEN_EXHAUSTED_GROW;
+ final PooledProvider provider = new PooledProvider( counter, config );
final ThreadLocalCache cache = new ThreadLocalCache();
provider.setCache( cache );
final CountDown goLatch = new CountDown( 1 );
@@ -86,5 +83,30 @@
goLatch.release();
finished.acquire();
assertEquals( 10, counter.getCount() );
+ }
+
+ public void testWithExceptionFromInner()
+ {
+ final PooledProvider provider = new PooledProvider( new ExceptionProvider() );
+ final SimpleCache cache = new SimpleCache();
+ provider.setCache( cache );
+
+ final Echo echo = ( Echo )ProxyUtils.getProxyFactory().createDelegatorProxy( provider, new Class[] { Echo.class } );
+ try
+ {
+ echo.echoBack( "Hello." );
+ fail();
+ }
+ catch( ObjectProviderException e )
+ {
+
+ }
+ }
+ private class ExceptionProvider implements ObjectProvider
+ {
+ public Object getObject()
+ {
+ throw new ObjectProviderException( "Ha ha!" );
+ }
}
}
Modified: jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/util/AbstractEcho.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/util/AbstractEcho.java?rev=325936&r1=325935&r2=325936&view=diff
==============================================================================
--- jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/util/AbstractEcho.java (original)
+++ jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/util/AbstractEcho.java Mon Oct 17 10:20:02 2005
@@ -16,11 +16,13 @@
*/
package org.apache.commons.proxy.util;
+import java.io.Serializable;
+
/**
* @author James Carman
* @version 1.0
*/
-public abstract class AbstractEcho implements Echo
+public abstract class AbstractEcho implements Echo, Serializable
{
public String echoBack( String message )
{
Modified: jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/util/EchoImpl.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/util/EchoImpl.java?rev=325936&r1=325935&r2=325936&view=diff
==============================================================================
--- jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/util/EchoImpl.java (original)
+++ jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/util/EchoImpl.java Mon Oct 17 10:20:02 2005
@@ -16,12 +16,13 @@
package org.apache.commons.proxy.util;
import java.io.IOException;
+import java.io.Serializable;
/**
* @author James Carman
* @version 1.0
*/
-public class EchoImpl extends AbstractEcho implements DuplicateEcho
+public class EchoImpl extends AbstractEcho implements DuplicateEcho, Serializable
{
public String echoBack( String message1, String message2 )
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org