Author: thomas.heute(a)jboss.com
Date: 2008-06-10 17:19:03 -0400 (Tue, 10 Jun 2008)
New Revision: 10975
Modified:
branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/common/PageManagerBean.java
branches/JBoss_Portal_Branch_2_7/core-samples/src/main/org/jboss/portal/core/samples/basic/FSContentDrivenPortlet.java
branches/JBoss_Portal_Branch_2_7/core-samples/src/resources/portal-basic-samples-war/WEB-INF/portlet.xml
branches/JBoss_Portal_Branch_2_7/faces/src/main/org/jboss/portal/faces/component/portlet/JSFInvocation.java
branches/JBoss_Portal_Branch_2_7/faces/src/main/org/jboss/portal/faces/component/portlet/PortletHandler.java
branches/JBoss_Portal_Branch_2_7/faces/src/main/org/jboss/portal/faces/component/portlet/UIPortlet.java
Log:
- Fixing the CF/UIPortlet
- Still need to let pass parameters as Event payload
Modified:
branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/common/PageManagerBean.java
===================================================================
---
branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/common/PageManagerBean.java 2008-06-10
18:28:58 UTC (rev 10974)
+++
branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/common/PageManagerBean.java 2008-06-10
21:19:03 UTC (rev 10975)
@@ -399,7 +399,11 @@
Map renderParams = renderEvent.getParameterMap();
// Keep window name and region defined
- setWindowName(((String[])renderParams.get("windowName"))[0]);
+ String[] windowNames = ((String[])renderParams.get("windowName"));
+ if (windowNames != null && windowNames.length > 0)
+ {
+ setWindowName(windowNames[0]);
+ }
}
else if (event instanceof PortletEventEvent)
{
Modified:
branches/JBoss_Portal_Branch_2_7/core-samples/src/main/org/jboss/portal/core/samples/basic/FSContentDrivenPortlet.java
===================================================================
---
branches/JBoss_Portal_Branch_2_7/core-samples/src/main/org/jboss/portal/core/samples/basic/FSContentDrivenPortlet.java 2008-06-10
18:28:58 UTC (rev 10974)
+++
branches/JBoss_Portal_Branch_2_7/core-samples/src/main/org/jboss/portal/core/samples/basic/FSContentDrivenPortlet.java 2008-06-10
21:19:03 UTC (rev 10975)
@@ -31,6 +31,8 @@
import javax.portlet.PortletURL;
import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse;
+import javax.xml.namespace.QName;
+
import java.io.File;
import java.io.FileFilter;
import java.io.FileInputStream;
@@ -55,7 +57,10 @@
/** The edit_content mode. */
public static final PortletMode EDIT_CONTENT_MODE = new
PortletMode("edit_content");
+
+ private static final QName CONTENT_SELECT = new
QName("urn:jboss:portal:content", "select");
+
/** Additional dispatch that will call the
<code>doEditContent(RenderRequest,RenderResponse)</code> method. */
protected void doDispatch(RenderRequest req, RenderResponse resp) throws
PortletException, PortletSecurityException, IOException
{
@@ -72,6 +77,9 @@
/** Implements the edit content functionnality. */
protected void doEditContent(RenderRequest req, RenderResponse resp) throws
PortletException, PortletSecurityException, IOException
{
+
+ System.out.println("Render: " +
req.getParameter("current_dir"));
+
// Get the uri value optionally provided by the portal
String uri = req.getParameter("content.uri");
@@ -190,6 +198,9 @@
public void processAction(ActionRequest req, ActionResponse resp) throws
PortletException, PortletSecurityException, IOException
{
+
+ System.out.println("Action: " +
req.getParameter("content.uri"));
+
if (EDIT_CONTENT_MODE.equals(req.getPortletMode()))
{
String contentURI = req.getParameter("content.uri");
@@ -198,6 +209,7 @@
if (contentURI != null)
{
resp.setRenderParameter("content.uri", contentURI);
+ resp.setEvent(CONTENT_SELECT, contentURI);
}
}
}
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-06-10
18:28:58 UTC (rev 10974)
+++
branches/JBoss_Portal_Branch_2_7/core-samples/src/resources/portal-basic-samples-war/WEB-INF/portlet.xml 2008-06-10
21:19:03 UTC (rev 10975)
@@ -329,6 +329,7 @@
<keywords>sample,test</keywords>
</portlet-info>
<supported-public-render-parameter>uri</supported-public-render-parameter>
+ <supported-publishing-event
xmlns:x="urn:jboss:portal:content">x:select</supported-publishing-event>
</portlet>
<portlet>
<description>File Upload Portlet</description>
@@ -437,6 +438,11 @@
<qname xmlns:c="urn:jboss:portal:content">c:uri</qname>
</public-render-parameter>
+ <event-definition>
+ <qname xmlns:x="urn:jboss:portal:content">x:select</qname>
+ <value-type>java.lang.String</value-type>
+ </event-definition>
+
<!--
<custom-portlet-mode>
<name>ADMIN</name>
Modified:
branches/JBoss_Portal_Branch_2_7/faces/src/main/org/jboss/portal/faces/component/portlet/JSFInvocation.java
===================================================================
---
branches/JBoss_Portal_Branch_2_7/faces/src/main/org/jboss/portal/faces/component/portlet/JSFInvocation.java 2008-06-10
18:28:58 UTC (rev 10974)
+++
branches/JBoss_Portal_Branch_2_7/faces/src/main/org/jboss/portal/faces/component/portlet/JSFInvocation.java 2008-06-10
21:19:03 UTC (rev 10975)
@@ -22,6 +22,14 @@
******************************************************************************/
package org.jboss.portal.faces.component.portlet;
+import java.util.Iterator;
+import java.util.Map;
+
+import javax.faces.application.ViewHandler;
+import javax.faces.context.FacesContext;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
import org.jboss.portal.Mode;
import org.jboss.portal.WindowState;
import org.jboss.portal.common.invocation.resolver.MapAttributeResolver;
@@ -36,7 +44,7 @@
import org.jboss.portal.portlet.Portlet;
import org.jboss.portal.portlet.PortletInvoker;
import org.jboss.portal.portlet.PortletInvokerException;
-import org.jboss.portal.portlet.PortletURL;
+import org.jboss.portal.portlet.RenderURL;
import org.jboss.portal.portlet.StateString;
import org.jboss.portal.portlet.URLFormat;
import org.jboss.portal.portlet.bridge.JBossServletContextProvider;
@@ -55,12 +63,6 @@
import org.jboss.portal.portlet.spi.UserContext;
import org.jboss.portal.portlet.spi.WindowContext;
-import javax.faces.application.ViewHandler;
-import javax.faces.context.FacesContext;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.util.Map;
-
/**
* @author <a href="mailto:julien@jboss.org">Julien Viet</a>
* @version $Revision$
@@ -119,37 +121,48 @@
String renderURL(ContainerURL containerURL, Boolean wantSecure, Boolean
wantAuthenticated, boolean relative)
{
+
ViewHandler vh = faces.getApplication().getViewHandler();
String viewId = faces.getViewRoot().getViewId();
String clientId = uiportlet.getClientId(faces);
+
String actionURL = vh.getActionURL(faces, viewId);
actionURL = faces.getExternalContext().encodeActionURL(actionURL);
StringBuffer url = new StringBuffer(actionURL);
+
//
url.append("&").append(clientId).append("=jbp");
- PortletURL portletURL = (PortletURL)containerURL;
+ PortletRequestEncoder encoder = new PortletRequestEncoder();
- if (portletURL instanceof ActionURL)
+ if (containerURL instanceof ActionURL)
{
- ActionURL actionPortletURL = (ActionURL)portletURL;
-
- //
- PortletRequestEncoder encoder = new PortletRequestEncoder();
- encoder.encodeRender(actionPortletURL.getInteractionState(),
portletURL.getMode(), portletURL.getWindowState());
- for (Map.Entry entry : encoder.getQueryParameters().entrySet())
+ ActionURL actionURL2 = (ActionURL)containerURL;
+ encoder.encodeAction(null, actionURL2.getInteractionState(),
actionURL2.getMode(), actionURL2.getWindowState());
+ }
+ else if (containerURL instanceof RenderURL)
+ {
+ RenderURL renderURL = (RenderURL)containerURL;
+ encoder.encodeRender(renderURL.getNavigationalState(), renderURL.getMode(),
renderURL.getWindowState());
+ }
+
+ for (Iterator i = encoder.getQueryParameters().entrySet().iterator();
i.hasNext();)
+ {
+ Map.Entry entry = (Map.Entry)i.next();
+ String name = FastURLEncoder.getUTF8Instance().encode((String)entry.getKey());
+ String[] values = (String[])entry.getValue();
+ for (int j = 0; j < values.length; j++)
{
- String name =
FastURLEncoder.getUTF8Instance().encode((String)entry.getKey());
- String[] values = (String[])entry.getValue();
- for (String value : values)
- {
- url.append("&").append(name).append('=');
- FastURLEncoder.getUTF8Instance().encode(value, url);
- }
+ String value = values[j];
+ url.append("&").append(name).append('=');
+ FastURLEncoder.getUTF8Instance().encode(value, url);
}
}
-
+
+ // Hack for JSF postBack :-/ Not sure why it's needed though
+
url.append("&").append("javax.faces.ViewState").append("=").append(faces.getExternalContext().getRequestParameterMap().get("javax.faces.ViewState"));
+
//
return url.toString();
}
Modified:
branches/JBoss_Portal_Branch_2_7/faces/src/main/org/jboss/portal/faces/component/portlet/PortletHandler.java
===================================================================
---
branches/JBoss_Portal_Branch_2_7/faces/src/main/org/jboss/portal/faces/component/portlet/PortletHandler.java 2008-06-10
18:28:58 UTC (rev 10974)
+++
branches/JBoss_Portal_Branch_2_7/faces/src/main/org/jboss/portal/faces/component/portlet/PortletHandler.java 2008-06-10
21:19:03 UTC (rev 10975)
@@ -95,6 +95,18 @@
};
}
}
+ if ("onClick".equals(name))
+ {
+ final String s = attribute.getValue();
+ return new Metadata()
+ {
+ public void applyMetadata(FaceletContext ctx, Object instance)
+ {
+ UIPortlet portlet = (UIPortlet)instance;
+ portlet.setOnClick(s);
+ }
+ };
+ }
return null;
}
});
Modified:
branches/JBoss_Portal_Branch_2_7/faces/src/main/org/jboss/portal/faces/component/portlet/UIPortlet.java
===================================================================
---
branches/JBoss_Portal_Branch_2_7/faces/src/main/org/jboss/portal/faces/component/portlet/UIPortlet.java 2008-06-10
18:28:58 UTC (rev 10974)
+++
branches/JBoss_Portal_Branch_2_7/faces/src/main/org/jboss/portal/faces/component/portlet/UIPortlet.java 2008-06-10
21:19:03 UTC (rev 10975)
@@ -360,11 +360,13 @@
return null;
}
+ @Override
public String getFamily()
{
return "org.jboss.portal.core.Portlet";
}
+ @Override
public void broadcast(FacesEvent event) throws AbortProcessingException
{
if (event instanceof PortletEvent)
@@ -402,6 +404,7 @@
}
}
+ @Override
public Object saveState(FacesContext faces)
{
String opaqueValue = null;
@@ -426,6 +429,7 @@
return values;
}
+ @Override
public void restoreState(FacesContext faces, Object state)
{
Object values[] = (Object[])state;
@@ -445,6 +449,7 @@
onClick = (String)values[10];
}
+ @Override
public void decode(FacesContext faces)
{
String clientId = getClientId(faces);
@@ -471,25 +476,31 @@
}
}
+ faces.getExternalContext().getRequest();
+
// Decode the request
PortletRequestDecoder decoder = new PortletRequestDecoder();
+
decoder.decode(portletParams, null);
Mode mode = decoder.getMode();
WindowState windowState = decoder.getWindowState();
- Object request = externalContext.getRequest();
- if (request instanceof RenderRequest)
+ switch (decoder.getType())
{
- PortletRenderEvent prevent = new PortletRenderEvent(
+ case PortletRequestDecoder.RENDER_TYPE:
+
+ PortletRenderEvent prevent = new PortletRenderEvent(
this,
((ParametersStateString)decoder.getNavigationalState()).getParameters(),
mode,
windowState);
prevent.setPhaseId(PhaseId.INVOKE_APPLICATION);
queueEvent(prevent);
- }
- else if (request instanceof ActionRequest)
- {
+
+ break;
+ case PortletRequestDecoder.ACTION_TYPE:
+
+
if (mode == null)
{
mode = getInternalMode();
@@ -500,19 +511,17 @@
}
PortletActionEvent paevent = new PortletActionEvent(
this,
- ParameterMap.clone(((ActionRequest)request).getParameterMap()),
+
((ParametersStateString)decoder.getInteractionState()).getParameters(),
mode,
windowState);
paevent.setPhaseId(PhaseId.INVOKE_APPLICATION);
queueEvent(paevent);
+ break;
}
- else if (request instanceof EventRequest)
- {
- throw new NotYetImplemented();
- }
}
}
+ @Override
public void encodeBegin(FacesContext faces) throws IOException
{
Portlet portlet = getPortlet();
@@ -642,14 +651,19 @@
}
}
+ @Override
public void encodeChildren(FacesContext facesContext) throws IOException
{
+ System.out.println("encodeChildren");
}
+ @Override
public void encodeEnd(FacesContext facesContext) throws IOException
{
+ System.out.println("encodeEnd");
}
+ @Override
public String getRendererType()
{
// Returns null as we handle rendering ourselves