diff options
-rw-r--r-- | src/com/vaadin/terminal/gwt/server/PortletCommunicationManager.java | 28 |
1 files changed, 24 insertions, 4 deletions
diff --git a/src/com/vaadin/terminal/gwt/server/PortletCommunicationManager.java b/src/com/vaadin/terminal/gwt/server/PortletCommunicationManager.java index b3ec33a9e0..1e2687982e 100644 --- a/src/com/vaadin/terminal/gwt/server/PortletCommunicationManager.java +++ b/src/com/vaadin/terminal/gwt/server/PortletCommunicationManager.java @@ -38,7 +38,7 @@ import com.vaadin.ui.Root; @SuppressWarnings("serial") public class PortletCommunicationManager extends AbstractCommunicationManager { - private transient ResourceResponse currentUidlResponse; + private transient MimeResponse currentMimeResponse; public PortletCommunicationManager(Application application) { super(application); @@ -83,13 +83,25 @@ public class PortletCommunicationManager extends AbstractCommunicationManager { } @Override + protected boolean handleApplicationRequest(WrappedRequest request, + WrappedResponse response) throws IOException { + currentMimeResponse = (RenderResponse) ((WrappedPortletResponse) response) + .getPortletResponse(); + try { + return super.handleApplicationRequest(request, response); + } finally { + currentMimeResponse = null; + } + } + + @Override public void handleUidlRequest(WrappedRequest request, WrappedResponse response, Callback callback, Root root) throws IOException, InvalidUIDLSecurityKeyException { - currentUidlResponse = (ResourceResponse) ((WrappedPortletResponse) response) + currentMimeResponse = (ResourceResponse) ((WrappedPortletResponse) response) .getPortletResponse(); super.handleUidlRequest(request, response, callback, root); - currentUidlResponse = null; + currentMimeResponse = null; } private Map<Connector, Map<String, StreamVariable>> ownerToNameToStreamVariable; @@ -107,7 +119,7 @@ public class PortletCommunicationManager extends AbstractCommunicationManager { ownerToNameToStreamVariable.put(owner, nameToReceiver); } nameToReceiver.put(name, value); - ResourceURL resurl = currentUidlResponse.createResourceURL(); + ResourceURL resurl = createResourceURL(); resurl.setResourceID("UPLOAD"); resurl.setParameter("name", name); resurl.setParameter("rec-owner", owner.getConnectorId()); @@ -116,6 +128,14 @@ public class PortletCommunicationManager extends AbstractCommunicationManager { return resurl.toString(); } + private ResourceURL createResourceURL() { + if (currentMimeResponse == null) { + throw new RuntimeException( + "No reponse object available. Cannot create a resource URL"); + } + return currentMimeResponse.createResourceURL(); + } + @Override protected void cleanStreamVariable(Connector owner, String name) { Map<String, StreamVariable> map = ownerToNameToStreamVariable |