From 1e8d867f855df819c30f455598c0a24b4e8f88ad Mon Sep 17 00:00:00 2001 From: x7airworker Date: Sun, 28 Nov 2021 14:06:20 +0100 Subject: [PATCH 1/2] Added controllerInitiator --- .../javawebstack/httpserver/HTTPServer.java | 29 ++++++++++++++----- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/src/main/java/org/javawebstack/httpserver/HTTPServer.java b/src/main/java/org/javawebstack/httpserver/HTTPServer.java index a31fc67..bd7f498 100644 --- a/src/main/java/org/javawebstack/httpserver/HTTPServer.java +++ b/src/main/java/org/javawebstack/httpserver/HTTPServer.java @@ -27,9 +27,9 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.File; -import java.io.IOException; import java.nio.charset.StandardCharsets; import java.util.*; +import java.util.function.Function; import java.util.logging.Level; import java.util.logging.Logger; @@ -52,6 +52,7 @@ public class HTTPServer implements RouteParamTransformerProvider { private List routeAutoInjectors = new ArrayList<>(); private final Map beforeMiddleware = new HashMap<>(); private final Map afterMiddleware = new HashMap<>(); + private Function, Object> controllerInitiator = this::defaultControllerInitiator; public HTTPServer() { routeParamTransformers.add(DefaultRouteParamTransformer.INSTANCE); @@ -233,19 +234,31 @@ public HTTPServer exceptionHandler(ExceptionHandler handler) { return this; } + private Object defaultControllerInitiator (Class clazz) { + try { + return clazz.newInstance(); + } catch (InstantiationException | IllegalAccessException e) { + e.printStackTrace(); + } + + return null; + } + + public HTTPServer controllerInitiator (Function, Object> initiator) { + controllerInitiator = initiator; + return this; + } + public HTTPServer controller(Class parentClass, Package p) { return controller("", parentClass, p); } public HTTPServer controller(String globalPrefix, Class parentClass, Package p) { Reflections reflections = new Reflections(p.getName()); - reflections.getSubTypesOf(parentClass).forEach(c -> { - try { - Object controller = c.newInstance(); - controller(globalPrefix, controller); - } catch (InstantiationException | IllegalAccessException e) { - } - }); + reflections.getSubTypesOf(parentClass) + .stream() + .map(controllerInitiator) + .forEach(c -> controller(globalPrefix, c)); return this; } From d2fc01792a07ca0eec6b9c1cd00be37b7420f83d Mon Sep 17 00:00:00 2001 From: x7airworker Date: Mon, 29 Nov 2021 13:10:55 +0100 Subject: [PATCH 2/2] Bumped version --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 65c9f91..7a07227 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ 8 8 - 1.0.1-SNAPSHOT + 1.0.2-SNAPSHOT org.javawebstack