/*
* 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.mockoperation;
import com.eviware.soapui.impl.wsdl.WsdlOperation;
import com.eviware.soapui.impl.wsdl.mock.WsdlMockResponse;
import com.eviware.soapui.impl.wsdl.mock.WsdlMockResult;
import com.eviware.soapui.impl.wsdl.submit.AbstractWsdlMessageExchange;
import com.eviware.soapui.model.ModelItem;
import com.eviware.soapui.model.iface.Attachment;
import com.eviware.soapui.model.iface.Response;
import com.eviware.soapui.model.mock.MockResponse;
import com.eviware.soapui.model.mock.MockResult;
import com.eviware.soapui.support.types.StringToStringsMap;
import java.util.Vector;
/**
* WsdlMessageExchange for a WsdlMockResult, required for validations
*
* @author ole.matzura
*/
public class WsdlMockResultMessageExchange extends AbstractWsdlMessageExchange<ModelItem> {
private final MockResult mockResult;
private MockResponse mockResponse;
public WsdlMockResultMessageExchange(MockResult mockResult, MockResponse mockResponse) {
super(mockResponse);
this.mockResult = mockResult;
this.mockResponse = mockResponse;
}
public ModelItem getModelItem() {
return mockResponse == null ? mockResult.getMockOperation() : mockResponse;
}
public String getEndpoint() {
return mockResult.getMockRequest().getHttpRequest().getRequestURI();
}
@Override
public Response getResponse() {
return null;
}
public Attachment[] getRequestAttachments() {
return mockResult.getMockRequest().getRequestAttachments();
}
public String getRequestContent() {
if (mockResult == null || mockResult.getMockRequest() == null) {
return null;
}
return mockResult.getMockRequest().getRequestContent();
}
public StringToStringsMap getRequestHeaders() {
return mockResult == null ? null : mockResult.getMockRequest().getRequestHeaders();
}
public Attachment[] getResponseAttachments() {
return mockResult == null || mockResponse == null ? new Attachment[0] : mockResult.getMockResponse()
.getAttachments();
}
public String getResponseContent() {
return mockResult == null ? null : mockResult.getResponseContent();
}
public StringToStringsMap getResponseHeaders() {
return mockResult == null ? new StringToStringsMap() : mockResult.getResponseHeaders();
}
public WsdlOperation getOperation() {
if (mockResponse != null && mockResponse instanceof WsdlMockResponse) {
WsdlMockResponse wsdlMockResponse = (WsdlMockResponse) mockResponse;
if (mockResult.getMockOperation() != null) {
return (WsdlOperation) mockResult.getMockOperation().getOperation();
}
return wsdlMockResponse.getMockOperation().getOperation();
}
return null;
}
public long getTimeTaken() {
return mockResult == null ? -1 : mockResult.getTimeTaken();
}
public long getTimestamp() {
return mockResult == null ? -1 : mockResult.getTimestamp();
}
public boolean isDiscarded() {
return mockResponse == null;
}
public void discard() {
mockResponse = null;
}
public Vector<?> getRequestWssResult() {
if (mockResult != null && mockResult instanceof WsdlMockResult) {
return ((WsdlMockResult) mockResult).getRequestWssResult();
}
return null;
}
public Vector<?> getResponseWssResult() {
return null;
}
public int getResponseStatusCode() {
return mockResponse.getResponseHttpStatus();
}
public String getResponseContentType() {
return mockResult.getMockResponse().getContentType();
}
@Override
public byte[] getRawRequestData() {
return mockResult.getMockRequest().getRawRequestData();
}
@Override
public byte[] getRawResponseData() {
return mockResult.getRawResponseData();
}
@Override
public boolean hasRawData() {
return true;
}
}