From b5cc80f43d78a4fef88a06449f218b30517fa117 Mon Sep 17 00:00:00 2001 From: ulrich Date: Tue, 23 Mar 2021 14:16:23 +0000 Subject: [PATCH] AbstractHandler hinzugefuegt --- src/de/uhilger/avdirektor/handler/CmdHandler.java | 39 --------- src/de/uhilger/avdirektor/handler/PingHandler.java | 25 ++--- src/de/uhilger/avdirektor/handler/PlayHandler.java | 4 - src/de/uhilger/avdirektor/handler/OMXPlayer.java | 47 ----------- src/de/uhilger/avdirektor/handler/AbstractHandler.java | 112 ++++++++++++++++++++++++++++ 5 files changed, 123 insertions(+), 104 deletions(-) diff --git a/src/de/uhilger/avdirektor/handler/AbstractHandler.java b/src/de/uhilger/avdirektor/handler/AbstractHandler.java new file mode 100644 index 0000000..8dc3820 --- /dev/null +++ b/src/de/uhilger/avdirektor/handler/AbstractHandler.java @@ -0,0 +1,112 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package de.uhilger.avdirektor.handler; + +import com.sun.net.httpserver.HttpExchange; +import com.sun.net.httpserver.HttpHandler; +import java.io.IOException; +import java.io.OutputStream; +import java.util.HashMap; +import java.util.Map; +import java.util.Set; +import java.util.logging.Level; +import java.util.logging.Logger; + +/** + * + * @author ulrich + */ +public abstract class AbstractHandler extends OMXPlayer implements HttpHandler { + + private static final Logger logger = Logger.getLogger(AbstractHandler.class.getName()); + + protected String cmd; + protected Map map; + + @Override + public void handle(HttpExchange t) throws IOException { + logger.log(Level.FINE, "RequestURI: {0}", t.getRequestURI().toString()); + StringBuilder params = buildParams(t); + String antwort = process(t, params.toString()); + sendResponse(t, cmd, antwort); + } + + protected abstract String process(HttpExchange t, String params); + + protected StringBuilder buildParams(HttpExchange t) { + map = getQueryMap(t); + StringBuilder params = new StringBuilder(); + return params; + } + + protected void sendResponse(HttpExchange t, String cmd, String antwort) throws IOException { + String response = getResponseString(map, cmd, antwort); + t.sendResponseHeaders(200, response.length()); + OutputStream os = t.getResponseBody(); + os.write(response.getBytes()); + os.close(); + } + + public void setCmd(String cmd) { + this.cmd = cmd; + } + + public String getCmd(String cmd) { + return this.cmd; + } + + /* --- --- */ + + protected String getParam(Map map, String key) { + Object o = map.get(key); + if(o != null) { + return o.toString(); + } else { + return null; + } + } + + /* + Den Query-Teil einer URL in die Parameter zerlegen + + Die Zerlegung erfolgt mit String.split nach + & und dann nach = + */ + protected Map getQueryMap(HttpExchange t) { + HashMap map = new HashMap(); + String query = t.getRequestURI().getQuery(); + if(query != null && query.length() > 0) { + String qParts[] = query.split("&"); + for(String qPart : qParts) { + logger.finer("qPart: " + qPart); + String pParts[] = qPart.split("="); + map.put(pParts[0], pParts[1]); + logger.finer("pParts[0]: " + pParts[0] + ", pParts[1]: " + pParts[1]); + } + } + return map; + } + + protected String getResponseString(Map map, String cmd, String antwort) { + Set keys = map.keySet(); + StringBuilder buf = new StringBuilder(); + buf.append(cmd); + buf.append(System.lineSeparator()); + keys.forEach((Object key) -> { + buf.append("key: "); + buf.append(key); + buf.append(System.lineSeparator()); + buf.append("value: "); + buf.append(map.get(key)); + buf.append(System.lineSeparator()); + //logger.log(Level.FINE, "key {0} value {1}", new Object[]{key, map.get(key)}); + }); + buf.append(antwort); + return buf.toString(); + } + + +} diff --git a/src/de/uhilger/avdirektor/handler/CmdHandler.java b/src/de/uhilger/avdirektor/handler/CmdHandler.java index 7e3193e..38f2b6f 100644 --- a/src/de/uhilger/avdirektor/handler/CmdHandler.java +++ b/src/de/uhilger/avdirektor/handler/CmdHandler.java @@ -1,10 +1,6 @@ package de.uhilger.avdirektor.handler; import com.sun.net.httpserver.HttpExchange; -import com.sun.net.httpserver.HttpHandler; -import java.io.IOException; -import java.io.OutputStream; -import java.util.Map; import java.util.logging.Level; import java.util.logging.Logger; @@ -12,23 +8,12 @@ * * @author ulrich */ -public class CmdHandler extends OMXPlayer implements HttpHandler { +public class CmdHandler extends AbstractHandler { private static final Logger logger = Logger.getLogger(CmdHandler.class.getName()); - protected String cmd; - protected Map map; - public CmdHandler(String cmd) { this.cmd = cmd; - } - - @Override - public void handle(HttpExchange t) throws IOException { - logger.log(Level.FINE, "RequestURI: {0}", t.getRequestURI().toString()); - StringBuilder params = buildParams(t); - String antwort = process(t, params.toString()); - sendResponse(t, cmd, antwort); } protected String process(HttpExchange t, String params) { @@ -37,26 +22,4 @@ return antwort; } - protected StringBuilder buildParams(HttpExchange t) { - map = getQueryMap(t); - StringBuilder params = new StringBuilder(); - return params; - } - - protected void sendResponse(HttpExchange t, String cmd, String antwort) throws IOException { - String response = getResponseString(map, cmd, antwort); - t.sendResponseHeaders(200, response.length()); - OutputStream os = t.getResponseBody(); - os.write(response.getBytes()); - os.close(); - } - - public void setCmd(String cmd) { - this.cmd = cmd; - } - - public String getCmd(String cmd) { - return this.cmd; - } - } diff --git a/src/de/uhilger/avdirektor/handler/OMXPlayer.java b/src/de/uhilger/avdirektor/handler/OMXPlayer.java index 33cb7bc..8a27f69 100644 --- a/src/de/uhilger/avdirektor/handler/OMXPlayer.java +++ b/src/de/uhilger/avdirektor/handler/OMXPlayer.java @@ -192,53 +192,6 @@ return antwort; } - /* --- --- */ - - protected String getParam(Map map, String key) { - Object o = map.get(key); - if(o != null) { - return o.toString(); - } else { - return null; - } - } - - /* - Den Query-Teil einer URL in die Parameter zerlegen - */ - protected Map getQueryMap(HttpExchange t) { - HashMap map = new HashMap(); - String query = t.getRequestURI().getQuery(); - if(query != null && query.length() > 0) { - String qParts[] = query.split("&"); - for(String qPart : qParts) { - logger.finer("qPart: " + qPart); - String pParts[] = qPart.split("="); - map.put(pParts[0], pParts[1]); - logger.finer("pParts[0]: " + pParts[0] + ", pParts[1]: " + pParts[1]); - } - } - return map; - } - - protected String getResponseString(Map map, String cmd, String antwort) { - Set keys = map.keySet(); - StringBuilder buf = new StringBuilder(); - buf.append(cmd); - buf.append(System.lineSeparator()); - keys.forEach((Object key) -> { - buf.append("key: "); - buf.append(key); - buf.append(System.lineSeparator()); - buf.append("value: "); - buf.append(map.get(key)); - buf.append(System.lineSeparator()); - //logger.log(Level.FINE, "key {0} value {1}", new Object[]{key, map.get(key)}); - }); - buf.append(antwort); - return buf.toString(); - } - /* ------ Implementierung ProzessLauscher ----------------- */ @Override diff --git a/src/de/uhilger/avdirektor/handler/PingHandler.java b/src/de/uhilger/avdirektor/handler/PingHandler.java index 219391c..94d51fa 100644 --- a/src/de/uhilger/avdirektor/handler/PingHandler.java +++ b/src/de/uhilger/avdirektor/handler/PingHandler.java @@ -6,6 +6,8 @@ package de.uhilger.avdirektor.handler; import com.sun.net.httpserver.HttpExchange; +import java.io.IOException; +import java.io.OutputStream; import java.util.logging.Level; import java.util.logging.Logger; @@ -21,23 +23,16 @@ super(cmd); } - /* - @Override - public void handle(HttpExchange t) throws IOException { - logger.log(Level.FINE, "RequestURI: {0}", t.getRequestURI().toString()); - - String response = "ping"; - t.sendResponseHeaders(200, response.length()); + protected String process(HttpExchange t, String params) { + logger.log(Level.FINE, cmd); + return cmd; + } + + protected void sendResponse(HttpExchange t, String cmd, String antwort) throws IOException { + t.sendResponseHeaders(200, antwort.length()); OutputStream os = t.getResponseBody(); - os.write(response.getBytes()); + os.write(antwort.getBytes()); os.close(); } - */ - - protected String process(HttpExchange t, String params) { - String antwort = cmd; - logger.log(Level.FINE, antwort); - return antwort; - } } diff --git a/src/de/uhilger/avdirektor/handler/PlayHandler.java b/src/de/uhilger/avdirektor/handler/PlayHandler.java index 3a8db5d..5b597e0 100644 --- a/src/de/uhilger/avdirektor/handler/PlayHandler.java +++ b/src/de/uhilger/avdirektor/handler/PlayHandler.java @@ -1,10 +1,6 @@ package de.uhilger.avdirektor.handler; import com.sun.net.httpserver.HttpExchange; -import com.sun.net.httpserver.HttpHandler; -import java.io.IOException; -import java.io.OutputStream; -import java.util.Map; import java.util.logging.Level; import java.util.logging.Logger; -- Gitblit v1.9.3