package eu.choreos.vv.interceptor;
import java.io.IOException;
import org.apache.xmlbeans.XmlException;
import com.eviware.soapui.impl.WsdlInterfaceFactory;
import com.eviware.soapui.impl.wsdl.WsdlInterface;
import com.eviware.soapui.impl.wsdl.WsdlOperation;
import com.eviware.soapui.impl.wsdl.WsdlProject;
import com.eviware.soapui.impl.wsdl.WsdlRequest;
import com.eviware.soapui.impl.wsdl.WsdlSubmit;
import com.eviware.soapui.impl.wsdl.WsdlSubmitContext;
import com.eviware.soapui.model.iface.Request.SubmitException;
import com.eviware.soapui.model.iface.Response;
import com.eviware.soapui.support.SoapUIException;
/**
* This class provides features for routing the messages in the proxies
*
* @author Felipe Besson
*
*/
public class RequestDispatcher {
public static String getResponse(String wsdl, String operationName, String requestContent) throws XmlException, IOException, SoapUIException, SubmitException{
addResponse(wsdl, requestContent);
WsdlProject project = new WsdlProject();
WsdlInterface iface = WsdlInterfaceFactory.importWsdl(project, wsdl, true)[0];
WsdlOperation operation = (WsdlOperation) iface.getOperationByName(operationName);
WsdlRequest request = operation.addNewRequest("myRequest");
request.setRequestContent(requestContent);
// submit the request
WsdlSubmit<WsdlRequest> submit = request.submit(new WsdlSubmitContext(
request), false);
// wait for the response
Response response = submit.getResponse();
// print the response
String content = response.getContentAsString();
return content;
}
private static void addResponse(String wsdl, String requestContent) {
InterceptedMessagesRegistry.getInstance().addMessage(wsdl, requestContent);
}
}