Author: julien(a)jboss.com
Date: 2008-02-05 13:14:56 -0500 (Tue, 05 Feb 2008)
New Revision: 9782
Modified:
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/controller/PortletRequestHandler.java
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/controller/impl/state/MutablePageNavigationalState.java
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/controller/impl/state/PageNavigationalStateImpl.java
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/controller/state/PageNavigationalState.java
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/controller/state/StateControllerContext.java
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/controller/state/WindowNavigationalState.java
Log:
- now delegates the update of public nav state of a window to the context because it can
have several interpretations/implementations
Modified:
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/controller/PortletRequestHandler.java
===================================================================
---
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/controller/PortletRequestHandler.java 2008-02-05
17:52:29 UTC (rev 9781)
+++
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/controller/PortletRequestHandler.java 2008-02-05
18:14:56 UTC (rev 9782)
@@ -10,8 +10,6 @@
import org.jboss.portal.portlet.PortletInvokerException;
import org.jboss.portal.portlet.StateString;
import org.jboss.portal.portlet.spi.PortletInvocationContext;
-import org.jboss.portal.portlet.info.NavigationInfo;
-import org.jboss.portal.portlet.info.ParameterInfo;
import org.jboss.portal.portlet.info.PortletInfo;
import org.jboss.portal.portlet.invocation.ActionInvocation;
import org.jboss.portal.portlet.invocation.EventInvocation;
@@ -35,7 +33,6 @@
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-import javax.xml.namespace.QName;
import java.io.IOException;
import java.util.LinkedList;
import java.util.List;
@@ -298,27 +295,7 @@
Map<String, String[]> publicNS = update.getPublicNavigationalStateUpdates();
if (publicNS != null)
{
- NavigationInfo navigationInfo = portlet.getNavigation();
- for (Map.Entry<String, String[]> entry : publicNS.entrySet())
- {
- String id = entry.getKey();
- ParameterInfo parameterInfo = navigationInfo.getPublicParameter(id);
-
- //
- if (parameterInfo != null)
- {
- QName name = parameterInfo.getName();
- String[] value = entry.getValue();
- if (value.length > 0)
- {
- pageState.setPublicNavigationalState(name, value);
- }
- else
- {
- pageState.removePublicNavigationalState(name);
- }
- }
- }
+ pageState.setPublicNavigationalState(windowId, publicNS);
}
}
}
Modified:
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/controller/impl/state/MutablePageNavigationalState.java
===================================================================
---
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/controller/impl/state/MutablePageNavigationalState.java 2008-02-05
17:52:29 UTC (rev 9781)
+++
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/controller/impl/state/MutablePageNavigationalState.java 2008-02-05
18:14:56 UTC (rev 9782)
@@ -23,8 +23,13 @@
package org.jboss.portal.portlet.controller.impl.state;
import org.jboss.portal.portlet.controller.state.WindowNavigationalState;
+import org.jboss.portal.portlet.info.NavigationInfo;
+import org.jboss.portal.portlet.info.ParameterInfo;
+import org.jboss.portal.portlet.info.PortletInfo;
+import org.jboss.portal.portlet.PortletInvokerException;
import javax.xml.namespace.QName;
+import java.util.Map;
/**
* @author <a href="mailto:julien@jboss.org">Julien Viet</a>
@@ -43,11 +48,47 @@
super(original);
}
- public void setWindowNavigationalState(String windowId, WindowNavigationalState
windowNS)
+ public void setWindowNavigationalState(String windowId, WindowNavigationalState
windowState)
{
- windows.put(windowId, windowNS);
+ windows.put(windowId, windowState);
}
+ public void setPublicNavigationalState(String windowId, Map<String, String[]>
update)
+ {
+ try
+ {
+ PortletInfo info = context.portletControllerContext.getPortletInfo(windowId);
+
+ NavigationInfo navigationInfo = info.getNavigation();
+ for (Map.Entry<String, String[]> entry : update.entrySet())
+ {
+ String id = entry.getKey();
+
+ //
+ ParameterInfo parameterInfo = navigationInfo.getPublicParameter(id);
+
+ //
+ if (parameterInfo != null)
+ {
+ QName name = parameterInfo.getName();
+ String[] value = entry.getValue();
+ if (value.length > 0)
+ {
+ setPublicNavigationalState(name, value);
+ }
+ else
+ {
+ removePublicNavigationalState(name);
+ }
+ }
+ }
+ }
+ catch (PortletInvokerException e)
+ {
+ e.printStackTrace();
+ }
+ }
+
public void setPublicNavigationalState(QName name, String[] value)
{
// We clone the value in order to keep the state not mutated by a side effect
Modified:
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/controller/impl/state/PageNavigationalStateImpl.java
===================================================================
---
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/controller/impl/state/PageNavigationalStateImpl.java 2008-02-05
17:52:29 UTC (rev 9781)
+++
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/controller/impl/state/PageNavigationalStateImpl.java 2008-02-05
18:14:56 UTC (rev 9782)
@@ -104,11 +104,16 @@
return publicNavigationalState;
}
- public void setWindowNavigationalState(String windowId, WindowNavigationalState
windowNS) throws UnsupportedOperationException
+ public void setWindowNavigationalState(String windowId, WindowNavigationalState
windowState) throws UnsupportedOperationException
{
throw new UnsupportedOperationException();
}
+ public void setPublicNavigationalState(String windowId, Map<String, String[]>
update)
+ {
+ throw new UnsupportedOperationException();
+ }
+
public void setPublicNavigationalState(QName name, String[] value) throws
UnsupportedOperationException
{
throw new UnsupportedOperationException();
Modified:
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/controller/state/PageNavigationalState.java
===================================================================
---
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/controller/state/PageNavigationalState.java 2008-02-05
17:52:29 UTC (rev 9781)
+++
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/controller/state/PageNavigationalState.java 2008-02-05
18:14:56 UTC (rev 9782)
@@ -23,24 +23,55 @@
package org.jboss.portal.portlet.controller.state;
import org.jboss.portal.common.util.ParameterMap;
-import org.jboss.portal.portlet.info.PortletInfo;
-import javax.xml.namespace.QName;
+import java.util.Map;
/**
+ * Defines the page navigational state that the controller needs.
+ *
* @author <a href="mailto:julien@jboss.org">Julien Viet</a>
* @version $Revision: 1.1 $
*/
public interface PageNavigationalState
{
+ /**
+ * Returns the navigational state of a window or null if it does not exist.
+ *
+ * @param windowId the window
+ * @return the window navigational state
+ */
WindowNavigationalState getWindowNavigationalState(String windowId);
+ /**
+ * Update the navigational state of a window.
+ *
+ * @param windowId the window id
+ * @param windowState the window state
+ * @throws UnsupportedOperationException if the page state is read only
+ */
+ void setWindowNavigationalState(String windowId, WindowNavigationalState windowState)
throws UnsupportedOperationException;
+
+ /**
+ * Obtain the public navigational state of a window. The interpretation of what
should
+ * be retrieved is left up to the implementor. An example of implementation would use
the mapping
+ * between qnames and name provided by the referenced portlet info.
+ *
+ * @param windowId the window id
+ * @return the public navigational state
+ */
ParameterMap getPublicNavigationalState(String windowId);
- void setWindowNavigationalState(String windowId, WindowNavigationalState windowNS)
throws UnsupportedOperationException;
-
- void setPublicNavigationalState(QName name, String[] value) throws
UnsupportedOperationException;
-
- void removePublicNavigationalState(QName name) throws UnsupportedOperationException;
+ /**
+ * Update the public navigational state of a window. The interpretation of what should
be updated
+ * is left up to the implementor. An example of implementation would use the mapping
+ * between qname and name provided by the referenced portlet info.
+ *
+ * The update argument values with a length of zero should be treated as removals.
+ *
+ * @param windowId the window id
+ * @param update the updates
+ * @throws UnsupportedOperationException if the page state is read only
+ */
+ void setPublicNavigationalState(String windowId, Map<String, String[]> update)
throws UnsupportedOperationException;
}
Modified:
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/controller/state/StateControllerContext.java
===================================================================
---
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/controller/state/StateControllerContext.java 2008-02-05
17:52:29 UTC (rev 9781)
+++
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/controller/state/StateControllerContext.java 2008-02-05
18:14:56 UTC (rev 9782)
@@ -23,14 +23,27 @@
package org.jboss.portal.portlet.controller.state;
/**
+ * The context used by the controller to manage state.
+ *
* @author <a href="mailto:julien@jboss.org">Julien Viet</a>
* @version $Revision: 630 $
*/
public interface StateControllerContext
{
+ /**
+ * Clone an existing page state object.
+ *
+ * @param pageState the page state to clone
+ * @return the page state clone
+ */
PageNavigationalState clonePageState(PageNavigationalState pageState);
+ /**
+ * Create a new page state object.
+ *
+ * @return the new page state
+ */
PageNavigationalState createPageState();
}
Modified:
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/controller/state/WindowNavigationalState.java
===================================================================
---
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/controller/state/WindowNavigationalState.java 2008-02-05
17:52:29 UTC (rev 9781)
+++
modules/portlet/trunk/test/src/main/java/org/jboss/portal/portlet/controller/state/WindowNavigationalState.java 2008-02-05
18:14:56 UTC (rev 9782)
@@ -29,6 +29,8 @@
import java.io.Serializable;
/**
+ * The navigational state of a window that contains the portlet navigational state, the
mode and window state.
+ *
* @author <a href="mailto:julien@jboss.org">Julien Viet</a>
* @version $Revision: 1.1 $
*/
Show replies by date