From f70acbb491c6421623cca57292a75f1820efad4d Mon Sep 17 00:00:00 2001
From: ulrich
Date: Thu, 06 May 2021 16:41:59 +0000
Subject: [PATCH] Nicht erforderliche globale Variablen entfernt
---
src/de/uhilger/tango/api/MediaSteuerung.java | 16 ++-
src/de/uhilger/tango/api/ListHandler.java | 13 +
src/de/uhilger/tango/App.java | 63 ++----------
src/de/uhilger/tango/api/StopServerHandler.java | 17 ++
src/de/uhilger/tango/api/FileHandler.java | 27 +++-
src/de/uhilger/tango/api/AbstractHandler.java | 11 ++
src/de/uhilger/tango/api/GeraetSteuerung.java | 8 +
src/de/uhilger/tango/api/StorageHandler.java | 41 ++++++--
src/de/uhilger/tango/Server.java | 40 ++++---
src/de/uhilger/tango/api/ListFileHandler.java | 10 +
10 files changed, 141 insertions(+), 105 deletions(-)
diff --git a/src/de/uhilger/tango/App.java b/src/de/uhilger/tango/App.java
index 1d0d5b9..690df7f 100644
--- a/src/de/uhilger/tango/App.java
+++ b/src/de/uhilger/tango/App.java
@@ -20,6 +20,7 @@
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
+import java.util.Map;
import java.util.ResourceBundle;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -40,16 +41,8 @@
private static final Logger logger = Logger.getLogger(App.class.getName());
- private static HashMap initParams;
-
- /* ResourceBundle dieser App */
- private static ResourceBundle rb;
-
/* Name des ResourceBundles dieser App */
- private static final String RB_NAME = "tango";
-
- /* Der Server dieser App */
- private static Server server;
+ public static final String RB_NAME = "tango";
/* ResourceBundle-Kennungen */
public static final String RB_PARAM_FEHLT = "msgParamFehlt";
@@ -72,71 +65,41 @@
* @throws java.lang.ClassNotFoundException
*/
public static void main(String[] args) throws ClassNotFoundException {
- rb = ResourceBundle.getBundle(RB_NAME);
+ ResourceBundle rb = ResourceBundle.getBundle(RB_NAME);
logger.fine(new File(".").getAbsolutePath());
- initParams = new HashMap();
+ HashMap<String,String> initParams = new HashMap();
for (String arg : args) {
String[] argParts = arg.split("=");
initParams.put(argParts[0], argParts[1]);
}
- String portStr = getInitParameter(getRs(RB_AP_PORT));
+ String portStr = initParams.get(rb.getString(RB_AP_PORT));
if (portStr != null) {
//Server server = new Server(Integer.parseInt(portStr));
- server = new Server(Integer.parseInt(portStr));
+ Server server = new Server(Integer.parseInt(portStr));
try {
- String ctxName = getInitParameter(getRs(RB_AP_CTX));
+ String ctxName = initParams.get(rb.getString(RB_AP_CTX));
if (ctxName != null) {
server.setContextName(ctxName);
- server.start();
+ server.start(initParams.get(rb.getString(RB_AP_WWW_DATA)),
+ initParams.get(rb.getString(RB_AP_CONF)));
} else {
- logger.log(Level.INFO, getRs(RB_PARAM_FEHLT), getRs(RB_AP_CTX));
+ logger.log(Level.INFO, rb.getString(RB_PARAM_FEHLT), rb.getString(RB_AP_CTX));
}
- String conf = getInitParameter(getRs(RB_AP_CONF));
+ String conf = initParams.get(rb.getString(RB_AP_CONF));
if(conf != null) {
File confDir = new File(conf);
confDir.mkdirs();
} else {
- logger.log(Level.INFO, App.getRs(RB_PARAM_FEHLT), getRs(RB_AP_CONF));
+ logger.log(Level.INFO, rb.getString(RB_PARAM_FEHLT), rb.getString(RB_AP_CONF));
}
} catch (IOException ex) {
logger.log(Level.SEVERE, null, ex);
}
} else {
- logger.log(Level.INFO, App.getRs(RB_PARAM_FEHLT), getRs(RB_AP_PORT));
+ logger.log(Level.INFO, rb.getString(RB_PARAM_FEHLT), rb.getString(RB_AP_PORT));
}
- }
-
- /**
- * Diese Anwendung stoppen
- */
- public static void stop() {
- System.exit(0);
- }
-
- /**
- * Einen Kommandozeilenparameter ermitteln
- *
- * @param pname Names des Parameters
- * @return Inhalt des Parameters oder null, wenn der Parameter nicht gefunden
- * wurde
- */
- public static String getInitParameter(String pname) {
- String param = null;
- Object o = initParams.get(pname);
- if (o != null) {
- param = o.toString();
- }
- return param;
- }
-
- public static String getRs(String key) {
- return rb.getString(key);
- }
-
- public static Server getServer() {
- return server;
}
}
diff --git a/src/de/uhilger/tango/Server.java b/src/de/uhilger/tango/Server.java
index 3421d47..d356c0f 100644
--- a/src/de/uhilger/tango/Server.java
+++ b/src/de/uhilger/tango/Server.java
@@ -36,6 +36,7 @@
import de.uhilger.tango.entity.Entity;
import java.util.Iterator;
import java.util.List;
+import java.util.ResourceBundle;
/**
* Die Klasse Server stellt Methoden zur Ausführung eines HTTP-Servers
@@ -64,7 +65,7 @@
private String ctx;
- private HttpServer server;
+ //private HttpServer server;
/**
* Ein neues Objekt der Kalsse Server erzeugen
@@ -73,7 +74,7 @@
*/
public Server(int port) {
this.port = port;
- }
+ }
/**
* Den Port angeben, unter dem der Server erreichbar sein soll
@@ -106,38 +107,41 @@
* Objekt
* @throws java.lang.ClassNotFoundException
*/
- public void start() throws IOException, ClassNotFoundException {
- logger.log(Level.INFO, App.getRs(RB_SERVER_START_MSG), Integer.toString(port));
+ public void start(String wwwData, String conf) throws IOException, ClassNotFoundException {
+ ResourceBundle rb = ResourceBundle.getBundle(App.RB_NAME);
+ logger.log(Level.INFO, rb.getString(RB_SERVER_START_MSG), Integer.toString(port));
- String wwwData = App.getInitParameter(App.getRs(App.RB_AP_WWW_DATA));
+ //String wwwData = App.getInitParameter(rb.getString(App.RB_AP_WWW_DATA));
File wwwDir = new File(wwwData);
- server = HttpServer.create(new InetSocketAddress(port), 0);
- server.createContext(ctx + App.getRs(RB_WEBROOT), new FileHandler(wwwDir.getAbsolutePath()));
- ablageorteEinklinken(server);
- server.createContext(ctx + App.getRs(RB_STORE), new StorageHandler());
- server.createContext(ctx + App.getRs(RB_STRG), new MediaSteuerung());
- server.createContext(ctx + App.getRs(RB_GSTRG), new GeraetSteuerung());
- server.createContext(ctx + App.getRs(RB_ALIST), new ListHandler());
- server.createContext(ctx + App.getRs(RB_STOP_SERVER), new StopServerHandler());
+ HttpServer server = HttpServer.create(new InetSocketAddress(port), 0);
+ server.createContext(ctx + rb.getString(RB_WEBROOT), new FileHandler(wwwDir.getAbsolutePath()));
+ ablageorteEinklinken(server, rb, conf);
+ server.createContext(ctx + rb.getString(RB_STORE), new StorageHandler(conf));
+ server.createContext(ctx + rb.getString(RB_STRG), new MediaSteuerung(conf));
+ server.createContext(ctx + rb.getString(RB_GSTRG), new GeraetSteuerung(conf));
+ server.createContext(ctx + rb.getString(RB_ALIST), new ListHandler(conf));
+ server.createContext(ctx + rb.getString(RB_STOP_SERVER), new StopServerHandler());
//server.setExecutor(Executors.newFixedThreadPool(20));
server.setExecutor(Executors.newCachedThreadPool());
server.start();
}
+ /*
public void ablageortEntfernen(String url) {
server.removeContext(ctx + url);
}
- public void ablageortHinzufuegen(Ablageort ort) {
+ public void ablageortHinzufuegen(Ablageort ort, String conf) {
server.createContext(ctx + ort.getUrl(),
- new ListFileHandler(new File(ort.getOrt()).getAbsolutePath()));
+ new ListFileHandler(new File(ort.getOrt()).getAbsolutePath(), conf));
}
+ */
- private void ablageorteEinklinken(HttpServer server)
+ private void ablageorteEinklinken(HttpServer server, ResourceBundle rb, String conf)
throws ClassNotFoundException, IOException {
String typ = Ablageort.class.getSimpleName();
- FileStorage store = new FileStorage(App.getInitParameter(App.getRs(App.RB_AP_CONF)));
+ FileStorage store = new FileStorage(conf);
List<String> orte = store.list(typ);
Iterator<String> i = orte.iterator();
while(i.hasNext()) {
@@ -148,7 +152,7 @@
logger.log(Level.FINE, "{0}{1}", new Object[]{ctx, ablageort.getUrl()});
logger.fine(ablageort.getOrt());
server.createContext(ctx + ablageort.getUrl(),
- new ListFileHandler(new File(ablageort.getOrt()).getAbsolutePath()));
+ new ListFileHandler(new File(ablageort.getOrt()).getAbsolutePath(), conf));
}
}
}
diff --git a/src/de/uhilger/tango/api/AbstractHandler.java b/src/de/uhilger/tango/api/AbstractHandler.java
index 9afb94e..891b06d 100644
--- a/src/de/uhilger/tango/api/AbstractHandler.java
+++ b/src/de/uhilger/tango/api/AbstractHandler.java
@@ -20,11 +20,13 @@
import com.sun.net.httpserver.Headers;
import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;
+import de.uhilger.tango.App;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
+import java.util.ResourceBundle;
import java.util.logging.Logger;
@@ -53,6 +55,8 @@
public static final int RTC_NOT_FOUND = 404;
protected int returnCode;
+
+ private ResourceBundle rb;
public AbstractHandler() {
this.returnCode = RTC_OK;
@@ -144,4 +148,11 @@
protected abstract boolean delete(HttpExchange e);
*/
+ protected String getResString(String key) {
+ if(rb == null) {
+ rb = ResourceBundle.getBundle(App.RB_NAME);
+ }
+ return rb.getString(key);
+ }
+
}
diff --git a/src/de/uhilger/tango/api/FileHandler.java b/src/de/uhilger/tango/api/FileHandler.java
index 05b8bbd..40edfed 100644
--- a/src/de/uhilger/tango/api/FileHandler.java
+++ b/src/de/uhilger/tango/api/FileHandler.java
@@ -34,6 +34,7 @@
import java.util.Date;
import java.util.Iterator;
import java.util.List;
+import java.util.ResourceBundle;
import java.util.logging.Logger;
/**
@@ -83,6 +84,8 @@
/* Ablageort fuer Webinhalte */
protected final String fileBase;
+
+ private ResourceBundle rb;
/**
* Ein neues Objekt der Klasse FileHandler erzeugen
@@ -115,7 +118,8 @@
serveFileParts(e, new File(fileBase, fName));
} else {
if (fName.length() < 1 || fName.endsWith(Server.SLASH)) {
- fName += App.getRs(RB_WELCOME_FILE);
+ ResourceBundle rb = ResourceBundle.getBundle(App.RB_NAME);
+ fName += getResString(RB_WELCOME_FILE);
}
serveFile(e, new File(fileBase, fName));
}
@@ -257,7 +261,7 @@
Der regulaere Ausdruck "[^\\d-,]" bezeichnet alle Zeichen, die keine
Ziffern 0-9, Bindestrich oder Komma sind.
*/
- rangeHeader = rangeHeader.replaceAll(App.getRs(RB_RANGE_PATTERN), "");
+ rangeHeader = rangeHeader.replaceAll(getResString(RB_RANGE_PATTERN), "");
/*
Die Ranges ermitteln.
@@ -280,7 +284,7 @@
String[] rangeArray = rangeHeader.split(STR_COMMA);
for (String rangeStr : rangeArray) {
Range range = new Range();
- String[] values = rangeStr.split(App.getRs(RB_DASH));
+ String[] values = rangeStr.split(getResString(RB_DASH));
if (values.length < 2) {
// Fall 3
range.setStart(Long.parseLong(values[0]));
@@ -311,10 +315,10 @@
*/
protected String contentRangeHdr(Range range, File file) {
StringBuilder sb = new StringBuilder();
- sb.append(App.getRs(RB_BYTES));
+ sb.append(getResString(RB_BYTES));
sb.append(STR_BLANK);
sb.append(range.getStart());
- sb.append(App.getRs(RB_DASH));
+ sb.append(getResString(RB_DASH));
sb.append(range.getEnd());
sb.append(Server.SLASH);
sb.append(file.length());
@@ -333,12 +337,12 @@
*/
protected void setHeaders(HttpExchange e, File file) throws IOException {
Headers resHeaders = e.getResponseHeaders();
- resHeaders.add(ACCEPT_RANGES_HEADER, App.getRs(RB_BYTES));
+ resHeaders.add(ACCEPT_RANGES_HEADER, getResString(RB_BYTES));
String mimeType = Files.probeContentType(file.toPath());
if (mimeType != null) {
resHeaders.add(CONTENT_TYPE, mimeType);
}
- SimpleDateFormat sdf = new SimpleDateFormat(App.getRs(RB_LM_PATTERN));
+ SimpleDateFormat sdf = new SimpleDateFormat(getResString(RB_LM_PATTERN));
Date date = new Date(file.lastModified());
resHeaders.add(LAST_MODIFIED_DATE_HEADER, sdf.format(date));
}
@@ -353,7 +357,7 @@
*/
protected void sendNotFound(HttpExchange e, String fname) throws IOException {
OutputStream os = e.getResponseBody();
- String response = fname + STR_BLANK + App.getRs(RB_NOT_FOUND);
+ String response = fname + STR_BLANK + getResString(RB_NOT_FOUND);
byte[] bytes = response.getBytes(StandardCharsets.UTF_8);
e.sendResponseHeaders(SC_NOT_FOUND, bytes.length);
os.write(bytes);
@@ -452,4 +456,11 @@
return ranges.iterator();
}
}
+
+ protected String getResString(String key) {
+ if(rb == null) {
+ rb = ResourceBundle.getBundle(App.RB_NAME);
+ }
+ return rb.getString(key);
+ }
}
diff --git a/src/de/uhilger/tango/api/GeraetSteuerung.java b/src/de/uhilger/tango/api/GeraetSteuerung.java
index 3b9a65a..f5bc27a 100644
--- a/src/de/uhilger/tango/api/GeraetSteuerung.java
+++ b/src/de/uhilger/tango/api/GeraetSteuerung.java
@@ -48,12 +48,18 @@
public static final String KMD_AUS = "aus";
public static final String KMD_STATUS = "status";
+ private String conf;
+
+ public GeraetSteuerung(String conf) {
+ this.conf = conf;
+ }
+
@Override
protected String get(HttpExchange e) {
String response;
String path = e.getRequestURI().toString();
String[] elems = path.split(Server.SLASH);
- FileStorage fs = new FileStorage(App.getInitParameter(App.getRs(App.RB_AP_CONF)));
+ FileStorage fs = new FileStorage(conf);
logger.fine(path);
String geraetName = elems[5];
diff --git a/src/de/uhilger/tango/api/ListFileHandler.java b/src/de/uhilger/tango/api/ListFileHandler.java
index 3aed9e0..12c44db 100644
--- a/src/de/uhilger/tango/api/ListFileHandler.java
+++ b/src/de/uhilger/tango/api/ListFileHandler.java
@@ -58,7 +58,9 @@
Map extMap = new HashMap();
- public ListFileHandler(String absoluteDirectoryPathAndName) {
+ private String conf;
+
+ public ListFileHandler(String absoluteDirectoryPathAndName, String conf) {
super(absoluteDirectoryPathAndName);
/*
Ermittlung von Dateifiltern.
@@ -66,9 +68,9 @@
jeweils als Dateierweiterungen mit Komma getrennt
z.B. "mp4,m4v"
*/
- FileStorage fs = new FileStorage(App.getInitParameter(App.getRs(App.RB_AP_CONF)));
- initMap(fs, App.getRs(App.RB_AUDIOEXTS), StorageFile.TYP_AUDIO);
- initMap(fs, App.getRs(App.RB_VIDEOEXTS), StorageFile.TYP_VIDEO);
+ FileStorage fs = new FileStorage(conf);
+ initMap(fs, getResString(App.RB_AUDIOEXTS), StorageFile.TYP_AUDIO);
+ initMap(fs, getResString(App.RB_VIDEOEXTS), StorageFile.TYP_VIDEO);
}
private void initMap(Storage s, String key, String typ) {
diff --git a/src/de/uhilger/tango/api/ListHandler.java b/src/de/uhilger/tango/api/ListHandler.java
index 719f911..8154211 100644
--- a/src/de/uhilger/tango/api/ListHandler.java
+++ b/src/de/uhilger/tango/api/ListHandler.java
@@ -45,14 +45,19 @@
private static final Logger logger = Logger.getLogger(ListHandler.class.getName());
public static final String ALLE_TITEL = "alle";
-
+
+ private String conf;
+
+ public ListHandler(String conf) {
+ this.conf = conf;
+ }
@Override
protected String get(HttpExchange e) {
String path = e.getRequestURI().toString();
String[] elems = path.split(Server.SLASH);
String plname = elems[elems.length - 1];
- FileStorage fs = new FileStorage(App.getInitParameter(App.getRs(App.RB_AP_CONF)));
+ FileStorage fs = new FileStorage(conf);
String json = fs.readJson(FileStorage.ST_ABSPIELLISTE, plname);
return embedInCustomType(json, FileStorage.ST_ABSPIELLISTE);
}
@@ -75,7 +80,7 @@
}
private String addTitel(HttpExchange e, String plname) throws IOException {
- FileStorage fs = new FileStorage(App.getInitParameter(App.getRs(App.RB_AP_CONF)));
+ FileStorage fs = new FileStorage(conf);
Entity entity = fs.read(FileStorage.ST_ABSPIELLISTE, plname);
String response = "Titel konnte nicht hinzugefuegt werden.";
if(entity instanceof Abspielliste) {
@@ -104,7 +109,7 @@
String path = e.getRequestURI().toString();
String[] elems = path.split(Server.SLASH);
String listName = elems[elems.length - 2];
- FileStorage fs = new FileStorage(App.getInitParameter(App.getRs(App.RB_AP_CONF)));
+ FileStorage fs = new FileStorage(conf);
Entity entity = fs.read(Abspielliste.class.getSimpleName(), listName);
if(entity instanceof Abspielliste) {
Abspielliste liste = (Abspielliste) entity;
diff --git a/src/de/uhilger/tango/api/MediaSteuerung.java b/src/de/uhilger/tango/api/MediaSteuerung.java
index e55be01..7c75242 100644
--- a/src/de/uhilger/tango/api/MediaSteuerung.java
+++ b/src/de/uhilger/tango/api/MediaSteuerung.java
@@ -79,13 +79,19 @@
public static final String DEFAULT_HOST = "http://localhost:9090";
private final Map spielt = new HashMap();
+
+ private String conf;
+
+ public MediaSteuerung(String conf) {
+ this.conf = conf;
+ }
@Override
protected String get(HttpExchange e) {
String response;
String path = e.getRequestURI().toString();
String[] elems = path.split(Server.SLASH);
- FileStorage fs = new FileStorage(App.getInitParameter(App.getRs(App.RB_AP_CONF)));
+ FileStorage fs = new FileStorage(conf);
logger.fine(path);
// Faustregel: Anzahl Elemente eines URL plus 1 ist die Anzahl der Elemente des
@@ -139,7 +145,7 @@
private String urlAbspielen(HttpExchange e, String abspielerKmd) throws IOException {
String path = e.getRequestURI().toString();
String[] elems = path.split(Server.SLASH);
- FileStorage fs = new FileStorage(App.getInitParameter(App.getRs(App.RB_AP_CONF)));
+ FileStorage fs = new FileStorage(conf);
if(elems[6].equalsIgnoreCase("titel")) {
String titelJson = bodyLesen(e);
Gson gson = new Gson();
@@ -150,7 +156,7 @@
Entity entity = fs.read(FileStorage.ST_ABSPIELER, elems[4]);
if (entity instanceof Abspieler) {
Abspieler abspieler = (Abspieler) entity;
- String server = getEinstellung(fs, App.getRs(App.RB_HOST), DEFAULT_HOST);
+ String server = getEinstellung(fs, getResString(App.RB_HOST), DEFAULT_HOST);
String signal = abspielKommando(fs, abspieler, server, titelUrl, abspielerKmd).toString();
abspielerKommandoSenden(signal);
return signal + "gesendet.";
@@ -286,7 +292,7 @@
vorgang.setTitelNr(titelNr);
spielt.put(abspieler.getName(), vorgang);
- String server = getEinstellung(s, App.getRs(App.RB_HOST), DEFAULT_HOST);
+ String server = getEinstellung(s, getResString(App.RB_HOST), DEFAULT_HOST);
/*
@@ -320,7 +326,7 @@
//kmd.append(PL_CMD_PLAY);
kmd.append(abspielKmd);
// Parameter fuer den Abspieler holen
- kmd.append(getEinstellung(s, App.getRs(App.RB_PLAYERPARAMS), PL_DEFAULT_PARAMS));
+ kmd.append(getEinstellung(s, getResString(App.RB_PLAYERPARAMS), PL_DEFAULT_PARAMS));
kmd.append(server);
kmd.append(titelUrl);
diff --git a/src/de/uhilger/tango/api/StopServerHandler.java b/src/de/uhilger/tango/api/StopServerHandler.java
index 33b9d61..bcad82c 100644
--- a/src/de/uhilger/tango/api/StopServerHandler.java
+++ b/src/de/uhilger/tango/api/StopServerHandler.java
@@ -22,6 +22,7 @@
import de.uhilger.tango.App;
import java.io.IOException;
import java.io.OutputStream;
+import java.util.ResourceBundle;
import java.util.Timer;
import java.util.TimerTask;
import java.util.logging.Logger;
@@ -41,6 +42,8 @@
public static final String RB_SERVER_STOPPED = "serverStopped";
public static final String RB_MEDIAZ_END = "mediazEnd";
+ private ResourceBundle rb;
+
/**
* Den Server geordnet herunterfahren und
* dann die Anwendung beenden.
@@ -52,13 +55,13 @@
@Override
public void handle(HttpExchange e) throws IOException {
Logger.getLogger(StopServerHandler.class.getName()).info(e.getRequestURI().toString());
- String response = App.getRs(RB_SERVER_STOPPED);
+ String response = getResString(RB_SERVER_STOPPED);
e.sendResponseHeaders(200, response.length());
OutputStream os = e.getResponseBody();
os.write(response.getBytes());
os.flush();
os.close();
- logger.info(App.getRs(RB_STOPPING_SERVER));
+ logger.info(getResString(RB_STOPPING_SERVER));
e.getHttpContext().getServer().stop(1);
Timer timer = new Timer();
timer.schedule(new AppStopper(), 2000);
@@ -72,9 +75,15 @@
@Override
public void run() {
- logger.info(App.getRs(RB_MEDIAZ_END));
- App.stop();
+ logger.info(getResString(RB_MEDIAZ_END));
+ System.exit(0);
}
}
+ protected String getResString(String key) {
+ if(rb == null) {
+ rb = ResourceBundle.getBundle(App.RB_NAME);
+ }
+ return rb.getString(key);
+ }
}
diff --git a/src/de/uhilger/tango/api/StorageHandler.java b/src/de/uhilger/tango/api/StorageHandler.java
index 52a0f08..1e23628 100644
--- a/src/de/uhilger/tango/api/StorageHandler.java
+++ b/src/de/uhilger/tango/api/StorageHandler.java
@@ -18,6 +18,7 @@
package de.uhilger.tango.api;
import com.google.gson.Gson;
+import com.sun.net.httpserver.HttpContext;
import com.sun.net.httpserver.HttpExchange;
import de.uhilger.tango.App;
import static de.uhilger.tango.App.RB_EP_LISTE;
@@ -30,6 +31,7 @@
import static de.uhilger.tango.store.FileStorage.ST_ABLAGEORT;
import static de.uhilger.tango.store.FileStorage.ST_GERAET;
import de.uhilger.tango.store.Storage;
+import java.io.File;
import java.io.IOException;
import java.net.URI;
import java.util.Iterator;
@@ -60,6 +62,12 @@
public class StorageHandler extends AbstractHandler {
private static final Logger logger = Logger.getLogger(StorageHandler.class.getName());
+
+ private String conf;
+
+ public StorageHandler(String conf) {
+ this.conf = conf;
+ }
@Override
protected String put(HttpExchange e) throws IOException {
@@ -67,8 +75,8 @@
String[] elems = path.split(Server.SLASH);
String type = elems[elems.length - 2];
String elemName = elems[elems.length - 1]; // alter Name, wenn Aenderung
- if(!elemName.equalsIgnoreCase(App.getRs(RB_EP_LISTE))) {
- FileStorage fs = new FileStorage(App.getInitParameter(App.getRs(App.RB_AP_CONF)));
+ if(!elemName.equalsIgnoreCase(getResString(RB_EP_LISTE))) {
+ FileStorage fs = new FileStorage(conf);
Gson gson = new Gson();
logger.log(Level.FINE, "type: {0}, token: {1}", new Object[]{type, fs.typeFromName(type).getType().getTypeName()});
Object o = gson.fromJson(bodyLesen(e), fs.typeFromName(type).getType());
@@ -81,7 +89,8 @@
Entity aoe = fs.read(type, elemName);
if(aoe instanceof Ablageort) {
Ablageort ablageort = (Ablageort) aoe;
- App.getServer().ablageortEntfernen(ablageort.getUrl());
+ //App.getServer().ablageortEntfernen(ablageort.getUrl());
+ e.getHttpContext().getServer().removeContext(ablageort.getUrl());
}
}
fs.write(entity, true);
@@ -89,7 +98,8 @@
if(type.equalsIgnoreCase(FileStorage.ST_ABLAGEORT)) {
if(entity instanceof Ablageort) {
Ablageort ablageort = (Ablageort) entity;
- App.getServer().ablageortHinzufuegen(ablageort);
+ //App.getServer().ablageortHinzufuegen(ablageort);
+ ablageortHinzufuegen(e, ablageort);
}
}
} else { // Neu
@@ -98,7 +108,8 @@
if(type.equalsIgnoreCase(FileStorage.ST_ABLAGEORT)) {
if(entity instanceof Ablageort) {
Ablageort ablageort = (Ablageort) entity;
- App.getServer().ablageortHinzufuegen(ablageort);
+ //App.getServer().ablageortHinzufuegen(ablageort);
+ ablageortHinzufuegen(e, ablageort);
}
}
}
@@ -107,8 +118,15 @@
return "Ungueltiges Objekt im Body.";
}
} else {
- return "Ungueltiger Elementname: " + App.getRs(RB_EP_LISTE);
+ return "Ungueltiger Elementname: " + getResString(RB_EP_LISTE);
}
+ }
+
+ private void ablageortHinzufuegen(HttpExchange e, Ablageort ort) {
+ HttpContext c = e.getHttpContext();
+ String ctx = c.getPath();
+ c.getServer().createContext(ctx + ort.getUrl(),
+ new ListFileHandler(new File(ort.getOrt()).getAbsolutePath(), conf));
}
private boolean loeschen(HttpExchange e) {
@@ -116,13 +134,14 @@
String[] elems = path.split(Server.SLASH);
String type = elems[elems.length - 2];
String elemName = elems[elems.length - 1];
- FileStorage fs = new FileStorage(App.getInitParameter(App.getRs(App.RB_AP_CONF)));
+ FileStorage fs = new FileStorage(conf);
if(type.equalsIgnoreCase(FileStorage.ST_ABLAGEORT)) {
// im laufenden Server den Context entfernen
Entity entity = fs.read(type, elemName);
if(entity instanceof Ablageort) {
Ablageort ablageort = (Ablageort) entity;
- App.getServer().ablageortEntfernen(ablageort.getUrl());
+ //App.getServer().ablageortEntfernen(ablageort.getUrl());
+ e.getHttpContext().getServer().removeContext(ablageort.getUrl());
}
}
return fs.delete(type, elemName);
@@ -131,10 +150,10 @@
private String lesen(HttpExchange e) throws IOException, InterruptedException {
String path = e.getRequestURI().toString();
String[] elems = path.split(Server.SLASH);
- FileStorage fs = new FileStorage(App.getInitParameter(App.getRs(App.RB_AP_CONF)));
+ FileStorage fs = new FileStorage(conf);
if(path.endsWith(Server.SLASH)) {
List list = null;
- if(elems[elems.length - 1].equalsIgnoreCase(App.getRs(RB_EP_LISTE_ALLES))) {
+ if(elems[elems.length - 1].equalsIgnoreCase(getResString(RB_EP_LISTE_ALLES))) {
String type = elems[elems.length - 2];
logger.fine(type);
if(type.equalsIgnoreCase(ST_GERAET)) {
@@ -143,7 +162,7 @@
Object o = gson.fromJson(bodyLesen(e), fs.typeFromName(type).getType());
return gson.toJson(list);
}
- } else if(elems[elems.length - 1].equalsIgnoreCase(App.getRs(RB_EP_LISTE))) {
+ } else if(elems[elems.length - 1].equalsIgnoreCase(getResString(RB_EP_LISTE))) {
String type = elems[elems.length - 2];
logger.fine(type);
list = fs.list(type);
--
Gitblit v1.9.3