|
|
@ -28,10 +28,10 @@ public class BridgeMock extends BridgeServlet {
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
protected void handleGetRequest(HttpServletRequest request, HttpServletResponse response) throws IOException, InterruptedException {
|
|
|
|
protected void handleGetRequest(HttpServletRequest request, HttpServletResponse response) throws IOException, InterruptedException {
|
|
|
|
|
|
|
|
|
|
|
|
RequestMock mockRequest = (RequestMock) request;
|
|
|
|
ExchangeMock exchange;
|
|
|
|
ExchangeMock exchange = mockRequest.exchange;
|
|
|
|
Ride ride = null;
|
|
|
|
|
|
|
|
|
|
|
|
synchronized (exchange) {
|
|
|
|
synchronized (exchange = ((RequestMock) request).exchange) {
|
|
|
|
String parsedRequest = IOUtils.toString(request.getReader());
|
|
|
|
String parsedRequest = IOUtils.toString(request.getReader());
|
|
|
|
JSONObject obj = new JSONObject(parsedRequest);
|
|
|
|
JSONObject obj = new JSONObject(parsedRequest);
|
|
|
|
parsedRequest = obj.getString("request");
|
|
|
|
parsedRequest = obj.getString("request");
|
|
|
@ -39,14 +39,17 @@ public class BridgeMock extends BridgeServlet {
|
|
|
|
|
|
|
|
|
|
|
|
synchronized (rideMap) {
|
|
|
|
synchronized (rideMap) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// TODO make 3 maps
|
|
|
|
while (mapHelper.containsLess(1, State.AVAILABLE)) { Thread.sleep(Main.WAIT_SPEED); }
|
|
|
|
while (mapHelper.containsLess(1, State.AVAILABLE)) { Thread.sleep(Main.WAIT_SPEED); }
|
|
|
|
Ride ride = null;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
while (ride == null) {
|
|
|
|
while (ride == null) {
|
|
|
|
ride = mapHelper.pickAvailable();
|
|
|
|
ride = mapHelper.pickAvailable();
|
|
|
|
Thread.sleep(Main.WAIT_SPEED);
|
|
|
|
Thread.sleep(Main.WAIT_SPEED);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ride.setRequest(parsedRequest);
|
|
|
|
ride.setRequest(parsedRequest);
|
|
|
|
ride.setState(State.BOOKED);
|
|
|
|
ride.setState(State.BOOKED);
|
|
|
|
|
|
|
|
|
|
|
@ -64,6 +67,8 @@ public class BridgeMock extends BridgeServlet {
|
|
|
|
writer.flush();
|
|
|
|
writer.flush();
|
|
|
|
writer.close();
|
|
|
|
writer.close();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
rideMap.notify();
|
|
|
|
rideMap.notify();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
exchange.notify();
|
|
|
|
exchange.notify();
|
|
|
@ -86,16 +91,18 @@ public class BridgeMock extends BridgeServlet {
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
protected void handleGetRideRequestData(HttpServletRequest request, HttpServletResponse response) throws IOException, InterruptedException {
|
|
|
|
protected void handleGetRideRequestData(HttpServletRequest request, HttpServletResponse response) throws IOException, InterruptedException {
|
|
|
|
|
|
|
|
|
|
|
|
RequestMock mockRequest = (RequestMock) request;
|
|
|
|
ExchangeMock exchange;
|
|
|
|
ExchangeMock exchange = mockRequest.exchange;
|
|
|
|
Ride thisRide;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
synchronized (exchange = ((RequestMock) request).exchange) {
|
|
|
|
|
|
|
|
|
|
|
|
synchronized (exchange) {
|
|
|
|
|
|
|
|
String jsonPayload = IOUtils.toString(request.getReader());
|
|
|
|
String jsonPayload = IOUtils.toString(request.getReader());
|
|
|
|
Ride parsedRide = new Ride(jsonPayload);
|
|
|
|
Ride parsedRide = new Ride(jsonPayload);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
synchronized (rideMap) {
|
|
|
|
synchronized (rideMap) {
|
|
|
|
Ride thisRide = rideMap.get(parsedRide.getID());
|
|
|
|
|
|
|
|
|
|
|
|
synchronized (thisRide = rideMap.get(parsedRide.getID())) {
|
|
|
|
|
|
|
|
|
|
|
|
thisRide.setData(parsedRide.getData());
|
|
|
|
thisRide.setData(parsedRide.getData());
|
|
|
|
thisRide.setState(State.LOADED);
|
|
|
|
thisRide.setState(State.LOADED);
|
|
|
|
|
|
|
|
|
|
|
@ -105,14 +112,12 @@ public class BridgeMock extends BridgeServlet {
|
|
|
|
writer.flush();
|
|
|
|
writer.flush();
|
|
|
|
writer.close();
|
|
|
|
writer.close();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
rideMap.remove(thisRide.getID());
|
|
|
|
if (thisRide.getID() == 100000L) {
|
|
|
|
thisRide.notify();
|
|
|
|
int br = 0;
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
rideMap.notify();
|
|
|
|
rideMap.notify();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
exchange.notify();
|
|
|
|
exchange.notify();
|
|
|
|
//rideMap.remove(thisRide.getID());
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -125,27 +130,34 @@ public class BridgeMock extends BridgeServlet {
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
protected void handlePostRide(HttpServletRequest request, HttpServletResponse response) throws IOException, InterruptedException {
|
|
|
|
protected void handlePostRide(HttpServletRequest request, HttpServletResponse response) throws IOException, InterruptedException {
|
|
|
|
|
|
|
|
|
|
|
|
RequestMock mockRequest = (RequestMock) request;
|
|
|
|
ExchangeMock exchange;
|
|
|
|
ExchangeMock exchange = mockRequest.exchange;
|
|
|
|
Ride ride;
|
|
|
|
|
|
|
|
|
|
|
|
synchronized (exchange) {
|
|
|
|
synchronized (exchange = ((RequestMock) request).exchange) {
|
|
|
|
String jsonPayload = IOUtils.toString(request.getReader());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
String jsonPayload = IOUtils.toString(request.getReader());
|
|
|
|
|
|
|
|
ride = new Ride(jsonPayload);
|
|
|
|
|
|
|
|
|
|
|
|
synchronized (rideMap) {
|
|
|
|
synchronized (rideMap) {
|
|
|
|
Ride ride = new Ride(jsonPayload);
|
|
|
|
|
|
|
|
rideMap.put(ride.getID(), ride.setState(State.AVAILABLE));
|
|
|
|
rideMap.put(ride.getID(), ride.setState(State.AVAILABLE));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
synchronized (ride = rideMap.get(ride.getID())) {
|
|
|
|
|
|
|
|
|
|
|
|
while (ride.getState() == State.AVAILABLE) {
|
|
|
|
while (ride.getState() == State.AVAILABLE) {
|
|
|
|
rideMap.notify();
|
|
|
|
rideMap.notify();
|
|
|
|
Thread.sleep(Main.WAIT_SPEED);
|
|
|
|
Thread.sleep(Main.WAIT_SPEED);
|
|
|
|
rideMap.wait();
|
|
|
|
rideMap.wait();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
exchange.response.setStatus(200);
|
|
|
|
exchange.response.setStatus(200);
|
|
|
|
PrintWriter writer = response.getWriter();
|
|
|
|
PrintWriter writer = response.getWriter();
|
|
|
|
writer.write(ride.json());
|
|
|
|
writer.write(ride.json());
|
|
|
|
writer.flush();
|
|
|
|
writer.flush();
|
|
|
|
writer.close();
|
|
|
|
writer.close();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ride.notify();
|
|
|
|
|
|
|
|
}
|
|
|
|
rideMap.notify();
|
|
|
|
rideMap.notify();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
exchange.notify();
|
|
|
|
exchange.notify();
|
|
|
|