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 {
|
dependencies {
|
||||||
compileOnly 'javax.servlet:javax.servlet-api:4.0.1'
|
compileOnly 'javax.servlet:javax.servlet-api:4.0.1'
|
||||||
implementation 'ch.qos.logback:logback-core:1.5.6'
|
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 'org.slf4j:slf4j-api:2.0.13'
|
||||||
|
implementation project(':de.srsoftware.oidc.api')
|
||||||
testImplementation platform('org.junit:junit-bom:5.10.0')
|
testImplementation platform('org.junit:junit-bom:5.10.0')
|
||||||
testImplementation 'org.junit.jupiter:junit-jupiter'
|
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 {
|
test {
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import java.io.IOException;
|
|||||||
import java.io.PrintWriter;
|
import java.io.PrintWriter;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
import javax.servlet.ServletException;
|
import javax.servlet.ServletException;
|
||||||
import javax.servlet.annotation.WebServlet;
|
import javax.servlet.annotation.WebServlet;
|
||||||
import javax.servlet.http.HttpServlet;
|
import javax.servlet.http.HttpServlet;
|
||||||
@@ -13,7 +14,6 @@ import javax.servlet.http.HttpServletRequest;
|
|||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.stringtemplate.v4.ST;
|
|
||||||
|
|
||||||
@WebServlet(urlPatterns = "/")
|
@WebServlet(urlPatterns = "/")
|
||||||
public class LightOICD extends HttpServlet {
|
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 {
|
private void landingPage(HttpServletRequest req, HttpServletResponse resp, User user) throws IOException {
|
||||||
LOG.debug("landingPage(…)");
|
LOG.debug("landingPage(…)");
|
||||||
ST st = templates.getInstanceOf("index");
|
var index = templates.get("index.html", Map.of("user","Darling"));
|
||||||
resp.setContentType("text/html");
|
resp.setContentType("text/html");
|
||||||
resp.getWriter().println(st.render());
|
resp.getWriter().println(index.get());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,28 +2,33 @@
|
|||||||
package de.srsoftware;
|
package de.srsoftware;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
import java.io.FileNotFoundException;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.nio.file.Files;
|
||||||
|
import java.nio.file.Path;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.Optional;
|
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 Templates singleton = null;
|
||||||
|
private static Logger LOG = LoggerFactory.getLogger(Templates.class);
|
||||||
|
private Path dir = searchTemplates();
|
||||||
|
|
||||||
Templates() {
|
public Templates() throws FileNotFoundException {}
|
||||||
super(templateDir(), '«', '»');
|
|
||||||
|
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() {
|
private static Optional<File> searchTemplates(File dir) {
|
||||||
return templateDir(new File(System.getProperty("user.dir"))).get().getAbsolutePath();
|
|
||||||
}
|
|
||||||
|
|
||||||
private static Optional<File> templateDir(File dir) {
|
|
||||||
if (dir.isDirectory()) {
|
if (dir.isDirectory()) {
|
||||||
var children = dir.listFiles();
|
var children = dir.listFiles();
|
||||||
for (File child : children) {
|
for (File child : children) {
|
||||||
if (child.isDirectory()) {
|
if (child.isDirectory()) {
|
||||||
if (child.getName().equals("templates")) return Optional.of(child);
|
if (child.getName().equals("templates")) return Optional.of(child);
|
||||||
var inner = templateDir(child);
|
var inner = searchTemplates(child);
|
||||||
if (inner.isPresent()) return inner;
|
if (inner.isPresent()) return inner;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -35,4 +40,21 @@ public class Templates extends STRawGroupDir {
|
|||||||
if (singleton == null) singleton = new Templates();
|
if (singleton == null) singleton = new Templates();
|
||||||
return singleton;
|
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