diff --git a/lib/src/main/java/com/cloudbees/groovy/cps/sandbox/DefaultInvoker.java b/lib/src/main/java/com/cloudbees/groovy/cps/sandbox/DefaultInvoker.java index 7b26f2e3..1b8963b2 100644 --- a/lib/src/main/java/com/cloudbees/groovy/cps/sandbox/DefaultInvoker.java +++ b/lib/src/main/java/com/cloudbees/groovy/cps/sandbox/DefaultInvoker.java @@ -14,8 +14,8 @@ * * @author Kohsuke Kawaguchi */ -public class DefaultInvoker implements Invoker { - public Object methodCall(Object receiver, String method, Object[] args) throws Throwable { +public class DefaultInvoker extends InvokerInterceptor { + public Object doMethodCall(Object receiver, String method, Object[] args) throws Throwable { CallSite callSite = fakeCallSite(method); Object v = callSite.call(receiver,args); return v; diff --git a/lib/src/main/java/com/cloudbees/groovy/cps/sandbox/InvokerInterceptor.java b/lib/src/main/java/com/cloudbees/groovy/cps/sandbox/InvokerInterceptor.java new file mode 100644 index 00000000..caf813d1 --- /dev/null +++ b/lib/src/main/java/com/cloudbees/groovy/cps/sandbox/InvokerInterceptor.java @@ -0,0 +1,16 @@ +package com.cloudbees.groovy.cps.sandbox; + +/** + * Allows to override one class to perform real-life tests of the CPS logic + * + * @author Sergei Parshev + */ +public abstract class InvokerInterceptor implements Invoker { + public Object methodCall(Object receiver, String method, Object[] args) throws Throwable { + return doMethodCall(receiver, method, args); + } + + abstract Object doMethodCall(Object receiver, String method, Object[] args) throws Throwable; + + private static final long serialVersionUID = 1L; +} diff --git a/lib/src/main/java/com/cloudbees/groovy/cps/sandbox/SandboxInvoker.java b/lib/src/main/java/com/cloudbees/groovy/cps/sandbox/SandboxInvoker.java index 2ea12ef7..eaf1b27a 100644 --- a/lib/src/main/java/com/cloudbees/groovy/cps/sandbox/SandboxInvoker.java +++ b/lib/src/main/java/com/cloudbees/groovy/cps/sandbox/SandboxInvoker.java @@ -12,8 +12,8 @@ * * @author Kohsuke Kawaguchi */ -public class SandboxInvoker implements Invoker { - public Object methodCall(Object receiver, String method, Object[] args) throws Throwable { +public class SandboxInvoker extends InvokerInterceptor { + public Object doMethodCall(Object receiver, String method, Object[] args) throws Throwable { return Checker.checkedCall(receiver,false,false,method,args); }