diff --git a/make-war.sh b/make-war.sh index 5a56c17..9623203 100755 --- a/make-war.sh +++ b/make-war.sh @@ -2,34 +2,71 @@ cwd=$(pwd) -mispbridge_out='/out/production/mispbridge/com/olexyn/misp/bridge' -mispbridge_wrapper='/mispbridge/war/wrapper'; +# compile and distribute the misphelper.jar +cd "${cwd}/out/production/misphelper" || exit + +jar -cvf misphelper.jar ./com/olexyn/misp/helper/* + + + + + + + + +a='misp' +b='bridge' + + +n="${a}${b}" +pkg="/com/olexyn/${a}/${b}" +out="/out/production/${n}${pkg}" +wrapper="/${n}/war/wrapper" + +# copy misphelper.jar to wrapper/.../lib +cp "${cwd}/out/production/misphelper/misphelper.jar" "${cwd}${wrapper}/WEB-INF/lib" # copy compiled code into the wrapper. -cp -r "${cwd}${mispbridge_out}" "${cwd}${mispbridge_wrapper}/WEB-INF/classes" +cp -r "${cwd}${out}" "${cwd}${wrapper}/WEB-INF/classes/com/olexyn/${a}" # compress .war -cd "${cwd}${mispbridge_wrapper}" || exit -jar -cvf ../mispbridge.war * +cd "${cwd}${wrapper}" || exit +jar -cvf "../${n}.war" * + + +a='misp' +b='client' -mispclient_out='/out/production/mispclient/com/olexyn/misp/client' -mispclient_wrapper='/mispclient/war/wrapper'; +n="${a}${b}" +pkg="/com/olexyn/${a}/${b}" +out="/out/production/${n}${pkg}" +wrapper="/${n}/war/wrapper" + +# copy misphelper.jar to wrapper/.../lib +cp "${cwd}/out/production/misphelper/misphelper.jar" "${cwd}${wrapper}/WEB-INF/lib" # copy compiled code into the wrapper. -cp -r "${cwd}${mispclient_out}" "${cwd}${mispclient_wrapper}/WEB-INF/classes" +cp -r "${cwd}${out}" "${cwd}${wrapper}/WEB-INF/classes/com/olexyn/${a}" # compress .war -cd "${cwd}${mispclient_wrapper}" || exit -jar -cvf ../mispclient.war * +cd "${cwd}${wrapper}" || exit +jar -cvf "../${n}.war" * + + + +a='mirror' +pkg="/com/olexyn/${a}" +out="/out/production/${a}${pkg}" +wrapper="/${a}/war/wrapper" -mirror_out='/out/production/mirror/com/olexyn/mirror' -mirror_wrapper='/mirror/war/wrapper'; +# copy misphelper.jar to wrapper/.../lib +cp "${cwd}/out/production/misphelper/misphelper.jar" "${cwd}${wrapper}/WEB-INF/lib" # copy compiled code into the wrapper. -cp -r "${cwd}${mirror_out}" "${cwd}${mirror_wrapper}/WEB-INF/classes" +cp -r "${cwd}${out}" "${cwd}${wrapper}/WEB-INF/classes/com/olexyn" # compress .war -cd "${cwd}${mirror_wrapper}" || exit -jar -cvf ../mirror.war * \ No newline at end of file +cd "${cwd}${wrapper}" || exit +jar -cvf "../${a}.war" * \ No newline at end of file diff --git a/mirror/src/com/olexyn/mirror/Mirror.java b/mirror/src/com/olexyn/mirror/Mirror.java index 11a2323..f2790f7 100644 --- a/mirror/src/com/olexyn/mirror/Mirror.java +++ b/mirror/src/com/olexyn/mirror/Mirror.java @@ -1,9 +1,8 @@ package com.olexyn.mirror; import com.olexyn.misp.helper.Ride; +import com.olexyn.misp.helper.WebPrint; import org.apache.commons.io.IOUtils; -import org.json.JSONException; -import org.json.JSONObject; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; @@ -11,16 +10,20 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; public class Mirror extends HttpServlet { protected static final String MISP_CLIENT_URL = "http://localhost:9090/mispclient/core"; - public final Map available = new HashMap<>(); - public final Map booked = new HashMap<>(); - public final Map loaded = new HashMap<>(); + + private final List getList = new ArrayList<>(); + private final List postList = new ArrayList<>(); + private final List putList = new ArrayList<>(); + // ####### // @@ -29,172 +32,46 @@ public class Mirror extends HttpServlet { @Override public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { - - - - String payload = IOUtils.toString(request.getReader()); - - JSONObject obj = new JSONObject(); - try { - obj = new JSONObject(payload); - }catch (JSONException jsonE){ - int br = 0; - Thread handleGetUserRequestThread = new Thread(() -> { - try { - handleGetRequest(request, response); - } catch (IOException | InterruptedException e) {e.printStackTrace(); } - }); - handleGetUserRequestThread.setName("handleGetUserRequestThread"); - handleGetUserRequestThread.start(); - } - - Ride ridePayload = new Ride(payload); - boolean hasID = ridePayload.getID() != null; - boolean hasRequest = ridePayload.getRequest() != null; - boolean hasData = ridePayload.getData() != null; - - - - - if (hasID && hasRequest && hasData) { - Thread handleGetRideRequestDataThread = new Thread(() -> { - try { - handleGetRideRequestData(request, response); - } catch (IOException | InterruptedException e) { e.printStackTrace(); } - }); - handleGetRideRequestDataThread.setName("handleGetRideRequestDataThread"); - handleGetRideRequestDataThread.start(); + synchronized (getList) { + getList.add(IOUtils.toString(request.getReader())); } + PrintWriter print = response.getWriter(); - } - - - /** - * handle GET (Link) - * remove Ride from AvailableRides - * add Ride to ReservedRides - * send OK (Ride) to mispclient - * send OK (Ride) to public - */ - protected void handleGetRequest(HttpServletRequest request, HttpServletResponse response) throws IOException, InterruptedException { - final Ride ride; - String parsedRequest = IOUtils.toString(request.getReader()); - - - synchronized (available) { - - while (available.size() < 1) { - available.notify(); - available.wait(); - } - // ride exists only locally, thus safe - ride = available.entrySet().iterator().next().getValue(); - // ride exists only in "available", access through which is sync, thus safe - available.remove(ride.getID()); - // needed because POST (Ride) wait()s - available.notify(); - } + print.println(""); - synchronized (booked) { - // ride exists only locally, thus safe - booked.put(ride.getID(), ride); - // ride exists only in "booked", access through which is sync, thus safe - ride.setRequest(parsedRequest); - // POST (Ride) wait()s - booked.notify(); + print.println(""); + print.println(""); + print.println(""); + print.println("title"); + print.println(""); + print.println(""); + print.println(""); + print.println(""); + synchronized (getList) { + print.println(WebPrint.list(getList, "GET")); } - - synchronized (loaded) { - - while (!loaded.containsKey(ride.getID())) { - loaded.notify(); - loaded.wait(); - } + print.println(" "); - // CARE this is tricky - // what if ride exists in another map, e.g. "available' - // in that case illegal access is possible - // be carefull to removing ride from all other references, when adding it to "loaded". - ride.setData(loaded.remove(ride.getID()).getData()); - } - - response.setStatus(200); - final PrintWriter writer = response.getWriter(); - writer.write(ride.getData()); - writer.flush(); - writer.close(); } - - - /** - * handle GET (Ride)(Data) - * if Ride in ForwardedRequest - * remove Ride from ForwardedRequest - * add Ride to NewData - * send OK (Ride)(Data) - * remove Ride from NewData - * add Ride to ForwardedData - * send OK (EOL) - * remove Ride from ForwardedData - * add Ride to EOL - */ - protected void handleGetRideRequestData(HttpServletRequest request, HttpServletResponse response) throws IOException, InterruptedException { - final String jsonPayload = IOUtils.toString(request.getReader()); - final Ride ride = new Ride(jsonPayload); - - synchronized (booked) { - booked.remove(ride.getID()); - } - - synchronized (loaded) { - loaded.put(ride.getID(), ride); - loaded.notify(); - } } - // ####### - // - // ####### @Override - public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { - Thread handlePostRideThread = new Thread(() -> { - try {handlePostRide(request, response); } catch (IOException | InterruptedException e) { e.printStackTrace(); } - }); - handlePostRideThread.setName("handlePostRideThread"); - handlePostRideThread.start(); - } - + public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { - /** - * handle POST (Ride) - * add Ride to AvailableRides - */ - protected void handlePostRide(HttpServletRequest request, HttpServletResponse response) throws IOException, InterruptedException { - String jsonPayload = IOUtils.toString(request.getReader()); - final Ride ride = new Ride(jsonPayload); - - synchronized (available) { - available.put(ride.getID(), ride); - available.notify(); + synchronized (postList) { + postList.add(IOUtils.toString(request.getReader())); } + } - // ID is final/threadsafe - while(!(booked.containsKey(ride.getID()))){ + @Override + public void doPut(HttpServletRequest request, HttpServletResponse response) throws IOException{ + synchronized (putList){ + putList.add(IOUtils.toString(request.getReader())); } + } +} - synchronized (booked) { - //booked.notify(); - //booked.wait(); - ride.setRequest(booked.get(ride.getID()).getRequest()); - } - response.setStatus(200); - PrintWriter writer = response.getWriter(); - writer.write(ride.json()); - writer.flush(); - writer.close(); - } -} \ No newline at end of file diff --git a/mirror/war/mirror.war b/mirror/war/mirror.war deleted file mode 100644 index 9ab0347..0000000 Binary files a/mirror/war/mirror.war and /dev/null differ diff --git a/mirror/war/wrapper/WEB-INF/classes/core/BridgeServlet.class b/mirror/war/wrapper/WEB-INF/classes/core/BridgeServlet.class deleted file mode 100644 index 5e4ae8e..0000000 Binary files a/mirror/war/wrapper/WEB-INF/classes/core/BridgeServlet.class and /dev/null differ diff --git a/mirror/war/wrapper/WEB-INF/classes/core/Debug.class b/mirror/war/wrapper/WEB-INF/classes/core/Debug.class deleted file mode 100644 index 9461911..0000000 Binary files a/mirror/war/wrapper/WEB-INF/classes/core/Debug.class and /dev/null differ diff --git a/mirror/war/wrapper/WEB-INF/classes/core/Ride.class b/mirror/war/wrapper/WEB-INF/classes/core/Ride.class deleted file mode 100644 index 93cf34f..0000000 Binary files a/mirror/war/wrapper/WEB-INF/classes/core/Ride.class and /dev/null differ diff --git a/mirror/war/wrapper/WEB-INF/classes/mirror/Mirror.class b/mirror/war/wrapper/WEB-INF/classes/mirror/Mirror.class deleted file mode 100644 index 7b3a619..0000000 Binary files a/mirror/war/wrapper/WEB-INF/classes/mirror/Mirror.class and /dev/null differ diff --git a/mirror/war/wrapper/WEB-INF/web.xml b/mirror/war/wrapper/WEB-INF/web.xml index 0d3a1af..a4e2df5 100644 --- a/mirror/war/wrapper/WEB-INF/web.xml +++ b/mirror/war/wrapper/WEB-INF/web.xml @@ -4,19 +4,19 @@ xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> - BridgeServlet, World Application + Mirror This is a simple web application with a source code organization based on the recommendations of the Application Developer's Guide. - BridgeServlet - core.BridgeServlet + Mirror + com.olexyn.mirror.Mirror - BridgeServlet + Mirror /core diff --git a/mirror/war/wrapper/index.html b/mirror/war/wrapper/index.html index 547492b..d82bd2a 100644 --- a/mirror/war/wrapper/index.html +++ b/mirror/war/wrapper/index.html @@ -1,6 +1,6 @@ -BridgeServlet +Mirror @@ -10,7 +10,7 @@ -

BridgeServlet

+

Mirror

@@ -18,7 +18,7 @@

    This Servlet currently provides the following features: -

  • Tunnel to hosted Application. +
  • Mirror of all requests.
diff --git a/mispbridge/src/com/olexyn/misp/bridge/Debug.java b/mispbridge/src/com/olexyn/misp/bridge/Debug.java index 99afc2a..12e54f6 100644 --- a/mispbridge/src/com/olexyn/misp/bridge/Debug.java +++ b/mispbridge/src/com/olexyn/misp/bridge/Debug.java @@ -23,7 +23,7 @@ public class Debug { sb.append(""); sb.append(""); sb.append(""); sb.append(""); synchronized (foo){ diff --git a/mispbridge/war/mispbridge.war b/mispbridge/war/mispbridge.war deleted file mode 100644 index 999a26d..0000000 Binary files a/mispbridge/war/mispbridge.war and /dev/null differ diff --git a/mispbridge/war/wrapper/WEB-INF/classes/bridge/BridgeServlet.class b/mispbridge/war/wrapper/WEB-INF/classes/bridge/BridgeServlet.class deleted file mode 100644 index 9770e71..0000000 Binary files a/mispbridge/war/wrapper/WEB-INF/classes/bridge/BridgeServlet.class and /dev/null differ diff --git a/mispbridge/war/wrapper/WEB-INF/classes/bridge/Debug.class b/mispbridge/war/wrapper/WEB-INF/classes/bridge/Debug.class deleted file mode 100644 index 3558fc4..0000000 Binary files a/mispbridge/war/wrapper/WEB-INF/classes/bridge/Debug.class and /dev/null differ diff --git a/mispbridge/war/wrapper/WEB-INF/classes/core/BridgeServlet.class b/mispbridge/war/wrapper/WEB-INF/classes/core/BridgeServlet.class deleted file mode 100644 index 5e4ae8e..0000000 Binary files a/mispbridge/war/wrapper/WEB-INF/classes/core/BridgeServlet.class and /dev/null differ diff --git a/mispbridge/war/wrapper/WEB-INF/classes/core/Debug.class b/mispbridge/war/wrapper/WEB-INF/classes/core/Debug.class deleted file mode 100644 index 9461911..0000000 Binary files a/mispbridge/war/wrapper/WEB-INF/classes/core/Debug.class and /dev/null differ diff --git a/mispbridge/war/wrapper/WEB-INF/classes/core/Ride.class b/mispbridge/war/wrapper/WEB-INF/classes/core/Ride.class deleted file mode 100644 index 93cf34f..0000000 Binary files a/mispbridge/war/wrapper/WEB-INF/classes/core/Ride.class and /dev/null differ diff --git a/mispbridge/war/wrapper/WEB-INF/web.xml b/mispbridge/war/wrapper/WEB-INF/web.xml index 0d3a1af..aa40bc5 100644 --- a/mispbridge/war/wrapper/WEB-INF/web.xml +++ b/mispbridge/war/wrapper/WEB-INF/web.xml @@ -12,7 +12,7 @@ BridgeServlet - core.BridgeServlet + com.olexyn.misp.bridge.BridgeServlet diff --git a/mispclient/src/com/olexyn/misp/client/Debug.java b/mispclient/src/com/olexyn/misp/client/Debug.java index d243d63..20b743d 100644 --- a/mispclient/src/com/olexyn/misp/client/Debug.java +++ b/mispclient/src/com/olexyn/misp/client/Debug.java @@ -11,7 +11,7 @@ public class Debug { StringBuilder sb = new StringBuilder(); - sb.append("

Debug:

"); + sb.append("

WebPrint:

"); sb.append(mapTable(clientServlet.available, "available")); sb.append(mapTable(clientServlet.booked, "booked")); sb.append(mapTable(clientServlet.loaded, "loaded")); diff --git a/mispclient/war/mispclient.war b/mispclient/war/mispclient.war deleted file mode 100644 index 3a4fcd2..0000000 Binary files a/mispclient/war/mispclient.war and /dev/null differ diff --git a/mispclient/war/wrapper/WEB-INF/classes/META-INF/mispclient.kotlin_module b/mispclient/war/wrapper/WEB-INF/classes/META-INF/mispclient.kotlin_module deleted file mode 100644 index a49347a..0000000 Binary files a/mispclient/war/wrapper/WEB-INF/classes/META-INF/mispclient.kotlin_module and /dev/null differ diff --git a/mispclient/war/wrapper/WEB-INF/classes/client/ClientServlet.class b/mispclient/war/wrapper/WEB-INF/classes/client/ClientServlet.class deleted file mode 100644 index ed0541d..0000000 Binary files a/mispclient/war/wrapper/WEB-INF/classes/client/ClientServlet.class and /dev/null differ diff --git a/mispclient/war/wrapper/WEB-INF/classes/client/ConnectionHelper.class b/mispclient/war/wrapper/WEB-INF/classes/client/ConnectionHelper.class deleted file mode 100644 index b9c4609..0000000 Binary files a/mispclient/war/wrapper/WEB-INF/classes/client/ConnectionHelper.class and /dev/null differ diff --git a/mispclient/war/wrapper/WEB-INF/classes/client/Debug.class b/mispclient/war/wrapper/WEB-INF/classes/client/Debug.class deleted file mode 100644 index cd6e141..0000000 Binary files a/mispclient/war/wrapper/WEB-INF/classes/client/Debug.class and /dev/null differ diff --git a/mispclient/war/wrapper/WEB-INF/classes/client/PostRideRunnable.class b/mispclient/war/wrapper/WEB-INF/classes/client/PostRideRunnable.class deleted file mode 100644 index 754d52b..0000000 Binary files a/mispclient/war/wrapper/WEB-INF/classes/client/PostRideRunnable.class and /dev/null differ diff --git a/mispclient/war/wrapper/WEB-INF/classes/core/ClientServlet.class b/mispclient/war/wrapper/WEB-INF/classes/core/ClientServlet.class deleted file mode 100644 index e95fb49..0000000 Binary files a/mispclient/war/wrapper/WEB-INF/classes/core/ClientServlet.class and /dev/null differ diff --git a/mispclient/war/wrapper/WEB-INF/classes/core/ConnectionHelper.class b/mispclient/war/wrapper/WEB-INF/classes/core/ConnectionHelper.class deleted file mode 100644 index b5530e5..0000000 Binary files a/mispclient/war/wrapper/WEB-INF/classes/core/ConnectionHelper.class and /dev/null differ diff --git a/mispclient/war/wrapper/WEB-INF/classes/core/Debug.class b/mispclient/war/wrapper/WEB-INF/classes/core/Debug.class deleted file mode 100644 index 8c84f90..0000000 Binary files a/mispclient/war/wrapper/WEB-INF/classes/core/Debug.class and /dev/null differ diff --git a/mispclient/war/wrapper/WEB-INF/classes/core/PostRideRunnable.class b/mispclient/war/wrapper/WEB-INF/classes/core/PostRideRunnable.class deleted file mode 100644 index 4dff78b..0000000 Binary files a/mispclient/war/wrapper/WEB-INF/classes/core/PostRideRunnable.class and /dev/null differ diff --git a/mispclient/war/wrapper/WEB-INF/classes/core/Ride.class b/mispclient/war/wrapper/WEB-INF/classes/core/Ride.class deleted file mode 100644 index 93cf34f..0000000 Binary files a/mispclient/war/wrapper/WEB-INF/classes/core/Ride.class and /dev/null differ diff --git a/mispclient/war/wrapper/WEB-INF/web.xml b/mispclient/war/wrapper/WEB-INF/web.xml index 24d8400..fb77f55 100644 --- a/mispclient/war/wrapper/WEB-INF/web.xml +++ b/mispclient/war/wrapper/WEB-INF/web.xml @@ -12,7 +12,7 @@ ClientServlet - core.ClientServlet + com.olexyn.misp.client.ClientServlet
"); - sb.append("Debug: "+ type); + sb.append("WebPrint: "+ type); sb.append("