Author: jcarman Date: Mon Sep 5 15:58:17 2005 New Revision: 278880 URL: http://svn.apache.org/viewcvs?rev=278880&view=rev Log: Improving test coverage.
Added: jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/handler/ jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/handler/TestNullInvocationHandler.java (with props) jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/interceptor/filter/TestReturnTypeFilter.java (with props) Modified: jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/util/AbstractSubclassingProxyFactory.java 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/interceptor/AbstractMethodInterceptor.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/AbstractSubclassingProxyFactoryTestCase.java Modified: jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/util/AbstractSubclassingProxyFactory.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/util/AbstractSubclassingProxyFactory.java?rev=278880&r1=278879&r2=278880&view=diff ============================================================================== --- jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/util/AbstractSubclassingProxyFactory.java (original) +++ jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/factory/util/AbstractSubclassingProxyFactory.java Mon Sep 5 15:58:17 2005 @@ -87,6 +87,7 @@ /** * Returns true if a suitable superclass can be found, given the desired <code>proxyClasses</code>. + * * @param proxyClasses the proxy classes * @return true if a suitable superclass can be found, given the desired <code>proxyClasses</code> */ Modified: jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/handler/NullInvocationHandler.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/handler/NullInvocationHandler.java?rev=278880&r1=278879&r2=278880&view=diff ============================================================================== --- jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/handler/NullInvocationHandler.java (original) +++ jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/handler/NullInvocationHandler.java Mon Sep 5 15:58:17 2005 @@ -18,6 +18,8 @@ import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; +import java.util.HashMap; +import java.util.Map; /** * An [EMAIL PROTECTED] InvocationHandler} implementation which merely returns null for all method invocations. This class is @@ -28,6 +30,17 @@ */ public class NullInvocationHandler implements InvocationHandler { + private static Map<Class,Object> primitiveValueMap = new HashMap<Class,Object>(); + static + { + primitiveValueMap.put( Integer.TYPE, new Integer( 0 ) ); + primitiveValueMap.put( Long.TYPE, new Long( 0 ) ); + primitiveValueMap.put( Short.TYPE, new Short( ( short )0 ) ); + primitiveValueMap.put( Byte.TYPE, new Byte( ( byte )0 ) ); + primitiveValueMap.put( Float.TYPE, new Float( 0.0f ) ); + primitiveValueMap.put( Double.TYPE, new Double( 0.0 ) ); + primitiveValueMap.put( Character.TYPE, new Character( ( char )0 ) ); + } //---------------------------------------------------------------------------------------------------------------------- // InvocationHandler Implementation //---------------------------------------------------------------------------------------------------------------------- @@ -37,35 +50,7 @@ final Class<?> returnType = method.getReturnType(); if( returnType.isPrimitive() ) { - if( Integer.TYPE.equals( returnType ) ) - { - return 0; - } - else if( Long.TYPE.equals( returnType ) ) - { - return 0L; - } - else if( Double.TYPE.equals( returnType ) ) - { - return 0.0; - } - else if( Float.TYPE.equals( returnType ) ) - { - return 0.0f; - } - else if( Short.TYPE.equals( returnType ) ) - { - return ( short )0; - } - else if( Character.TYPE.equals( returnType ) ) - { - return ( char )0; - } - else if( Byte.TYPE.equals( returnType ) ) - { - return ( byte )0; - } - return 0; + return primitiveValueMap.get( returnType ); } else { Modified: jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/AbstractMethodInterceptor.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/AbstractMethodInterceptor.java?rev=278880&r1=278879&r2=278880&view=diff ============================================================================== --- jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/AbstractMethodInterceptor.java (original) +++ jakarta/commons/sandbox/proxy/trunk/src/java/org/apache/commons/proxy/interceptor/AbstractMethodInterceptor.java Mon Sep 5 15:58:17 2005 @@ -26,7 +26,12 @@ */ public abstract class AbstractMethodInterceptor implements MethodInterceptor { - protected Log log = LogFactory.getLog( getClass() ); + protected Log log; + + protected AbstractMethodInterceptor() + { + setLog( LogFactory.getLog( getClass() ) ); + } public Log getLog() { 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=278880&r1=278879&r2=278880&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 Sep 5 15:58:17 2005 @@ -15,9 +15,7 @@ * limitations under the License. */ package org.apache.commons.proxy; -import junit.framework.*; -import org.apache.commons.proxy.ProxyUtils; -import org.apache.commons.proxy.factory.cglib.CglibProxyFactory; +import junit.framework.TestCase; import org.apache.commons.proxy.factory.javassist.JavassistProxyFactory; import org.apache.commons.proxy.util.Echo; @@ -26,6 +24,14 @@ public void testCreateNullObject() throws Exception { final Echo nullEcho = ( Echo )ProxyUtils.createNullObject( new JavassistProxyFactory(), Echo.class ); + assertNull( nullEcho.echoBack( "hello" ) ); + assertNull( nullEcho.echoBack( "hello", "world" ) ); + assertEquals( ( int ) 0, nullEcho.echoBack( 12345 ) ); + } + + public void testCreateNullObjectWithClassLoader() throws Exception + { + final Echo nullEcho = ( Echo )ProxyUtils.createNullObject( new JavassistProxyFactory(), Echo.class.getClassLoader(), Echo.class ); assertNull( nullEcho.echoBack( "hello" ) ); assertNull( nullEcho.echoBack( "hello", "world" ) ); assertEquals( ( int ) 0, nullEcho.echoBack( 12345 ) ); Modified: jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/factory/AbstractSubclassingProxyFactoryTestCase.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/factory/AbstractSubclassingProxyFactoryTestCase.java?rev=278880&r1=278879&r2=278880&view=diff ============================================================================== --- jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/factory/AbstractSubclassingProxyFactoryTestCase.java (original) +++ jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/factory/AbstractSubclassingProxyFactoryTestCase.java Mon Sep 5 15:58:17 2005 @@ -17,6 +17,7 @@ package org.apache.commons.proxy.factory; import org.apache.commons.proxy.ProxyFactory; +import org.apache.commons.proxy.exception.ProxyFactoryException; import org.apache.commons.proxy.handler.NullInvocationHandler; import org.apache.commons.proxy.provider.ConstantProvider; import org.apache.commons.proxy.util.Echo; @@ -41,29 +42,71 @@ assertFalse( factory.canProxy( NoDefaultConstructorEcho.class ) ); assertTrue( factory.canProxy( ProtectedConstructorEcho.class ) ); assertFalse( factory.canProxy( InvisibleEcho.class ) ); + assertFalse( factory.canProxy( Echo.class, EchoImpl.class, String.class ) ); } public void testDelegatorWithSuperclass() { - final Echo echo = ( Echo )factory.createDelegatorProxy( new ConstantProvider( new EchoImpl() ), Echo.class, EchoImpl.class ); + final Echo echo = ( Echo ) factory + .createDelegatorProxy( new ConstantProvider( new EchoImpl() ), Echo.class, EchoImpl.class ); assertTrue( echo instanceof EchoImpl ); } public void testInterceptorWithSuperclass() { - final Echo echo = ( Echo )factory.createInterceptorProxy( new EchoImpl(), new NoOpMethodInterceptor(), Echo.class, EchoImpl.class ); + final Echo echo = ( Echo ) factory + .createInterceptorProxy( new EchoImpl(), new NoOpMethodInterceptor(), Echo.class, EchoImpl.class ); assertTrue( echo instanceof EchoImpl ); } public void testInvocationHandlerWithSuperclass() { - final Echo echo = ( Echo )factory.createInvocationHandlerProxy( new NullInvocationHandler(), Echo.class, EchoImpl.class ); + final Echo echo = ( Echo ) factory + .createInvocationHandlerProxy( new NullInvocationHandler(), Echo.class, EchoImpl.class ); assertTrue( echo instanceof EchoImpl ); } - public static final class FinalEcho extends EchoImpl + public void testDelegatorWithMultipleSuperclasses() + { + try + { + factory.createDelegatorProxy( new ConstantProvider( new EchoImpl() ), + EchoImpl.class, String.class ); + fail(); + } + catch( ProxyFactoryException e ) + { + } + } + + public void testInterceptorWithMultipleSuperclasses() + { + try + { + factory.createInterceptorProxy( new EchoImpl(), new NoOpMethodInterceptor(), + EchoImpl.class, String.class ); + fail(); + } + catch( ProxyFactoryException e ) + { + } + } + + public void testInvocationHandlerWithMultipleSuperclasses() { + try + { + factory.createInvocationHandlerProxy( new NullInvocationHandler(), + EchoImpl.class, String.class ); + fail(); + } + catch( ProxyFactoryException e ) + { + } + } + public static final class FinalEcho extends EchoImpl + { } public static class NoDefaultConstructorEcho extends EchoImpl @@ -77,12 +120,10 @@ { protected ProtectedConstructorEcho() { - } } private static class InvisibleEcho extends EchoImpl { - } } Added: jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/handler/TestNullInvocationHandler.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/handler/TestNullInvocationHandler.java?rev=278880&view=auto ============================================================================== --- jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/handler/TestNullInvocationHandler.java (added) +++ jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/handler/TestNullInvocationHandler.java Mon Sep 5 15:58:17 2005 @@ -0,0 +1,48 @@ +/* $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.handler; +import junit.framework.TestCase; +import org.apache.commons.proxy.ProxyUtils; +import org.apache.commons.proxy.factory.cglib.CglibProxyFactory; + +public class TestNullInvocationHandler extends TestCase +{ + public void testReturnValues() + { + final Tester tester = ( Tester )ProxyUtils.createNullObject( new CglibProxyFactory(), Tester.class ); + assertEquals( 0, tester.intMethod() ); + assertEquals( 0L, tester.longMethod() ); + assertEquals( ( short )0, tester.shortMethod() ); + assertEquals( ( byte )0, tester.byteMethod() ); + assertEquals( ( char )0, tester.charMethod() ); + assertEquals( 0.0f, tester.floatMethod() ); + assertEquals( 0.0, tester.doubleMethod() ); + assertNull( tester.stringMethod() ); + } + + public static interface Tester + { + public int intMethod(); + public long longMethod(); + public short shortMethod(); + public byte byteMethod(); + public char charMethod(); + public double doubleMethod(); + public float floatMethod(); + public String stringMethod(); + } +} \ No newline at end of file Propchange: jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/handler/TestNullInvocationHandler.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/handler/TestNullInvocationHandler.java ------------------------------------------------------------------------------ svn:keywords = Id Added: jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/interceptor/filter/TestReturnTypeFilter.java URL: http://svn.apache.org/viewcvs/jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/interceptor/filter/TestReturnTypeFilter.java?rev=278880&view=auto ============================================================================== --- jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/interceptor/filter/TestReturnTypeFilter.java (added) +++ jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/interceptor/filter/TestReturnTypeFilter.java Mon Sep 5 15:58:17 2005 @@ -0,0 +1,32 @@ +/* $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.filter; +import junit.framework.*; +import org.apache.commons.proxy.interceptor.filter.ReturnTypeFilter; + +public class TestReturnTypeFilter extends TestCase +{ + public void testAcceptsMethod() throws Exception + { + final ReturnTypeFilter filter = new ReturnTypeFilter( String.class, Integer.TYPE ); + assertTrue( filter.accepts( Object.class.getMethod( "toString" ) ) ); + assertTrue( filter.accepts( Object.class.getMethod( "hashCode" ) ) ); + assertFalse( filter.accepts( Object.class.getMethod( "equals", Object.class ) ) ); + } + + +} \ No newline at end of file Propchange: jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/interceptor/filter/TestReturnTypeFilter.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: jakarta/commons/sandbox/proxy/trunk/src/test/org/apache/commons/proxy/interceptor/filter/TestReturnTypeFilter.java ------------------------------------------------------------------------------ svn:keywords = Id --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]