aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/com/vaadin/terminal/gwt/server/PortletCommunicationManager.java28
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