diff --git a/mispbridge/src/core/BridgeServlet.java b/mispbridge/src/core/BridgeServlet.java
index 13c9292..39d9349 100644
--- a/mispbridge/src/core/BridgeServlet.java
+++ b/mispbridge/src/core/BridgeServlet.java
@@ -36,6 +36,7 @@ public class BridgeServlet extends HttpServlet {
e.printStackTrace();
}
});
+ handleGetLinkThread.setName("handleGetLinkThread");
handleGetLinkThread.start();
} else {
Ride ridePayload = new Ride(jsonPayload);
@@ -50,6 +51,7 @@ public class BridgeServlet extends HttpServlet {
e.printStackTrace();
}
});
+ handleGetRideRequestDataThread.setName("handleGetRideRequestDataThread");
handleGetRideRequestDataThread.start();
}
}
diff --git a/mispclient/src/core/ClientServlet.java b/mispclient/src/core/ClientServlet.java
index 9d8c71b..1966ad6 100644
--- a/mispclient/src/core/ClientServlet.java
+++ b/mispclient/src/core/ClientServlet.java
@@ -26,9 +26,9 @@ public class ClientServlet extends HttpServlet {
public ClientServlet() {
// Thread : while AvailableRides < 256 , add Ride to AvailableRides , send POST (Ride) [DONE]
- new Thread(new PostRideRunnable(this)).start();
-
-
+ Thread postRideThread = new Thread(new PostRideRunnable(this));
+ postRideThread.setName("postRideThread");
+ postRideThread.start();
}
@@ -65,7 +65,7 @@ public class ClientServlet extends HttpServlet {
/**
* # send GET (Request) to App
*/
- void sendGetRequest(Ride ride) throws IOException {
+ void sendGetRequest(Ride ride) throws IOException, ServletException, InterruptedException {
// send FOO
// TODO make sure as many as possible tyes of requests can be forwarded.
@@ -85,7 +85,7 @@ public class ClientServlet extends HttpServlet {
/**
* # send GET (Ride)(Request)(Data)
*/
- void sendGetRideRequestData(Ride oldRide) throws IOException {
+ void sendGetRideRequestData(Ride oldRide) throws IOException, ServletException, InterruptedException {
HttpURLConnection connection = ConnectionHelper.make("GET", MISP_BRIDGE_URL);
diff --git a/mispmock/src/actor/ActorRunnable.java b/mispmock/src/actor/ActorRunnable.java
index 7a190dd..1805504 100644
--- a/mispmock/src/actor/ActorRunnable.java
+++ b/mispmock/src/actor/ActorRunnable.java
@@ -47,8 +47,8 @@ public abstract class ActorRunnable implements Runnable {
}
- abstract void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException;
+ public abstract void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException;
- abstract void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException;
+ public abstract void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException;
}
diff --git a/mispmock/src/actor/AppMock.java b/mispmock/src/actor/AppMock.java
index a09e311..1497269 100644
--- a/mispmock/src/actor/AppMock.java
+++ b/mispmock/src/actor/AppMock.java
@@ -1,36 +1,63 @@
package actor;
-import actor.ActorRunnable;
+import core.MockSet;
+import exchange.ExchangeMock;
+import exchange.RequestMock;
+import org.apache.commons.io.IOUtils;
+import org.json.JSONObject;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
-
-import core.MockSet;
+import java.io.PrintWriter;
public class AppMock extends ActorRunnable {
- public AppMock(MockSet mockSet){
+ public AppMock(MockSet mockSet) {
super(mockSet);
}
@Override
public void run() {
+ while (true) {
+ try {
+ Thread.sleep(100);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+
+ }
}
@Override
- void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
+ public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
+
+ RequestMock mockRequest = (RequestMock) request;
+ ExchangeMock exchange = mockRequest.exchange;
+ synchronized (exchange) {
+ String parsedRequest = IOUtils.toString(request.getReader());
+ JSONObject obj = new JSONObject(parsedRequest);
+ parsedRequest = obj.getString("request");
+ String dataString = "DATA" + parsedRequest.split("-")[1];
+ JSONObject dataObj = new JSONObject();
+ dataObj.put("data", dataString);
- //Main.clientRunnable.responses.add(mockResponse);
+ exchange.response.setStatus(200);
+ PrintWriter writer = exchange.response.getWriter();
+ writer.write(dataObj.toString());
+ writer.flush();
+ writer.close();
+ exchange.notify();
+ }
}
@Override
- void doPost(HttpServletRequest request, HttpServletResponse response) {
+ public void doPost(HttpServletRequest request, HttpServletResponse response) {
}
}
diff --git a/mispmock/src/actor/UserMock.java b/mispmock/src/actor/UserMock.java
index c972d0e..4c07f2c 100644
--- a/mispmock/src/actor/UserMock.java
+++ b/mispmock/src/actor/UserMock.java
@@ -35,12 +35,12 @@ public class UserMock extends ActorRunnable {
}
@Override
- void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
+ public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
}
@Override
- void doPost(HttpServletRequest request, HttpServletResponse response) {
+ public void doPost(HttpServletRequest request, HttpServletResponse response) {
}
diff --git a/mispmock/src/core/BridgeMock.java b/mispmock/src/core/BridgeMock.java
index dd0c5f6..a92f686 100644
--- a/mispmock/src/core/BridgeMock.java
+++ b/mispmock/src/core/BridgeMock.java
@@ -67,11 +67,14 @@ public class BridgeMock extends BridgeServlet {
Thread.sleep(100);
ride.wait();
}
+ ride.setState(State.LOADED);
exchange.response.setStatus(200);
PrintWriter writer = exchange.response.getWriter();
- writer.print(ride.getData());
- ride.setState(State.LOADED);
+ writer.write(ride.getData());
+ writer.flush();
+ writer.close();
+
ride.notify();
}
exchange.notify();
@@ -112,7 +115,9 @@ public class BridgeMock extends BridgeServlet {
exchange.response.setStatus(200);
PrintWriter writer = response.getWriter();
- writer.print(ride.json());
+ writer.write(ride.json());
+ writer.flush();
+ writer.close();
rideMap.remove(ride.getID());
ride.notify();
@@ -167,10 +172,13 @@ public class BridgeMock extends BridgeServlet {
exchange.response.setStatus(200);
PrintWriter writer = response.getWriter();
- writer.print(ride.json());
- exchange.notify();
+ //writer.print(ride.json());
+ writer.write(ride.json());
+ writer.flush();
+ writer.close();
+ ride.notify();
}
-
+ exchange.notify();
}
diff --git a/mispmock/src/core/ClientMock.java b/mispmock/src/core/ClientMock.java
index 0e27490..246801a 100644
--- a/mispmock/src/core/ClientMock.java
+++ b/mispmock/src/core/ClientMock.java
@@ -1,6 +1,7 @@
package core;
import exchange.ExchangeMock;
+import org.json.JSONObject;
import javax.servlet.ServletException;
import java.io.DataOutputStream;
@@ -55,31 +56,27 @@ public class ClientMock extends ClientServlet {
* # send GET (Request) to App
*/
@Override
- void sendGetRequest(Ride ride) throws IOException {
-
- HttpURLConnection connection = ConnectionHelper.make("GET", ClientServlet.APP_URL);
-
- // send GET (Request)
- connection.setDoOutput(true);
- DataOutputStream outputStream = new DataOutputStream(connection.getOutputStream());
- outputStream.writeBytes(ride.getRequest());
- outputStream.flush();
- outputStream.close();
-
- // handle OK (Data)
- // remove Ride from BookedRides
- // add Ride to LoadedRides
- // send GET (Ride)(Data)
- if (connection.getResponseCode() == 200) {
- String parsedData = ConnectionHelper.parseString(connection);
- ride.setData(parsedData);
- ride.setState(State.LOADED);
- }
+ void sendGetRequest(Ride ride) throws IOException, ServletException, InterruptedException {
- sendGetRideRequestData(ride);
+ // Mock Exchange
+ ExchangeMock exchange = new ExchangeMock();
+ exchange.request.setMethod("GET");
+ exchange.request.setContentType("application/json");
+ exchange.request.setContent(ride.json().getBytes());
+ synchronized (exchange){
+ // Mock GET (Request)
+ exchange.notify();
+ mockSet.appMock.doGet(exchange.request,exchange.response);
+ exchange.wait();
+ // handle OK (Data)
+ Ride parsedRide = new Ride(exchange.response.getContentAsString());
+ ride.setData(parsedRide.getData());
+ ride.setState(State.LOADED);
+ sendGetRideRequestData(ride);
+ }
}
@@ -88,24 +85,24 @@ public class ClientMock extends ClientServlet {
* # send GET (Ride)(Request)(Data)
*/
@Override
- void sendGetRideRequestData(Ride ride) throws IOException {
-
- HttpURLConnection connection = ConnectionHelper.make("GET", ClientServlet.MISP_BRIDGE_URL);
-
- // send GET (Ride)(Request)(Data)
- connection.setDoOutput(true);
- DataOutputStream outputStream = new DataOutputStream(connection.getOutputStream());
- outputStream.writeBytes(ride.json());
- outputStream.flush();
- outputStream.close();
-
- // handle OK (Ride)
- // remove Ride from LoadedRides
- if (connection.getResponseCode() == 200) {
- Ride shellIdRide = ConnectionHelper.parseRide(connection);
- if (shellIdRide.getID() != null) {
- rideMap.remove(ride.getID());
- }
+ void sendGetRideRequestData(Ride ride) throws IOException, ServletException, InterruptedException {
+
+ // Mock Exchange
+ ExchangeMock exchange = new ExchangeMock();
+
+ exchange.request.setMethod("GET");
+ exchange.request.setContentType("application/json");
+ exchange.request.setContent(ride.json().getBytes());
+
+ synchronized (exchange){
+ // Mock GET (Ride)(Request)(Data)
+ exchange.notify();
+ mockSet.bridgeMock.doGet(exchange.request,exchange.response);
+ exchange.wait();
+
+ // handle OK (Ride)
+ Ride parsedRide = new Ride(exchange.response.getContentAsString());
+ rideMap.remove(parsedRide.getID());
}
}
diff --git a/mispmock/src/exchange/ExchangeMock.java b/mispmock/src/exchange/ExchangeMock.java
index 9fea683..aca954b 100644
--- a/mispmock/src/exchange/ExchangeMock.java
+++ b/mispmock/src/exchange/ExchangeMock.java
@@ -4,6 +4,20 @@ package exchange;
import java.util.ArrayList;
import java.util.List;
+/**
+ * How "exchange" mocks an exchange:
+ *
+ * An "exchange" corresponds to request & reply pair.
+ * - i.e. a GET & OK pair.
+ * Steps:
+ * 1. new Exchange()
+ * 2. set properties of .request
+ * 3. "send" request by using exchange.notify(); recipient.doGet();
+ * 4. recipient does someting with request
+ * - - recipient sets proerties of .response
+ * - - recipient sends reply using exchange.notify();
+ * 5. "receive" response by using exchange.wait();
+ */
public class ExchangeMock {
public static List exchangeList = new ArrayList<>();
diff --git a/mispmock/src/exchange/ResponseMock.java b/mispmock/src/exchange/ResponseMock.java
index 501c80c..dad1a3f 100644
--- a/mispmock/src/exchange/ResponseMock.java
+++ b/mispmock/src/exchange/ResponseMock.java
@@ -8,6 +8,7 @@ import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
+import java.io.UnsupportedEncodingException;
import java.util.List;
import java.util.Locale;
import java.util.Set;
@@ -147,8 +148,8 @@ public class ResponseMock extends MockHttpServletResponse implements HttpServle
}
@Override
- public PrintWriter getWriter() {
- return null;
+ public PrintWriter getWriter() throws UnsupportedEncodingException {
+ return super.getWriter();
}
@Override