Author: jcarman Date: Tue Jul 30 04:31:06 2013 New Revision: 1508300 URL: http://svn.apache.org/r1508300 Log: Adding throw capability for void methods.
Modified: 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/test/java/org/apache/commons/proxy2/stub/StubInterceptorBuilderTest.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/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=1508300&r1=1508299&r2=1508300&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 04:31:06 2013 @@ -59,6 +59,21 @@ public abstract class Behavior<T> return ProxyUtils.nullValue(type); } + protected void thenThrow(Exception e) + { + trainingContext().setInterceptor(InterceptorUtils.throwing(e)); + } + + protected void thenThrow(ObjectProvider<? extends Exception> provider) + { + trainingContext().setInterceptor(InterceptorUtils.throwing(provider)); + } + + private TrainingContext trainingContext() + { + return TrainingContext.getTrainingContext(); + } + protected <R> WhenObject<R> when(R expression) { return new WhenObject<R>(); @@ -134,11 +149,6 @@ public abstract class Behavior<T> } } - private TrainingContext trainingContext() - { - return TrainingContext.getTrainingContext(); - } - protected class WhenBooleanArray extends BaseWhen<boolean[]> { protected Behavior<T> thenReturn(boolean... values) Modified: commons/proper/proxy/branches/version-2.0-work/stub/src/test/java/org/apache/commons/proxy2/stub/StubInterceptorBuilderTest.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?rev=1508300&r1=1508299&r2=1508300&view=diff ============================================================================== --- commons/proper/proxy/branches/version-2.0-work/stub/src/test/java/org/apache/commons/proxy2/stub/StubInterceptorBuilderTest.java (original) +++ commons/proper/proxy/branches/version-2.0-work/stub/src/test/java/org/apache/commons/proxy2/stub/StubInterceptorBuilderTest.java Tue Jul 30 04:31:06 2013 @@ -51,6 +51,36 @@ public class StubInterceptorBuilderTest this.builder = new StubInterceptorBuilder(proxyFactory); } + @Test(expected = IllegalArgumentException.class) + public void testThrowExceptionWithException() + { + StubInterface proxy = createProxy(new Behavior<StubInterface>() + { + @Override + protected void train(StubInterface stub) + { + stub.voidMethod("Hello"); + thenThrow(new IllegalArgumentException("Nope!")); + } + }); + proxy.voidMethod("Hello"); + } + + @Test(expected = IllegalArgumentException.class) + public void testThrowExceptionWithProvidedException() + { + StubInterface proxy = createProxy(new Behavior<StubInterface>() + { + @Override + protected void train(StubInterface stub) + { + stub.voidMethod("Hello"); + thenThrow(ObjectProviderUtils.constant(new IllegalArgumentException("Nope!"))); + } + }); + proxy.voidMethod("Hello"); + } + @Test public void testWithArrayParameter() { 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=1508300&r1=1508299&r2=1508300&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 04:31:06 2013 @@ -38,4 +38,6 @@ public interface StubInterface public String[] stringArray(); public String arrayParameter(String... strings); + + public void voidMethod(String arg); }