|
|
|
@ -1,6 +1,6 @@
|
|
|
|
|
import exchange.ExchangeMock;
|
|
|
|
|
import exchange.RequestMock;
|
|
|
|
|
import org.apache.commons.io.IOUtils;
|
|
|
|
|
import org.springframework.mock.web.MockHttpServletRequest;
|
|
|
|
|
import org.springframework.mock.web.MockHttpServletResponse;
|
|
|
|
|
|
|
|
|
|
import javax.servlet.ServletException;
|
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
|
@ -38,49 +38,43 @@ public class BridgeMock extends BridgeServlet {
|
|
|
|
|
@Override
|
|
|
|
|
protected void handleGetRequest(HttpServletRequest request, HttpServletResponse response) throws IOException, InterruptedException {
|
|
|
|
|
|
|
|
|
|
RequestMock mockRequest = (RequestMock) request;
|
|
|
|
|
ExchangeMock exchange = mockRequest.exchange;
|
|
|
|
|
|
|
|
|
|
synchronized (exchange) {
|
|
|
|
|
String parsedRequest = IOUtils.toString(request.getReader());
|
|
|
|
|
|
|
|
|
|
while (!(availableRides.size() > 0)) { Thread.sleep(100); }
|
|
|
|
|
|
|
|
|
|
Ride ride = availableRides.remove(0);
|
|
|
|
|
deliveredRides.add(ride);
|
|
|
|
|
|
|
|
|
|
while (ride.getData() == null) {
|
|
|
|
|
synchronized (ride) {
|
|
|
|
|
ride.setRequest(parsedRequest);
|
|
|
|
|
bookedRides.add(ride);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
while (ride.getData()==null) {
|
|
|
|
|
ride.notify();
|
|
|
|
|
Thread.sleep(100);
|
|
|
|
|
ride.wait();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PrintWriter writer = response.getWriter();
|
|
|
|
|
exchange.response.setStatus(200);
|
|
|
|
|
PrintWriter writer = exchange.response.getWriter();
|
|
|
|
|
writer.print(ride.getData());
|
|
|
|
|
loadedRides.remove(ride);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ride.notify();
|
|
|
|
|
}
|
|
|
|
|
exchange.notify();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* handle GET (Ride)
|
|
|
|
|
* if Ride in ReservedRides,
|
|
|
|
|
* remove Ride from ReservedRides
|
|
|
|
|
* add Ride to Deliveredrides
|
|
|
|
|
*/
|
|
|
|
|
protected void handleGetRide(HttpServletRequest request, HttpServletResponse response) {
|
|
|
|
|
// # send OK (Ride)(Request)
|
|
|
|
|
new Ride();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* handle GET (Ride)(Request)
|
|
|
|
|
* if Ride in DeliveredRides
|
|
|
|
|
* remove Ride from DeliveredRides
|
|
|
|
|
* add Ride to NewRequest
|
|
|
|
|
* send OK (Ride)(Request)
|
|
|
|
|
* remove Ride from NewRequest
|
|
|
|
|
* add Ride to ForwardedRequest
|
|
|
|
|
*/
|
|
|
|
|
protected Ride handleGetRideRequest(HttpServletRequest request, HttpServletResponse response) {
|
|
|
|
|
// # send OK (Ride)(Request)(Data)
|
|
|
|
|
return new Ride();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
@ -95,9 +89,32 @@ public class BridgeMock extends BridgeServlet {
|
|
|
|
|
* remove Ride from ForwardedData
|
|
|
|
|
* add Ride to EOL
|
|
|
|
|
*/
|
|
|
|
|
protected void handleGetRideRequestData(HttpServletRequest request, HttpServletResponse response) {
|
|
|
|
|
// # send OK (EOL)
|
|
|
|
|
new Ride();
|
|
|
|
|
protected void handleGetRideRequestData(HttpServletRequest request, HttpServletResponse response) throws IOException, InterruptedException {
|
|
|
|
|
RequestMock mockRequest = (RequestMock) request;
|
|
|
|
|
ExchangeMock exchange = mockRequest.exchange;
|
|
|
|
|
|
|
|
|
|
synchronized (exchange) {
|
|
|
|
|
String jsonPayload = IOUtils.toString(request.getReader());
|
|
|
|
|
Ride ride = new Ride(jsonPayload);
|
|
|
|
|
|
|
|
|
|
synchronized (ride) {
|
|
|
|
|
bookedRides.remove(ride);
|
|
|
|
|
|
|
|
|
|
while (!bookedRides.contains(ride)) {
|
|
|
|
|
ride.notify();
|
|
|
|
|
Thread.sleep(100);
|
|
|
|
|
ride.wait();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
exchange.response.setStatus(200);
|
|
|
|
|
PrintWriter writer = response.getWriter();
|
|
|
|
|
writer.print(ride.json());
|
|
|
|
|
exchange.notify();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// #######
|
|
|
|
@ -112,30 +129,39 @@ public class BridgeMock extends BridgeServlet {
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* handle POST (Ride)
|
|
|
|
|
* add Ride to AvailableRides
|
|
|
|
|
* - wait for Ride to be booked
|
|
|
|
|
* - send OK to Client
|
|
|
|
|
*/
|
|
|
|
|
@Override
|
|
|
|
|
protected void handlePostRide(HttpServletRequest request, HttpServletResponse response) throws IOException, InterruptedException {
|
|
|
|
|
// WIP wait till GET (LINK) arrives.
|
|
|
|
|
|
|
|
|
|
RequestMock mockRequest = (RequestMock) request;
|
|
|
|
|
ExchangeMock exchange = mockRequest.exchange;
|
|
|
|
|
|
|
|
|
|
synchronized (exchange) {
|
|
|
|
|
String jsonPayload = IOUtils.toString(request.getReader());
|
|
|
|
|
Ride ride = new Ride(jsonPayload);
|
|
|
|
|
availableRides.add(ride);
|
|
|
|
|
synchronized (ride){
|
|
|
|
|
|
|
|
|
|
while (availableRides.contains(ride)){
|
|
|
|
|
|
|
|
|
|
synchronized (ride) {
|
|
|
|
|
availableRides.add(ride);
|
|
|
|
|
while (!bookedRides.contains(ride)) {
|
|
|
|
|
ride.notify();
|
|
|
|
|
Thread.sleep(100);
|
|
|
|
|
ride.wait();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// SUPER ILLEGAL MOCKING
|
|
|
|
|
response.setStatus(200);
|
|
|
|
|
|
|
|
|
|
exchange.response.setStatus(200);
|
|
|
|
|
PrintWriter writer = response.getWriter();
|
|
|
|
|
writer.print(ride.json());
|
|
|
|
|
exchange.notify();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|