/*
* 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.mock.dispatch;
import com.eviware.soapui.model.mock.MockOperation;
import com.eviware.soapui.model.mock.MockRequest;
import com.eviware.soapui.model.mock.MockResponse;
import com.eviware.soapui.model.mock.MockResult;
import com.eviware.soapui.model.mock.MockRunListener;
import com.eviware.soapui.model.mock.MockRunner;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class SequenceMockOperationDispatcher extends AbstractMockOperationDispatcher implements MockRunListener {
private int currentDispatchIndex;
public SequenceMockOperationDispatcher(MockOperation mockOperation) {
super(mockOperation);
mockOperation.getMockService().addMockRunListener(this);
}
public MockResponse selectMockResponse(MockRequest request, MockResult result) {
MockResponse mockResponse = null;
MockOperation mockOperation = getMockOperation();
synchronized (mockOperation) {
if (currentDispatchIndex >= mockOperation.getMockResponseCount()) {
currentDispatchIndex = 0;
}
mockResponse = mockOperation.getMockResponseAt(currentDispatchIndex);
currentDispatchIndex++;
}
return mockResponse;
}
@Override
public boolean hasDefaultResponse() {
return false;
}
@Override
public void release() {
getMockOperation().getMockService().removeMockRunListener(this);
super.release();
}
public void onMockRunnerStart(MockRunner mockRunner) {
currentDispatchIndex = 0;
}
public void onMockResult(MockResult result) {
}
public void onMockRunnerStop(MockRunner mockRunner) {
}
public MockResult onMockRequest(MockRunner runner, HttpServletRequest request, HttpServletResponse response) {
return null;
}
public static class Factory implements MockOperationDispatchFactory {
public MockOperationDispatcher build(MockOperation mockOperation) {
return new SequenceMockOperationDispatcher(mockOperation);
}
}
}