public MockResponse selectMockResponse(MockRequest request, MockResult result)
throws DispatchException {
String dispatchScript = getMockOperation().getScript();
if (StringUtils.hasContent(dispatchScript)) {
SoapUIScriptEngine scriptEngine = scriptEnginePool.getScriptEngine();
try {
MockService mockService = getMockOperation().getMockService();
MockRunner mockRunner = mockService.getMockRunner();
MockRunContext context = mockRunner == null ? new WsdlMockRunContext(mockService, null) : mockRunner
.getMockContext();
scriptEngine.setVariable("context", context);
scriptEngine.setVariable("requestContext", request == null ? null : request.getRequestContext());
scriptEngine.setVariable("mockRequest", request);
scriptEngine.setVariable("mockOperation", getMockOperation());
scriptEngine.setVariable("log", SoapUI.ensureGroovyLog());
scriptEngine.setScript(dispatchScript);
Object retVal = scriptEngine.run();
return getMockOperation().getMockResponseByName(String.valueOf(retVal));
} catch (Throwable e) {
SoapUI.logError(e);
throw new DispatchException("Failed to dispatch using script; " + e);
} finally {