Author: jcarman Date: Thu Sep 1 06:16:01 2005 New Revision: 265714 URL: http://svn.apache.org/viewcvs?rev=265714&view=rev Log: Fixed bug where interface hierarchies weren't supported. It was calling getDeclaredMethods() rather than getMethods().
Modified: jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/util/AbstractProxyClassGenerator.java jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/factory/AbstractProxyFactoryTestCase.java Modified: jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/util/AbstractProxyClassGenerator.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/util/AbstractProxyClassGenerator.java?rev=265714&r1=265713&r2=265714&view=diff ============================================================================== --- jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/util/AbstractProxyClassGenerator.java (original) +++ jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/util/AbstractProxyClassGenerator.java Thu Sep 1 06:16:01 2005 @@ -23,11 +23,21 @@ import java.util.Set; /** + * A useful superclass for [EMAIL PROTECTED] ProxyClassGenerator} implementations. + * * @author James Carman * @version 1.0 */ public abstract class AbstractProxyClassGenerator implements ProxyClassGenerator { + /** + * Returns all methods that a proxy class must implement from the + * proxy interfaces. This method makes sure there are no method signature clashes. + * For methods with the same signature (name and parameter types), the one encountered + * first will be returned in the result. + * @param proxyInterfaces the interfaces the proxy class must implement + * @return all methods that the proxy class must implement + */ public static Method[] getImplementationMethods( Class... proxyInterfaces ) { final Set<MethodSignature> signatures = new HashSet<MethodSignature>(); @@ -35,7 +45,7 @@ for( int i = 0; i < proxyInterfaces.length; i++ ) { Class proxyInterface = proxyInterfaces[i]; - final Method[] methods = proxyInterface.getDeclaredMethods(); + final Method[] methods = proxyInterface.getMethods(); for( int j = 0; j < methods.length; j++ ) { final MethodSignature signature = new MethodSignature( methods[j] ); 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=265714&r1=265713&r2=265714&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 Thu Sep 1 06:16:01 2005 @@ -19,7 +19,6 @@ import org.aopalliance.intercept.MethodInvocation; import org.apache.commons.proxy.ProxyFactory; import static org.apache.commons.proxy.provider.ProviderUtils.*; -import org.apache.commons.proxy.provider.ConstantProvider; import org.apache.commons.proxy.util.AbstractTestCase; import org.apache.commons.proxy.util.Echo; import org.apache.commons.proxy.util.EchoImpl; @@ -32,6 +31,8 @@ import java.util.Arrays; import java.util.List; import java.util.LinkedList; +import java.util.SortedSet; +import java.util.TreeSet; /** * @author James Carman @@ -46,11 +47,17 @@ this.factory = factory; } + public void testInterfaceHierarchies() + { + final SortedSet<String> set = ( SortedSet<String> ) factory.createDelegatingProxy( constantProvider( new TreeSet<String>() ), SortedSet.class ); + set.add( "Hello" ); + } + public void testDelegatingProxyInterfaceOrder() { final Echo echo = ( Echo ) factory.createDelegatingProxy( singletonProvider( beanProvider( EchoImpl.class ) ), Echo.class, DuplicateEcho.class ); - final List expected = new LinkedList( Arrays.asList( Echo.class, DuplicateEcho.class ) ); - final List actual = new LinkedList( Arrays.asList( echo.getClass().getInterfaces() ) ); + final List<Class> expected = new LinkedList<Class>( Arrays.asList( Echo.class, DuplicateEcho.class ) ); + final List<Class> actual = new LinkedList<Class>( Arrays.asList( echo.getClass().getInterfaces() ) ); actual.retainAll( expected ); // Doesn't alter order! assertEquals( expected, actual ); } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]