]> WPIA git - gigi.git/commitdiff
Use an URL-constructor for templates
authorFelix Dörre <felix@dogcraft.de>
Thu, 10 Jul 2014 18:16:11 +0000 (20:16 +0200)
committerFelix Dörre <felix@dogcraft.de>
Thu, 10 Jul 2014 22:35:16 +0000 (00:35 +0200)
... so re-parsing might be possible.

src/org/cacert/gigi/Gigi.java
src/org/cacert/gigi/output/ClientCSRGenerate.java
src/org/cacert/gigi/output/Template.java
src/org/cacert/gigi/pages/Page.java
src/org/cacert/gigi/pages/account/ChangeForm.java
src/org/cacert/gigi/pages/main/Signup.java
src/org/cacert/gigi/pages/wot/AssuranceForm.java
src/org/cacert/gigi/pages/wot/AssurePage.java

index c49cdcbbe673a92888321b8ff94d300773115e12..6d6ddb6ec7a9ccea7e8c7dbc594976b1534507a9 100644 (file)
@@ -1,7 +1,6 @@
 package org.cacert.gigi;
 
 import java.io.IOException;
-import java.io.InputStreamReader;
 import java.io.PrintWriter;
 import java.util.Calendar;
 import java.util.HashMap;
@@ -61,7 +60,7 @@ public class Gigi extends HttpServlet {
                pages.put(RegisterPage.PATH, new RegisterPage());
                pages.put(MailCertificateAdd.PATH, new MailCertificateAdd());
                pages.put(MailOverview.DEFAULT_PATH, new MailOverview("My email addresses"));
-               baseTemplate = new Template(new InputStreamReader(Gigi.class.getResourceAsStream("Gigi.templ")));
+               baseTemplate = new Template(Gigi.class.getResource("Gigi.templ"));
                m = new Menu("Certificates", "cert", new MenuItem(MailOverview.DEFAULT_PATH, "Emails"), new MenuItem("",
                        "Client Certificates"), new MenuItem("", "Domains"), new MenuItem("", "Server Certificates"));
                super.init();
index 9398c2200d2e50efa51441ed97267c5fe435d83c..23869f7750dbe8baab1271671bfef9f6e22c22ba 100644 (file)
@@ -1,7 +1,6 @@
 package org.cacert.gigi.output;
 
 import java.io.IOException;
-import java.io.InputStreamReader;
 import java.util.HashMap;
 
 import javax.servlet.http.HttpServletRequest;
@@ -14,10 +13,8 @@ public class ClientCSRGenerate {
        static Template normal;
        static Template IE;
        static {
-               normal = new Template(new InputStreamReader(
-                       ClientCSRGenerate.class.getResourceAsStream("ClientCSRGenerate.templ")));
-               IE = new Template(new InputStreamReader(
-                       ClientCSRGenerate.class.getResourceAsStream("ClientCSRGenerateIE.templ")));
+               normal = new Template(ClientCSRGenerate.class.getResource("ClientCSRGenerate.templ"));
+               IE = new Template(ClientCSRGenerate.class.getResource("ClientCSRGenerateIE.templ"));
        }
 
        public static void output(HttpServletRequest req, HttpServletResponse resp) {
index 337200349b2b9555e2506930b3666fb5f4812962..c7e90674c0370d4e46f0c78f92173630ea48d238 100644 (file)
@@ -2,8 +2,10 @@ package org.cacert.gigi.output;
 
 import java.io.EOFException;
 import java.io.IOException;
+import java.io.InputStreamReader;
 import java.io.PrintWriter;
 import java.io.Reader;
+import java.net.URL;
 import java.util.LinkedList;
 import java.util.Map;
 
@@ -13,41 +15,57 @@ public class Template implements Outputable {
        String[] contents;
        Outputable[] vars;
 
+       URL source;
+
+       public Template(URL u) {
+               try {
+                       source = u;
+                       Reader r = new InputStreamReader(u.openStream(), "UTF-8");
+                       parse(r);
+               } catch (IOException e) {
+                       throw new Error(e);
+               }
+       }
+
        public Template(Reader r) {
                try {
-                       LinkedList<String> splitted = new LinkedList<String>();
-                       LinkedList<Outputable> commands = new LinkedList<Outputable>();
-                       StringBuffer buf = new StringBuffer();
-                       int ch = r.read();
-                       outer: while (true) {
-                               while (!endsWith(buf, "<?")) {
-                                       if (ch == -1) {
-                                               break outer;
-                                       }
-                                       buf.append((char) ch);
-                                       ch = r.read();
-                               }
-                               buf.delete(buf.length() - 2, buf.length());
-                               splitted.add(buf.toString());
-                               buf.delete(0, buf.length());
-                               while (!endsWith(buf, "?>")) {
-                                       buf.append((char) ch);
-                                       ch = r.read();
-                                       if (ch == -1) {
-                                               throw new EOFException();
-                                       }
+                       parse(r);
+               } catch (IOException e) {
+                       throw new Error(e);
+               }
+       }
+
+       private void parse(Reader r) throws IOException {
+               LinkedList<String> splitted = new LinkedList<String>();
+               LinkedList<Outputable> commands = new LinkedList<Outputable>();
+               StringBuffer buf = new StringBuffer();
+               int ch = r.read();
+               outer: while (true) {
+                       while (!endsWith(buf, "<?")) {
+                               if (ch == -1) {
+                                       break outer;
                                }
-                               buf.delete(buf.length() - 2, buf.length());
-                               commands.add(parseCommand(buf.toString()));
-                               buf.delete(0, buf.length());
+                               buf.append((char) ch);
+                               ch = r.read();
                        }
+                       buf.delete(buf.length() - 2, buf.length());
                        splitted.add(buf.toString());
-                       contents = splitted.toArray(new String[splitted.size()]);
-                       vars = commands.toArray(new Outputable[commands.size()]);
-                       r.close();
-               } catch (IOException e) {
-                       throw new Error(e);
+                       buf.delete(0, buf.length());
+                       while (!endsWith(buf, "?>")) {
+                               buf.append((char) ch);
+                               ch = r.read();
+                               if (ch == -1) {
+                                       throw new EOFException();
+                               }
+                       }
+                       buf.delete(buf.length() - 2, buf.length());
+                       commands.add(parseCommand(buf.toString()));
+                       buf.delete(0, buf.length());
                }
+               splitted.add(buf.toString());
+               contents = splitted.toArray(new String[splitted.size()]);
+               vars = commands.toArray(new Outputable[commands.size()]);
+               r.close();
        }
 
        private boolean endsWith(StringBuffer buf, String string) {
index b6a30573fe2a254c58456632c01d664688195883..5e05fdcd56ed672f6ab654dbec07a1dda2dd5887 100644 (file)
@@ -1,9 +1,7 @@
 package org.cacert.gigi.pages;
 
 import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.UnsupportedEncodingException;
+import java.net.URL;
 
 import javax.servlet.ServletRequest;
 import javax.servlet.http.HttpServletRequest;
@@ -22,13 +20,9 @@ public abstract class Page {
 
        public Page(String title) {
                this.title = title;
-               try {
-                       InputStream resource = getClass().getResourceAsStream(getClass().getSimpleName() + ".templ");
-                       if (resource != null) {
-                               defaultTemplate = new Template(new InputStreamReader(resource, "UTF-8"));
-                       }
-               } catch (UnsupportedEncodingException e) {
-                       e.printStackTrace();
+               URL resource = getClass().getResource(getClass().getSimpleName() + ".templ");
+               if (resource != null) {
+                       defaultTemplate = new Template(resource);
                }
        }
 
index f200c32398075482965ab19f50df5b78a2fb6755..3d2d45dbf83c91ffacf67eb028e514e2d32a5048 100644 (file)
@@ -1,6 +1,5 @@
 package org.cacert.gigi.pages.account;
 
-import java.io.InputStreamReader;
 import java.io.PrintWriter;
 import java.util.Map;
 
@@ -17,8 +16,7 @@ public class ChangeForm extends Form {
 
        private static Template t;
        static {
-               t = new Template(
-                       new InputStreamReader(ChangePasswordPage.class.getResourceAsStream("ChangePasswordForm.templ")));
+               t = new Template(ChangePasswordPage.class.getResource("ChangePasswordForm.templ"));
        }
 
        @Override
index 04f8114966bcc8c93fc100ab42d3550d6cbeb959..f5025bf8603ccfbba8aefbcaec806aa29b66d224 100644 (file)
@@ -1,9 +1,7 @@
 package org.cacert.gigi.pages.main;
 
 import java.io.IOException;
-import java.io.InputStreamReader;
 import java.io.PrintWriter;
-import java.io.UnsupportedEncodingException;
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;
 import java.sql.SQLException;
@@ -34,11 +32,7 @@ public class Signup extends Form {
 
        public Signup(HttpServletRequest hsr) {
                super(hsr);
-               try {
-                       t = new Template(new InputStreamReader(Signup.class.getResourceAsStream("Signup.templ"), "UTF-8"));
-               } catch (UnsupportedEncodingException e) {
-                       e.printStackTrace();
-               }
+               t = new Template(Signup.class.getResource("Signup.templ"));
                buildup.setFname("");
                buildup.setMname("");
                buildup.setLname("");
index 7a49ee1b710dd321619d7a00fee54c9833135a1b..d1d5111694884b6079e2ce6ebe85c63239fcdf4b 100644 (file)
@@ -1,6 +1,5 @@
 package org.cacert.gigi.pages.wot;
 
-import java.io.InputStreamReader;
 import java.io.PrintWriter;
 import java.sql.SQLException;
 import java.text.ParseException;
@@ -23,7 +22,7 @@ public class AssuranceForm extends Form {
        User assuree;
        static final Template templ;
        static {
-               templ = new Template(new InputStreamReader(AssuranceForm.class.getResourceAsStream("AssuranceForm.templ")));
+               templ = new Template(AssuranceForm.class.getResource("AssuranceForm.templ"));
        }
 
        public AssuranceForm(HttpServletRequest hsr, int assuree) {
index 9c29044bbf2b0a18053b76ed0edcce280cfd73c2..f12dfa45d0bf6f9fd3268e597406969ba2fa9211 100644 (file)
@@ -1,7 +1,6 @@
 package org.cacert.gigi.pages.wot;
 
 import java.io.IOException;
-import java.io.InputStreamReader;
 import java.io.PrintWriter;
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;
@@ -27,7 +26,7 @@ public class AssurePage extends Page {
 
        public AssurePage() {
                super("Assure someone");
-               t = new Template(new InputStreamReader(AssuranceForm.class.getResourceAsStream("AssureeSearch.templ")));
+               t = new Template(AssuranceForm.class.getResource("AssureeSearch.templ"));
 
        }