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
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;
}