| | |
| | | protected HttpHelper h; |
| | | protected String base; |
| | | |
| | | public void run(HttpExchange exchange) { |
| | | /** |
| | | * Hilfsmittel bereitstellen, die beim Ausfuehren eines Actors fuer Dateioperationen |
| | | * immer benoetigt werden. |
| | | * |
| | | * Von dieser Klasse abgeleitete Klassen sollten mit init(exchange) stets diese |
| | | * Methode ausfuehren. |
| | | * |
| | | * @param exchange Infos zu HTTP Request, -Response, Kontext usw. |
| | | */ |
| | | protected void init(HttpExchange exchange) { |
| | | base = exchange.getHttpContext().getAttributes().get(FileServer.ATTR_FILE_BASE).toString(); |
| | | h = new HttpHelper(); |
| | | fileName = h.getFileName(exchange); |
| | | file = new File(base, fileName); |
| | | } |
| | | |
| | | /** |
| | | * Eine Dateiliste als String Array aus einer Dateiliste im JSON-Format |
| | | * erzeugen, die aus dem HTTP-Request-Body gelesen wurde |
| | | * |
| | | * @param exchange Infos zu HTTP Request, -Response, Kontext usw. |
| | | * @return die Dateiliste als String Array |
| | | * @throws IOException wenn etwas schief geht |
| | | */ |
| | | protected String[] dateiliste(HttpExchange exchange) throws IOException { |
| | | String body = h.bodyLesen(exchange); |
| | | //logger.fine("dateien: " + body); |
| | |
| | | return gson.fromJson(body, String[].class); |
| | | } |
| | | |
| | | /** |
| | | * Den Body eines HTTP Request in eine Datei schreiben |
| | | * |
| | | * TODO das evtl. noch in java.nio.file ueberfuehren.. |
| | | * |
| | | * @param e Infos zu HTTP Request, -Response, Kontext usw. |
| | | * @throws IOException wenn etwas schief geht |
| | | */ |
| | | protected void speichern(HttpExchange e) throws IOException { |
| | | String body = h.bodyLesen(e); |
| | | if (new Writer().speichern(file, body) == 0) { |
| | |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * Eine Fehler-Antwort als HTTP Status Code 401 not found senden |
| | | * |
| | | * @param exchange Infos zu HTTP Request, -Response, Kontext usw. |
| | | * @param ex der aufgetretene Fehler |
| | | */ |
| | | protected void fehlerAntwort(HttpExchange exchange, Exception ex) { |
| | | try { |
| | | Logger.getLogger(AbstractFileActor.class.getName()).log(Level.SEVERE, ex.getMessage(), ex); |
| | |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * Eine Antwort als HTTP Response senden |
| | | * |
| | | * @param exchange Infos zu HTTP Request, -Response, Kontext usw. |
| | | * @param code HTTP Status code fuer die Antwort |
| | | * @param text Inhalt der Antwort |
| | | * @throws IOException wenn etwas schif geht |
| | | */ |
| | | protected void antwort(HttpExchange exchange, int code, String text) throws IOException { |
| | | new HttpResponder().antwortSenden(exchange, code, text); |
| | | } |
| | | |
| | | /** |
| | | * Die Zeiger auf die von einer Instanz dieser abstrakten Basisklasse |
| | | * erzeugten Objekte wieder frei geben |
| | | */ |
| | | protected void free() { |
| | | file = null; |
| | | fileName = null; |