From a5c89286e00e057952e6669ef1ad09fb7cf26946 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Petter=20Holmstr=C3=B6m?= Date: Mon, 9 Nov 2009 12:32:16 +0000 Subject: [PATCH] work in progress svn changeset:9687/svn branch:portlet_2.0 --- src/com/vaadin/Application.java | 8 ++++++++ src/com/vaadin/service/ApplicationContext.java | 5 +++-- .../gwt/server/AbstractApplicationPortlet.java | 18 +++++++++--------- .../gwt/server/AbstractApplicationServlet.java | 14 +++++++------- .../server/AbstractCommunicationManager.java | 8 +++++--- .../server/PortletCommunicationManager.java | 10 ++++++++++ ...pired.java => SessionExpiredException.java} | 2 +- 7 files changed, 43 insertions(+), 22 deletions(-) rename src/com/vaadin/terminal/gwt/server/{SessionExpired.java => SessionExpiredException.java} (55%) diff --git a/src/com/vaadin/Application.java b/src/com/vaadin/Application.java index 20f0b1821a..4dcab2f36d 100644 --- a/src/com/vaadin/Application.java +++ b/src/com/vaadin/Application.java @@ -197,6 +197,7 @@ public abstract class Application implements URIHandler, } // TODO Document me! + @Deprecated public static interface ResourceURLGenerator { public String generateResourceURL(ApplicationResource resource, @@ -211,6 +212,7 @@ public abstract class Application implements URIHandler, /* * Default resource URL generator for servlets */ + @Deprecated private static ResourceURLGenerator defaultResourceURLGenerator = new ResourceURLGenerator() { public String generateResourceURL(ApplicationResource resource, String mapKey) { @@ -252,12 +254,15 @@ public abstract class Application implements URIHandler, }; + @Deprecated private ResourceURLGenerator resourceURLGenerator = defaultResourceURLGenerator; + @Deprecated public ResourceURLGenerator getResourceURLGenerator() { return resourceURLGenerator; } + @Deprecated public void setResourceURLGenerator( ResourceURLGenerator resourceURLGenerator) { if (resourceURLGenerator == null) @@ -767,8 +772,11 @@ public abstract class Application implements URIHandler, * * @see com.vaadin.terminal.URIHandler#handleURI(URL, String) */ + @Deprecated public DownloadStream handleURI(URL context, String relativeUri) { + // FIXME Move to ApplicationContext + if (resourceURLGenerator.isResourceURL(context, relativeUri)) { // Handles the resource request diff --git a/src/com/vaadin/service/ApplicationContext.java b/src/com/vaadin/service/ApplicationContext.java index c5bafa8a6d..96a6f60906 100644 --- a/src/com/vaadin/service/ApplicationContext.java +++ b/src/com/vaadin/service/ApplicationContext.java @@ -9,6 +9,7 @@ import java.io.Serializable; import java.util.Collection; import com.vaadin.Application; +import com.vaadin.terminal.ApplicationResource; /** * ApplicationContext provides information about the running @@ -43,8 +44,8 @@ public interface ApplicationContext extends Serializable { * * @return Collection containing all applications in this context */ - public Collection getApplications(); - + public Collection getApplications(); + /** * Adds transaction listener to this context. * diff --git a/src/com/vaadin/terminal/gwt/server/AbstractApplicationPortlet.java b/src/com/vaadin/terminal/gwt/server/AbstractApplicationPortlet.java index 8c2d3eb40c..71d640d3cb 100644 --- a/src/com/vaadin/terminal/gwt/server/AbstractApplicationPortlet.java +++ b/src/com/vaadin/terminal/gwt/server/AbstractApplicationPortlet.java @@ -303,13 +303,13 @@ public abstract class AbstractApplicationPortlet extends GenericPortlet protected void handleRequest(PortletRequest request, PortletResponse response) throws PortletException, IOException { -// System.out.println("AbstractApplicationPortlet.handleRequest() " -// + System.currentTimeMillis()); + System.out.println("AbstractApplicationPortlet.handleRequest() " + + System.currentTimeMillis()); RequestType requestType = getRequestType(request); -// System.out.println(" RequestType: " + requestType); -// System.out.println(" WindowID: " + request.getWindowID()); + System.out.println(" RequestType: " + requestType); + System.out.println(" WindowID: " + request.getWindowID()); if (requestType == RequestType.UNKNOWN) { System.err.println("Unknown request type"); @@ -410,7 +410,7 @@ public abstract class AbstractApplicationPortlet extends GenericPortlet "handleRequest() without anything to do - should never happen!"); } } - } catch (final SessionExpired e) { + } catch (final SessionExpiredException e) { // TODO Figure out a better way to deal with SessionExpired // -exceptions System.err.println("Session has expired"); @@ -605,7 +605,7 @@ public abstract class AbstractApplicationPortlet extends GenericPortlet } private Application findApplicationInstance(PortletRequest request, - RequestType requestType) throws PortletException, SessionExpired, + RequestType requestType) throws PortletException, SessionExpiredException, MalformedURLException { boolean requestCanCreateApplication = requestCanCreateApplication( @@ -642,7 +642,7 @@ public abstract class AbstractApplicationPortlet extends GenericPortlet if (requestCanCreateApplication) { return createApplication(request); } else { - throw new SessionExpired(); + throw new SessionExpiredException(); } } @@ -673,7 +673,7 @@ public abstract class AbstractApplicationPortlet extends GenericPortlet private Application getExistingApplication(PortletRequest request, boolean allowSessionCreation) throws MalformedURLException, - SessionExpired { + SessionExpiredException { final PortletSession session = request .getPortletSession(allowSessionCreation); @@ -683,7 +683,7 @@ public abstract class AbstractApplicationPortlet extends GenericPortlet // System.out.println(" - session.isNew() = " + session.isNew()); if (session == null) { - throw new SessionExpired(); + throw new SessionExpiredException(); } PortletApplicationContext2 context = PortletApplicationContext2 diff --git a/src/com/vaadin/terminal/gwt/server/AbstractApplicationServlet.java b/src/com/vaadin/terminal/gwt/server/AbstractApplicationServlet.java index 57e414652f..995ec384a1 100644 --- a/src/com/vaadin/terminal/gwt/server/AbstractApplicationServlet.java +++ b/src/com/vaadin/terminal/gwt/server/AbstractApplicationServlet.java @@ -424,7 +424,7 @@ public abstract class AbstractApplicationServlet extends HttpServlet implements // Send initial AJAX page that kickstarts a Vaadin application writeAjaxPage(request, response, window, application); - } catch (final SessionExpired e) { + } catch (final SessionExpiredException e) { // Session has expired, notify user handleServiceSessionExpired(request, response); } catch (final GeneralSecurityException e) { @@ -540,11 +540,11 @@ public abstract class AbstractApplicationServlet extends HttpServlet implements * @throws IllegalAccessException * @throws InstantiationException * @throws ServletException - * @throws SessionExpired + * @throws SessionExpiredException */ private Application findApplicationInstance(HttpServletRequest request, RequestType requestType) throws MalformedURLException, - ServletException, SessionExpired { + ServletException, SessionExpiredException { boolean requestCanCreateApplication = requestCanCreateApplication( request, requestType); @@ -588,7 +588,7 @@ public abstract class AbstractApplicationServlet extends HttpServlet implements * The application was not found and a new one should not be * created. Assume the session has expired. */ - throw new SessionExpired(); + throw new SessionExpiredException(); } } @@ -1722,16 +1722,16 @@ public abstract class AbstractApplicationServlet extends HttpServlet implements * @throws SAXException * @throws IllegalAccessException * @throws InstantiationException - * @throws SessionExpired + * @throws SessionExpiredException */ private Application getExistingApplication(HttpServletRequest request, boolean allowSessionCreation) throws MalformedURLException, - SessionExpired { + SessionExpiredException { // Ensures that the session is still valid final HttpSession session = request.getSession(allowSessionCreation); if (session == null) { - throw new SessionExpired(); + throw new SessionExpiredException(); } WebApplicationContext context = WebApplicationContext diff --git a/src/com/vaadin/terminal/gwt/server/AbstractCommunicationManager.java b/src/com/vaadin/terminal/gwt/server/AbstractCommunicationManager.java index 600c35698e..eabc9f45eb 100644 --- a/src/com/vaadin/terminal/gwt/server/AbstractCommunicationManager.java +++ b/src/com/vaadin/terminal/gwt/server/AbstractCommunicationManager.java @@ -317,15 +317,17 @@ public abstract class AbstractCommunicationManager implements throw e; } - // Send short response to acknowledge client that request was done - /* TODO Acknowledge upload in some other way + sendUploadResponse(request, response); + } + + protected void sendUploadResponse(Request request, Response response) throws IOException { response.setContentType("text/html"); final OutputStream out = response.getOutputStream(); final PrintWriter outWriter = new PrintWriter(new BufferedWriter( new OutputStreamWriter(out, "UTF-8"))); outWriter.print("download handled"); outWriter.flush(); - out.close();*/ + out.close(); } /** diff --git a/src/com/vaadin/terminal/gwt/server/PortletCommunicationManager.java b/src/com/vaadin/terminal/gwt/server/PortletCommunicationManager.java index c5a09dc4e6..e7c754c9a3 100644 --- a/src/com/vaadin/terminal/gwt/server/PortletCommunicationManager.java +++ b/src/com/vaadin/terminal/gwt/server/PortletCommunicationManager.java @@ -186,6 +186,16 @@ public class PortletCommunicationManager extends AbstractCommunicationManager { doHandleFileUpload(new PortletRequestWrapper(request), new PortletResponseWrapper(response)); } + + @Override + protected void sendUploadResponse(Request request, Response response) + throws IOException { + if (response.getWrappedResponse() instanceof ActionResponse) { + // FIXME Figure out a better redirect than google... (create a dummy resource URL) + ((ActionResponse) response.getWrappedResponse()).sendRedirect("http://www.google.com"); + } else + super.sendUploadResponse(request, response); + } public void handleUidlRequest(ResourceRequest request, ResourceResponse response, diff --git a/src/com/vaadin/terminal/gwt/server/SessionExpired.java b/src/com/vaadin/terminal/gwt/server/SessionExpiredException.java similarity index 55% rename from src/com/vaadin/terminal/gwt/server/SessionExpired.java rename to src/com/vaadin/terminal/gwt/server/SessionExpiredException.java index c2cf309837..631db8f9f9 100644 --- a/src/com/vaadin/terminal/gwt/server/SessionExpired.java +++ b/src/com/vaadin/terminal/gwt/server/SessionExpiredException.java @@ -1,6 +1,6 @@ package com.vaadin.terminal.gwt.server; @SuppressWarnings("serial") -public class SessionExpired extends Exception { +public class SessionExpiredException extends Exception { } -- 2.39.5