Simplified the XmlWorker.parseParameters() method and did some

refactoring.
This commit is contained in:
Pascal Koenig
2011-08-27 17:36:37 +02:00
parent 9334354825
commit 7e8a50a0dc
5 changed files with 24 additions and 25 deletions

View File

@@ -7,6 +7,7 @@ import com.sun.net.httpserver.HttpServer;
import de.sockenklaus.XmlStats.XmlWorkers.*;
@SuppressWarnings("restriction")
public class WebServer {
private InetSocketAddress address;

View File

@@ -14,11 +14,11 @@ import com.sun.net.httpserver.HttpExchange;
import de.sockenklaus.XmlStats.XmlStats;
@SuppressWarnings("restriction")
public abstract class XmlWorker implements HttpHandler {
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())){
String queryString = exchange.getRequestURI().getRawQuery();
@@ -27,14 +27,14 @@ public abstract class XmlWorker implements HttpHandler {
try {
parseQuery(queryString, parameters);
parameters = parseParameters(queryString);
} catch(UnsupportedEncodingException ex){
XmlStats.LogError("Fehler beim Parsen des HTTP-Query-Strings.");
XmlStats.LogError(ex.getMessage());
}
xmlResponse = processQuery(parameters);
xmlResponse = getXML(parameters);
byteResponse = xmlResponse.getBytes();
@@ -43,7 +43,7 @@ public abstract class XmlWorker implements HttpHandler {
exchange.getResponseBody().write(byteResponse);
}
catch(IOException ex){
XmlStats.LogError("Fehler beim Senden HTTP-Antwort.");
XmlStats.LogError("Fehler beim Senden der HTTP-Antwort.");
XmlStats.LogError(ex.getMessage());
}
@@ -51,8 +51,9 @@ public abstract class XmlWorker implements HttpHandler {
}
}
@SuppressWarnings("unchecked")
public void parseQuery(String queryString, Map<String, Object> parameters) throws UnsupportedEncodingException {
public Map<String, List<String>> parseParameters(String queryString) throws UnsupportedEncodingException {
Map<String, List<String>> result = new HashMap<String, List<String>>();
if (queryString != null){
String pairs[] = queryString.split("[&]");
@@ -70,26 +71,21 @@ public abstract class XmlWorker implements HttpHandler {
value = URLDecoder.decode(param[1], System.getProperty("file.encoding"));
}
if (parameters.containsKey(key)){
Object obj = parameters.get(key);
if (result.containsKey(key)){
List<String> values = result.get(key);
if(obj instanceof List<?>){
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 {
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);
}

View File

@@ -1,13 +1,13 @@
package de.sockenklaus.XmlStats.XmlWorkers;
import java.util.List;
import java.util.Map;
public class XmlWorkerMoney extends XmlWorker {
@Override
public String processQuery(Map<String, Object> parameters) {
public String getXML(Map<String, List<String>> parameters) {
// TODO Auto-generated method stub
return null;
}
}

View File

@@ -3,6 +3,7 @@ package de.sockenklaus.XmlStats.XmlWorkers;
import java.io.StringWriter;
import java.util.Map;
import java.util.logging.Level;
import java.util.List;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
@@ -21,7 +22,7 @@ import de.sockenklaus.XmlStats.Datasource.UsersDS;
public class XmlWorkerUsers extends XmlWorker {
@Override
public String processQuery(Map<String, Object> parameters) {
public String getXML(Map<String, List<String>> parameters) {
UsersDS users = new UsersDS();
try {

View File

@@ -5,6 +5,7 @@ import java.io.StringWriter;
import java.util.Arrays;
import java.util.Map;
import java.util.logging.Level;
import java.util.List;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
@@ -26,7 +27,7 @@ import de.sockenklaus.XmlStats.Datasource.StatsDS;
public class XmlWorkerUserstats extends XmlWorker {
@Override
public String processQuery(Map<String, Object> parameters) {
public String getXML(Map<String, List<String>> parameters) {
try {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();