Author: julien(a)jboss.com
Date: 2008-04-13 12:45:00 -0400 (Sun, 13 Apr 2008)
New Revision: 10556
Added:
branches/JBoss_Portal_Branch_2_7/core-samples/src/main/org/jboss/portal/core/samples/basic/PublicParametersPortlet.java
Modified:
branches/JBoss_Portal_Branch_2_7/core-samples/src/resources/portal-basic-samples-war/WEB-INF/default-object.xml
branches/JBoss_Portal_Branch_2_7/core-samples/src/resources/portal-basic-samples-war/WEB-INF/portlet-instances.xml
branches/JBoss_Portal_Branch_2_7/core-samples/src/resources/portal-basic-samples-war/WEB-INF/portlet.xml
branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/controller/portlet/ControllerPageNavigationalState.java
branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/model/portal/PortalObjectURLFactory.java
branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/model/portal/command/action/InvokePortletWindowActionCommand.java
branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/model/portal/command/action/InvokePortletWindowCommand.java
branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/model/portal/command/action/InvokePortletWindowRenderCommand.java
Log:
- fixes a few bugs
- embryo of a public parameter portlet to show various use cases
Modified:
branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/controller/portlet/ControllerPageNavigationalState.java
===================================================================
---
branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/controller/portlet/ControllerPageNavigationalState.java 2008-04-13
12:59:04 UTC (rev 10555)
+++
branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/controller/portlet/ControllerPageNavigationalState.java 2008-04-13
16:45:00 UTC (rev 10556)
@@ -30,6 +30,7 @@
import org.jboss.portal.common.util.ParameterMap;
import org.jboss.portal.core.navstate.NavigationalStateContext;
import org.jboss.portal.core.model.portal.Window;
+import org.jboss.portal.core.model.portal.PortalObjectId;
import javax.xml.namespace.QName;
import java.util.Set;
@@ -172,16 +173,20 @@
Window window = controllerContext.getWindow(windowName);
//
- org.jboss.portal.core.model.portal.navstate.WindowNavigationalState wns =
navigationalStateContext.getWindowNavigationalState(window.getId().toString());
+ if (window != null)
+ {
+ String windowId = window.getId().toString();
+ org.jboss.portal.core.model.portal.navstate.WindowNavigationalState wns =
navigationalStateContext.getWindowNavigationalState(windowId);
- //
- if (wns == null)
- {
- return null;
+ //
+ if (wns != null)
+ {
+ return new WindowNavigationalState(wns.getContentState(), wns.getMode(),
wns.getWindowState());
+ }
}
//
- return new WindowNavigationalState(wns.getContentState(), wns.getMode(),
wns.getWindowState());
+ return null;
}
public void setWindowNavigationalState(String windowName, WindowNavigationalState
windowNavigationalState) throws IllegalArgumentException, IllegalStateException
@@ -192,13 +197,17 @@
}
//
- if (updates == null)
+ Window window = controllerContext.getWindow(windowName);
+ if (window != null)
{
- updates = new HashMap<String, WindowNavigationalState>();
+ if (updates == null)
+ {
+ updates = new HashMap<String, WindowNavigationalState>();
+ }
+
+ //
+ updates.put(windowName, windowNavigationalState);
}
-
- //
- updates.put(windowName, windowNavigationalState);
}
/**
Modified:
branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/model/portal/PortalObjectURLFactory.java
===================================================================
---
branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/model/portal/PortalObjectURLFactory.java 2008-04-13
12:59:04 UTC (rev 10555)
+++
branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/model/portal/PortalObjectURLFactory.java 2008-04-13
16:45:00 UTC (rev 10556)
@@ -150,7 +150,7 @@
//
Mode mode = ipwCmd.getMode();
WindowState windowState = ipwCmd.getWindowState();
- StateString navigationalState =
((InvokePortletWindowRenderCommand)iwCmd).getNavigationalState();
+ StateString navigationalState =
((InvokePortletWindowCommand)iwCmd).getNavigationalState();
//
if (iwCmd instanceof InvokePortletWindowActionCommand)
Modified:
branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/model/portal/command/action/InvokePortletWindowActionCommand.java
===================================================================
---
branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/model/portal/command/action/InvokePortletWindowActionCommand.java 2008-04-13
12:59:04 UTC (rev 10555)
+++
branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/model/portal/command/action/InvokePortletWindowActionCommand.java 2008-04-13
16:45:00 UTC (rev 10556)
@@ -49,9 +49,6 @@
private static final CommandInfo info = new ActionCommandInfo(false);
/** . */
- private StateString navigationalState;
-
- /** . */
private StateString interactionState;
/** . */
@@ -69,19 +66,13 @@
ParameterMap formParameters)
throws IllegalArgumentException
{
- super(windowId, mode, windowState);
+ super(windowId, mode, windowState, navigationalState);
//
- this.navigationalState = navigationalState;
this.interactionState = interactionState;
this.formParameters = formParameters;
}
- public StateString getNavigationalState()
- {
- return navigationalState;
- }
-
public StateString getInteractionState()
{
return interactionState;
Modified:
branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/model/portal/command/action/InvokePortletWindowCommand.java
===================================================================
---
branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/model/portal/command/action/InvokePortletWindowCommand.java 2008-04-13
12:59:04 UTC (rev 10555)
+++
branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/model/portal/command/action/InvokePortletWindowCommand.java 2008-04-13
16:45:00 UTC (rev 10556)
@@ -24,6 +24,7 @@
import org.jboss.portal.Mode;
import org.jboss.portal.WindowState;
+import org.jboss.portal.portlet.StateString;
import org.jboss.portal.core.model.portal.PortalObjectId;
/**
@@ -39,7 +40,14 @@
/** . */
protected final WindowState windowState;
- protected InvokePortletWindowCommand(PortalObjectId windowId, Mode mode, WindowState
windowState)
+ /** . */
+ protected final StateString navigationalState;
+
+ protected InvokePortletWindowCommand(
+ PortalObjectId windowId,
+ Mode mode,
+ WindowState windowState,
+ StateString navigationalState)
throws IllegalArgumentException
{
super(windowId);
@@ -47,8 +55,14 @@
//
this.mode = mode;
this.windowState = windowState;
+ this.navigationalState = navigationalState;
}
+ public StateString getNavigationalState()
+ {
+ return navigationalState;
+ }
+
public Mode getMode()
{
return mode;
Modified:
branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/model/portal/command/action/InvokePortletWindowRenderCommand.java
===================================================================
---
branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/model/portal/command/action/InvokePortletWindowRenderCommand.java 2008-04-13
12:59:04 UTC (rev 10555)
+++
branches/JBoss_Portal_Branch_2_7/core/src/main/org/jboss/portal/core/model/portal/command/action/InvokePortletWindowRenderCommand.java 2008-04-13
16:45:00 UTC (rev 10556)
@@ -62,9 +62,6 @@
private static final CommandInfo info = new ActionCommandInfo(true);
/** . */
- protected final StateString navigationalState;
-
- /** . */
protected NavigationInfo navigationInfo;
public InvokePortletWindowRenderCommand(
@@ -74,10 +71,7 @@
StateString navigationalState)
throws IllegalArgumentException
{
- super(windowId, mode, windowState);
-
- //
- this.navigationalState = navigationalState;
+ super(windowId, mode, windowState, navigationalState);
}
public InvokePortletWindowRenderCommand(
@@ -86,17 +80,9 @@
WindowState windowState)
throws IllegalArgumentException
{
- super(windowId, mode, windowState);
-
- //
- this.navigationalState = null;
+ super(windowId, mode, windowState, null);
}
- public StateString getNavigationalState()
- {
- return navigationalState;
- }
-
public CommandInfo getInfo()
{
return info;
Added:
branches/JBoss_Portal_Branch_2_7/core-samples/src/main/org/jboss/portal/core/samples/basic/PublicParametersPortlet.java
===================================================================
---
branches/JBoss_Portal_Branch_2_7/core-samples/src/main/org/jboss/portal/core/samples/basic/PublicParametersPortlet.java
(rev 0)
+++
branches/JBoss_Portal_Branch_2_7/core-samples/src/main/org/jboss/portal/core/samples/basic/PublicParametersPortlet.java 2008-04-13
16:45:00 UTC (rev 10556)
@@ -0,0 +1,122 @@
+/******************************************************************************
+ * JBoss, a division of Red Hat *
+ * Copyright 2008, Red Hat Middleware, LLC, and individual *
+ * contributors as indicated by the @authors tag. See the *
+ * copyright.txt in the distribution for a full listing of *
+ * individual contributors. *
+ * *
+ * This is free software; you can redistribute it and/or modify it *
+ * under the terms of the GNU Lesser General Public License as *
+ * published by the Free Software Foundation; either version 2.1 of *
+ * the License, or (at your option) any later version. *
+ * *
+ * This software is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
+ * Lesser General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU Lesser General Public *
+ * License along with this software; if not, write to the Free *
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA *
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org. *
+ ******************************************************************************/
+package org.jboss.portal.core.samples.basic;
+
+import javax.portlet.Portlet;
+import javax.portlet.PortletConfig;
+import javax.portlet.PortletException;
+import javax.portlet.ActionRequest;
+import javax.portlet.ActionResponse;
+import javax.portlet.RenderRequest;
+import javax.portlet.RenderResponse;
+import javax.portlet.PortletURL;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.util.Enumeration;
+import java.util.Map;
+
+/**
+ * @author <a href="mailto:julien@jboss-portal.org">Julien
Viet</a>
+ * @version $Revision: 630 $
+ */
+public class PublicParametersPortlet implements Portlet
+{
+
+ /** . */
+ private PortletConfig config;
+
+ public void init(PortletConfig config) throws PortletException
+ {
+ this.config = config;
+ }
+
+ public void processAction(ActionRequest req, ActionResponse resp) throws
PortletException, IOException
+ {
+ Map<String, String[]> publicParameters = req.getPublicParameterMap();
+ for (Map.Entry<String, String[]> actionParameter :
req.getPrivateParameterMap().entrySet())
+ {
+ String parameterName = actionParameter.getKey();
+ String parameterValue = actionParameter.getValue()[0];
+ String[] publicValues = publicParameters.get(parameterName);
+
+ //
+ if (parameterValue.length() > 0)
+ {
+ if (publicValues == null && !publicValues[0].equals(parameterValue))
+ {
+ resp.setRenderParameter(parameterName, parameterValue);
+ }
+ }
+ else if (publicValues != null)
+ {
+ resp.removePublicRenderParameter(parameterName);
+ }
+ }
+ }
+
+ public void render(RenderRequest req, RenderResponse resp) throws PortletException,
IOException
+ {
+
+ PrintWriter writer = resp.getWriter();
+
+ PortletURL actionURL = resp.createActionURL();
+
+ writer.print("<form action=\"" + actionURL + "\"
method=\"POST\"><table>");
+
+ for (Enumeration<String> e =
config.getPublicRenderParameterNames();e.hasMoreElements();)
+ {
+ String parameterName = e.nextElement();
+
+ //
+ String parameterValue = req.getParameter(parameterName);
+
+ //
+ writer.print("<tr><td>" + parameterName +
"</td><td>");
+
+ if (parameterValue != null)
+ {
+ writer.print("<input type=\"text\" width=\"36\"
value=\"" + parameterValue + "\"/>");
+ }
+ else
+ {
+ writer.print("<input type=\"text\" width=\"36\"
value=\"\"/>");
+ }
+ writer.println();
+
+ writer.println("</td>");
+
+ }
+
+ writer.println("<input type=\"submit\"
value=\"Update\"/>");
+
+ writer.print("</table></form>");
+
+ //
+ writer.close();
+ }
+
+ public void destroy()
+ {
+ this.config = null;
+ }
+}
Modified:
branches/JBoss_Portal_Branch_2_7/core-samples/src/resources/portal-basic-samples-war/WEB-INF/default-object.xml
===================================================================
---
branches/JBoss_Portal_Branch_2_7/core-samples/src/resources/portal-basic-samples-war/WEB-INF/default-object.xml 2008-04-13
12:59:04 UTC (rev 10555)
+++
branches/JBoss_Portal_Branch_2_7/core-samples/src/resources/portal-basic-samples-war/WEB-INF/default-object.xml 2008-04-13
16:45:00 UTC (rev 10556)
@@ -621,6 +621,27 @@
<height>0</height>
</window>
</page>
+ <page>
+ <page-name>public parameters test</page-name>
+ <window>
+ <window-name>PublicParametersPortletWindow1</window-name>
+ <instance-ref>PublicParametersPortletInstance1</instance-ref>
+ <region>left</region>
+ <height>0</height>
+ </window>
+ <window>
+ <window-name>PublicParametersPortletWindow2</window-name>
+ <instance-ref>PublicParametersPortletInstance2</instance-ref>
+ <region>center</region>
+ <height>0</height>
+ </window>
+ <window>
+ <window-name>PublicParametersPortletWindow3</window-name>
+ <instance-ref>PublicParametersPortletInstance3</instance-ref>
+ <region>center</region>
+ <height>1</height>
+ </window>
+ </page>
</page>
</deployment>
</deployments>
Modified:
branches/JBoss_Portal_Branch_2_7/core-samples/src/resources/portal-basic-samples-war/WEB-INF/portlet-instances.xml
===================================================================
---
branches/JBoss_Portal_Branch_2_7/core-samples/src/resources/portal-basic-samples-war/WEB-INF/portlet-instances.xml 2008-04-13
12:59:04 UTC (rev 10555)
+++
branches/JBoss_Portal_Branch_2_7/core-samples/src/resources/portal-basic-samples-war/WEB-INF/portlet-instances.xml 2008-04-13
16:45:00 UTC (rev 10556)
@@ -157,4 +157,22 @@
<portlet-ref>WindowIDPortlet</portlet-ref>
</instance>
</deployment>
+ <deployment>
+ <instance>
+ <instance-id>PublicParametersPortletInstance1</instance-id>
+ <portlet-ref>PublicParametersPortlet1</portlet-ref>
+ </instance>
+ </deployment>
+ <deployment>
+ <instance>
+ <instance-id>PublicParametersPortletInstance2</instance-id>
+ <portlet-ref>PublicParametersPortlet2</portlet-ref>
+ </instance>
+ </deployment>
+ <deployment>
+ <instance>
+ <instance-id>PublicParametersPortletInstance3</instance-id>
+ <portlet-ref>PublicParametersPortlet3</portlet-ref>
+ </instance>
+ </deployment>
</deployments>
\ No newline at end of file
Modified:
branches/JBoss_Portal_Branch_2_7/core-samples/src/resources/portal-basic-samples-war/WEB-INF/portlet.xml
===================================================================
---
branches/JBoss_Portal_Branch_2_7/core-samples/src/resources/portal-basic-samples-war/WEB-INF/portlet.xml 2008-04-13
12:59:04 UTC (rev 10555)
+++
branches/JBoss_Portal_Branch_2_7/core-samples/src/resources/portal-basic-samples-war/WEB-INF/portlet.xml 2008-04-13
16:45:00 UTC (rev 10556)
@@ -22,11 +22,10 @@
~ 02110-1301 USA, or see the FSF site:
http://www.fsf.org. ~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
-<portlet-app
-
xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd"
-
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-
xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_1...
http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd"
- version="1.0">
+<portlet-app
xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd"
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+
xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_2...
http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd"
+ version="2.0">
<portlet>
<description>Mode Portlet</description>
<portlet-name>ModePortlet</portlet-name>
@@ -353,9 +352,72 @@
<keywords>sample,test</keywords>
</portlet-info>
</portlet>
+ <portlet>
+ <description>Portlet that manipulates its public render
parameters</description>
+ <portlet-name>PublicParametersPortlet1</portlet-name>
+ <display-name>Public Parameters Portlet 1</display-name>
+
<portlet-class>org.jboss.portal.core.samples.basic.PublicParametersPortlet</portlet-class>
+ <supports>
+ <mime-type>text/html</mime-type>
+ </supports>
+ <portlet-info>
+ <title>Public Parameters Portlet</title>
+ <keywords>sample,test</keywords>
+ </portlet-info>
+
<supported-public-render-parameter>foo</supported-public-render-parameter>
+
<supported-public-render-parameter>bar</supported-public-render-parameter>
+ </portlet>
+ <portlet>
+ <description>Portlet that manipulates its public render
parameters</description>
+ <portlet-name>PublicParametersPortlet2</portlet-name>
+ <display-name>Public Parameters Portlet 2</display-name>
+
<portlet-class>org.jboss.portal.core.samples.basic.PublicParametersPortlet</portlet-class>
+ <supports>
+ <mime-type>text/html</mime-type>
+ </supports>
+ <portlet-info>
+ <title>Public Parameters Portlet</title>
+ <keywords>sample,test</keywords>
+ </portlet-info>
+
<supported-public-render-parameter>foo</supported-public-render-parameter>
+
<supported-public-render-parameter>juu</supported-public-render-parameter>
+ </portlet>
+ <portlet>
+ <description>Portlet that manipulates its public render
parameters</description>
+ <portlet-name>PublicParametersPortlet3</portlet-name>
+ <display-name>Public Parameters Portlet 3</display-name>
+
<portlet-class>org.jboss.portal.core.samples.basic.PublicParametersPortlet</portlet-class>
+ <supports>
+ <mime-type>text/html</mime-type>
+ </supports>
+ <portlet-info>
+ <title>Public Parameters Portlet</title>
+ <keywords>sample,test</keywords>
+ </portlet-info>
+
<supported-public-render-parameter>bar</supported-public-render-parameter>
+
<supported-public-render-parameter>juu</supported-public-render-parameter>
+ </portlet>
+
+ <public-render-parameter>
+ <name>foo</name>
+ <identifier>foo</identifier>
+ </public-render-parameter>
+
+ <public-render-parameter>
+ <name>bar</name>
+ <identifier>bar</identifier>
+ </public-render-parameter>
+
+ <public-render-parameter>
+ <name>juu</name>
+ <identifier>juu</identifier>
+ </public-render-parameter>
+
+ <!--
<custom-portlet-mode>
<name>ADMIN</name>
</custom-portlet-mode>
+-->
<user-attribute>
<name>user.name.nickName</name>
</user-attribute>