You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by mb...@apache.org on 2013/09/04 00:45:46 UTC

svn commit: r1519877 - in /commons/proper/proxy/branches/version-2.0-work: core/src/main/java/org/apache/commons/proxy2/interceptor/matcher/argument/ArgumentMatcherUtils.java stub/src/main/java/org/apache/commons/proxy2/stub/BaseTrainer.java

Author: mbenson
Date: Tue Sep  3 22:45:46 2013
New Revision: 1519877

URL: http://svn.apache.org/r1519877
Log:
expose argThat() API for stub training, make built-in argumentMatchers generic

Modified:
    commons/proper/proxy/branches/version-2.0-work/core/src/main/java/org/apache/commons/proxy2/interceptor/matcher/argument/ArgumentMatcherUtils.java
    commons/proper/proxy/branches/version-2.0-work/stub/src/main/java/org/apache/commons/proxy2/stub/BaseTrainer.java

Modified: commons/proper/proxy/branches/version-2.0-work/core/src/main/java/org/apache/commons/proxy2/interceptor/matcher/argument/ArgumentMatcherUtils.java
URL: http://svn.apache.org/viewvc/commons/proper/proxy/branches/version-2.0-work/core/src/main/java/org/apache/commons/proxy2/interceptor/matcher/argument/ArgumentMatcherUtils.java?rev=1519877&r1=1519876&r2=1519877&view=diff
==============================================================================
--- commons/proper/proxy/branches/version-2.0-work/core/src/main/java/org/apache/commons/proxy2/interceptor/matcher/argument/ArgumentMatcherUtils.java (original)
+++ commons/proper/proxy/branches/version-2.0-work/core/src/main/java/org/apache/commons/proxy2/interceptor/matcher/argument/ArgumentMatcherUtils.java Tue Sep  3 22:45:46 2013
@@ -18,6 +18,7 @@
 package org.apache.commons.proxy2.interceptor.matcher.argument;
 
 import org.apache.commons.lang3.ObjectUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.Validate;
 import org.apache.commons.proxy2.interceptor.matcher.ArgumentMatcher;
 
@@ -27,9 +28,9 @@ public final class ArgumentMatcherUtils
 // Static Methods
 //----------------------------------------------------------------------------------------------------------------------
 
-    public static ArgumentMatcher<Object> any()
+    public static <T> ArgumentMatcher<T> any()
     {
-        return new AnyMatcher();
+        return new AnyMatcher<T>();
     }
 
     public static ArgumentMatcher<String> endsWith(String suffix)
@@ -52,14 +53,14 @@ public final class ArgumentMatcherUtils
         return new GreaterThanOrEqualMatcher<C>(comparable);
     }
 
-    public static ArgumentMatcher<Object> isA(final Class<?> type)
+    public static <T> ArgumentMatcher<T> isA(final Class<?> type)
     {
-        return new InstanceOfMatcher(type);
+        return new InstanceOfMatcher<T>(type);
     }
 
-    public static ArgumentMatcher<Object> isNull()
+    public static <T> ArgumentMatcher<T> isNull()
     {
-        return new IsNullMatcher();
+        return new IsNullMatcher<T>();
     }
 
     public static <C extends Comparable<?>> ArgumentMatcher<C> lt(C comparable)
@@ -100,10 +101,10 @@ public final class ArgumentMatcherUtils
 // Inner Classes
 //----------------------------------------------------------------------------------------------------------------------
 
-    private static final class AnyMatcher implements ArgumentMatcher<Object>
+    private static final class AnyMatcher<T> implements ArgumentMatcher<T>
     {
         @Override
-        public boolean matches(Object argument)
+        public boolean matches(T argument)
         {
             return true;
         }
@@ -146,7 +147,7 @@ public final class ArgumentMatcherUtils
         @Override
         public boolean matches(String argument)
         {
-            return argument != null && argument.endsWith(suffix);
+        	return StringUtils.endsWith(argument, suffix);
         }
     }
 
@@ -194,26 +195,26 @@ public final class ArgumentMatcherUtils
         }
     }
 
-    private static final class InstanceOfMatcher implements ArgumentMatcher<Object>
+    private static final class InstanceOfMatcher<T> implements ArgumentMatcher<T>
     {
         private final Class<?> type;
 
         public InstanceOfMatcher(Class<?> type)
         {
-            this.type = type;
+            this.type = Validate.notNull(type, "type");
         }
 
         @Override
-        public boolean matches(Object argument)
+        public boolean matches(T argument)
         {
             return type.isInstance(argument);
         }
     }
 
-    private static final class IsNullMatcher implements ArgumentMatcher<Object>
+    private static final class IsNullMatcher<T> implements ArgumentMatcher<T>
     {
         @Override
-        public boolean matches(Object argument)
+        public boolean matches(T argument)
         {
             return argument == null;
         }
@@ -284,7 +285,7 @@ public final class ArgumentMatcherUtils
         @Override
         public boolean matches(String argument)
         {
-            return argument != null && argument.startsWith(prefix);
+        	return StringUtils.startsWith(argument, prefix);
         }
     }
 }

Modified: commons/proper/proxy/branches/version-2.0-work/stub/src/main/java/org/apache/commons/proxy2/stub/BaseTrainer.java
URL: http://svn.apache.org/viewvc/commons/proper/proxy/branches/version-2.0-work/stub/src/main/java/org/apache/commons/proxy2/stub/BaseTrainer.java?rev=1519877&r1=1519876&r2=1519877&view=diff
==============================================================================
--- commons/proper/proxy/branches/version-2.0-work/stub/src/main/java/org/apache/commons/proxy2/stub/BaseTrainer.java (original)
+++ commons/proper/proxy/branches/version-2.0-work/stub/src/main/java/org/apache/commons/proxy2/stub/BaseTrainer.java Tue Sep  3 22:45:46 2013
@@ -75,25 +75,23 @@ public abstract class BaseTrainer<S exte
 
     protected <R> R any(Class<R> type)
     {
-        record(ArgumentMatcherUtils.any());
-        return null;
+        return argThat(ArgumentMatcherUtils.<R> any());
     }
 
-    private void record(ArgumentMatcher<?> matcher)
+    protected <R> R eq(R value)
     {
-        trainingContext().record(matcher);
+        return argThat(ArgumentMatcherUtils.eq(value));
     }
 
-    protected <R> R eq(R value)
+    protected <R> R isInstance(Class<R> type)
     {
-        record(ArgumentMatcherUtils.eq(value));
-        return value;
+        return argThat(ArgumentMatcherUtils.<R> isA(type));
     }
 
-    protected <R> R isInstance(Class<R> type)
+    protected <R> R argThat(ArgumentMatcher<R> matcher)
     {
-        record(ArgumentMatcherUtils.isA(type));
-        return ProxyUtils.nullValue(type);
+        trainingContext().record(matcher);
+        return null;
     }
 
     protected void thenThrow(Exception e)