From c7cf89f8a97b19527ef8402aaecc48afcf9bc45d Mon Sep 17 00:00:00 2001 From: Ivan Olexyn Date: Sun, 19 Apr 2020 12:32:54 +0200 Subject: [PATCH] - misc simplify. > Ride -> void > remove needless states in Client --- mispclient/src/ClientServlet.java | 77 ++++--------------------------- mispmock/src/BridgeMock.java | 22 ++++++--- mispmock/src/ClientMock.java | 8 +--- 3 files changed, 27 insertions(+), 80 deletions(-) diff --git a/mispclient/src/ClientServlet.java b/mispclient/src/ClientServlet.java index c7f40fb..cc7b275 100644 --- a/mispclient/src/ClientServlet.java +++ b/mispclient/src/ClientServlet.java @@ -6,12 +6,9 @@ import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; -import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.IOException; -import java.io.InputStreamReader; import java.net.HttpURLConnection; -import java.net.URL; import java.util.ArrayList; import java.util.List; @@ -19,19 +16,18 @@ import java.util.List; public class ClientServlet extends HttpServlet { protected static final String MISP_BRIDGE_URL = "http://localhost:9090/mispbridge/core"; + public static final int AVAILABLE_RIDES_OVERHEAD = 1; public List availableRides = new ArrayList<>(); - public List reservedRides = new ArrayList<>(); - public List pendingRequests = new ArrayList<>(); - public List pendingData = new ArrayList<>(); + public List bookedRides = new ArrayList<>(); + public List loadedRides = new ArrayList<>(); public ClientServlet() { // Thread : while AvailableRides < 256 , add Ride to AvailableRides , send POST (Ride) [DONE] new Thread(new PostRideRunnable(this)).start(); - // Thread : for Rides in ReservedRides, send GET (Ride) - new Thread(new GetRideRunnable(this)).start(); + } @@ -39,7 +35,7 @@ public class ClientServlet extends HttpServlet { * # send POST (Ride) * Generated by Loop */ - Ride sendPostRide(Ride oldRide) throws IOException, ServletException { + void sendPostRide(Ride oldRide) throws IOException, ServletException { HttpURLConnection connection = ConnectionHelper.make("POST", MISP_BRIDGE_URL); @@ -58,44 +54,12 @@ public class ClientServlet extends HttpServlet { Ride parsedRide = ConnectionHelper.parseRide(connection); if (parsedRide.equals(oldRide)) { availableRides.remove(oldRide); - reservedRides.add(parsedRide); - return parsedRide; + bookedRides.add(parsedRide); } } - return null; } - /** - * # send GET (Ride) - * Generated by Loop - */ - Ride sendGetRide(Ride oldRide) throws IOException { - - HttpURLConnection connection = ConnectionHelper.make("GET", MISP_BRIDGE_URL); - - // send GET (Ride) - connection.setDoOutput(true); - DataOutputStream outputStream = new DataOutputStream(connection.getOutputStream()); - outputStream.writeBytes(oldRide.json()); - outputStream.flush(); - outputStream.close(); - - // handle OK (Ride)(Request) - // remove Ride from ReservedRides - // add Ride to PendingRequests - // send GET (Request) - if (connection.getResponseCode() == 200) { - Ride parsedRide = ConnectionHelper.parseRide(connection); - if (parsedRide.getRequest() != null) { - reservedRides.remove(oldRide); - pendingRequests.add(parsedRide); - sendGetRequest(parsedRide); - return parsedRide; - } - } - return null; - } /** * # send GET (Request) to App @@ -110,10 +74,10 @@ public class ClientServlet extends HttpServlet { // add Ride to PendingData // send GET (Ride)(Data) String data = "DATA"; - pendingRequests.remove(oldRide); + bookedRides.remove(oldRide); Ride newRide = oldRide; newRide.setData(data); - pendingData.add(newRide); + loadedRides.add(newRide); sendGetRideRequestData(newRide); return newRide; } @@ -139,7 +103,7 @@ public class ClientServlet extends HttpServlet { if (connection.getResponseCode() == 200) { Ride shellIdRide = ConnectionHelper.parseRide(connection); if (shellIdRide.getRideID() != null) { - pendingData.remove(oldRide); + loadedRides.remove(oldRide); } } return null; @@ -165,7 +129,7 @@ class PostRideRunnable implements Runnable { @Override public void run() { while (true) { - if (clientServlet.availableRides.size() < 1) { + if (clientServlet.availableRides.size() < ClientServlet.AVAILABLE_RIDES_OVERHEAD) { try {clientServlet.sendPostRide(new Ride());} catch (IOException | ServletException e) { e.printStackTrace(); } } try {Thread.sleep(500);} catch (InterruptedException e) { e.printStackTrace(); } @@ -174,24 +138,3 @@ class PostRideRunnable implements Runnable { } -/** - * For Rides in ReservedRides, - * send GET (Ride). - */ -class GetRideRunnable implements Runnable { - ClientServlet clientServlet; - - public GetRideRunnable(ClientServlet clientServlet) { - this.clientServlet = clientServlet; - } - - @Override - public void run() { - while (true) { - for (Ride reservedRide : clientServlet.reservedRides) { - try {clientServlet.sendGetRide(reservedRide);} catch (IOException e) { e.printStackTrace(); } - } - try {Thread.sleep(500);} catch (InterruptedException e) { e.printStackTrace(); } - } - } -} \ No newline at end of file diff --git a/mispmock/src/BridgeMock.java b/mispmock/src/BridgeMock.java index b4ca146..a5bb2af 100644 --- a/mispmock/src/BridgeMock.java +++ b/mispmock/src/BridgeMock.java @@ -1,4 +1,6 @@ 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; @@ -115,16 +117,24 @@ public class BridgeMock extends BridgeServlet { @Override protected void handlePostRide(HttpServletRequest request, HttpServletResponse response) throws IOException, InterruptedException { // WIP wait till GET (LINK) arrives. + String jsonPayload = IOUtils.toString(request.getReader()); Ride ride = new Ride(jsonPayload); availableRides.add(ride); - // WIP force surrender lock on ride - int i = availableRides.indexOf(ride); - availableRides.get(i).notify(); - // WIP wait to receive lock back - availableRides.get(i).wait(); + synchronized (ride){ + + while (availableRides.contains(ride)){ + ride.notify(); + Thread.sleep(100); + ride.wait(); + } + + // SUPER ILLEGAL MOCKING + response.setStatus(200); + PrintWriter writer = response.getWriter(); + writer.print(ride.json()); + } - // # send OK (Ride) to mispclient } diff --git a/mispmock/src/ClientMock.java b/mispmock/src/ClientMock.java index 2f3bb43..4a0559d 100644 --- a/mispmock/src/ClientMock.java +++ b/mispmock/src/ClientMock.java @@ -2,11 +2,7 @@ import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.mock.web.MockHttpServletResponse; import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.util.ArrayList; -import java.util.List; /** * Wraps a ClientServlet so it can be debugged easily, i.e. without running Tomcat. @@ -22,7 +18,7 @@ public class ClientMock extends ClientServlet { } @Override - Ride sendPostRide(Ride oldRide) throws IOException, ServletException { + void sendPostRide(Ride oldRide) throws IOException, ServletException { // SUPER ILLEGAL MOCKING MockHttpServletRequest request = new MockHttpServletRequest(); @@ -34,8 +30,6 @@ public class ClientMock extends ClientServlet { MockHttpServletResponse response = new MockHttpServletResponse(); availableRides.add(oldRide); mockSet.bridgeMock.doPost(request,response); - // END - return null; }