diff --git a/webinterface/pom.xml b/webinterface/pom.xml index 70a7015..6bdeaca 100644 --- a/webinterface/pom.xml +++ b/webinterface/pom.xml @@ -19,7 +19,7 @@ asys webinterface - 0.2-SNAPSHOT + 0.3-SNAPSHOT bundle diff --git a/webinterface/src/main/java/asys/webinterface/IndexHandler.java b/webinterface/src/main/java/asys/webinterface/IndexHandler.java index 5bf1eaf..e06bb63 100644 --- a/webinterface/src/main/java/asys/webinterface/IndexHandler.java +++ b/webinterface/src/main/java/asys/webinterface/IndexHandler.java @@ -8,10 +8,14 @@ import com.sun.net.httpserver.HttpExchange; import com.sun.net.httpserver.HttpHandler; import org.osgi.framework.Bundle; import org.osgi.framework.BundleContext; +import org.osgi.framework.BundleException; import java.io.IOException; import java.io.OutputStream; +import java.net.URI; import java.nio.charset.Charset; +import java.util.HashMap; +import java.util.Map; public class IndexHandler implements HttpHandler { private static final Charset defaultCharset = Charset.forName("UTF-8"); @@ -23,11 +27,24 @@ public class IndexHandler implements HttpHandler { @Override public void handle(HttpExchange httpExchange) throws IOException { + URI requestURI = httpExchange.getRequestURI(); + if (requestURI.getQuery() != null && !requestURI.getQuery().isEmpty()) { + Map map = queryToMap(requestURI.getQuery()); + int bndid = Integer.valueOf(map.get("bnd")); + try { + context.getBundle(bndid).stop(); + } catch (BundleException e) { + e.printStackTrace(); + } + } + StringBuilder htmlText = new StringBuilder(""); htmlText.append("

").append("ASys Web interface").append("

") .append(""); @@ -37,4 +54,17 @@ public class IndexHandler implements HttpHandler { responseBody.write(htmlText.toString().getBytes(defaultCharset)); responseBody.close(); } + + private Map queryToMap(String query){ + Map result = new HashMap(); + for (String param : query.split("&")) { + String pair[] = param.split("="); + if (pair.length>1) { + result.put(pair[0], pair[1]); + }else{ + result.put(pair[0], ""); + } + } + return result; + } }