}
}
-}
+
+ public abstract Root getRoot(WrappedRequest request);
+
+ public boolean handleRequest(WrappedRequest request,
+ WrappedResponse response) {
+ for (RequestHandler handler : new ArrayList<RequestHandler>(
+ requestHandlers)) {
+ if (handler.handleRequest(request, response)) {
+ return true;
+ }
+ }
+ // If not handled
+ return false;
+ }
+
+ public void addRequestHandler(RequestHandler handler) {
+ requestHandlers.add(handler);
+ }
+
+ public void removeRequestHandler(RequestHandler handler) {
+ requestHandlers.remove(handler);
+ }
+
+ public Collection<RequestHandler> getRequestHandlers() {
+ return Collections.unmodifiableCollection(requestHandlers);
+ }
- }
++}