Author: chris.laprun(a)jboss.com
Date: 2006-12-11 15:52:39 -0500 (Mon, 11 Dec 2006)
New Revision: 5803
Modified:
trunk/wsrp/src/main/org/jboss/portal/wsrp/producer/MarkupHandler.java
Log:
- Finished implementing InstanceContext so that we can detect if the PortletContext was
modified during the invocation.
- Fixed incorrect modification of the PortletContext (in essence, this file shouldn't
have been commited last time ^_^;)
Modified: trunk/wsrp/src/main/org/jboss/portal/wsrp/producer/MarkupHandler.java
===================================================================
--- trunk/wsrp/src/main/org/jboss/portal/wsrp/producer/MarkupHandler.java 2006-12-11
20:32:31 UTC (rev 5802)
+++ trunk/wsrp/src/main/org/jboss/portal/wsrp/producer/MarkupHandler.java 2006-12-11
20:52:39 UTC (rev 5803)
@@ -392,9 +392,16 @@
updateResponse.setNewWindowState(WSRPUtils.convertJSR168WindowStateNameToWSRPName(getNewStateOrNull(renderResult,
false)));
StateString ns = renderResult.getNavigationalState();
updateResponse.setNavigationalState(ns != null ? ns.getStringValue() : null);
- PortletContext updatedPortletContext =
WSRPTypeFactory.createPortletContext(instanceContext.getId());
- updateResponse.setPortletContext(updatedPortletContext);
+ // deal with implicit cloning and state modification
+ if (instanceContext.wasModified())
+ {
+ PortletContext updatedPortletContext =
WSRPTypeFactory.createPortletContext(instanceContext.getId());
+ updatedPortletContext.setPortletState(instanceContext.getState());
+ updateResponse.setPortletContext(updatedPortletContext);
+ }
+
+
return WSRPTypeFactory.createBlockingInteractionResponse(updateResponse);
}
else
@@ -902,6 +909,7 @@
class WSRPInstanceContext implements InstanceContext
{
private String id;
+ private byte[] state;
private final AccessMode accessMode;
private boolean wasModified = false;
@@ -926,6 +934,21 @@
public void onStateEvent(StateEvent event)
{
+ org.jboss.portal.portlet.PortletContext portletContext =
event.getPortletContext();
+ ParameterValidation.throwIllegalArgExceptionIfNull(portletContext,
"PortletContext");
+ wasModified = true;
+ id = portletContext.getId();
+ state = portletContext.getState();
}
+
+ public boolean wasModified()
+ {
+ return wasModified;
+ }
+
+ public byte[] getState()
+ {
+ return state;
+ }
}
}
Show replies by date