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/08/19 18:16:53 UTC

svn commit: r1515491 - /commons/proper/proxy/branches/version-2.0-work/stub/src/main/java/org/apache/commons/proxy2/stub/TrainingContext.java

Author: mbenson
Date: Mon Aug 19 16:16:52 2013
New Revision: 1515491

URL: http://svn.apache.org/r1515491
Log:
allow custom invoker and clean up warnings

Modified:
    commons/proper/proxy/branches/version-2.0-work/stub/src/main/java/org/apache/commons/proxy2/stub/TrainingContext.java

Modified: commons/proper/proxy/branches/version-2.0-work/stub/src/main/java/org/apache/commons/proxy2/stub/TrainingContext.java
URL: http://svn.apache.org/viewvc/commons/proper/proxy/branches/version-2.0-work/stub/src/main/java/org/apache/commons/proxy2/stub/TrainingContext.java?rev=1515491&r1=1515490&r2=1515491&view=diff
==============================================================================
--- commons/proper/proxy/branches/version-2.0-work/stub/src/main/java/org/apache/commons/proxy2/stub/TrainingContext.java (original)
+++ commons/proper/proxy/branches/version-2.0-work/stub/src/main/java/org/apache/commons/proxy2/stub/TrainingContext.java Mon Aug 19 16:16:52 2013
@@ -64,13 +64,18 @@ public class TrainingContext
 
     <T> T pop()
     {
+        return pop(NullInvoker.INSTANCE);
+    }
+
+    <T> T pop(Invoker invoker)
+    {
         final TrainingContextFrame<?> frame = frameDeque.pop();
         return proxyFactory.createInterceptorProxy(
-                proxyFactory.createInvokerProxy(NullInvoker.INSTANCE, frame.type),
+                proxyFactory.createInvokerProxy(invoker, frame.type),
                 frame.stubInterceptor,
                 frame.type);
     }
-
+    
     <T> T push(Class<T> type)
     {
         return push(type, new SwitchInterceptor());
@@ -84,7 +89,7 @@ public class TrainingContext
         return proxyFactory.createInvokerProxy(invoker, type);
     }
 
-    public void record(ArgumentMatcher argumentMatcher)
+    public void record(ArgumentMatcher<?> argumentMatcher)
     {
         peek().argumentMatchers.add(argumentMatcher);
     }
@@ -118,9 +123,9 @@ public class TrainingContext
     private static final class MatchingArgumentsMatcher implements InvocationMatcher
     {
         private final RecordedInvocation recordedInvocation;
-        private final ArgumentMatcher[] matchers;
+        private final ArgumentMatcher<?>[] matchers;
 
-        private MatchingArgumentsMatcher(RecordedInvocation recordedInvocation, ArgumentMatcher[] matchers)
+        private MatchingArgumentsMatcher(RecordedInvocation recordedInvocation, ArgumentMatcher<?>[] matchers)
         {
             this.recordedInvocation = recordedInvocation;
             this.matchers = ArrayUtils.clone(matchers);
@@ -138,7 +143,9 @@ public class TrainingContext
             for (int i = 0; i < arguments.length; i++)
             {
                 Object argument = arguments[i];
-                if (!matchers[i].matches(argument))
+                @SuppressWarnings({ "rawtypes", "unchecked" })
+                final boolean matches = ((ArgumentMatcher) matchers[i]).matches(argument);
+                if (!matches)
                 {
                     return false;
                 }
@@ -153,7 +160,7 @@ public class TrainingContext
 
         private final SwitchInterceptor stubInterceptor;
 
-        private final List<ArgumentMatcher> argumentMatchers = new LinkedList<ArgumentMatcher>();
+        private final List<ArgumentMatcher<?>> argumentMatchers = new LinkedList<ArgumentMatcher<?>>();
 
         private InvocationMatcher matcher = null;
 
@@ -182,7 +189,7 @@ public class TrainingContext
 
         void methodInvoked(Method method, Object[] arguments)
         {
-            final ArgumentMatcher[] matchersArray = argumentMatchers.toArray(new ArgumentMatcher[argumentMatchers.size()]);
+            final ArgumentMatcher<?>[] matchersArray = argumentMatchers.toArray(new ArgumentMatcher[argumentMatchers.size()]);
             argumentMatchers.clear();
             final RecordedInvocation invocation = new RecordedInvocation(method, arguments);
             if (ArrayUtils.isEmpty(matchersArray))
@@ -202,6 +209,8 @@ public class TrainingContext
 
     private static final class TrainingInvoker implements Invoker
     {
+        private static final long serialVersionUID = 1L;
+
         private final String id;
 
         private TrainingInvoker(TrainingContextFrame<?> frame)