From 11f92ad24ed36579393e4428e0b76f3afcaae830 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Petter=20Holmstr=C3=B6m?= Date: Mon, 16 Nov 2009 10:55:36 +0000 Subject: [PATCH] Added some code to make it easier to port Portlet 1.0 apps to 2.0. svn changeset:9815/svn branch:portlet_2.0 --- .../button/img/black-button-sprites-ie6.png | Bin 4106 -> 4130 bytes .../button/img/button-sprites-ie6.png | Bin 3968 -> 3970 bytes .../common/img/black-vertical-sprites-ie6.png | Bin 3238 -> 3240 bytes .../common/img/horizontal-sprites.png | Bin 218 -> 215 bytes .../common/img/vertical-sprites-ie6.png | Bin 7120 -> 7108 bytes .../server/AbstractApplicationPortlet.java | 30 +-- .../server/PortletApplicationContext2.java | 218 ++++++++++++++++++ 7 files changed, 234 insertions(+), 14 deletions(-) diff --git a/WebContent/VAADIN/themes/reindeer/button/img/black-button-sprites-ie6.png b/WebContent/VAADIN/themes/reindeer/button/img/black-button-sprites-ie6.png index 90a73be23fc9cc8ca0f0b171688dcb0d130c7b72..515f64155d0abd10fe56a8dc2ac864359c511407 100644 GIT binary patch literal 4130 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 literal 4106 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 diff --git a/WebContent/VAADIN/themes/reindeer/button/img/button-sprites-ie6.png b/WebContent/VAADIN/themes/reindeer/button/img/button-sprites-ie6.png index 8ccaa56edd0aeac98ac2c966ac25c6490b6ad1a4..662dc4c66139d5351c46f51ac35c865b547a4a9a 100644 GIT binary patch literal 3970 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 diff --git a/WebContent/VAADIN/themes/reindeer/common/img/vertical-sprites-ie6.png b/WebContent/VAADIN/themes/reindeer/common/img/vertical-sprites-ie6.png index c4ee4bdcd1be4c808a3e69466a48f074300ec625..028218a6ab0059d779f2fd542ae45052a1f3bae6 100644 GIT binary patch delta 6997 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 delta 7009 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 Fe*jQ~qnH2y diff --git a/src/com/vaadin/terminal/gwt/server/AbstractApplicationPortlet.java b/src/com/vaadin/terminal/gwt/server/AbstractApplicationPortlet.java index 4dcc38d21d..28b8e90dc8 100644 --- a/src/com/vaadin/terminal/gwt/server/AbstractApplicationPortlet.java +++ b/src/com/vaadin/terminal/gwt/server/AbstractApplicationPortlet.java @@ -22,7 +22,6 @@ import java.util.Properties; import javax.portlet.ActionRequest; import javax.portlet.ActionResponse; -import javax.portlet.EventPortlet; import javax.portlet.EventRequest; import javax.portlet.EventResponse; import javax.portlet.GenericPortlet; @@ -387,13 +386,27 @@ public abstract class AbstractApplicationPortlet extends GenericPortlet /* Start the newly created application */ startApplication(request, application, applicationContext); - + /* * Transaction starts. Call transaction listeners. Transaction * end is called in the finally block below. */ applicationContext.startTransaction(application, request); - + + /* Notify listeners */ + + // TODO Should this happen before or after the transaction starts? + + if (request instanceof RenderRequest) { + applicationContext.firePortletRenderRequest(application, (RenderRequest) request, (RenderResponse) response); + } else if (request instanceof ActionRequest) { + applicationContext.firePortletActionRequest(application, (ActionRequest) request, (ActionResponse) response); + } else if (request instanceof EventRequest) { + applicationContext.firePortletEventRequest(application, (EventRequest) request, (EventResponse) response); + } else if (request instanceof ResourceRequest) { + applicationContext.firePortletResourceRequest(application, (ResourceRequest) request, (ResourceResponse) response); + } + /* Handle the request */ if (requestType == RequestType.FILE_UPLOAD) { applicationManager.handleFileUpload( @@ -405,17 +418,6 @@ public abstract class AbstractApplicationPortlet extends GenericPortlet (ResourceRequest) request, (ResourceResponse) response, this); return; - } else if (requestType == RequestType.EVENT) { - /* - * Redirect portlet event to application if it implements - * the EventPortlet interface (contains only one method). - */ - // TODO Figure out a better way of handling events - if (application instanceof EventPortlet) { - ((EventPortlet) application).processEvent( - (EventRequest) request, - (EventResponse) response); - } } else { /* * Removes the application if it has stopped diff --git a/src/com/vaadin/terminal/gwt/server/PortletApplicationContext2.java b/src/com/vaadin/terminal/gwt/server/PortletApplicationContext2.java index e9d2f2abab..1e8d76b61e 100644 --- a/src/com/vaadin/terminal/gwt/server/PortletApplicationContext2.java +++ b/src/com/vaadin/terminal/gwt/server/PortletApplicationContext2.java @@ -1,6 +1,8 @@ package com.vaadin.terminal.gwt.server; import java.io.File; +import java.io.IOException; +import java.io.OutputStream; import java.io.PrintWriter; import java.io.Serializable; import java.io.StringWriter; @@ -9,13 +11,33 @@ import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; +import java.util.LinkedHashSet; import java.util.LinkedList; +import java.util.Locale; +import java.util.Map; +import java.util.Set; +import javax.portlet.ActionRequest; +import javax.portlet.ActionResponse; +import javax.portlet.CacheControl; +import javax.portlet.EventRequest; +import javax.portlet.EventResponse; +import javax.portlet.PortletMode; import javax.portlet.PortletRequest; import javax.portlet.PortletSession; +import javax.portlet.PortletURL; +import javax.portlet.RenderRequest; +import javax.portlet.RenderResponse; +import javax.portlet.ResourceRequest; +import javax.portlet.ResourceResponse; +import javax.portlet.ResourceURL; +import javax.servlet.http.Cookie; import javax.servlet.http.HttpSessionBindingEvent; import javax.servlet.http.HttpSessionBindingListener; +import org.w3c.dom.DOMException; +import org.w3c.dom.Element; + import com.vaadin.Application; import com.vaadin.service.ApplicationContext; @@ -30,6 +52,8 @@ public class PortletApplicationContext2 implements ApplicationContext, protected LinkedList listeners; + protected Map> portletListeners = new HashMap>(); + protected transient PortletSession session; protected final HashSet applications = new HashSet(); @@ -184,4 +208,198 @@ public class PortletApplicationContext2 implements ApplicationContext, e.printStackTrace(); } } + + public void addPortletListener(Application app, PortletListener listener) { + Set l = portletListeners.get(app); + if (l == null) { + l = new LinkedHashSet(); + portletListeners.put(app, l); + } + l.add(listener); + } + + public void removePortletListener(Application app, PortletListener listener) { + Set l = portletListeners.get(app); + if (l != null) { + l.remove(listener); + } + } + + public void firePortletRenderRequest(Application app, + RenderRequest request, RenderResponse response) { + Set listeners = portletListeners.get(app); + if (listeners != null) { + for (PortletListener l : listeners) { + l.handleRenderRequest(request, new RestrictedRenderResponse(response)); + } + } + } + + public void firePortletActionRequest(Application app, + ActionRequest request, ActionResponse response) { + Set listeners = portletListeners.get(app); + if (listeners != null) { + for (PortletListener l : listeners) { + l.handleActionRequest(request, response); + } + } + } + + public void firePortletEventRequest(Application app, EventRequest request, + EventResponse response) { + Set listeners = portletListeners.get(app); + if (listeners != null) { + for (PortletListener l : listeners) { + l.handleEventRequest(request, response); + } + } + } + + public void firePortletResourceRequest(Application app, + ResourceRequest request, ResourceResponse response) { + Set listeners = portletListeners.get(app); + if (listeners != null) { + for (PortletListener l : listeners) { + l.handleResourceRequest(request, response); + } + } + } + + public interface PortletListener extends Serializable { + + public void handleRenderRequest(RenderRequest request, + RenderResponse response); + + public void handleActionRequest(ActionRequest request, + ActionResponse response); + + public void handleEventRequest(EventRequest request, + EventResponse response); + + public void handleResourceRequest(ResourceRequest request, + ResourceResponse response); + } + + private class RestrictedRenderResponse implements RenderResponse, + Serializable { + + private RenderResponse response; + + private RestrictedRenderResponse(RenderResponse response) { + this.response = response; + } + + public void addProperty(String key, String value) { + response.addProperty(key, value); + } + + public PortletURL createActionURL() { + return response.createActionURL(); + } + + public PortletURL createRenderURL() { + return response.createRenderURL(); + } + + public String encodeURL(String path) { + return response.encodeURL(path); + } + + public void flushBuffer() throws IOException { + // NOP + // TODO throw? + } + + public int getBufferSize() { + return response.getBufferSize(); + } + + public String getCharacterEncoding() { + return response.getCharacterEncoding(); + } + + public String getContentType() { + return response.getContentType(); + } + + public Locale getLocale() { + return response.getLocale(); + } + + public String getNamespace() { + return response.getNamespace(); + } + + public OutputStream getPortletOutputStream() throws IOException { + // write forbidden + return null; + } + + public PrintWriter getWriter() throws IOException { + // write forbidden + return null; + } + + public boolean isCommitted() { + return response.isCommitted(); + } + + public void reset() { + // NOP + // TODO throw? + } + + public void resetBuffer() { + // NOP + // TODO throw? + } + + public void setBufferSize(int size) { + // NOP + // TODO throw? + } + + public void setContentType(String type) { + // NOP + // TODO throw? + } + + public void setProperty(String key, String value) { + response.setProperty(key, value); + } + + public void setTitle(String title) { + response.setTitle(title); + } + + public void setNextPossiblePortletModes( + Collection portletModes) { + // NOP + // TODO throw? + } + + public ResourceURL createResourceURL() { + return response.createResourceURL(); + } + + public CacheControl getCacheControl() { + return response.getCacheControl(); + } + + public void addProperty(Cookie cookie) { + // NOP + // TODO throw? + } + + public void addProperty(String key, Element element) { + // NOP + // TODO throw? + } + + public Element createElement(String tagName) throws DOMException { + // NOP + return null; + } + } + } -- 2.39.5