summaryrefslogtreecommitdiffstats
path: root/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/web/WebServer.java
diff options
context:
space:
mode:
authorSimon Rettberg2015-09-02 12:09:23 +0200
committerSimon Rettberg2015-09-02 12:09:23 +0200
commit8e444863bdb91f7b8109ff7c15c29673fe67d4d6 (patch)
tree41b8a00754f6b67b5e6392edcf5762ca5b9477b1 /dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/web/WebServer.java
parent.....aaaaand it's gone (diff)
downloadtutor-module-8e444863bdb91f7b8109ff7c15c29673fe67d4d6.tar.gz
tutor-module-8e444863bdb91f7b8109ff7c15c29673fe67d4d6.tar.xz
tutor-module-8e444863bdb91f7b8109ff7c15c29673fe67d4d6.zip
[server] Serve vmchooser-compatible lecture list via http
Diffstat (limited to 'dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/web/WebServer.java')
-rw-r--r--dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/web/WebServer.java25
1 files changed, 23 insertions, 2 deletions
diff --git a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/web/WebServer.java b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/web/WebServer.java
index 02172616..a7a13305 100644
--- a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/web/WebServer.java
+++ b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/web/WebServer.java
@@ -1,9 +1,29 @@
package org.openslx.bwlp.sat.web;
+import java.io.ByteArrayInputStream;
+
+import org.apache.commons.io.output.ByteArrayOutputStream;
+import org.openslx.bwlp.sat.database.mappers.DbLecture;
+import org.openslx.util.GenericDataCache;
+import org.simpleframework.xml.Serializer;
+import org.simpleframework.xml.core.Persister;
+
import fi.iki.elonen.NanoHTTPD;
public class WebServer extends NanoHTTPD {
+ private static final GenericDataCache<byte[]> lectureListCache = new GenericDataCache<byte[]>(15000) {
+ Serializer serializer = new Persister();
+
+ @Override
+ protected byte[] update() throws Exception {
+ VmChooserListXml listXml = DbLecture.getUsableListXml(false);
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ serializer.write(listXml, baos);
+ return baos.toByteArray();
+ }
+ };
+
public WebServer(int port) {
super(port);
}
@@ -11,7 +31,7 @@ public class WebServer extends NanoHTTPD {
@Override
public Response serve(IHTTPSession session) {
String uri = session.getUri();
-
+
if (uri == null || uri.length() == 0) {
return internalServerError();
}
@@ -25,7 +45,8 @@ public class WebServer extends NanoHTTPD {
}
private Response serveVmChooserList() {
- return new NanoHTTPD.Response(NanoHTTPD.Response.Status.NOT_FOUND, "text/plain", "BLA");
+ return new NanoHTTPD.Response(NanoHTTPD.Response.Status.NOT_FOUND, "text/xml; charset=utf-8",
+ new ByteArrayInputStream(lectureListCache.get()));
}
private Response internalServerError() {