package eu.choreos.vv.servicesimulator;
import com.eviware.soapui.impl.wsdl.mock.WsdlMockOperation;
import com.eviware.soapui.impl.wsdl.mock.WsdlMockResponse;
import eu.choreos.vv.exceptions.ParserException;
/**
* This class represents a Mock Operation
* @author Felipe Besson
*
*/
public class MockOperation {
private WsdlMockOperation soapUIMockOperation;
private String defaultResponse;
private WsdlMockResponse soapUIResponse;
private ScriptBuilder builder;
/**
* Receives the need information for mocking an operation
*
* @param defaultRequest envelope
* @param soapUIMockOperation object which is used for mocking the operation
*/
public MockOperation(String defaultRequest, WsdlMockOperation soapUIMockOperation, String wsdl, boolean interceptor) {
this.soapUIMockOperation = soapUIMockOperation;
soapUIResponse = soapUIMockOperation.addNewMockResponse("response 1", true);
defaultResponse = soapUIResponse.getResponseContent();
builder = new ScriptBuilder(wsdl, interceptor);
builder.setDefaultRequest(defaultRequest);
builder.setDefaultResponse(defaultResponse);
soapUIResponse.setResponseContent("${message}");
}
/**
* Gets the operation name
*
* @return operation name
*/
public String getName() {
return soapUIMockOperation.getName();
}
/**
* Gets the SoapUI MockOperation object that represents the operation
*
* @return SoapUI MockOperation
*/
public WsdlMockOperation getSoapUIMockOperation(){
return soapUIMockOperation;
}
/**
* Adds a valid response to be returned for the mocked operation
*
* @param mockResponse
* @throws ParserException
*/
public void addResponse(MockResponse mockResponse) throws ParserException{
builder.addConditionFor(mockResponse);
soapUIResponse.setScript(builder.getScript());
}
/**
* Configures the mocked operation to do not respond
*/
public void doNotResponse() {
String timeoutScript = "Thread.sleep(300000)";
soapUIResponse.setScript(timeoutScript);
}
}