/* * SoapUI, Copyright (C) 2004-2016 SmartBear Software * * Licensed under the EUPL, Version 1.1 or - as soon as they will be approved by the European Commission - subsequent * versions of the EUPL (the "Licence"); * You may not use this work except in compliance with the Licence. * You may obtain a copy of the Licence at: * * http://ec.europa.eu/idabc/eupl * * Unless required by applicable law or agreed to in writing, software distributed under the Licence is * distributed on an "AS IS" basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the Licence for the specific language governing permissions and limitations * under the Licence. */ package com.eviware.soapui.impl.wsdl.panels.support; import com.eviware.soapui.impl.wsdl.testcase.WsdlTestCase; import com.eviware.soapui.impl.wsdl.teststeps.WsdlTestStep; import com.eviware.soapui.model.ModelItem; import com.eviware.soapui.model.settings.Settings; import com.eviware.soapui.model.support.AbstractSubmitContext; import com.eviware.soapui.model.testsuite.TestCase; import com.eviware.soapui.model.testsuite.TestCaseRunContext; import com.eviware.soapui.model.testsuite.TestCaseRunner; import com.eviware.soapui.model.testsuite.TestStep; /** * Dummy TestRunContext used when executing TestSteps one by one * * @author ole.matzura */ public class MockTestRunContext extends AbstractSubmitContext<ModelItem> implements TestCaseRunContext { private final MockTestRunner mockTestRunner; private final WsdlTestStep testStep; public MockTestRunContext(MockTestRunner mockTestRunner, WsdlTestStep testStep) { super(testStep == null ? mockTestRunner.getTestCase() : testStep); this.mockTestRunner = mockTestRunner; this.testStep = testStep; setProperty("log", mockTestRunner.getLog()); mockTestRunner.setMockRunContext(this); } public TestStep getCurrentStep() { return testStep; } @Override public void setProperty(String name, Object value) { super.setProperty(name, value, getTestCase()); } public int getCurrentStepIndex() { return testStep == null ? -1 : testStep.getTestCase().getIndexOfTestStep(testStep); } public TestCaseRunner getTestRunner() { return mockTestRunner; } @Override public Object get(Object key) { if ("currentStep".equals(key)) { return getCurrentStep(); } if ("currentStepIndex".equals(key)) { return getCurrentStepIndex(); } if ("settings".equals(key)) { return getSettings(); } if ("testCase".equals(key)) { return getTestCase(); } if ("testRunner".equals(key)) { return getTestRunner(); } Object result = getProperty(key.toString()); if (result == null) { result = super.get(key); } return result; } @Override public Object put(String key, Object value) { Object oldValue = get(key); setProperty(key, value); return oldValue; } public Object getProperty(String name) { return getProperty(name, testStep, testStep == null ? null : (WsdlTestCase) testStep.getTestCase()); } public Object getProperty(String testStepName, String propertyName) { TestStep ts = testStep == null ? null : testStep.getTestCase().getTestStepByName(testStepName); return ts == null ? null : ts.getPropertyValue(propertyName); } public TestCase getTestCase() { return testStep == null ? null : testStep.getTestCase(); } public Settings getSettings() { return testStep == null ? null : testStep.getSettings(); } }