]> WPIA git - gigi.git/blobdiff - src/org/cacert/gigi/DevelLauncher.java
Fix Cache punging for local tests.
[gigi.git] / src / org / cacert / gigi / DevelLauncher.java
index e83ae4145f3d47d955c5b087a9e23b27479eb882..44a949c8b2654e72538c2a2529e15413e8b5ec72 100644 (file)
@@ -10,10 +10,17 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.io.OutputStream;
+import java.lang.reflect.Field;
 import java.nio.file.Files;
 import java.nio.file.Paths;
+import java.util.HashMap;
 import java.util.Properties;
 
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.cacert.gigi.dbObjects.ObjectCache;
+import org.cacert.gigi.pages.Page;
 import org.kamranzafar.jtar.TarEntry;
 import org.kamranzafar.jtar.TarHeader;
 import org.kamranzafar.jtar.TarOutputStream;
@@ -42,6 +49,7 @@ public class DevelLauncher {
         InputStream oldin = System.in;
         System.setIn(new ByteArrayInputStream(chunkConfig.toByteArray()));
         Launcher.main(args);
+        addDevelPage();
         System.setIn(oldin);
         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
         System.out.println("Cacert-gigi system sucessfully started.");
@@ -50,6 +58,34 @@ public class DevelLauncher {
         System.exit(0);
     }
 
+    private static void addDevelPage() {
+        try {
+            Field instF = Gigi.class.getDeclaredField("instance");
+            Field pageF = Gigi.class.getDeclaredField("pages");
+            instF.setAccessible(true);
+            pageF.setAccessible(true);
+            Object gigi = instF.get(null);
+            HashMap<String, Page> pages = (HashMap<String, Page>) pageF.get(gigi);
+            pages.put("/manage", new Page("Page-manger") {
+
+                @Override
+                public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
+                    ObjectCache.clearAllCaches();
+                    resp.getWriter().println("All caches cleared.");
+                    System.out.println("Caches cleared.");
+
+                }
+
+                @Override
+                public boolean needsLogin() {
+                    return false;
+                }
+            });
+        } catch (ReflectiveOperationException e) {
+            e.printStackTrace();
+        }
+    }
+
     public static void writeGigiConfig(OutputStream target, byte[] keystorepw, byte[] truststorepw, Properties mainprop, byte[] cacerts, byte[] keystore) throws IOException {
         TarOutputStream tos = new TarOutputStream(target);
         ByteArrayOutputStream baos = new ByteArrayOutputStream();