Author: jcarman
Date: Mon Jul 29 15:10:07 2013
New Revision: 1508094
URL: http://svn.apache.org/r1508094
Log:
PROXY-20: Changing API around a bit to be more "fluent"
Modified:
commons/proper/proxy/branches/version-2.0-work/ (props changed)
commons/proper/proxy/branches/version-2.0-work/core/src/main/java/org/apache/commons/proxy2/interceptor/SwitchInterceptor.java
commons/proper/proxy/branches/version-2.0-work/core/src/test/java/org/apache/commons/proxy2/interceptor/TestSwitchInterceptor.java
Propchange: commons/proper/proxy/branches/version-2.0-work/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Mon Jul 29 15:10:07 2013
@@ -5,3 +5,5 @@
target
commons-proxy2-parent.iml
+
+.idea
Modified:
commons/proper/proxy/branches/version-2.0-work/core/src/main/java/org/apache/commons/proxy2/interceptor/SwitchInterceptor.java
URL:
http://svn.apache.org/viewvc/commons/proper/proxy/branches/version-2.0-work/core/src/main/java/org/apache/commons/proxy2/interceptor/SwitchInterceptor.java?rev=1508094&r1=1508093&r2=1508094&view=diff
==============================================================================
---
commons/proper/proxy/branches/version-2.0-work/core/src/main/java/org/apache/commons/proxy2/interceptor/SwitchInterceptor.java
(original)
+++
commons/proper/proxy/branches/version-2.0-work/core/src/main/java/org/apache/commons/proxy2/interceptor/SwitchInterceptor.java
Mon Jul 29 15:10:07 2013
@@ -17,6 +17,8 @@
package org.apache.commons.proxy2.interceptor;
+import org.apache.commons.lang3.tuple.ImmutablePair;
+import org.apache.commons.lang3.tuple.Pair;
import org.apache.commons.proxy2.Interceptor;
import org.apache.commons.proxy2.Invocation;
@@ -36,7 +38,7 @@ public class SwitchInterceptor implement
// Fields
//----------------------------------------------------------------------------------------------------------------------
- private final List<Case> cases = new CopyOnWriteArrayList<Case>();
+ private final List<Pair<InvocationMatcher, Interceptor>> cases = new
CopyOnWriteArrayList<Pair<InvocationMatcher, Interceptor>>();
//----------------------------------------------------------------------------------------------------------------------
// Constructors
@@ -46,11 +48,6 @@ public class SwitchInterceptor implement
{
}
- public SwitchInterceptor(InvocationMatcher matcher, Interceptor
interceptor)
- {
- cases.add(new Case(matcher, interceptor));
- }
-
//----------------------------------------------------------------------------------------------------------------------
// Interceptor Implementation
//----------------------------------------------------------------------------------------------------------------------
@@ -58,11 +55,11 @@ public class SwitchInterceptor implement
@Override
public Object intercept(Invocation invocation) throws Throwable
{
- for (Case currentCase : cases)
+ for (Pair<InvocationMatcher, Interceptor> currentCase : cases)
{
- if(currentCase.matcher.matches(invocation))
+ if (currentCase.getLeft().matches(invocation))
{
- return currentCase.interceptor.intercept(invocation);
+ return currentCase.getRight().intercept(invocation);
}
}
return invocation.proceed();
@@ -72,25 +69,28 @@ public class SwitchInterceptor implement
// Other Methods
//----------------------------------------------------------------------------------------------------------------------
- public SwitchInterceptor onCase(InvocationMatcher matcher, Interceptor
interceptor)
+ public CaseBuilder when(InvocationMatcher matcher)
{
- cases.add(new Case(matcher, interceptor));
- return this;
+ return new CaseBuilder(matcher);
}
//----------------------------------------------------------------------------------------------------------------------
// Inner Classes
//----------------------------------------------------------------------------------------------------------------------
- private static final class Case implements Serializable
+ public class CaseBuilder
{
- private InvocationMatcher matcher;
- private Interceptor interceptor;
+ private final InvocationMatcher matcher;
- private Case(InvocationMatcher matcher, Interceptor interceptor)
+ public CaseBuilder(InvocationMatcher matcher)
{
this.matcher = matcher;
- this.interceptor = interceptor;
+ }
+
+ public SwitchInterceptor then(Interceptor interceptor)
+ {
+ cases.add(new ImmutablePair<InvocationMatcher,
Interceptor>(matcher, interceptor));
+ return SwitchInterceptor.this;
}
}
}
Modified:
commons/proper/proxy/branches/version-2.0-work/core/src/test/java/org/apache/commons/proxy2/interceptor/TestSwitchInterceptor.java
URL:
http://svn.apache.org/viewvc/commons/proper/proxy/branches/version-2.0-work/core/src/test/java/org/apache/commons/proxy2/interceptor/TestSwitchInterceptor.java?rev=1508094&r1=1508093&r2=1508094&view=diff
==============================================================================
---
commons/proper/proxy/branches/version-2.0-work/core/src/test/java/org/apache/commons/proxy2/interceptor/TestSwitchInterceptor.java
(original)
+++
commons/proper/proxy/branches/version-2.0-work/core/src/test/java/org/apache/commons/proxy2/interceptor/TestSwitchInterceptor.java
Mon Jul 29 15:10:07 2013
@@ -34,8 +34,8 @@ public class TestSwitchInterceptor exten
public void testWithMultipleAdvices() throws Throwable
{
SwitchInterceptor interceptor = new SwitchInterceptor();
- interceptor.onCase(new MethodNameMatcher("echo"), new
ConstantInterceptor("bar"));
- interceptor.onCase(new MethodNameMatcher("echoBack"), new
ConstantInterceptor("baz"));
+ interceptor.when(new MethodNameMatcher("echo")).then(new
ConstantInterceptor("bar"));
+ interceptor.when(new MethodNameMatcher("echoBack")).then(new
ConstantInterceptor("baz"));
Method method = Echo.class.getMethod("echoBack", String.class);
Invocation invocation = new MockInvocation(method, "foo", "foo");
assertEquals("baz", interceptor.intercept(invocation));
@@ -51,7 +51,7 @@ public class TestSwitchInterceptor exten
public void testWithSingleAdviceWhichDoesNotMatch() throws Throwable
{
- SwitchInterceptor interceptor = new SwitchInterceptor(new
MethodNameMatcher("echoBackZZZZ"), new ConstantInterceptor("bar"));
+ SwitchInterceptor interceptor = new SwitchInterceptor().when(new
MethodNameMatcher("echoBackZZZZ")).then(new ConstantInterceptor("bar"));
Method method = Echo.class.getMethod("echoBack", String.class);
Invocation invocation = new MockInvocation(method, "foo", "foo");
assertEquals("foo", interceptor.intercept(invocation));
@@ -59,7 +59,7 @@ public class TestSwitchInterceptor exten
public void testWithSingleAdviceWhichMatches() throws Throwable
{
- SwitchInterceptor interceptor = new SwitchInterceptor(new
MethodNameMatcher("echoBack"), new ConstantInterceptor("bar"));
+ SwitchInterceptor interceptor = new SwitchInterceptor().when(new
MethodNameMatcher("echoBack")).then(new ConstantInterceptor("bar"));
Method method = Echo.class.getMethod("echoBack", String.class);
Invocation invocation = new MockInvocation(method, "foo", "foo");
assertEquals("bar", interceptor.intercept(invocation));