[portal-commits] JBoss Portal SVN: r5803 - trunk/wsrp/src/main/org/jboss/portal/wsrp/producer

portal-commits at lists.jboss.org portal-commits at lists.jboss.org
Mon Dec 11 15:52:41 EST 2006


Author: chris.laprun at 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;
+      }
    }
 }




More information about the portal-commits mailing list