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 <gudnabr...@gmail.com>
> wrote:
> > CaseBuilder could be static as well.
> >
> > Matt
> >
> >
> > On Mon, Jul 29, 2013 at 10:10 AM, <jcar...@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));
> >>
> >>
> >>
>

Reply via email to