diff --git a/mispmock/src/actor/AppMock.java b/mispmock/src/actor/AppMock.java index da71e0d..6abaa10 100644 --- a/mispmock/src/actor/AppMock.java +++ b/mispmock/src/actor/AppMock.java @@ -24,7 +24,7 @@ public class AppMock extends ActorRunnable { public void run() { while (true) { try { - Thread.sleep(Main.REQUEST_SPEED); + Thread.sleep(Main.WAIT_SPEED); } catch (InterruptedException e) { e.printStackTrace(); diff --git a/mispmock/src/actor/UserMock.java b/mispmock/src/actor/UserMock.java index 4289af4..93c5f54 100644 --- a/mispmock/src/actor/UserMock.java +++ b/mispmock/src/actor/UserMock.java @@ -20,7 +20,7 @@ public class UserMock extends ActorRunnable { public void run() { while (true){ try { - Thread.sleep(Main.REQUEST_SPEED); + Thread.sleep(Main.WAIT_SPEED); sendGetRequest(); } catch (IOException | InterruptedException e) { e.printStackTrace(); @@ -51,7 +51,7 @@ public class UserMock extends ActorRunnable { ExchangeMock exchange = new ExchangeMock(); exchange.request.setMethod("GET"); - exchange.request.setContentType("application/json"); + //exchange.request.setContentType("application/json"); String requestBody = "REQUEST-"+(++requestCount); String jsonString = "{\"request\":\""+requestBody+ "\"}"; exchange.request.setContent(jsonString.getBytes()); diff --git a/mispmock/src/core/BridgeMock.java b/mispmock/src/core/BridgeMock.java index bfb0f45..acef571 100644 --- a/mispmock/src/core/BridgeMock.java +++ b/mispmock/src/core/BridgeMock.java @@ -28,10 +28,10 @@ public class BridgeMock extends BridgeServlet { @Override protected void handleGetRequest(HttpServletRequest request, HttpServletResponse response) throws IOException, InterruptedException { - RequestMock mockRequest = (RequestMock) request; - ExchangeMock exchange = mockRequest.exchange; + ExchangeMock exchange; + Ride ride = null; - synchronized (exchange) { + synchronized (exchange = ((RequestMock) request).exchange) { String parsedRequest = IOUtils.toString(request.getReader()); JSONObject obj = new JSONObject(parsedRequest); parsedRequest = obj.getString("request"); @@ -39,30 +39,35 @@ public class BridgeMock extends BridgeServlet { synchronized (rideMap) { + // TODO make 3 maps while (mapHelper.containsLess(1, State.AVAILABLE)) { Thread.sleep(Main.WAIT_SPEED); } - Ride ride = null; - while (ride == null) { ride = mapHelper.pickAvailable(); Thread.sleep(Main.WAIT_SPEED); } - ride.setRequest(parsedRequest); - ride.setState(State.BOOKED); - while (ride.getState() != State.LOADED) { - rideMap.notify(); - Thread.sleep(Main.WAIT_SPEED); - rideMap.wait(); - } - rideMap.remove(ride.getID()); + + + ride.setRequest(parsedRequest); + ride.setState(State.BOOKED); + + while (ride.getState() != State.LOADED) { + rideMap.notify(); + Thread.sleep(Main.WAIT_SPEED); + rideMap.wait(); + } + + rideMap.remove(ride.getID()); + + exchange.response.setStatus(200); + PrintWriter writer = exchange.response.getWriter(); + writer.write(ride.getData()); + writer.flush(); + writer.close(); + - exchange.response.setStatus(200); - PrintWriter writer = exchange.response.getWriter(); - writer.write(ride.getData()); - writer.flush(); - writer.close(); rideMap.notify(); } @@ -86,33 +91,33 @@ public class BridgeMock extends BridgeServlet { */ protected void handleGetRideRequestData(HttpServletRequest request, HttpServletResponse response) throws IOException, InterruptedException { - RequestMock mockRequest = (RequestMock) request; - ExchangeMock exchange = mockRequest.exchange; + ExchangeMock exchange; + Ride thisRide; + + synchronized (exchange = ((RequestMock) request).exchange) { - synchronized (exchange) { String jsonPayload = IOUtils.toString(request.getReader()); Ride parsedRide = new Ride(jsonPayload); - synchronized (rideMap) { - Ride thisRide = rideMap.get(parsedRide.getID()); - thisRide.setData(parsedRide.getData()); - thisRide.setState(State.LOADED); - exchange.response.setStatus(200); - PrintWriter writer = response.getWriter(); - writer.write(thisRide.json()); - writer.flush(); - writer.close(); + synchronized (thisRide = rideMap.get(parsedRide.getID())) { + thisRide.setData(parsedRide.getData()); + thisRide.setState(State.LOADED); - if (thisRide.getID() == 100000L) { - int br = 0; + exchange.response.setStatus(200); + PrintWriter writer = response.getWriter(); + writer.write(thisRide.json()); + writer.flush(); + writer.close(); + + rideMap.remove(thisRide.getID()); + thisRide.notify(); } rideMap.notify(); } exchange.notify(); - //rideMap.remove(thisRide.getID()); } } @@ -125,27 +130,34 @@ public class BridgeMock extends BridgeServlet { @Override protected void handlePostRide(HttpServletRequest request, HttpServletResponse response) throws IOException, InterruptedException { - RequestMock mockRequest = (RequestMock) request; - ExchangeMock exchange = mockRequest.exchange; + ExchangeMock exchange; + Ride ride; - synchronized (exchange) { - String jsonPayload = IOUtils.toString(request.getReader()); + synchronized (exchange = ((RequestMock) request).exchange) { + String jsonPayload = IOUtils.toString(request.getReader()); + ride = new Ride(jsonPayload); synchronized (rideMap) { - Ride ride = new Ride(jsonPayload); + rideMap.put(ride.getID(), ride.setState(State.AVAILABLE)); - while (ride.getState() == State.AVAILABLE) { - rideMap.notify(); - Thread.sleep(Main.WAIT_SPEED); - rideMap.wait(); + synchronized (ride = rideMap.get(ride.getID())) { + + while (ride.getState() == State.AVAILABLE) { + rideMap.notify(); + Thread.sleep(Main.WAIT_SPEED); + rideMap.wait(); + } + + exchange.response.setStatus(200); + PrintWriter writer = response.getWriter(); + writer.write(ride.json()); + writer.flush(); + writer.close(); + + ride.notify(); } - exchange.response.setStatus(200); - PrintWriter writer = response.getWriter(); - writer.write(ride.json()); - writer.flush(); - writer.close(); rideMap.notify(); } exchange.notify(); diff --git a/mispmock/src/core/Main.java b/mispmock/src/core/Main.java index 830de27..f09ccc7 100644 --- a/mispmock/src/core/Main.java +++ b/mispmock/src/core/Main.java @@ -6,7 +6,6 @@ import actor.UserMock; public class Main { final public static int WAIT_SPEED = 10; - final public static int REQUEST_SPEED = 1; diff --git a/mispmock/src/exchange/RequestMock.java b/mispmock/src/exchange/RequestMock.java index 4a70ad9..a95490d 100644 --- a/mispmock/src/exchange/RequestMock.java +++ b/mispmock/src/exchange/RequestMock.java @@ -15,7 +15,7 @@ import java.util.Collection; */ public class RequestMock extends MockHttpServletRequest implements HttpServletRequest { - public ExchangeMock exchange; + public final ExchangeMock exchange; public RequestMock(ExchangeMock exchange){ super();