got rid of stringtemplates in favor of lightweight solution
Signed-off-by: Stephan Richter <s.richter@srsoftware.de>
This commit is contained in:
@@ -13,12 +13,11 @@ repositories {
|
||||
dependencies {
|
||||
compileOnly 'javax.servlet:javax.servlet-api:4.0.1'
|
||||
implementation 'ch.qos.logback:logback-core:1.5.6'
|
||||
implementation 'ch.qos.logback:logback-classic:1.5.6'
|
||||
implementation 'org.slf4j:slf4j-api:2.0.13'
|
||||
implementation project(':de.srsoftware.oidc.api')
|
||||
testImplementation platform('org.junit:junit-bom:5.10.0')
|
||||
testImplementation 'org.junit.jupiter:junit-jupiter'
|
||||
implementation 'ch.qos.logback:logback-classic:1.5.6'
|
||||
implementation project(':de.srsoftware.oidc.api')
|
||||
implementation('org.antlr:ST4:4.3.3')
|
||||
}
|
||||
|
||||
test {
|
||||
|
||||
@@ -6,6 +6,7 @@ import java.io.IOException;
|
||||
import java.io.PrintWriter;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.annotation.WebServlet;
|
||||
import javax.servlet.http.HttpServlet;
|
||||
@@ -13,7 +14,6 @@ import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.stringtemplate.v4.ST;
|
||||
|
||||
@WebServlet(urlPatterns = "/")
|
||||
public class LightOICD extends HttpServlet {
|
||||
@@ -57,8 +57,8 @@ public class LightOICD extends HttpServlet {
|
||||
|
||||
private void landingPage(HttpServletRequest req, HttpServletResponse resp, User user) throws IOException {
|
||||
LOG.debug("landingPage(…)");
|
||||
ST st = templates.getInstanceOf("index");
|
||||
var index = templates.get("index.html", Map.of("user","Darling"));
|
||||
resp.setContentType("text/html");
|
||||
resp.getWriter().println(st.render());
|
||||
resp.getWriter().println(index.get());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,28 +2,33 @@
|
||||
package de.srsoftware;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import org.stringtemplate.v4.*;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
public class Templates extends STRawGroupDir {
|
||||
public class Templates {
|
||||
private static Templates singleton = null;
|
||||
private static Logger LOG = LoggerFactory.getLogger(Templates.class);
|
||||
private Path dir = searchTemplates();
|
||||
|
||||
Templates() {
|
||||
super(templateDir(), '«', '»');
|
||||
public Templates() throws FileNotFoundException {}
|
||||
|
||||
private static Path searchTemplates() throws FileNotFoundException {
|
||||
return searchTemplates(new File(System.getProperty("user.dir"))).map(File::toPath).orElseThrow(() -> new FileNotFoundException("Missing template directory"));
|
||||
}
|
||||
|
||||
private static String templateDir() {
|
||||
return templateDir(new File(System.getProperty("user.dir"))).get().getAbsolutePath();
|
||||
}
|
||||
|
||||
private static Optional<File> templateDir(File dir) {
|
||||
private static Optional<File> searchTemplates(File dir) {
|
||||
if (dir.isDirectory()) {
|
||||
var children = dir.listFiles();
|
||||
for (File child : children) {
|
||||
if (child.isDirectory()) {
|
||||
if (child.getName().equals("templates")) return Optional.of(child);
|
||||
var inner = templateDir(child);
|
||||
var inner = searchTemplates(child);
|
||||
if (inner.isPresent()) return inner;
|
||||
}
|
||||
}
|
||||
@@ -35,4 +40,21 @@ public class Templates extends STRawGroupDir {
|
||||
if (singleton == null) singleton = new Templates();
|
||||
return singleton;
|
||||
}
|
||||
|
||||
public Optional<String> get(String path, Map<String, String> replacements) {
|
||||
var file = dir.resolve(path);
|
||||
try {
|
||||
return Optional.of(Files.readString(file)).map(s -> replaceKeys(s,replacements));
|
||||
// TODO: replacements
|
||||
} catch (IOException e) {
|
||||
LOG.warn("Failed to read {}", path, e);
|
||||
return Optional.empty();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private String replaceKeys(String text, Map<String, String> replacements) {
|
||||
for (Map.Entry<String, String> replacement : replacements.entrySet()) text = text.replace("{"+replacement.getKey()+"}",replacement.getValue());
|
||||
return text;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
<html>
|
||||
<body>
|
||||
Hallo {user}, dies ist die Index-Seite!
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,5 +0,0 @@
|
||||
<html>
|
||||
<body>
|
||||
Dies ist die Index-Seite
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user