You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
misp/mispmock/src/ClientMock.java

110 lines
3.0 KiB

import exchange.ExchangeMock;
import javax.servlet.ServletException;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.HttpURLConnection;
/**
* Wraps a ClientServlet so it can be debugged easily, i.e. without running Tomcat.
*/
public class ClientMock extends ClientServlet {
private MockSet mockSet;
public ClientMock(MockSet mockSet){
super();
mockSet.clientMock = this;
this.mockSet = mockSet;
}
@Override
void sendPostRide(Ride ride) throws IOException, ServletException, InterruptedException {
rideMap.put(ride.getID(), ride.setState(State.AVAILABLE));
// Mock Exchange
ExchangeMock exchange = new ExchangeMock();
exchange.request.setMethod("POST");
exchange.request.setContentType("application/json");
exchange.request.setContent(ride.json().getBytes());
synchronized (exchange){
// Mock POST (Ride)
exchange.notify();
mockSet.bridgeMock.doPost(exchange.request,exchange.response);
exchange.wait();
// handle OK (Ride)(Request)
Ride parsedRide = new Ride(exchange.response.getContentAsString());
ride.setRequest(parsedRide.getRequest());
ride.setState(State.BOOKED);
sendGetRequest(ride);
}
}
/**
* # send GET (Request) to App
*/
@Override
void sendGetRequest(Ride ride) throws IOException {
HttpURLConnection connection = ConnectionHelper.make("GET", APP_URL);
// send GET (Request)
connection.setDoOutput(true);
DataOutputStream outputStream = new DataOutputStream(connection.getOutputStream());
outputStream.writeBytes(ride.getRequest());
outputStream.flush();
outputStream.close();
// handle OK (Data)
// remove Ride from BookedRides
// add Ride to LoadedRides
// send GET (Ride)(Data)
if (connection.getResponseCode() == 200) {
String parsedData = ConnectionHelper.parseString(connection);
ride.setData(parsedData);
ride.setState(State.LOADED);
}
sendGetRideRequestData(ride);
}
/**
* # send GET (Ride)(Request)(Data)
*/
@Override
void sendGetRideRequestData(Ride ride) throws IOException {
HttpURLConnection connection = ConnectionHelper.make("GET", MISP_BRIDGE_URL);
// send GET (Ride)(Request)(Data)
connection.setDoOutput(true);
DataOutputStream outputStream = new DataOutputStream(connection.getOutputStream());
outputStream.writeBytes(ride.json());
outputStream.flush();
outputStream.close();
// handle OK (Ride)
// remove Ride from LoadedRides
if (connection.getResponseCode() == 200) {
Ride shellIdRide = ConnectionHelper.parseRide(connection);
if (shellIdRide.getID() != null) {
rideMap.remove(ride.getID());
}
}
}
}