commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From James Carman <ja...@carmanconsulting.com>
Subject 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
Date Mon, 29 Jul 2013 15:17:53 GMT
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 <gudnabrsam@gmail.com> wrote:
> CaseBuilder could be static as well.
>
> Matt
>
>
> On Mon, Jul 29, 2013 at 10:10 AM, <jcarman@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


Mime
View raw message