You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by jc...@apache.org on 2013/07/29 17:10:07 UTC
svn commit: r1508094 - in /commons/proper/proxy/branches/version-2.0-work: ./
core/src/main/java/org/apache/commons/proxy2/interceptor/SwitchInterceptor.java
core/src/test/java/org/apache/commons/proxy2/interceptor/TestSwitchInterceptor.java
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));
Re: svn commit: r1508094 - in /commons/proper/proxy/branches/version-2.0-work:
./ core/src/main/java/org/apache/commons/proxy2/interceptor/SwitchInterceptor.java
core/src/test/java/org/apache/commons/proxy2/interceptor/TestSwitchInterceptor.java
Posted by Matt Benson <gu...@gmail.com>.
Of course you're correct. Sorry for the noise! :)
br,
Matt
On Mon, Jul 29, 2013 at 10:17 AM, James Carman
<ja...@carmanconsulting.com>wrote:
> CaseBuilder returns "this" SwitchInterceptor from the then() method,
> so it can't be static. Needs to have a reference to its enclosing
> SwitchInterceptor.
>
> On Mon, Jul 29, 2013 at 11:12 AM, Matt Benson <gu...@gmail.com>
> wrote:
> > CaseBuilder could be static as well.
> >
> > Matt
> >
> >
> > On Mon, Jul 29, 2013 at 10:10 AM, <jc...@apache.org> wrote:
> >
> >> 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));
> >>
> >>
> >>
>
Re: svn commit: r1508094 - in /commons/proper/proxy/branches/version-2.0-work:
./ core/src/main/java/org/apache/commons/proxy2/interceptor/SwitchInterceptor.java
core/src/test/java/org/apache/commons/proxy2/interceptor/TestSwitchInterceptor.java
Posted by James Carman <ja...@carmanconsulting.com>.
CaseBuilder returns "this" SwitchInterceptor from the then() method,
so it can't be static. Needs to have a reference to its enclosing
SwitchInterceptor.
On Mon, Jul 29, 2013 at 11:12 AM, Matt Benson <gu...@gmail.com> wrote:
> CaseBuilder could be static as well.
>
> Matt
>
>
> On Mon, Jul 29, 2013 at 10:10 AM, <jc...@apache.org> wrote:
>
>> 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));
>>
>>
>>
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org
Re: svn commit: r1508094 - in /commons/proper/proxy/branches/version-2.0-work:
./ core/src/main/java/org/apache/commons/proxy2/interceptor/SwitchInterceptor.java
core/src/test/java/org/apache/commons/proxy2/interceptor/TestSwitchInterceptor.java
Posted by Matt Benson <gu...@gmail.com>.
CaseBuilder could be static as well.
Matt
On Mon, Jul 29, 2013 at 10:10 AM, <jc...@apache.org> wrote:
> 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));
>
>
>