package org.mockserver.client.server; import com.google.common.annotations.VisibleForTesting; import org.mockserver.client.netty.websocket.WebSocketClient; import org.mockserver.mock.Expectation; import org.mockserver.mock.action.ExpectationCallback; import org.mockserver.model.*; /** * @author jamesdbloom */ public class ForwardChainExpectation { private final MockServerClient mockServerClient; private final Expectation expectation; private WebSocketClient webSocketClient; public ForwardChainExpectation(MockServerClient mockServerClient, Expectation expectation) { this.mockServerClient = mockServerClient; this.expectation = expectation; } public void respond(HttpResponse httpResponse) { expectation.thenRespond(httpResponse); mockServerClient.sendExpectation(expectation); } public void forward(HttpForward httpForward) { expectation.thenForward(httpForward); mockServerClient.sendExpectation(expectation); } public void error(HttpError httpError) { expectation.thenError(httpError); mockServerClient.sendExpectation(expectation); } public void callback(HttpClassCallback httpClassCallback) { expectation.thenCallback(httpClassCallback); mockServerClient.sendExpectation(expectation); } public void callback(ExpectationCallback httpObjectCallback) { if (webSocketClient == null) { webSocketClient = new WebSocketClient(mockServerClient.remoteAddress(), mockServerClient.contextPath()); } expectation.thenCallback(new HttpObjectCallback() .withClientId( webSocketClient .registerExpectationCallback(httpObjectCallback) .clientId() )); mockServerClient.sendExpectation(expectation); } @VisibleForTesting Expectation getExpectation() { return expectation; } @VisibleForTesting void setWebSocketClient(WebSocketClient webSocketClient) { this.webSocketClient = webSocketClient; } }