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/30 06:07:11 UTC
svn commit: r1508296 - in
/commons/proper/proxy/branches/version-2.0-work/stub/src/main/java/org/apache/commons/proxy2/stub:
Behavior.java StubInterceptorBuilder.java TrainingContext.java
Author: jcarman
Date: Tue Jul 30 04:07:11 2013
New Revision: 1508296
URL: http://svn.apache.org/r1508296
Log:
Removing member variable from Behavior class.
Modified:
commons/proper/proxy/branches/version-2.0-work/stub/src/main/java/org/apache/commons/proxy2/stub/Behavior.java
commons/proper/proxy/branches/version-2.0-work/stub/src/main/java/org/apache/commons/proxy2/stub/StubInterceptorBuilder.java
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/Behavior.java
URL: http://svn.apache.org/viewvc/commons/proper/proxy/branches/version-2.0-work/stub/src/main/java/org/apache/commons/proxy2/stub/Behavior.java?rev=1508296&r1=1508295&r2=1508296&view=diff
==============================================================================
--- commons/proper/proxy/branches/version-2.0-work/stub/src/main/java/org/apache/commons/proxy2/stub/Behavior.java (original)
+++ commons/proper/proxy/branches/version-2.0-work/stub/src/main/java/org/apache/commons/proxy2/stub/Behavior.java Tue Jul 30 04:07:11 2013
@@ -27,12 +27,6 @@ import org.apache.commons.proxy2.interce
public abstract class Behavior<T>
{
//----------------------------------------------------------------------------------------------------------------------
-// Fields
-//----------------------------------------------------------------------------------------------------------------------
-
- private TrainingContext trainingContext;
-
-//----------------------------------------------------------------------------------------------------------------------
// Abstract Methods
//----------------------------------------------------------------------------------------------------------------------
@@ -50,7 +44,7 @@ public abstract class Behavior<T>
private void record(ArgumentMatcher matcher)
{
- trainingContext.addArgumentMatcher(matcher);
+ trainingContext().addArgumentMatcher(matcher);
}
protected <R> R eq(R value)
@@ -65,12 +59,6 @@ public abstract class Behavior<T>
return ProxyUtils.nullValue(type);
}
- void train(TrainingContext context, T stub)
- {
- this.trainingContext = context;
- train(stub);
- }
-
protected <R> WhenObject<R> when(R expression)
{
return new WhenObject<R>();
@@ -129,28 +117,33 @@ public abstract class Behavior<T>
{
protected Behavior<T> thenThrow(Exception e)
{
- trainingContext.setInterceptor(InterceptorUtils.throwing(e));
+ trainingContext().setInterceptor(InterceptorUtils.throwing(e));
return Behavior.this;
}
protected Behavior<T> thenThrow(ObjectProvider<? extends Exception> provider)
{
- trainingContext.setInterceptor(InterceptorUtils.throwing(provider));
+ trainingContext().setInterceptor(InterceptorUtils.throwing(provider));
return Behavior.this;
}
protected <R> Behavior<T> thenAnswer(ObjectProvider<? extends R> provider)
{
- trainingContext.setInterceptor(InterceptorUtils.provider(provider));
+ trainingContext().setInterceptor(InterceptorUtils.provider(provider));
return Behavior.this;
}
}
+ private TrainingContext trainingContext()
+ {
+ return TrainingContext.getTrainingContext();
+ }
+
protected class WhenBooleanArray extends BaseWhen<boolean[]>
{
protected Behavior<T> thenReturn(boolean... values)
{
- trainingContext.setInterceptor(InterceptorUtils.constant(ArrayUtils.clone(values)));
+ trainingContext().setInterceptor(InterceptorUtils.constant(ArrayUtils.clone(values)));
return Behavior.this;
}
}
@@ -159,7 +152,7 @@ public abstract class Behavior<T>
{
protected Behavior<T> thenReturn(byte... values)
{
- trainingContext.setInterceptor(InterceptorUtils.constant(ArrayUtils.clone(values)));
+ trainingContext().setInterceptor(InterceptorUtils.constant(ArrayUtils.clone(values)));
return Behavior.this;
}
}
@@ -168,7 +161,7 @@ public abstract class Behavior<T>
{
protected Behavior<T> thenReturn(char... values)
{
- trainingContext.setInterceptor(InterceptorUtils.constant(ArrayUtils.clone(values)));
+ trainingContext().setInterceptor(InterceptorUtils.constant(ArrayUtils.clone(values)));
return Behavior.this;
}
}
@@ -177,7 +170,7 @@ public abstract class Behavior<T>
{
protected Behavior<T> thenReturn(double... values)
{
- trainingContext.setInterceptor(InterceptorUtils.constant(ArrayUtils.clone(values)));
+ trainingContext().setInterceptor(InterceptorUtils.constant(ArrayUtils.clone(values)));
return Behavior.this;
}
}
@@ -186,7 +179,7 @@ public abstract class Behavior<T>
{
protected Behavior<T> thenReturn(float... values)
{
- trainingContext.setInterceptor(InterceptorUtils.constant(ArrayUtils.clone(values)));
+ trainingContext().setInterceptor(InterceptorUtils.constant(ArrayUtils.clone(values)));
return Behavior.this;
}
}
@@ -195,7 +188,7 @@ public abstract class Behavior<T>
{
protected Behavior<T> thenReturn(int... values)
{
- trainingContext.setInterceptor(InterceptorUtils.constant(ArrayUtils.clone(values)));
+ trainingContext().setInterceptor(InterceptorUtils.constant(ArrayUtils.clone(values)));
return Behavior.this;
}
}
@@ -204,7 +197,7 @@ public abstract class Behavior<T>
{
protected Behavior<T> thenReturn(long... values)
{
- trainingContext.setInterceptor(InterceptorUtils.constant(ArrayUtils.clone(values)));
+ trainingContext().setInterceptor(InterceptorUtils.constant(ArrayUtils.clone(values)));
return Behavior.this;
}
}
@@ -213,7 +206,7 @@ public abstract class Behavior<T>
{
protected Behavior<T> thenReturn(R value)
{
- trainingContext.setInterceptor(InterceptorUtils.constant(value));
+ trainingContext().setInterceptor(InterceptorUtils.constant(value));
return Behavior.this;
}
}
@@ -222,7 +215,7 @@ public abstract class Behavior<T>
{
protected Behavior<T> thenReturn(R... values)
{
- trainingContext.setInterceptor(InterceptorUtils.constant(ArrayUtils.clone(values)));
+ trainingContext().setInterceptor(InterceptorUtils.constant(ArrayUtils.clone(values)));
return Behavior.this;
}
}
@@ -231,7 +224,7 @@ public abstract class Behavior<T>
{
protected Behavior<T> thenReturn(short... values)
{
- trainingContext.setInterceptor(InterceptorUtils.constant(ArrayUtils.clone(values)));
+ trainingContext().setInterceptor(InterceptorUtils.constant(ArrayUtils.clone(values)));
return Behavior.this;
}
}
Modified: commons/proper/proxy/branches/version-2.0-work/stub/src/main/java/org/apache/commons/proxy2/stub/StubInterceptorBuilder.java
URL: http://svn.apache.org/viewvc/commons/proper/proxy/branches/version-2.0-work/stub/src/main/java/org/apache/commons/proxy2/stub/StubInterceptorBuilder.java?rev=1508296&r1=1508295&r2=1508296&view=diff
==============================================================================
--- commons/proper/proxy/branches/version-2.0-work/stub/src/main/java/org/apache/commons/proxy2/stub/StubInterceptorBuilder.java (original)
+++ commons/proper/proxy/branches/version-2.0-work/stub/src/main/java/org/apache/commons/proxy2/stub/StubInterceptorBuilder.java Tue Jul 30 04:07:11 2013
@@ -54,9 +54,16 @@ public class StubInterceptorBuilder
public <T> StubInterceptorBuilder configure(Class<T> type, Behavior<T> behavior)
{
- final TrainingContext context = new TrainingContext(interceptor);
- T stub = proxyFactory.createInvokerProxy(new TrainingContextInvoker(context), type);
- behavior.train(context, stub);
+ try
+ {
+ TrainingContext.set(interceptor);
+ T stub = proxyFactory.createInvokerProxy(new TrainingContextInvoker(), type);
+ behavior.train(stub);
+ }
+ finally
+ {
+ TrainingContext.clear();
+ }
return this;
}
@@ -66,17 +73,10 @@ public class StubInterceptorBuilder
private static final class TrainingContextInvoker implements Invoker
{
- private final TrainingContext trainingContext;
-
- private TrainingContextInvoker(TrainingContext trainingContext)
- {
- this.trainingContext = trainingContext;
- }
-
@Override
public Object invoke(Object proxy, Method method, Object[] arguments) throws Throwable
{
- trainingContext.stubMethodInvoked(method, arguments);
+ TrainingContext.getTrainingContext().stubMethodInvoked(method, arguments);
return ProxyUtils.nullValue(method.getReturnType());
}
}
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=1508296&r1=1508295&r2=1508296&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 Tue Jul 30 04:07:11 2013
@@ -36,16 +36,36 @@ public class TrainingContext
// Fields
//----------------------------------------------------------------------------------------------------------------------
+ private static final ThreadLocal<TrainingContext> TRAINING_CONTEXT = new ThreadLocal<TrainingContext>();
private List<ArgumentMatcher> argumentMatchers = new LinkedList<ArgumentMatcher>();
private InvocationMatcher matcher;
private Interceptor interceptor;
private final SwitchInterceptor switchInterceptor;
//----------------------------------------------------------------------------------------------------------------------
+// Static Methods
+//----------------------------------------------------------------------------------------------------------------------
+
+ public static void clear()
+ {
+ TRAINING_CONTEXT.remove();
+ }
+
+ public static TrainingContext getTrainingContext()
+ {
+ return TRAINING_CONTEXT.get();
+ }
+
+ public static void set(SwitchInterceptor interceptor)
+ {
+ TRAINING_CONTEXT.set(new TrainingContext(interceptor));
+ }
+
+//----------------------------------------------------------------------------------------------------------------------
// Constructors
//----------------------------------------------------------------------------------------------------------------------
- public TrainingContext(SwitchInterceptor switchInterceptor)
+ private TrainingContext(SwitchInterceptor switchInterceptor)
{
this.switchInterceptor = switchInterceptor;
}