[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