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("");
for (Bundle bundle : context.getBundle(0).getBundleContext().getBundles()) {
- htmlText.append("- ").append(bundle.getHeaders().get("Bundle-Name")).append("
");
+ htmlText.append("- ").append(bundle.getHeaders().get("Bundle-Name"))
+ .append(" [Stop]")
+ .append("
");
}
htmlText.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;
+ }
}