[jboss-cvs] jboss-portal/core/src/main/org/jboss/portal/core/model/portal ...
Julien Viet
julien at jboss.com
Wed Jul 12 05:29:54 EDT 2006
User: julien
Date: 06/07/12 05:29:54
Modified: core/src/main/org/jboss/portal/core/model/portal
PortalObjectURLFactory.java
Log:
- encode properly meta parameter in a URL
- take prefs metadata for instances and use them to personalize the portlet to instantiate
Revision Changes Path
1.20 +80 -64 jboss-portal/core/src/main/org/jboss/portal/core/model/portal/PortalObjectURLFactory.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: PortalObjectURLFactory.java
===================================================================
RCS file: /cvsroot/jboss/jboss-portal/core/src/main/org/jboss/portal/core/model/portal/PortalObjectURLFactory.java,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -b -r1.19 -r1.20
--- PortalObjectURLFactory.java 9 Jul 2006 00:35:44 -0000 1.19
+++ PortalObjectURLFactory.java 12 Jul 2006 09:29:54 -0000 1.20
@@ -31,6 +31,8 @@
import org.jboss.portal.portlet.ParametersStateString;
import org.jboss.portal.portlet.StateString;
import org.jboss.portal.portlet.PortletRequestDecoder;
+import org.jboss.portal.portlet.Mode;
+import org.jboss.portal.portlet.WindowState;
import org.jboss.portal.server.AbstractServerURL;
import org.jboss.portal.server.ServerInvocation;
import org.jboss.portal.server.ServerURL;
@@ -41,23 +43,20 @@
/**
* @author <a href="mailto:julien at jboss.org">Julien Viet</a>
- * @version $Revision: 1.19 $
+ * @version $Revision: 1.20 $
*/
public class PortalObjectURLFactory extends URLFactoryDelegate
{
- /**
- * .
- */
- private static final String[] COMMAND_CLASS_NAMES = {
+ /** . */
+ private static final String[] COMMAND_CLASS_NAMES =
+ {
RenderPageCommand.class.getName(),
InvokeWindowActionCommand.class.getName(),
InvokeWindowRenderCommand.class.getName()
};
- /**
- * .
- */
+ /** . */
private String prefix;
public String getPrefix()
@@ -81,6 +80,8 @@
{
throw new IllegalArgumentException("No null command accepted");
}
+
+ //
if (cmd instanceof RenderPageCommand)
{
RenderPageCommand rpCmd = (RenderPageCommand)cmd;
@@ -91,24 +92,12 @@
{
InvokeWindowCommand iwaCmd = (InvokeWindowCommand)cmd;
- //
- AbstractServerURL baseURL = getBaseURL(iwaCmd.getWindowRef());
+ // The base URL
+ AbstractServerURL serverURL = getBaseURL(iwaCmd.getWindowRef());
- // Compute the meta param
+ // The meta param
int meta = 0;
- //
- if (iwaCmd.getMode() != null)
- {
- baseURL.setParameter(PortletRequestDecoder.MODE_PARAMETER, iwaCmd.getMode().toString());
- }
-
- //
- if (iwaCmd.getWindowState() != null)
- {
- baseURL.setParameter(PortletRequestDecoder.WINDOW_STATE_PARAMETER, iwaCmd.getWindowState().toString());
- }
-
// Add parameters in the URL
Parameters parameters = null;
@@ -116,49 +105,49 @@
if (iwaCmd instanceof InvokeWindowActionCommand)
{
meta = PortletRequestDecoder.ACTION_MASK;
+
+ //
StateString interactionState = ((InvokeWindowActionCommand)iwaCmd).getInteractionState();
+ StateString navigationalState = ((InvokeWindowActionCommand)iwaCmd).getNavigationalState();
+
+ //
if (interactionState != null)
{
if (interactionState instanceof ParametersStateString)
{
+ if (navigationalState != null)
+ {
+ throw new IllegalArgumentException("Cannot handle case with both non opaque interaction and navigational state");
+ }
+
+ //
parameters = ((ParametersStateString)interactionState).getParametersValue();
}
else
{
meta |= PortletRequestDecoder.OPAQUE_MASK;
- baseURL.setParameter(PortletRequestDecoder.INTERACTION_STATE_PARAMETER, interactionState.getStringValue());
- }
- }
- // todo: check implementation
- StateString navigationalState = ((InvokeWindowActionCommand)iwaCmd).getNavigationalState();
+ // Set interaction state
+ serverURL.setParameterValue(PortletRequestDecoder.INTERACTION_STATE_PARAMETER, interactionState.getStringValue());
+
+ // We may have navigational state
if (navigationalState != null)
{
- if (navigationalState instanceof ParametersStateString)
- {
- if (parameters != null)
- {
- parameters.mergeWith(((ParametersStateString)navigationalState).getParametersValue());
+ serverURL.setParameterValue(PortletRequestDecoder.NAVIGATIONAL_STATE_PARAMETER, navigationalState.getStringValue());
}
- else
- {
- parameters = ((ParametersStateString)navigationalState).getParametersValue();
- }
- }
- else
- {
- meta |= PortletRequestDecoder.OPAQUE_MASK;
- baseURL.setParameter(PortletRequestDecoder.NAVIGATIONAL_STATE_PARAMETER, navigationalState.getStringValue());
}
-// throw new IllegalArgumentException("Action url has a non null navigational state, code not implemented yet");
}
}
else if (iwaCmd instanceof InvokeWindowRenderCommand)
{
+ meta = PortletRequestDecoder.RENDER_MASK;
+
+ //
StateString navigationalState = ((InvokeWindowRenderCommand)iwaCmd).getNavigationalState();
+
+ //
if (navigationalState != null)
{
- meta = PortletRequestDecoder.RENDER_MASK;
if (navigationalState instanceof ParametersStateString)
{
parameters = ((ParametersStateString)navigationalState).getParametersValue();
@@ -166,39 +155,49 @@
else
{
meta |= PortletRequestDecoder.OPAQUE_MASK;
- baseURL.setParameter(PortletRequestDecoder.NAVIGATIONAL_STATE_PARAMETER, navigationalState.getStringValue());
+
+ //
+ serverURL.setParameterValue(PortletRequestDecoder.NAVIGATIONAL_STATE_PARAMETER, navigationalState.getStringValue());
}
}
}
- // Set the mask in needed
- if (meta != 0)
+ // Add the parameters
+ if (parameters != null)
+ {
+ for (Iterator i = parameters.getMap().entrySet().iterator(); i.hasNext();)
{
- if (iwaCmd.getMode() != null)
+ Map.Entry entry = (Map.Entry)i.next();
+ String name = (String)entry.getKey();
+ String[] values = (String[])entry.getValue();
+ serverURL.setParameterValues(name, values);
+ }
+ }
+
+ //
+ Mode mode = iwaCmd.getMode();
+ if (mode != null)
{
meta |= PortletRequestDecoder.MODE_MASK;
+ setMetaParameter(serverURL, PortletRequestDecoder.MODE_PARAMETER, mode.toString());
}
- if (iwaCmd.getWindowState() != null)
+
+ //
+ WindowState windowState = iwaCmd.getWindowState();
+ if (windowState != null)
{
meta |= PortletRequestDecoder.WINDOW_STATE_MASK;
- }
- baseURL.setParameter(PortletRequestDecoder.META_PARAMETER, Integer.toHexString(meta));
+ setMetaParameter(serverURL, PortletRequestDecoder.WINDOW_STATE_PARAMETER, windowState.toString());
}
//
- if (parameters != null)
- {
- for (Iterator i = parameters.getMap().entrySet().iterator(); i.hasNext();)
+ if (meta != 0)
{
- Map.Entry entry = (Map.Entry)i.next();
- String name = (String)entry.getKey();
- String[] values = (String[])entry.getValue();
- baseURL.setParameter(name, values);
- }
+ setMetaParameter(serverURL, PortletRequestDecoder.META_PARAMETER, Integer.toHexString(meta));
}
//
- return baseURL;
+ return serverURL;
}
else
{
@@ -206,7 +205,24 @@
}
}
- public AbstractServerURL getBaseURL(String objectRef)
+ private void setMetaParameter(AbstractServerURL serverURL, String name, String value)
+ {
+ String[] values = serverURL.getParameterValues(name);
+ if (values == null)
+ {
+ values = new String[]{value};
+ }
+ else
+ {
+ String[] tmp = new String[values.length + 1];
+ System.arraycopy(values, 0, tmp, 1, values.length);
+ tmp[0] = value;
+ values = tmp;
+ }
+ serverURL.setParameterValues(name, values);
+ }
+
+ private AbstractServerURL getBaseURL(String objectRef)
{
//
StringBuffer buffer = new StringBuffer();
More information about the jboss-cvs-commits
mailing list