[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