Simplified the XmlWorker.parseParameters() method and did some
refactoring.
This commit is contained in:
@@ -7,6 +7,7 @@ import com.sun.net.httpserver.HttpServer;
|
|||||||
|
|
||||||
import de.sockenklaus.XmlStats.XmlWorkers.*;
|
import de.sockenklaus.XmlStats.XmlWorkers.*;
|
||||||
|
|
||||||
|
@SuppressWarnings("restriction")
|
||||||
public class WebServer {
|
public class WebServer {
|
||||||
|
|
||||||
private InetSocketAddress address;
|
private InetSocketAddress address;
|
||||||
|
|||||||
@@ -14,11 +14,11 @@ import com.sun.net.httpserver.HttpExchange;
|
|||||||
|
|
||||||
import de.sockenklaus.XmlStats.XmlStats;
|
import de.sockenklaus.XmlStats.XmlStats;
|
||||||
|
|
||||||
|
@SuppressWarnings("restriction")
|
||||||
public abstract class XmlWorker implements HttpHandler {
|
public abstract class XmlWorker implements HttpHandler {
|
||||||
|
|
||||||
public void handle(HttpExchange exchange) {
|
public void handle(HttpExchange exchange) {
|
||||||
Map<String, Object> parameters = new HashMap<String, Object>();
|
Map<String, List<String>> parameters = new HashMap<String, List<String>>();
|
||||||
|
|
||||||
if("get".equalsIgnoreCase(exchange.getRequestMethod())){
|
if("get".equalsIgnoreCase(exchange.getRequestMethod())){
|
||||||
String queryString = exchange.getRequestURI().getRawQuery();
|
String queryString = exchange.getRequestURI().getRawQuery();
|
||||||
@@ -27,14 +27,14 @@ public abstract class XmlWorker implements HttpHandler {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
||||||
parseQuery(queryString, parameters);
|
parameters = parseParameters(queryString);
|
||||||
|
|
||||||
} catch(UnsupportedEncodingException ex){
|
} catch(UnsupportedEncodingException ex){
|
||||||
XmlStats.LogError("Fehler beim Parsen des HTTP-Query-Strings.");
|
XmlStats.LogError("Fehler beim Parsen des HTTP-Query-Strings.");
|
||||||
XmlStats.LogError(ex.getMessage());
|
XmlStats.LogError(ex.getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
xmlResponse = processQuery(parameters);
|
xmlResponse = getXML(parameters);
|
||||||
|
|
||||||
byteResponse = xmlResponse.getBytes();
|
byteResponse = xmlResponse.getBytes();
|
||||||
|
|
||||||
@@ -43,7 +43,7 @@ public abstract class XmlWorker implements HttpHandler {
|
|||||||
exchange.getResponseBody().write(byteResponse);
|
exchange.getResponseBody().write(byteResponse);
|
||||||
}
|
}
|
||||||
catch(IOException ex){
|
catch(IOException ex){
|
||||||
XmlStats.LogError("Fehler beim Senden HTTP-Antwort.");
|
XmlStats.LogError("Fehler beim Senden der HTTP-Antwort.");
|
||||||
XmlStats.LogError(ex.getMessage());
|
XmlStats.LogError(ex.getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -51,8 +51,9 @@ public abstract class XmlWorker implements HttpHandler {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
public Map<String, List<String>> parseParameters(String queryString) throws UnsupportedEncodingException {
|
||||||
public void parseQuery(String queryString, Map<String, Object> parameters) throws UnsupportedEncodingException {
|
Map<String, List<String>> result = new HashMap<String, List<String>>();
|
||||||
|
|
||||||
if (queryString != null){
|
if (queryString != null){
|
||||||
String pairs[] = queryString.split("[&]");
|
String pairs[] = queryString.split("[&]");
|
||||||
|
|
||||||
@@ -70,26 +71,21 @@ public abstract class XmlWorker implements HttpHandler {
|
|||||||
value = URLDecoder.decode(param[1], System.getProperty("file.encoding"));
|
value = URLDecoder.decode(param[1], System.getProperty("file.encoding"));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (parameters.containsKey(key)){
|
if (result.containsKey(key)){
|
||||||
Object obj = parameters.get(key);
|
List<String> values = result.get(key);
|
||||||
|
|
||||||
if(obj instanceof List<?>){
|
values.add(value);
|
||||||
List<String> values = (List<String>)obj;
|
|
||||||
values.add(value);
|
|
||||||
}
|
|
||||||
else if (obj instanceof String){
|
|
||||||
List<String> values = new ArrayList<String>();
|
|
||||||
values.add((String)obj);
|
|
||||||
values.add(value);
|
|
||||||
parameters.put(key, values);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
parameters.put(key, value);
|
List<String> values = new ArrayList<String>();
|
||||||
|
values.add(value);
|
||||||
|
|
||||||
|
result.put(key, values);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
abstract String processQuery(Map<String, Object> parameters);
|
abstract String getXML(Map<String, List<String>> parameters);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
package de.sockenklaus.XmlStats.XmlWorkers;
|
package de.sockenklaus.XmlStats.XmlWorkers;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
public class XmlWorkerMoney extends XmlWorker {
|
public class XmlWorkerMoney extends XmlWorker {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String processQuery(Map<String, Object> parameters) {
|
public String getXML(Map<String, List<String>> parameters) {
|
||||||
// TODO Auto-generated method stub
|
// TODO Auto-generated method stub
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package de.sockenklaus.XmlStats.XmlWorkers;
|
|||||||
import java.io.StringWriter;
|
import java.io.StringWriter;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import javax.xml.parsers.DocumentBuilder;
|
import javax.xml.parsers.DocumentBuilder;
|
||||||
import javax.xml.parsers.DocumentBuilderFactory;
|
import javax.xml.parsers.DocumentBuilderFactory;
|
||||||
@@ -21,7 +22,7 @@ import de.sockenklaus.XmlStats.Datasource.UsersDS;
|
|||||||
public class XmlWorkerUsers extends XmlWorker {
|
public class XmlWorkerUsers extends XmlWorker {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String processQuery(Map<String, Object> parameters) {
|
public String getXML(Map<String, List<String>> parameters) {
|
||||||
UsersDS users = new UsersDS();
|
UsersDS users = new UsersDS();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import java.io.StringWriter;
|
|||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import javax.xml.parsers.DocumentBuilder;
|
import javax.xml.parsers.DocumentBuilder;
|
||||||
import javax.xml.parsers.DocumentBuilderFactory;
|
import javax.xml.parsers.DocumentBuilderFactory;
|
||||||
@@ -26,7 +27,7 @@ import de.sockenklaus.XmlStats.Datasource.StatsDS;
|
|||||||
public class XmlWorkerUserstats extends XmlWorker {
|
public class XmlWorkerUserstats extends XmlWorker {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String processQuery(Map<String, Object> parameters) {
|
public String getXML(Map<String, List<String>> parameters) {
|
||||||
try {
|
try {
|
||||||
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
|
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
|
||||||
DocumentBuilder builder = factory.newDocumentBuilder();
|
DocumentBuilder builder = factory.newDocumentBuilder();
|
||||||
|
|||||||
Reference in New Issue
Block a user