From 7e8a50a0dc81f8a03f1ff1e3279bde307e5f6984 Mon Sep 17 00:00:00 2001 From: Pascal Koenig Date: Sat, 27 Aug 2011 17:36:37 +0200 Subject: [PATCH] Simplified the XmlWorker.parseParameters() method and did some refactoring. --- src/de/sockenklaus/XmlStats/WebServer.java | 1 + .../XmlStats/XmlWorkers/XmlWorker.java | 38 +++++++++---------- .../XmlStats/XmlWorkers/XmlWorkerMoney.java | 4 +- .../XmlStats/XmlWorkers/XmlWorkerUsers.java | 3 +- .../XmlWorkers/XmlWorkerUserstats.java | 3 +- 5 files changed, 24 insertions(+), 25 deletions(-) diff --git a/src/de/sockenklaus/XmlStats/WebServer.java b/src/de/sockenklaus/XmlStats/WebServer.java index ea14414..52a9a4c 100644 --- a/src/de/sockenklaus/XmlStats/WebServer.java +++ b/src/de/sockenklaus/XmlStats/WebServer.java @@ -7,6 +7,7 @@ import com.sun.net.httpserver.HttpServer; import de.sockenklaus.XmlStats.XmlWorkers.*; +@SuppressWarnings("restriction") public class WebServer { private InetSocketAddress address; diff --git a/src/de/sockenklaus/XmlStats/XmlWorkers/XmlWorker.java b/src/de/sockenklaus/XmlStats/XmlWorkers/XmlWorker.java index dea0ee9..27e9de9 100644 --- a/src/de/sockenklaus/XmlStats/XmlWorkers/XmlWorker.java +++ b/src/de/sockenklaus/XmlStats/XmlWorkers/XmlWorker.java @@ -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 parameters = new HashMap(); + Map> parameters = new HashMap>(); 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 parameters) throws UnsupportedEncodingException { + public Map> parseParameters(String queryString) throws UnsupportedEncodingException { + Map> result = new HashMap>(); + 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 values = result.get(key); - if(obj instanceof List){ - List values = (List)obj; - values.add(value); - } - else if (obj instanceof String){ - List values = new ArrayList(); - values.add((String)obj); - values.add(value); - parameters.put(key, values); - } + values.add(value); } else { - parameters.put(key, value); + List values = new ArrayList(); + values.add(value); + + result.put(key, values); } } } + return result; } - abstract String processQuery(Map parameters); + abstract String getXML(Map> parameters); } diff --git a/src/de/sockenklaus/XmlStats/XmlWorkers/XmlWorkerMoney.java b/src/de/sockenklaus/XmlStats/XmlWorkers/XmlWorkerMoney.java index e0eba7d..8a2f085 100644 --- a/src/de/sockenklaus/XmlStats/XmlWorkers/XmlWorkerMoney.java +++ b/src/de/sockenklaus/XmlStats/XmlWorkers/XmlWorkerMoney.java @@ -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 parameters) { + public String getXML(Map> parameters) { // TODO Auto-generated method stub return null; } - } diff --git a/src/de/sockenklaus/XmlStats/XmlWorkers/XmlWorkerUsers.java b/src/de/sockenklaus/XmlStats/XmlWorkers/XmlWorkerUsers.java index 0ef6c02..ede6357 100644 --- a/src/de/sockenklaus/XmlStats/XmlWorkers/XmlWorkerUsers.java +++ b/src/de/sockenklaus/XmlStats/XmlWorkers/XmlWorkerUsers.java @@ -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 parameters) { + public String getXML(Map> parameters) { UsersDS users = new UsersDS(); try { diff --git a/src/de/sockenklaus/XmlStats/XmlWorkers/XmlWorkerUserstats.java b/src/de/sockenklaus/XmlStats/XmlWorkers/XmlWorkerUserstats.java index 5c391ce..15e97a3 100644 --- a/src/de/sockenklaus/XmlStats/XmlWorkers/XmlWorkerUserstats.java +++ b/src/de/sockenklaus/XmlStats/XmlWorkers/XmlWorkerUserstats.java @@ -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 parameters) { + public String getXML(Map> parameters) { try { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder();