aboutsummaryrefslogtreecommitdiffstats
path: root/src/com/vaadin/Application.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/vaadin/Application.java')
-rw-r--r--src/com/vaadin/Application.java32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/com/vaadin/Application.java b/src/com/vaadin/Application.java
index 4a6968fd66..a8aa7f6ba1 100644
--- a/src/com/vaadin/Application.java
+++ b/src/com/vaadin/Application.java
@@ -7,6 +7,9 @@ package com.vaadin;
import java.io.Serializable;
import java.net.SocketException;
import java.net.URL;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
import java.util.Enumeration;
import java.util.EventListener;
import java.util.EventObject;
@@ -22,10 +25,13 @@ import com.vaadin.terminal.ApplicationResource;
import com.vaadin.terminal.DownloadStream;
import com.vaadin.terminal.ErrorMessage;
import com.vaadin.terminal.ParameterHandler;
+import com.vaadin.terminal.RequestHandler;
import com.vaadin.terminal.SystemError;
import com.vaadin.terminal.Terminal;
import com.vaadin.terminal.URIHandler;
import com.vaadin.terminal.VariableOwner;
+import com.vaadin.terminal.WrappedRequest;
+import com.vaadin.terminal.WrappedResponse;
import com.vaadin.terminal.gwt.server.ChangeVariablesErrorEvent;
import com.vaadin.terminal.gwt.server.PortletApplicationContext;
import com.vaadin.terminal.gwt.server.WebApplicationContext;
@@ -187,6 +193,8 @@ public abstract class Application implements URIHandler,
*/
private Terminal.ErrorListener errorHandler = this;
+ private Collection<RequestHandler> requestHandlers = new ArrayList<RequestHandler>();
+
// /**
// * <p>
// * Gets a window by name. Returns <code>null</code> if the application is
@@ -1923,4 +1931,28 @@ public abstract class Application implements URIHandler,
}
public abstract Root getRoot();
+
+ 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);
+ }
} \ No newline at end of file