[jboss-cvs] jboss-portal/core/src/main/org/jboss/portal/core/aspects/controller ...

Julien Viet julien at jboss.com
Mon Jul 31 15:29:46 EDT 2006


  User: julien  
  Date: 06/07/31 15:29:46

  Modified:    core/src/main/org/jboss/portal/core/aspects/controller  
                        EventBroadcasterInterceptor.java
                        PageNavigationInterceptor.java
  Log:
  - moved the portal api in the api module in order to have a standalone jar
  - JBPORTAL-631 : Try to move org.jboss.portlet package to the api module
  - IPC support in 2.4 (only for local portlets)
  
  Revision  Changes    Path
  1.20      +223 -93   jboss-portal/core/src/main/org/jboss/portal/core/aspects/controller/EventBroadcasterInterceptor.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: EventBroadcasterInterceptor.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-portal/core/src/main/org/jboss/portal/core/aspects/controller/EventBroadcasterInterceptor.java,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -b -r1.19 -r1.20
  --- EventBroadcasterInterceptor.java	31 Jul 2006 00:20:49 -0000	1.19
  +++ EventBroadcasterInterceptor.java	31 Jul 2006 19:29:46 -0000	1.20
  @@ -27,17 +27,25 @@
   import org.jboss.portal.core.command.ControllerCommand;
   import org.jboss.portal.core.command.InvokeWindowRenderCommand;
   import org.jboss.portal.core.command.InvokeWindowActionCommand;
  +import org.jboss.portal.core.command.WindowCommand;
   import org.jboss.portal.core.api.JBossPortalNode;
   import org.jboss.portal.common.invocation.InvocationException;
   import org.jboss.portal.portlet.ParametersStateString;
   import org.jboss.portal.portlet.StateString;
   import org.jboss.portal.core.api.Navigation;
  +import org.jboss.portal.core.model.instance.Instance;
   import org.jboss.portal.portlet.Parameters;
  -import org.jboss.portlet.PortalNode;
  -import org.jboss.portlet.event.node.PortalNodeEvent;
  -import org.jboss.portlet.event.node.WindowActionEvent;
  -import org.jboss.portlet.event.node.WindowNavigationEvent;
  -import org.jboss.portlet.event.node.WindowRenderEvent;
  +import org.jboss.portal.portlet.Portlet;
  +import org.jboss.portal.portlet.PortletInvokerException;
  +import org.jboss.portal.Mode;
  +import org.jboss.portal.WindowState;
  +import org.jboss.portal.node.PortalNode;
  +import org.jboss.portal.node.event.PortalNodeEvent;
  +import org.jboss.portal.common.util.LazyMap;
  +import org.jboss.portal.node.event.WindowActionEvent;
  +import org.jboss.portal.node.event.WindowNavigationEvent;
  +import org.jboss.portal.node.event.WindowRenderEvent;
  +import org.jboss.portal.node.event.WindowEvent;
   import org.apache.log4j.Logger;
   
   /**
  @@ -54,13 +62,13 @@
         JBossPortalNode node = Navigation.getCurrentNode();
   
         //
  -      PortalNodeEvent event = toEvent(cmd, node);
  +      PortalNodeEvent event = createEvent(cmd, node);
         PortalNodeEvent nextEvent = null;
         if (event != null)
         {
            try
            {
  -            nextEvent = node.firePreEvent(event);
  +            nextEvent = node.fireEvent(event);
            }
            catch (Exception e)
            {
  @@ -70,73 +78,179 @@
   
         //
         ControllerCommand redirection = null;
  -      if (nextEvent != null && nextEvent != event)
  +      if (nextEvent instanceof WindowEvent)
         {
  -         redirection = toCommand(nextEvent);
  -      }
  +         WindowEvent we = (WindowEvent)nextEvent;
  +
  +
  +
  +         JBossPortalNode nextNode = (JBossPortalNode)we.getNode();
  +         String nodeRef = nextNode.getRef();
  +         Mode mode = we.getMode();
  +         WindowState windowState = we.getWindowState();
  +         if (nextEvent instanceof WindowActionEvent)
  +         {
  +            WindowActionEvent wae = (WindowActionEvent)nextEvent;
  +            Map params = wae.getParameters();
   
         //
  -      if (redirection != null)
  +            Parameters interactionParams = null;
  +            if (params instanceof LazyParameterMap)
         {
  -         cmd.getContext().forward(redirection);
  +               interactionParams = (Parameters)((LazyParameterMap)params).createDelegate();
         }
         else
         {
  -         cmd.invokeNext();
  +               interactionParams = asParameters(params);
  +            }
   
            //
  -         if (event != null)
  +            if (interactionParams != null)
            {
  -            try
  +               redirection = new InvokeWindowActionCommand(
  +                  nodeRef,
  +                  mode,
  +                  windowState,
  +                  null,
  +                  new ParametersStateString(interactionParams),
  +                  null);
  +            }
  +         }
  +         else if (nextEvent instanceof WindowRenderEvent)
               {
  -               nextEvent = node.firePostEvent(event);
  +            WindowRenderEvent wre = (WindowRenderEvent)nextEvent;
  +            Map params = wre.getParameters();
  +
  +            //
  +            Parameters navigationalParams = asParameters(params);
  +
  +            //
  +            if (navigationalParams != null)
  +            {
  +               redirection = new InvokeWindowRenderCommand(
  +                  nodeRef,
  +                  mode,
  +                  windowState,
  +                  new ParametersStateString(navigationalParams));
               }
  -            catch (Exception e)
  +         }
  +         else if (nextEvent instanceof WindowNavigationEvent)
               {
  -               log.error("Error when dispatching post event " + event, e);
  +            redirection = new InvokeWindowRenderCommand(
  +               nodeRef,
  +               mode,
  +               windowState);
               }
  -
  -            if (nextEvent != null && nextEvent != event)
  +      }
  +      else
  +      {
  +         if (event instanceof WindowActionEvent)
  +         {
  +            WindowActionEvent wae = (WindowActionEvent)event;
  +            InvokeWindowActionCommand iwac = (InvokeWindowActionCommand)cmd;
  +            Map params = wae.getParameters();
  +            if (params instanceof LazyParameterMap)
               {
  -               redirection = toCommand(nextEvent);
  +               LazyParameterMap lpm = (LazyParameterMap)params;
  +               if (lpm.isModified())
  +               {
  +                  iwac.setInteractionState(new ParametersStateString(lpm.params));
  +                  iwac.setFormParameters(null);
  +               }
  +            }
  +         }
  +      }
   
                  //
                  if (redirection != null)
                  {
                     cmd.getContext().forward(redirection);
                  }
  +      else
  +      {
  +         cmd.invokeNext();
               }
            }
  -      }
  -   }
   
  -   private PortalNodeEvent toEvent(ControllerCommand cmd, PortalNode node)
  +   private PortalNodeEvent createEvent(ControllerCommand cmd, PortalNode node)
  +   {
  +      if (cmd instanceof WindowCommand)
  +      {
  +         WindowCommand wc = (WindowCommand)cmd;
  +
  +         // Get the instance
  +         Instance instance = wc.getInstance();
  +         try
  +         {
  +            // Get the portlet
  +            Portlet portlet = instance.getPortlet();
  +            if (portlet != null && portlet.isRemote() == false)
      {
         if (cmd instanceof InvokeWindowActionCommand)
         {
  +                  InvokeWindowActionCommand iwac = (InvokeWindowActionCommand)wc;
  +
  +                  //
  +                  Parameters formParams = iwac.getFormParameters();
  +
  +                  //
  +                  Parameters interactionParams = null;
  +                  if (iwac.getInteractionState() instanceof ParametersStateString)
  +                  {
  +                     interactionParams = ((ParametersStateString)iwac.getInteractionState()).getParameters();
  +                  }
  +
  +                  //
  +                  Map params = null;
  +                  if (interactionParams != null)
  +                  {
  +                     if (formParams != null)
  +                     {
  +                        params = new LazyParameterMap(interactionParams, formParams);
  +                     }
  +                     else
  +                     {
  +                        params = interactionParams;
  +                     }
  +                  }
  +                  else
  +                  {
  +                     if (formParams != null)
  +                     {
  +                        params = formParams;
  +                     }
  +                     else
  +                     {
  +                        params = new Parameters();
  +                     }
  +                  }
  +
  +                  //
            WindowActionEvent action = new WindowActionEvent(node);
  -         InvokeWindowActionCommand iwac = (InvokeWindowActionCommand)cmd;
            action.setMode(iwac.getMode());
            action.setWindowState(iwac.getWindowState());
  -         /**
  -          * This needs to be verified
  -          */
  -         Parameters params = iwac.getForm();
            action.setParameters(params);
            return action;
         }
         else if (cmd instanceof InvokeWindowRenderCommand)
         {
  -         InvokeWindowRenderCommand iwrc = (InvokeWindowRenderCommand)cmd;
  +                  InvokeWindowRenderCommand iwrc = (InvokeWindowRenderCommand)wc;
            StateString navigationalState = iwrc.getNavigationalState();
  +
  +                  //
  +                  if (navigationalState != null)
  +                  {
  +                     Map params = null;
            if (navigationalState instanceof ParametersStateString)
            {
  -            ParametersStateString jbossNavigationalState = (ParametersStateString)navigationalState;
  +                        params = ((ParametersStateString)navigationalState).getParameters();
  +                     }
  +
  +                     //
               WindowRenderEvent render = new WindowRenderEvent(node);
               render.setMode(iwrc.getMode());
               render.setWindowState(iwrc.getWindowState());
  -            Map map = jbossNavigationalState.getMap();
  -            render.setParameters(map);
  +                     render.setParameters(params);
               return render;
            }
            else
  @@ -147,50 +261,66 @@
               return navigation;
            }
         }
  -      else
  +            }
  +         }
  +         catch (PortletInvokerException ignore)
         {
  -         return null;
  +
         }
      }
  +      return null;
  +   }
   
  -   public ControllerCommand toCommand(PortalNodeEvent event)
  +   private Parameters asParameters(Map map)
      {
  -      if (event instanceof WindowActionEvent)
  +      if (map == null)
         {
  -         WindowActionEvent wae = (WindowActionEvent)event;
  -         JBossPortalNode node = (JBossPortalNode)event.getNode();
  -/*
  -         return new InvokeWindowActionCommand(
  -            node.getRef(),
  -            wae.getMode(),
  -            wae.getWindowState(),
  -            new Parameters(wae.getParameters()));
  -*/
  -         // fixme
            return null;
         }
  -      else if (event instanceof WindowRenderEvent)
  +      if (map instanceof Parameters)
         {
  -         WindowRenderEvent wae = (WindowRenderEvent)event;
  -         JBossPortalNode node = (JBossPortalNode)event.getNode();
  -         return new InvokeWindowRenderCommand(
  -            node.getRef(),
  -            wae.getMode(),
  -            wae.getWindowState(),
  -            new ParametersStateString(new Parameters(wae.getParameters())));
  -      }
  -      else if (event instanceof WindowNavigationEvent)
  -      {
  -         WindowNavigationEvent wae = (WindowNavigationEvent)event;
  -         JBossPortalNode node = (JBossPortalNode)event.getNode();
  -         return new InvokeWindowRenderCommand(
  -            node.getRef(),
  -            wae.getMode(),
  -            wae.getWindowState());
  +         return (Parameters)map;
         }
         else
         {
  +         try
  +         {
  +            return new Parameters(map);
  +         }
  +         catch (IllegalArgumentException e)
  +         {
  +            log.error("Window action event received wrong parameter set", e);
            return null;
         }
      }
  +   }
  +
  +   private static class LazyParameterMap extends LazyMap
  +   {
  +      /** . */
  +      private Parameters formParams;
  +
  +      /** . */
  +      private Parameters interactionParams;
  +
  +      /** . */
  +      private Parameters params;
  +
  +      public LazyParameterMap(Parameters interactionParams, Parameters formParams)
  +      {
  +         this.formParams = formParams;
  +         this.interactionParams = interactionParams;
  +         this.params = null;
  +      }
  +
  +      protected Map createDelegate()
  +      {
  +         if (params == null)
  +         {
  +            params = new Parameters(interactionParams);
  +            params.append(formParams);
  +         }
  +         return params;
  +      }
  +   }
   }
  \ No newline at end of file
  
  
  
  1.16      +3 -3      jboss-portal/core/src/main/org/jboss/portal/core/aspects/controller/PageNavigationInterceptor.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: PageNavigationInterceptor.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-portal/core/src/main/org/jboss/portal/core/aspects/controller/PageNavigationInterceptor.java,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -b -r1.15 -r1.16
  --- PageNavigationInterceptor.java	9 Jul 2006 12:04:14 -0000	1.15
  +++ PageNavigationInterceptor.java	31 Jul 2006 19:29:46 -0000	1.16
  @@ -1,8 +1,8 @@
   package org.jboss.portal.core.aspects.controller;
   
   import org.apache.log4j.Logger;
  -import org.jboss.portal.portlet.Mode;
  -import org.jboss.portal.portlet.WindowState;
  +import org.jboss.portal.Mode;
  +import org.jboss.portal.WindowState;
   import org.jboss.portal.common.invocation.InvocationException;
   import org.jboss.portal.core.command.CommandContext;
   import org.jboss.portal.core.command.CommandInterceptor;
  @@ -41,7 +41,7 @@
    * Ensure that the page navigational state holder is present.
    *
    * @author <a href="mailto:mholzner at novell.com">Martin Holzner</a>
  - * @version $Revision: 1.15 $
  + * @version $Revision: 1.16 $
    */
   public class PageNavigationInterceptor extends CommandInterceptor
   {
  
  
  



More information about the jboss-cvs-commits mailing list