diff --git a/mispbridge/src/core/BridgeServlet.java b/mispbridge/src/core/BridgeServlet.java index 39d9349..2a33e8e 100644 --- a/mispbridge/src/core/BridgeServlet.java +++ b/mispbridge/src/core/BridgeServlet.java @@ -7,9 +7,7 @@ import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.util.ArrayList; import java.util.HashMap; -import java.util.List; import java.util.Map; public class BridgeServlet extends HttpServlet { @@ -28,33 +26,32 @@ public class BridgeServlet extends HttpServlet { String jsonPayload = IOUtils.toString(request.getReader()); - if (jsonPayload.contains("REQUEST")) { - Thread handleGetLinkThread = new Thread(() -> { + Ride ridePayload = new Ride(jsonPayload); + boolean hasID = ridePayload.getID() != null; + boolean hasRequest = ridePayload.getRequest() != null; + boolean hasData = ridePayload.getData() != null; + + + if (hasID & hasRequest & !hasData) { + Thread handleGetUserRequestThread = new Thread(() -> { try { handleGetRequest(request, response); - } catch (IOException | InterruptedException e) { - e.printStackTrace(); - } + } catch (IOException | InterruptedException e) {e.printStackTrace(); } }); - handleGetLinkThread.setName("handleGetLinkThread"); - handleGetLinkThread.start(); - } else { - Ride ridePayload = new Ride(jsonPayload); - boolean hasReqeust = ridePayload.getRequest() != null; - boolean hasData = ridePayload.getData() != null; - - if (hasReqeust && hasData) { - Thread handleGetRideRequestDataThread = new Thread(() -> { - try { - handleGetRideRequestData(request, response); - } catch (IOException | InterruptedException e) { - e.printStackTrace(); - } - }); - handleGetRideRequestDataThread.setName("handleGetRideRequestDataThread"); - handleGetRideRequestDataThread.start(); - } + handleGetUserRequestThread.setName("handleGetUserRequestThread"); + handleGetUserRequestThread.start(); } + + if (hasID && hasRequest && hasData) { + Thread handleGetRideRequestDataThread = new Thread(() -> { + try { + handleGetRideRequestData(request, response); + } catch (IOException | InterruptedException e) { e.printStackTrace(); } + }); + handleGetRideRequestDataThread.setName("handleGetRideRequestDataThread"); + handleGetRideRequestDataThread.start(); + } + } diff --git a/misphelper/src/core/Ride.java b/misphelper/src/core/Ride.java index a15f85d..224ae7d 100644 --- a/misphelper/src/core/Ride.java +++ b/misphelper/src/core/Ride.java @@ -24,8 +24,21 @@ public class Ride { } public Ride(String jsonString) { - JSONObject obj = new JSONObject(jsonString); - id = obj.getLong("id"); + JSONObject obj = new JSONObject(); + try { + obj = new JSONObject(jsonString); + }catch (JSONException e){ + int br = 0; + } + + + + + try { + id = obj.getLong("id"); + }catch (JSONException e){ + id = count++; + } try{ request = obj.getString("request"); } catch (JSONException e){ diff --git a/mispmock/src/actor/ActorRunnable.java b/mispmock/src/actor/ActorRunnable.java index 1805504..9901e58 100644 --- a/mispmock/src/actor/ActorRunnable.java +++ b/mispmock/src/actor/ActorRunnable.java @@ -25,6 +25,7 @@ public abstract class ActorRunnable implements Runnable { public ActorRunnable(MockSet mockSet){ this.mockSet = mockSet; + } diff --git a/mispmock/src/actor/AppMock.java b/mispmock/src/actor/AppMock.java index 1497269..59aabaa 100644 --- a/mispmock/src/actor/AppMock.java +++ b/mispmock/src/actor/AppMock.java @@ -15,6 +15,7 @@ public class AppMock extends ActorRunnable { public AppMock(MockSet mockSet) { super(mockSet); + mockSet.appMock = this; } @@ -42,7 +43,7 @@ public class AppMock extends ActorRunnable { JSONObject obj = new JSONObject(parsedRequest); parsedRequest = obj.getString("request"); - String dataString = "DATA" + parsedRequest.split("-")[1]; + String dataString = "DATA-" + parsedRequest.split("-")[1]; JSONObject dataObj = new JSONObject(); dataObj.put("data", dataString); diff --git a/mispmock/src/actor/UserMock.java b/mispmock/src/actor/UserMock.java index 4c07f2c..f5e80c0 100644 --- a/mispmock/src/actor/UserMock.java +++ b/mispmock/src/actor/UserMock.java @@ -19,6 +19,7 @@ public class UserMock extends ActorRunnable { public UserMock(MockSet mockSet){ super(mockSet); + mockSet.userMock = this; } @Override @@ -57,7 +58,7 @@ public class UserMock extends ActorRunnable { exchange.request.setMethod("GET"); exchange.request.setContentType("application/json"); - String requestBody = "REQUEST-"+requestCount++; + String requestBody = "REQUEST-"+(++requestCount); String jsonString = "{\"request\":\""+requestBody+ "\"}"; exchange.request.setContent(jsonString.getBytes()); @@ -70,7 +71,7 @@ public class UserMock extends ActorRunnable { // handle OK (Data) String data = exchange.response.getContentAsString(); System.out.println(data + " of REQUEST-"+requestCount); - + exchange.notify(); } } diff --git a/mispmock/src/core/BridgeMock.java b/mispmock/src/core/BridgeMock.java index a92f686..c8c1659 100644 --- a/mispmock/src/core/BridgeMock.java +++ b/mispmock/src/core/BridgeMock.java @@ -62,12 +62,14 @@ public class BridgeMock extends BridgeServlet { ride.setState(State.BOOKED); - while (ride.getData()==null) { + while (ride.getState()!=State.LOADED) { ride.notify(); Thread.sleep(100); ride.wait(); } - ride.setState(State.LOADED); + + + rideMap.remove(ride.getID()); exchange.response.setStatus(200); PrintWriter writer = exchange.response.getWriter(); @@ -76,6 +78,7 @@ public class BridgeMock extends BridgeServlet { writer.close(); ride.notify(); + } exchange.notify(); } @@ -106,23 +109,28 @@ public class BridgeMock extends BridgeServlet { synchronized (exchange) { String jsonPayload = IOUtils.toString(request.getReader()); - Ride ride = new Ride(jsonPayload); + Ride parsedRide = new Ride(jsonPayload); + Ride thisRide = rideMap.get(parsedRide.getID()); - synchronized (ride) { - ride.setState(State.LOADED); + synchronized (thisRide) { + thisRide.setData(parsedRide.getData()); + thisRide.setState(State.LOADED); exchange.response.setStatus(200); PrintWriter writer = response.getWriter(); - writer.write(ride.json()); + writer.write(thisRide.json()); writer.flush(); writer.close(); - rideMap.remove(ride.getID()); - ride.notify(); + + + + thisRide.notify(); } exchange.notify(); + } } diff --git a/mispmock/src/core/ClientMock.java b/mispmock/src/core/ClientMock.java index 246801a..8290033 100644 --- a/mispmock/src/core/ClientMock.java +++ b/mispmock/src/core/ClientMock.java @@ -43,10 +43,11 @@ public class ClientMock extends ClientServlet { // handle OK (Ride)(Request) Ride parsedRide = new Ride(exchange.response.getContentAsString()); ride.setRequest(parsedRide.getRequest()); - ride.setState(State.BOOKED); - sendGetRequest(ride); - } + exchange.notify(); + } + ride.setState(State.BOOKED); + sendGetRequest(ride); } @@ -69,14 +70,15 @@ public class ClientMock extends ClientServlet { // Mock GET (Request) exchange.notify(); mockSet.appMock.doGet(exchange.request,exchange.response); - exchange.wait(); + //exchange.wait(); // handle OK (Data) Ride parsedRide = new Ride(exchange.response.getContentAsString()); ride.setData(parsedRide.getData()); - ride.setState(State.LOADED); - sendGetRideRequestData(ride); + exchange.notify(); } + ride.setState(State.LOADED); + sendGetRideRequestData(ride); } @@ -103,6 +105,7 @@ public class ClientMock extends ClientServlet { // handle OK (Ride) Ride parsedRide = new Ride(exchange.response.getContentAsString()); rideMap.remove(parsedRide.getID()); + exchange.notify(); } } diff --git a/mispmock/src/core/Main.java b/mispmock/src/core/Main.java index 295e7e8..41a55bf 100644 --- a/mispmock/src/core/Main.java +++ b/mispmock/src/core/Main.java @@ -21,14 +21,18 @@ public class Main { Runnable clientRunnable = new ClientRunnable(mockSet); Runnable appRunnable = new AppMock(mockSet); - Thread publicThread = new Thread(publicRunnable); + Thread userThread = new Thread(publicRunnable); Thread bridgeThread = new Thread(bridgeRunable); Thread clientThread = new Thread(clientRunnable); Thread appThread = new Thread(appRunnable); - publicThread.start(); + userThread.setName("userThread"); + userThread.start(); + bridgeThread.setName("bridgeThread"); bridgeThread.start(); + clientThread.setName("clientThread"); clientThread.start(); + appThread.setName("appThread"); appThread.start(); int br =0;