From f6559a73de16d38fc47699b061901c9f4ab4ead3 Mon Sep 17 00:00:00 2001 From: Ivan Olexyn Date: Mon, 4 May 2020 21:21:59 +0200 Subject: [PATCH] ~ save before overhaul. --- forward/pom.xml | 2 +- .../java/com/olexyn/misp/forward/Forward.java | 28 +++++------ helper/install-locally.sh | 4 +- .../java/com/olexyn/misp/helper/WebPrint.java | 47 +++++++++++-------- mirror/pom.xml | 2 +- .../java/com/olexyn/misp/mirror/Mirror.java | 20 ++++---- reverse/pom.xml | 2 +- .../misp/reverse/GetRequestRunnable.java | 3 +- .../reverse/GetRideRequestDataRunnable.java | 3 +- .../olexyn/misp/reverse/PostRideRunnable.java | 9 ++-- .../java/com/olexyn/misp/reverse/Reverse.java | 37 ++++++++++----- .../com/olexyn/misp/reverse/ReverseApp.java | 4 +- 12 files changed, 97 insertions(+), 64 deletions(-) diff --git a/forward/pom.xml b/forward/pom.xml index f212905..d42c285 100644 --- a/forward/pom.xml +++ b/forward/pom.xml @@ -28,7 +28,7 @@ com.olexyn.misp.helper - misp-helper + helper 0.1 compile diff --git a/forward/src/main/java/com/olexyn/misp/forward/Forward.java b/forward/src/main/java/com/olexyn/misp/forward/Forward.java index d0eaafc..5c95439 100644 --- a/forward/src/main/java/com/olexyn/misp/forward/Forward.java +++ b/forward/src/main/java/com/olexyn/misp/forward/Forward.java @@ -53,6 +53,7 @@ public class Forward extends HttpServlet { }); handleGetRideRequestDataThread.setName("handleGetRideRequestDataThread"); handleGetRideRequestDataThread.start(); + try {handleGetRideRequestDataThread.join(); } catch (InterruptedException ignored) { } } else { Thread handleGetRequestThread = new Thread(() -> { @@ -62,6 +63,7 @@ public class Forward extends HttpServlet { }); handleGetRequestThread.setName("handleGetRequestThread"); handleGetRequestThread.start(); + try {handleGetRequestThread.join(); } catch (InterruptedException ignored) { } } } @@ -78,26 +80,25 @@ public class Forward extends HttpServlet { final Ride ride; - //final ServletInputStream in = request.getInputStream(); - final String parsedRequest = null; //new String(in.readAllBytes()); - byte[] foo =null; - try{ + final String parsedRequest = null; //new String(in.readAllBytes()); + byte[] foo = null; + try { ByteArrayOutputStream byteOut = new ByteArrayOutputStream(); ObjectOutputStream objOut = new ObjectOutputStream(byteOut); objOut.writeObject(request); - int br =0; + int br = 0; foo = byteOut.toByteArray(); objOut.close(); byteOut.close(); - br=1; + br = 1; - }catch (IOException e){ - int br =0; + } catch (IOException e) { + int br = 0; } - int br =0; - - + int br = 0; + + synchronized (available) { while (available.size() < 1) { @@ -181,6 +182,7 @@ public class Forward extends HttpServlet { }); handlePostRideThread.setName("handlePostRideThread"); handlePostRideThread.start(); + try {handlePostRideThread.join(); } catch (InterruptedException ignored) { } } @@ -191,8 +193,6 @@ public class Forward extends HttpServlet { protected void handlePostRide(HttpServletRequest request, HttpServletResponse response) throws IOException, InterruptedException { - - String jsonPayload = IOUtils.toString(request.getReader()); final Ride ride = new Ride(jsonPayload); @@ -203,7 +203,7 @@ public class Forward extends HttpServlet { // ID is final/threadsafe while (!(booked.containsKey(ride.getID()))) { - Thread.sleep(50); + Thread.sleep(500); } synchronized (booked) { diff --git a/helper/install-locally.sh b/helper/install-locally.sh index 0fe410e..bd0a074 100755 --- a/helper/install-locally.sh +++ b/helper/install-locally.sh @@ -1,8 +1,8 @@ #!/bin/bash version="0.1" -file="target/misp-helper-${version}.jar" +file="target/helper-${version}.jar" groupId="com.olexyn.misp.helper" -artifactId="misp-helper" +artifactId="helper" diff --git a/helper/src/main/java/com/olexyn/misp/helper/WebPrint.java b/helper/src/main/java/com/olexyn/misp/helper/WebPrint.java index c6616a2..820be86 100644 --- a/helper/src/main/java/com/olexyn/misp/helper/WebPrint.java +++ b/helper/src/main/java/com/olexyn/misp/helper/WebPrint.java @@ -1,6 +1,9 @@ package com.olexyn.misp.helper; +import org.json.JSONObject; + import java.util.List; +import java.util.Map; public class WebPrint { @@ -30,31 +33,37 @@ public class WebPrint { StringBuilder sb = new StringBuilder(); sb.append(""); + + + + JSONObject obj = new JSONObject(list.get(0)); + Map map = obj.toMap(); + + + + sb.append(""); - sb.append(""); - sb.append(""); - sb.append(""); + for (Map.Entry entry : map.entrySet()){ + sb.append(""); + } sb.append(""); + for (String entry : list) { - String[] split = entry.split(SPLIT); + + JSONObject line = new JSONObject(entry); + Map map2 = line.toMap(); + sb.append(""); - sb.append(""); - sb.append(""); - sb.append(""); + for (Map.Entry entry2 : map2.entrySet()){ + sb.append(""); + } sb.append(""); + } return sb.toString(); diff --git a/mirror/pom.xml b/mirror/pom.xml index 2a4004a..31b3368 100644 --- a/mirror/pom.xml +++ b/mirror/pom.xml @@ -28,7 +28,7 @@ com.olexyn.misp.helper - misp-helper + helper 0.1 compile diff --git a/mirror/src/main/java/com/olexyn/misp/mirror/Mirror.java b/mirror/src/main/java/com/olexyn/misp/mirror/Mirror.java index a5ce338..467563e 100644 --- a/mirror/src/main/java/com/olexyn/misp/mirror/Mirror.java +++ b/mirror/src/main/java/com/olexyn/misp/mirror/Mirror.java @@ -3,6 +3,7 @@ package com.olexyn.misp.mirror; import com.olexyn.misp.helper.Ride; import com.olexyn.misp.helper.WebPrint; import org.apache.commons.io.IOUtils; +import org.json.JSONObject; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; @@ -17,7 +18,7 @@ import java.util.Map; public class Mirror extends HttpServlet { - protected static final String MISP_CLIENT_URL = "http://localhost:9090/mispclient/core"; + private final List list = new ArrayList<>(); @@ -26,13 +27,16 @@ public class Mirror extends HttpServlet { private void addRequest(HttpServletRequest request){ synchronized (list) { - StringBuffer sb = new StringBuffer(); - sb.append(request.getRequestURL().toString()); - sb.append(WebPrint.SPLIT); - sb.append(request.getMethod()); - sb.append(WebPrint.SPLIT); - sb.append(request.getQueryString()); - list.add(sb.toString()); + JSONObject obj = new JSONObject(); + obj.put("RequestURL", request.getRequestURL()); + obj.put("RemoteAddr" , request.getRemoteAddr()); + obj.put("Method", request.getMethod()); + obj.put("Param", request.getParameterMap().toString()); + obj.put("QueryString", request.getQueryString()); + obj.put("ContextPath",request.getContextPath()); + + + list.add(obj.toString()); } } // ####### diff --git a/reverse/pom.xml b/reverse/pom.xml index 538df90..c4abace 100644 --- a/reverse/pom.xml +++ b/reverse/pom.xml @@ -27,7 +27,7 @@ com.olexyn.misp.helper - misp-helper + helper 0.1 compile diff --git a/reverse/src/main/java/com/olexyn/misp/reverse/GetRequestRunnable.java b/reverse/src/main/java/com/olexyn/misp/reverse/GetRequestRunnable.java index 04fdfb7..9f64eb7 100644 --- a/reverse/src/main/java/com/olexyn/misp/reverse/GetRequestRunnable.java +++ b/reverse/src/main/java/com/olexyn/misp/reverse/GetRequestRunnable.java @@ -18,7 +18,8 @@ class GetRequestRunnable implements Runnable { synchronized (reverse.booked) { if (reverse.booked.size() > 0) { final Ride ride = reverse.booked.entrySet().iterator().next().getValue(); - try { reverse.sendGetRequest(ride); } catch (IOException ignored) {} + Thread t = new Thread(() -> { try { reverse.sendGetRequest(ride); } catch (IOException ignored) { } }); + t.start(); } } } diff --git a/reverse/src/main/java/com/olexyn/misp/reverse/GetRideRequestDataRunnable.java b/reverse/src/main/java/com/olexyn/misp/reverse/GetRideRequestDataRunnable.java index be0cdb0..8c90c15 100644 --- a/reverse/src/main/java/com/olexyn/misp/reverse/GetRideRequestDataRunnable.java +++ b/reverse/src/main/java/com/olexyn/misp/reverse/GetRideRequestDataRunnable.java @@ -18,7 +18,8 @@ class GetRideRequestDataRunnable implements Runnable { synchronized (reverse.loaded) { if (reverse.loaded.size() > 0) { final Ride ride = reverse.loaded.entrySet().iterator().next().getValue(); - try { reverse.sendGetRideRequestData(ride); } catch (IOException ignored) {} + Thread t = new Thread(() -> { try { reverse.sendGetRideRequestData(ride); } catch (IOException ignored) { } }); + t.start(); } } } diff --git a/reverse/src/main/java/com/olexyn/misp/reverse/PostRideRunnable.java b/reverse/src/main/java/com/olexyn/misp/reverse/PostRideRunnable.java index 256f46a..8c33bd0 100644 --- a/reverse/src/main/java/com/olexyn/misp/reverse/PostRideRunnable.java +++ b/reverse/src/main/java/com/olexyn/misp/reverse/PostRideRunnable.java @@ -14,9 +14,12 @@ class PostRideRunnable implements Runnable { public void run() { while (true) { synchronized (reverse.available) { - if (reverse.available.size() < reverse.AVAILABLE_RIDES_OVERHEAD_TRIGGER) { - for (int i = 0; i < reverse.AVAILABLE_RIDES_OVERHEAD; i++) { - try {reverse.sendPostRide();} catch (IOException ignored) {} + if (Reverse.AVAILABLE_RIDES < Reverse.AVAILABLE_RIDES_OVERHEAD_TRIGGER) { + + for (int i = Reverse.AVAILABLE_RIDES; i < Reverse.AVAILABLE_RIDES_OVERHEAD; i++) { + Reverse.AVAILABLE_RIDES++; + Thread t = new Thread(() -> { try { reverse.sendPostRide(); } catch (IOException ignored) { } }); + t.start(); } } } diff --git a/reverse/src/main/java/com/olexyn/misp/reverse/Reverse.java b/reverse/src/main/java/com/olexyn/misp/reverse/Reverse.java index 32178f2..d85aeeb 100644 --- a/reverse/src/main/java/com/olexyn/misp/reverse/Reverse.java +++ b/reverse/src/main/java/com/olexyn/misp/reverse/Reverse.java @@ -15,16 +15,17 @@ import java.util.Map; public class Reverse { - public String FORWARD_URL = "http://localhost:8090/bridge"; + public String FORWARD_URL = "http://localhost:8090/forward"; public String APP_URL = "http://localhost:8090/app"; - public int AVAILABLE_RIDES_OVERHEAD_TRIGGER = 1; - public int AVAILABLE_RIDES_OVERHEAD = 2; + public static int AVAILABLE_RIDES_OVERHEAD_TRIGGER = 1; + public static int AVAILABLE_RIDES_OVERHEAD = 2; + public static int AVAILABLE_RIDES = 0; - public final Map available = new HashMap<>(); - public final Map booked = new HashMap<>(); - public final Map loaded = new HashMap<>(); + final Map available = new HashMap<>(); + final Map booked = new HashMap<>(); + final Map loaded = new HashMap<>(); public void start() { @@ -46,13 +47,23 @@ public class Reverse { final Ride ride = new Ride(); - synchronized (available) { available.put(ride.getID(), ride); } + synchronized (available) { + + available.put(ride.getID(), ride); + + } final String result = send("POST", FORWARD_URL, ride.json()); synchronized (available) { + AVAILABLE_RIDES--; available.remove(ride.getID()); - ride.setRequest(new Ride(result).getRequest()); + + + + String _parsed = new Ride(result).getRequest(); + String request = _parsed==null ? "" : _parsed; + ride.setRequest(request); } synchronized (booked) { booked.put(ride.getID(), ride); } @@ -72,14 +83,19 @@ public class Reverse { void sendGetRideRequestData(Ride ride) throws IOException { + synchronized (loaded) {loaded.remove(ride.getID()); } + send("GET", FORWARD_URL, ride.json()); - synchronized (loaded) {loaded.remove(ride.getID()); } + } - private static String send(String method, String urlString, String body) throws IOException { + private String send(String method, String urlString, String body) throws IOException { + if (method.equals("GET")){ + int br =0; + } URL url = new URL(urlString); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod(method); @@ -104,7 +120,6 @@ public class Reverse { } - } diff --git a/reverse/src/main/java/com/olexyn/misp/reverse/ReverseApp.java b/reverse/src/main/java/com/olexyn/misp/reverse/ReverseApp.java index 3c60553..ccb37df 100644 --- a/reverse/src/main/java/com/olexyn/misp/reverse/ReverseApp.java +++ b/reverse/src/main/java/com/olexyn/misp/reverse/ReverseApp.java @@ -22,8 +22,8 @@ public class ReverseApp implements Runnable { reverse.FORWARD_URL = "http://localhost:8090/forward"; reverse.APP_URL = "http://localhost:8090/app"; - reverse.AVAILABLE_RIDES_OVERHEAD_TRIGGER = 1; - reverse.AVAILABLE_RIDES_OVERHEAD = 2; + Reverse.AVAILABLE_RIDES_OVERHEAD_TRIGGER = 1; + Reverse.AVAILABLE_RIDES_OVERHEAD = 2; reverse.start(); }
"); - sb.append("URL"); - sb.append(""); - sb.append("Method"); - sb.append(""); - sb.append("Query"); - sb.append(""); + sb.append( entry.getKey()); + sb.append("
"); - sb.append(split[0]); - sb.append(""); - sb.append(split[1]); - sb.append(""); - sb.append(split[2]); - sb.append(""); + sb.append(entry2.getValue().toString()); + sb.append("