Skip to content

Commit cdb5691

Browse files
committed
Merge remote-tracking branch 'origin/dev' into fix/validationForInvalidJsonOrYaml
2 parents 69eda02 + 4427afd commit cdb5691

File tree

1 file changed

+21
-8
lines changed

1 file changed

+21
-8
lines changed

src/main/java/org/javawebstack/httpserver/HTTPServer.java

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,9 @@
2727
import javax.servlet.http.HttpServletRequest;
2828
import javax.servlet.http.HttpServletResponse;
2929
import java.io.File;
30-
import java.io.IOException;
3130
import java.nio.charset.StandardCharsets;
3231
import java.util.*;
32+
import java.util.function.Function;
3333
import java.util.logging.Level;
3434
import java.util.logging.Logger;
3535

@@ -52,6 +52,7 @@ public class HTTPServer implements RouteParamTransformerProvider {
5252
private List<RouteAutoInjector> routeAutoInjectors = new ArrayList<>();
5353
private final Map<String, RequestHandler> beforeMiddleware = new HashMap<>();
5454
private final Map<String, AfterRequestHandler> afterMiddleware = new HashMap<>();
55+
private Function<Class<?>, Object> controllerInitiator = this::defaultControllerInitiator;
5556

5657
public HTTPServer() {
5758
routeParamTransformers.add(DefaultRouteParamTransformer.INSTANCE);
@@ -233,19 +234,31 @@ public HTTPServer exceptionHandler(ExceptionHandler handler) {
233234
return this;
234235
}
235236

237+
private Object defaultControllerInitiator (Class<?> clazz) {
238+
try {
239+
return clazz.newInstance();
240+
} catch (InstantiationException | IllegalAccessException e) {
241+
e.printStackTrace();
242+
}
243+
244+
return null;
245+
}
246+
247+
public HTTPServer controllerInitiator (Function<Class<?>, Object> initiator) {
248+
controllerInitiator = initiator;
249+
return this;
250+
}
251+
236252
public HTTPServer controller(Class<?> parentClass, Package p) {
237253
return controller("", parentClass, p);
238254
}
239255

240256
public HTTPServer controller(String globalPrefix, Class<?> parentClass, Package p) {
241257
Reflections reflections = new Reflections(p.getName());
242-
reflections.getSubTypesOf(parentClass).forEach(c -> {
243-
try {
244-
Object controller = c.newInstance();
245-
controller(globalPrefix, controller);
246-
} catch (InstantiationException | IllegalAccessException e) {
247-
}
248-
});
258+
reflections.getSubTypesOf(parentClass)
259+
.stream()
260+
.map(controllerInitiator)
261+
.forEach(c -> controller(globalPrefix, c));
249262
return this;
250263
}
251264

0 commit comments

Comments
 (0)