Author: jcarman Date: Tue Jul 30 03:36:17 2013 New Revision: 1508286 URL: http://svn.apache.org/r1508286 Log: Adding type-safe array return specification methods.
Added: commons/proper/proxy/branches/version-2.0-work/core/src/main/java/org/apache/commons/proxy2/interceptor/ThrowingInterceptor.java commons/proper/proxy/branches/version-2.0-work/stub/src/test/java/org/apache/commons/proxy2/stub/StubInterceptorBuilderTest.java - copied, changed from r1508275, commons/proper/proxy/branches/version-2.0-work/stub/src/test/java/org/apache/commons/proxy2/stub/TestStubInterceptorBuilder.java Removed: commons/proper/proxy/branches/version-2.0-work/stub/src/test/java/org/apache/commons/proxy2/stub/TestStubInterceptorBuilder.java Modified: commons/proper/proxy/branches/version-2.0-work/core/src/main/java/org/apache/commons/proxy2/interceptor/InterceptorUtils.java commons/proper/proxy/branches/version-2.0-work/core/src/main/java/org/apache/commons/proxy2/interceptor/matcher/argument/ArgumentMatcherUtils.java commons/proper/proxy/branches/version-2.0-work/stub/src/main/java/org/apache/commons/proxy2/stub/Behavior.java commons/proper/proxy/branches/version-2.0-work/stub/src/main/java/org/apache/commons/proxy2/stub/TrainingContext.java commons/proper/proxy/branches/version-2.0-work/stub/src/test/java/org/apache/commons/proxy2/stub/StubInterface.java Modified: commons/proper/proxy/branches/version-2.0-work/core/src/main/java/org/apache/commons/proxy2/interceptor/InterceptorUtils.java URL: http://svn.apache.org/viewvc/commons/proper/proxy/branches/version-2.0-work/core/src/main/java/org/apache/commons/proxy2/interceptor/InterceptorUtils.java?rev=1508286&r1=1508285&r2=1508286&view=diff ============================================================================== --- commons/proper/proxy/branches/version-2.0-work/core/src/main/java/org/apache/commons/proxy2/interceptor/InterceptorUtils.java (original) +++ commons/proper/proxy/branches/version-2.0-work/core/src/main/java/org/apache/commons/proxy2/interceptor/InterceptorUtils.java Tue Jul 30 03:36:17 2013 @@ -37,6 +37,16 @@ public final class InterceptorUtils return new ObjectProviderInterceptor(provider); } + public static Interceptor throwing(Exception e) + { + return new ThrowingInterceptor(ObjectProviderUtils.constant(e)); + } + + public static Interceptor throwing(ObjectProvider<? extends Exception> provider) + { + return new ThrowingInterceptor(provider); + } + //---------------------------------------------------------------------------------------------------------------------- // Constructors //---------------------------------------------------------------------------------------------------------------------- Added: commons/proper/proxy/branches/version-2.0-work/core/src/main/java/org/apache/commons/proxy2/interceptor/ThrowingInterceptor.java URL: http://svn.apache.org/viewvc/commons/proper/proxy/branches/version-2.0-work/core/src/main/java/org/apache/commons/proxy2/interceptor/ThrowingInterceptor.java?rev=1508286&view=auto ============================================================================== --- commons/proper/proxy/branches/version-2.0-work/core/src/main/java/org/apache/commons/proxy2/interceptor/ThrowingInterceptor.java (added) +++ commons/proper/proxy/branches/version-2.0-work/core/src/main/java/org/apache/commons/proxy2/interceptor/ThrowingInterceptor.java Tue Jul 30 03:36:17 2013 @@ -0,0 +1,50 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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.proxy2.interceptor; + +import org.apache.commons.proxy2.Interceptor; +import org.apache.commons.proxy2.Invocation; +import org.apache.commons.proxy2.ObjectProvider; + +public class ThrowingInterceptor implements Interceptor +{ +//---------------------------------------------------------------------------------------------------------------------- +// Fields +//---------------------------------------------------------------------------------------------------------------------- + + private final ObjectProvider<? extends Exception> provider; + +//---------------------------------------------------------------------------------------------------------------------- +// Constructors +//---------------------------------------------------------------------------------------------------------------------- + + public ThrowingInterceptor(ObjectProvider<? extends Exception> provider) + { + this.provider = provider; + } + +//---------------------------------------------------------------------------------------------------------------------- +// Interceptor Implementation +//---------------------------------------------------------------------------------------------------------------------- + + @Override + public Object intercept(Invocation invocation) throws Throwable + { + throw provider.getObject(); + } +} Modified: commons/proper/proxy/branches/version-2.0-work/core/src/main/java/org/apache/commons/proxy2/interceptor/matcher/argument/ArgumentMatcherUtils.java URL: http://svn.apache.org/viewvc/commons/proper/proxy/branches/version-2.0-work/core/src/main/java/org/apache/commons/proxy2/interceptor/matcher/argument/ArgumentMatcherUtils.java?rev=1508286&r1=1508285&r2=1508286&view=diff ============================================================================== --- commons/proper/proxy/branches/version-2.0-work/core/src/main/java/org/apache/commons/proxy2/interceptor/matcher/argument/ArgumentMatcherUtils.java (original) +++ commons/proper/proxy/branches/version-2.0-work/core/src/main/java/org/apache/commons/proxy2/interceptor/matcher/argument/ArgumentMatcherUtils.java Tue Jul 30 03:36:17 2013 @@ -11,37 +11,110 @@ public class ArgumentMatcherUtils public static ArgumentMatcher any() { - return new ArgumentMatcher() - { - @Override - public boolean matches(Object argument) - { - return true; - } - }; + return new AnyMatcher(); } public static ArgumentMatcher eq(final Object value) { - return new ArgumentMatcher() + return new EqualsMatcher(value); + } + + public static ArgumentMatcher isA(final Class<?> type) + { + return new InstanceOfMatcher(type); + } + + public static ArgumentMatcher isNull() + { + return new IsNullMatcher(); + } + + public static ArgumentMatcher notNull() + { + return new NotNullMatcher(); + } + + public static ArgumentMatcher same(final Object ref) + { + return new SameMatcher(ref); + } + +//---------------------------------------------------------------------------------------------------------------------- +// Inner Classes +//---------------------------------------------------------------------------------------------------------------------- + + private static class AnyMatcher implements ArgumentMatcher + { + @Override + public boolean matches(Object argument) + { + return true; + } + } + + private static class EqualsMatcher implements ArgumentMatcher + { + private final Object value; + + public EqualsMatcher(Object value) + { + this.value = value; + } + + @Override + public boolean matches(Object argument) + { + return ObjectUtils.equals(argument, value); + } + } + + private static class InstanceOfMatcher implements ArgumentMatcher + { + private final Class<?> type; + + public InstanceOfMatcher(Class<?> type) + { + this.type = type; + } + + @Override + public boolean matches(Object argument) + { + return type.isInstance(argument); + } + } + + private static class IsNullMatcher implements ArgumentMatcher + { + @Override + public boolean matches(Object argument) + { + return argument == null; + } + } + + private static class NotNullMatcher implements ArgumentMatcher + { + @Override + public boolean matches(Object argument) + { + return argument != null; + } + } + + private static class SameMatcher implements ArgumentMatcher + { + private final Object ref; + + public SameMatcher(Object ref) + { + this.ref = ref; + } + + @Override + public boolean matches(Object argument) { - @Override - public boolean matches(Object argument) - { - return ObjectUtils.equals(argument, value); - } - }; - } - - public static ArgumentMatcher isInstance(final Class<?> type) - { - return new ArgumentMatcher() - { - @Override - public boolean matches(Object argument) - { - return type.isInstance(argument); - } - }; + return argument == ref; + } } } Modified: commons/proper/proxy/branches/version-2.0-work/stub/src/main/java/org/apache/commons/proxy2/stub/Behavior.java URL: http://svn.apache.org/viewvc/commons/proper/proxy/branches/version-2.0-work/stub/src/main/java/org/apache/commons/proxy2/stub/Behavior.java?rev=1508286&r1=1508285&r2=1508286&view=diff ============================================================================== --- commons/proper/proxy/branches/version-2.0-work/stub/src/main/java/org/apache/commons/proxy2/stub/Behavior.java (original) +++ commons/proper/proxy/branches/version-2.0-work/stub/src/main/java/org/apache/commons/proxy2/stub/Behavior.java Tue Jul 30 03:36:17 2013 @@ -17,7 +17,9 @@ package org.apache.commons.proxy2.stub; +import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.proxy2.ObjectProvider; +import org.apache.commons.proxy2.ProxyUtils; import org.apache.commons.proxy2.interceptor.InterceptorUtils; import org.apache.commons.proxy2.interceptor.matcher.ArgumentMatcher; import org.apache.commons.proxy2.interceptor.matcher.argument.ArgumentMatcherUtils; @@ -40,27 +42,27 @@ public abstract class Behavior<T> // Other Methods //---------------------------------------------------------------------------------------------------------------------- - protected <R> R any() + protected <R> R any(Class<R> type) { - recordArgumentMatcher(ArgumentMatcherUtils.any()); + record(ArgumentMatcherUtils.any()); return null; } - private void recordArgumentMatcher(ArgumentMatcher matcher) + private void record(ArgumentMatcher matcher) { trainingContext.addArgumentMatcher(matcher); } protected <R> R eq(R value) { - recordArgumentMatcher(ArgumentMatcherUtils.eq(value)); - return null; + record(ArgumentMatcherUtils.eq(value)); + return value; } protected <R> R isInstance(Class<R> type) { - recordArgumentMatcher(ArgumentMatcherUtils.isInstance(type)); - return null; + record(ArgumentMatcherUtils.isA(type)); + return ProxyUtils.nullValue(type); } void train(TrainingContext context, T stub) @@ -69,26 +71,167 @@ public abstract class Behavior<T> train(stub); } - protected <R> When<R> when(R expression) + protected <R> WhenObject<R> when(R expression) + { + return new WhenObject<R>(); + } + + protected WhenByteArray when(byte[] expression) + { + return new WhenByteArray(); + } + + protected WhenBooleanArray when(boolean[] expression) + { + return new WhenBooleanArray(); + } + + protected WhenIntArray when(int[] expression) + { + return new WhenIntArray(); + } + + protected WhenShortArray when(short[] expresssion) { - return new When(); + return new WhenShortArray(); + } + + protected WhenLongArray when(long[] expression) + { + return new WhenLongArray(); + } + + protected WhenFloatArray when(float[] expression) + { + return new WhenFloatArray(); + } + + protected WhenDoubleArray when(double[] expression) + { + return new WhenDoubleArray(); + } + + protected <R> WhenObjectArray<R> when(R[] expression) + { + return new WhenObjectArray<R>(); + } + + protected WhenCharArray when(char[] expression) + { + return new WhenCharArray(); } //---------------------------------------------------------------------------------------------------------------------- // Inner Classes //---------------------------------------------------------------------------------------------------------------------- - protected class When<R> + protected abstract class BaseWhen<R> + { + protected Behavior<T> thenThrow(Exception e) + { + trainingContext.setInterceptor(InterceptorUtils.throwing(e)); + return Behavior.this; + } + + protected Behavior<T> thenThrow(ObjectProvider<? extends Exception> provider) + { + trainingContext.setInterceptor(InterceptorUtils.throwing(provider)); + return Behavior.this; + } + + protected <R> Behavior<T> thenAnswer(ObjectProvider<? extends R> provider) + { + trainingContext.setInterceptor(InterceptorUtils.provider(provider)); + return Behavior.this; + } + } + + protected class WhenBooleanArray extends BaseWhen<boolean[]> + { + protected Behavior<T> thenReturn(boolean... values) + { + trainingContext.setInterceptor(InterceptorUtils.constant(ArrayUtils.clone(values))); + return Behavior.this; + } + } + + protected class WhenByteArray extends BaseWhen<byte[]> + { + protected Behavior<T> thenReturn(byte... values) + { + trainingContext.setInterceptor(InterceptorUtils.constant(ArrayUtils.clone(values))); + return Behavior.this; + } + } + + protected class WhenCharArray extends BaseWhen<char[]> + { + protected Behavior<T> thenReturn(char... values) + { + trainingContext.setInterceptor(InterceptorUtils.constant(ArrayUtils.clone(values))); + return Behavior.this; + } + } + + protected class WhenDoubleArray extends BaseWhen<double[]> + { + protected Behavior<T> thenReturn(double... values) + { + trainingContext.setInterceptor(InterceptorUtils.constant(ArrayUtils.clone(values))); + return Behavior.this; + } + } + + protected class WhenFloatArray extends BaseWhen<float[]> + { + protected Behavior<T> thenReturn(float... values) + { + trainingContext.setInterceptor(InterceptorUtils.constant(ArrayUtils.clone(values))); + return Behavior.this; + } + } + + protected class WhenIntArray extends BaseWhen<int[]> + { + protected Behavior<T> thenReturn(int... values) + { + trainingContext.setInterceptor(InterceptorUtils.constant(ArrayUtils.clone(values))); + return Behavior.this; + } + } + + protected class WhenLongArray extends BaseWhen<long[]> + { + protected Behavior<T> thenReturn(long... values) + { + trainingContext.setInterceptor(InterceptorUtils.constant(ArrayUtils.clone(values))); + return Behavior.this; + } + } + + protected class WhenObject<R> extends BaseWhen { protected Behavior<T> thenReturn(R value) { trainingContext.setInterceptor(InterceptorUtils.constant(value)); return Behavior.this; } + } - protected Behavior<T> thenReturn(ObjectProvider<R> provider) + protected class WhenObjectArray<R> extends BaseWhen<R[]> + { + protected Behavior<T> thenReturn(R... values) { - trainingContext.setInterceptor(InterceptorUtils.provider(provider)); + trainingContext.setInterceptor(InterceptorUtils.constant(ArrayUtils.clone(values))); + return Behavior.this; + } + } + + protected class WhenShortArray extends BaseWhen<short[]> + { + protected Behavior<T> thenReturn(short... values) + { + trainingContext.setInterceptor(InterceptorUtils.constant(ArrayUtils.clone(values))); return Behavior.this; } } Modified: commons/proper/proxy/branches/version-2.0-work/stub/src/main/java/org/apache/commons/proxy2/stub/TrainingContext.java URL: http://svn.apache.org/viewvc/commons/proper/proxy/branches/version-2.0-work/stub/src/main/java/org/apache/commons/proxy2/stub/TrainingContext.java?rev=1508286&r1=1508285&r2=1508286&view=diff ============================================================================== --- commons/proper/proxy/branches/version-2.0-work/stub/src/main/java/org/apache/commons/proxy2/stub/TrainingContext.java (original) +++ commons/proper/proxy/branches/version-2.0-work/stub/src/main/java/org/apache/commons/proxy2/stub/TrainingContext.java Tue Jul 30 03:36:17 2013 @@ -145,7 +145,7 @@ public class TrainingContext public boolean matches(Invocation invocation) { return invocation.getMethod().equals(recordedInvocation.getInvokedMethod()) && - Arrays.equals(invocation.getArguments(), recordedInvocation.getArguments()); + Arrays.deepEquals(invocation.getArguments(), recordedInvocation.getArguments()); } } } Copied: commons/proper/proxy/branches/version-2.0-work/stub/src/test/java/org/apache/commons/proxy2/stub/StubInterceptorBuilderTest.java (from r1508275, commons/proper/proxy/branches/version-2.0-work/stub/src/test/java/org/apache/commons/proxy2/stub/TestStubInterceptorBuilder.java) URL: http://svn.apache.org/viewvc/commons/proper/proxy/branches/version-2.0-work/stub/src/test/java/org/apache/commons/proxy2/stub/StubInterceptorBuilderTest.java?p2=commons/proper/proxy/branches/version-2.0-work/stub/src/test/java/org/apache/commons/proxy2/stub/StubInterceptorBuilderTest.java&p1=commons/proper/proxy/branches/version-2.0-work/stub/src/test/java/org/apache/commons/proxy2/stub/TestStubInterceptorBuilder.java&r1=1508275&r2=1508286&rev=1508286&view=diff ============================================================================== --- commons/proper/proxy/branches/version-2.0-work/stub/src/test/java/org/apache/commons/proxy2/stub/TestStubInterceptorBuilder.java (original) +++ commons/proper/proxy/branches/version-2.0-work/stub/src/test/java/org/apache/commons/proxy2/stub/StubInterceptorBuilderTest.java Tue Jul 30 03:36:17 2013 @@ -25,9 +25,11 @@ import org.apache.commons.proxy2.provide import org.junit.Before; import org.junit.Test; -import static org.junit.Assert.assertEquals; +import java.util.Arrays; -public class TestStubInterceptorBuilder +import static org.junit.Assert.*; + +public class StubInterceptorBuilderTest { //---------------------------------------------------------------------------------------------------------------------- // Fields @@ -35,6 +37,7 @@ public class TestStubInterceptorBuilder private ProxyFactory proxyFactory; private StubInterface target; + private StubInterceptorBuilder builder; //---------------------------------------------------------------------------------------------------------------------- // Other Methods @@ -45,53 +48,239 @@ public class TestStubInterceptorBuilder { this.proxyFactory = new CglibProxyFactory(); this.target = proxyFactory.createInvokerProxy(NullInvoker.INSTANCE, StubInterface.class); + this.builder = new StubInterceptorBuilder(proxyFactory); + } + + @Test + public void testWithArrayParameter() + { + StubInterface proxy = createProxy(new Behavior<StubInterface>() + { + @Override + protected void train(StubInterface stub) + { + when(stub.arrayParameter("One", "Two", "Three")).thenReturn("Four"); + } + }); + + assertEquals("Four", proxy.arrayParameter("One", "Two", "Three")); + } + + @Test + public void testAnyMatcher() + { + final StubInterface proxy = createProxy(new Behavior<StubInterface>() + { + @Override + protected void train(StubInterface stub) + { + when(stub.one(any(String.class))).thenReturn("World"); + } + }); + assertEquals("World", proxy.one("Hello")); + assertEquals("World", proxy.one(null)); } @Test(expected = IllegalStateException.class) public void testMixingArgumentMatchingStrategies() { - StubInterceptorBuilder builder = new StubInterceptorBuilder(proxyFactory); builder.configure(StubInterface.class, new Behavior<StubInterface>() { @Override protected void train(StubInterface stub) { - when(stub.three(isInstance(String.class), "World")).thenReturn(ObjectProviderUtils.constant("World")); + when(stub.three(isInstance(String.class), "World")).thenAnswer(ObjectProviderUtils.constant("World")); + } + }); + } + + @Test(expected = RuntimeException.class) + public void testThrowingExceptionObject() + { + final StubInterface proxy = createProxy(new Behavior<StubInterface>() + { + @Override + protected void train(StubInterface stub) + { + when(stub.one("Hello")).thenThrow(new RuntimeException("No way, Jose!")); } }); + proxy.one("Hello"); + } + + @Test(expected = RuntimeException.class) + public void testThrowingProvidedException() + { + final StubInterface proxy = createProxy(new Behavior<StubInterface>() + { + @Override + protected void train(StubInterface stub) + { + when(stub.one("Hello")).thenThrow(ObjectProviderUtils.constant(new RuntimeException("No way, Jose!"))); + } + }); + proxy.one("Hello"); } @Test public void testWithArgumentMatchers() { - StubInterceptorBuilder builder = new StubInterceptorBuilder(proxyFactory); - Interceptor interceptor = builder.configure(StubInterface.class, new Behavior<StubInterface>() + final StubInterface proxy = createProxy(new Behavior<StubInterface>() { @Override protected void train(StubInterface stub) { - when(stub.one(isInstance(String.class))).thenReturn(ObjectProviderUtils.constant("World")); + when(stub.one(isInstance(String.class))).thenAnswer(ObjectProviderUtils.constant("World")); } - }).build(); - - final StubInterface proxy = proxyFactory.createInterceptorProxy(target, interceptor, StubInterface.class); + }); assertEquals("World", proxy.one("Hello")); assertEquals("World", proxy.one("Whatever")); } + private StubInterface createProxy(Behavior<StubInterface> behavior) + { + Interceptor interceptor = builder.configure(StubInterface.class, behavior).build(); + + return proxyFactory.createInterceptorProxy(target, interceptor, StubInterface.class); + } + + @Test + public void testWithStringArray() + { + final StubInterface proxy = createProxy(new Behavior<StubInterface>() + { + @Override + protected void train(StubInterface stub) + { + when(stub.stringArray()).thenReturn("One", "Two"); + } + }); + assertArrayEquals(new String[]{"One", "Two"}, proxy.stringArray()); + } + + @Test + public void testWithBooleanArray() + { + final StubInterface proxy = createProxy(new Behavior<StubInterface>() + { + @Override + protected void train(StubInterface stub) + { + when(stub.booleanArray()).thenReturn(false, true, false); + } + }); + assertTrue(Arrays.equals(new boolean[]{false, true, false}, proxy.booleanArray())); + } + + @Test + public void testWithByteArray() + { + final StubInterface proxy = createProxy(new Behavior<StubInterface>() + { + @Override + protected void train(StubInterface stub) + { + when(stub.byteArray()).thenReturn((byte) 1, (byte) 2); + } + }); + assertArrayEquals(new byte[]{1, 2}, proxy.byteArray()); + } + + @Test + public void testWithShortArray() + { + final StubInterface proxy = createProxy(new Behavior<StubInterface>() + { + @Override + protected void train(StubInterface stub) + { + when(stub.shortArray()).thenReturn((short) 1, (short) 2); + } + }); + assertArrayEquals(new short[]{1, 2}, proxy.shortArray()); + } + + @Test + public void testWithIntArray() + { + final StubInterface proxy = createProxy(new Behavior<StubInterface>() + { + @Override + protected void train(StubInterface stub) + { + when(stub.intArray()).thenReturn(1, 2); + } + }); + assertArrayEquals(new int[]{1, 2}, proxy.intArray()); + } + + @Test + public void testWithLongArray() + { + final StubInterface proxy = createProxy(new Behavior<StubInterface>() + { + @Override + protected void train(StubInterface stub) + { + when(stub.longArray()).thenReturn(1, 2); + } + }); + assertArrayEquals(new long[]{1, 2}, proxy.longArray()); + } + + @Test + public void testWithFloatArray() + { + final StubInterface proxy = createProxy(new Behavior<StubInterface>() + { + @Override + protected void train(StubInterface stub) + { + when(stub.floatArray()).thenReturn(1f, 2f); + } + }); + assertArrayEquals(new float[]{1f, 2f}, proxy.floatArray(), 0.0f); + } + + @Test + public void testWithDoubleArray() + { + final StubInterface proxy = createProxy(new Behavior<StubInterface>() + { + @Override + protected void train(StubInterface stub) + { + when(stub.doubleArray()).thenReturn(1.0, 2.0); + } + }); + assertArrayEquals(new double[]{1.0, 2.0}, proxy.doubleArray(), 0.0); + } + + @Test + public void testWithCharArray() + { + final StubInterface proxy = createProxy(new Behavior<StubInterface>() + { + @Override + protected void train(StubInterface stub) + { + when(stub.charArray()).thenReturn('a', 'b', 'c'); + } + }); + assertArrayEquals(new char[]{'a', 'b', 'c'}, proxy.charArray()); + } + @Test public void testWithMismatchedArgument() { - StubInterceptorBuilder builder = new StubInterceptorBuilder(proxyFactory); - Interceptor interceptor = builder.configure(StubInterface.class, new Behavior<StubInterface>() + final StubInterface proxy = createProxy(new Behavior<StubInterface>() { @Override protected void train(StubInterface stub) { when(stub.one(eq("Hello"))).thenReturn("World"); } - }).build(); - final StubInterface proxy = proxyFactory.createInterceptorProxy(target, interceptor, StubInterface.class); + }); assertEquals("World", proxy.one("Hello")); assertEquals(null, proxy.one("Whatever")); } @@ -99,8 +288,7 @@ public class TestStubInterceptorBuilder @Test public void testWithMultipleMethodsTrained() { - StubInterceptorBuilder builder = new StubInterceptorBuilder(proxyFactory); - Interceptor interceptor = builder.configure(StubInterface.class, new Behavior<StubInterface>() + final StubInterface proxy = createProxy(new Behavior<StubInterface>() { @Override protected void train(StubInterface stub) @@ -108,9 +296,7 @@ public class TestStubInterceptorBuilder when(stub.one("Hello")).thenReturn("World"); when(stub.two("Foo")).thenReturn("Bar"); } - }).build(); - - final StubInterface proxy = proxyFactory.createInterceptorProxy(target, interceptor, StubInterface.class); + }); assertEquals("World", proxy.one("Hello")); assertEquals("Bar", proxy.two("Foo")); } @@ -118,17 +304,14 @@ public class TestStubInterceptorBuilder @Test public void testWithSingleMethodTrained() { - StubInterceptorBuilder builder = new StubInterceptorBuilder(proxyFactory); - Interceptor interceptor = builder.configure(StubInterface.class, new Behavior<StubInterface>() + final StubInterface proxy = createProxy(new Behavior<StubInterface>() { @Override protected void train(StubInterface stub) { when(stub.one("Hello")).thenReturn("World"); } - }).build(); - - final StubInterface proxy = proxyFactory.createInterceptorProxy(target, interceptor, StubInterface.class); + }); assertEquals("World", proxy.one("Hello")); assertEquals(null, proxy.two("Whatever")); assertEquals(null, proxy.one("Mismatch!")); Modified: commons/proper/proxy/branches/version-2.0-work/stub/src/test/java/org/apache/commons/proxy2/stub/StubInterface.java URL: http://svn.apache.org/viewvc/commons/proper/proxy/branches/version-2.0-work/stub/src/test/java/org/apache/commons/proxy2/stub/StubInterface.java?rev=1508286&r1=1508285&r2=1508286&view=diff ============================================================================== --- commons/proper/proxy/branches/version-2.0-work/stub/src/test/java/org/apache/commons/proxy2/stub/StubInterface.java (original) +++ commons/proper/proxy/branches/version-2.0-work/stub/src/test/java/org/apache/commons/proxy2/stub/StubInterface.java Tue Jul 30 03:36:17 2013 @@ -26,4 +26,16 @@ public interface StubInterface public String one(String value); public String three(String arg1, String arg2); public String two(String value); + + public byte[] byteArray(); + public char[] charArray(); + public short[] shortArray(); + public int[] intArray(); + public long[] longArray(); + public float[] floatArray(); + public double[] doubleArray(); + public boolean[] booleanArray(); + public String[] stringArray(); + + public String arrayParameter(String... strings); }