Handler Objekthierarchie in Arbeit
 
	
	
	
	
	
	
		
		3 files modified
	
		
		1 files added
	
	
 
	
	
	
	
	
	
	
	
 |  |  | 
 |  |  |     logger.info("Server starting on port " + port); | 
 |  |  |  | 
 |  |  |     HttpServer server = HttpServer.create(new InetSocketAddress(port), 0); | 
 |  |  |     server.createContext("/avd/play", new PlayHandler()); | 
 |  |  |     server.createContext("/avd/play", new PlayHandler("play")); | 
 |  |  |     server.createContext("/avd/stop", new CmdHandler(App.CMD_STOP)); | 
 |  |  |     server.createContext("/avd/pause", new CmdHandler(App.CMD_PAUSE_RESUME)); | 
 |  |  |     server.createContext("/avd/ping", new PingHandler()); | 
 |  |  |     server.createContext("/avd/server/stop", new StopServerHandler()); | 
 |  |  |     server.setExecutor(null); // creates a default executor | 
 
 |  |  | 
 |  |  |  | 
 |  |  |   private static final Logger logger = Logger.getLogger(CmdHandler.class.getName()); | 
 |  |  |    | 
 |  |  |   private String cmd; | 
 |  |  |   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) { | 
 |  |  |     String antwort = this.kommando(cmd); | 
 |  |  |     logger.log(Level.FINE, antwort); | 
 |  |  |     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) { | 
 |  |  | 
 |  |  |    | 
 |  |  |   public String getCmd(String cmd) { | 
 |  |  |     return this.cmd; | 
 |  |  |   } | 
 |  |  |  | 
 |  |  |   @Override | 
 |  |  |   public void handle(HttpExchange t) throws IOException { | 
 |  |  |     logger.log(Level.FINE, "RequestURI: {0}", t.getRequestURI().toString()); | 
 |  |  |     Map map = getQueryMap(t); | 
 |  |  |      | 
 |  |  |     String antwort = this.kommando(cmd); | 
 |  |  |     logger.log(Level.FINE, antwort); | 
 |  |  |      | 
 |  |  |     String response = getResponseString(map, cmd, antwort); | 
 |  |  |     t.sendResponseHeaders(200, response.length()); | 
 |  |  |     OutputStream os = t.getResponseBody(); | 
 |  |  |     os.write(response.getBytes()); | 
 |  |  |     os.close();     | 
 |  |  |   } | 
 |  |  |    | 
 |  |  | } | 
 
 |  |  | 
 |  |  |  *  | 
 |  |  |  * @author ulrich | 
 |  |  |  */ | 
 |  |  | public class PlayHandler extends OMXPlayer implements HttpHandler { | 
 |  |  | public class PlayHandler extends CmdHandler { | 
 |  |  |    | 
 |  |  |   private static final Logger logger = Logger.getLogger(PlayHandler.class.getName()); | 
 |  |  |  | 
 |  |  |   public PlayHandler(String cmd) { | 
 |  |  |     super(cmd); | 
 |  |  |   } | 
 |  |  |  | 
 |  |  |   /* | 
 |  |  |     rpi4-az:9090/avd/play?titel=/Filme/S/sound_city.m4v&th=60&ti=60&o=local | 
 |  |  | 
 |  |  |     r muss ganz wegbleiben, wenn keine Rueckmeldung gewuescht ist | 
 |  |  |  | 
 |  |  |   */ | 
 |  |  |   /* | 
 |  |  |   @Override | 
 |  |  |   public void handle(HttpExchange t) throws IOException { | 
 |  |  |     logger.log(Level.FINE, "RequestURI: {0}", t.getRequestURI().toString()); | 
 |  |  |      | 
 |  |  |     Map map = getQueryMap(t); | 
 |  |  |     StringBuilder params = new StringBuilder(); | 
 |  |  |     StringBuilder params = buildParams(t); | 
 |  |  |      | 
 |  |  |     String antwort = abspielenMitParameternUndRueckmeldung(  | 
 |  |  |             getParam(map, "titel"), params.toString(), getParam(map, "r"), "1");     | 
 |  |  |      | 
 |  |  |     sendResponse(t, "play", antwort); | 
 |  |  |   } | 
 |  |  |   */ | 
 |  |  |  | 
 |  |  |   @Override | 
 |  |  |   protected String process(HttpExchange t, String params) { | 
 |  |  |     String antwort = abspielenMitParameternUndRueckmeldung(  | 
 |  |  |             getParam(map, "titel"), params, getParam(map, "r"), "1");     | 
 |  |  |     logger.log(Level.FINE, antwort); | 
 |  |  |     return antwort; | 
 |  |  |   } | 
 |  |  |  | 
 |  |  |   protected StringBuilder buildParams(HttpExchange t) { | 
 |  |  |     StringBuilder params = super.buildParams(t); | 
 |  |  |     params.append("-o "); | 
 |  |  |     params.append(getParam(map, "o")); | 
 |  |  |     params.append(" --threshold "); | 
 |  |  |     params.append(getParam(map, "th")); | 
 |  |  |     params.append(" --timeout "); | 
 |  |  |     params.append(getParam(map, "ti")); | 
 |  |  |      | 
 |  |  |     String antwort = abspielenMitParameternUndRueckmeldung(  | 
 |  |  |             getParam(map, "titel"), params.toString(), getParam(map, "r"), "1");     | 
 |  |  |      | 
 |  |  |     String response = getResponseString(map, "play", antwort); | 
 |  |  |     t.sendResponseHeaders(200, response.length()); | 
 |  |  |     OutputStream os = t.getResponseBody(); | 
 |  |  |     os.write(response.getBytes()); | 
 |  |  |     os.close();     | 
 |  |  |     return params; | 
 |  |  |   } | 
 |  |  |    | 
 |  |  |    | 
 |  |  | } | 
 
| New file | 
 |  |  | 
 |  |  | 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; | 
 |  |  |  | 
 |  |  | /** | 
 |  |  |  * | 
 |  |  |  * @author ulrich | 
 |  |  |  */ | 
 |  |  | public class SeekHandler extends PlayHandler  { | 
 |  |  |    | 
 |  |  |   private static final Logger logger = Logger.getLogger(SeekHandler.class.getName()); | 
 |  |  |  | 
 |  |  |   public SeekHandler(String cmd) { | 
 |  |  |     super(cmd); | 
 |  |  |   } | 
 |  |  |  | 
 |  |  |   @Override | 
 |  |  |   public void handle(HttpExchange t) throws IOException { | 
 |  |  |     logger.log(Level.FINE, "RequestURI: {0}", t.getRequestURI().toString()); | 
 |  |  |      | 
 |  |  |     StringBuilder params = super.buildParams(t); | 
 |  |  |     params.append(" --pos "); | 
 |  |  |     params.append(getParam(map, "p")); | 
 |  |  |      | 
 |  |  |     String antwort = abspielenMitParameternUndRueckmeldung(  | 
 |  |  |             getParam(map, "titel"), params.toString(), getParam(map, "r"), "1");     | 
 |  |  |      | 
 |  |  |     String response = getResponseString(map, "play", antwort); | 
 |  |  |     t.sendResponseHeaders(200, response.length()); | 
 |  |  |     OutputStream os = t.getResponseBody(); | 
 |  |  |     os.write(response.getBytes()); | 
 |  |  |     os.close();     | 
 |  |  |   } | 
 |  |  |    | 
 |  |  |   @Override | 
 |  |  |   protected String process(HttpExchange t, String params) { | 
 |  |  |     String antwort = abspielenMitParameternUndRueckmeldung(  | 
 |  |  |             getParam(map, "titel"), params, getParam(map, "r"), "1");     | 
 |  |  |     logger.log(Level.FINE, antwort); | 
 |  |  |     return antwort; | 
 |  |  |   } | 
 |  |  |  | 
 |  |  |   protected StringBuilder buildParams(HttpExchange t) { | 
 |  |  |     StringBuilder params = super.buildParams(t); | 
 |  |  |     params.append(" --pos "); | 
 |  |  |     params.append(getParam(map, "p")); | 
 |  |  |     return params; | 
 |  |  |   }   | 
 |  |  |    | 
 |  |  | } |