[jboss-svn-commits] JBL Code SVN: r9623 - in labs/jbosslabs/trunk/portal-extensions: forge-mapper/src/java/org/jboss/labs/mapper/command and 2 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Mon Feb 19 19:24:50 EST 2007
Author: adamw
Date: 2007-02-19 19:24:50 -0500 (Mon, 19 Feb 2007)
New Revision: 9623
Added:
labs/jbosslabs/trunk/portal-extensions/forge-mapper/src/java/org/jboss/labs/mapper/command/WikiCommandFactory.java
labs/jbosslabs/trunk/portal-extensions/forge-mapper/src/java/org/jboss/labs/mapper/url/AbstractLabsDelegateUrlFactory.java
labs/jbosslabs/trunk/portal-extensions/forge-mapper/src/java/org/jboss/labs/mapper/url/LabsDelegatingURLFactoryService.java
labs/jbosslabs/trunk/portal-extensions/forge-mapper/src/java/org/jboss/labs/mapper/url/WikiUrlFactory.java
Modified:
labs/jbosslabs/trunk/portal-extensions/configuration/to-copy/server/default/deploy/jboss-portal.sar/META-INF/jboss-service.xml
labs/jbosslabs/trunk/portal-extensions/forge-mapper/src/java/org/jboss/labs/mapper/command/AbstractLabsBaseCommandFactory.java
labs/jbosslabs/trunk/portal-extensions/forge-mapper/src/java/org/jboss/labs/mapper/command/LabsPortalObjectCommandFactory.java
labs/jbosslabs/trunk/portal-extensions/forge-mapper/src/java/org/jboss/labs/mapper/command/LabsPortalObjectCommandFactoryImpl.java
labs/jbosslabs/trunk/portal-extensions/forge-mapper/src/java/org/jboss/labs/mapper/url/LabsMainUrlFactory.java
labs/jbosslabs/trunk/portal-extensions/portal-default/src/web/WEB-INF/default-object.xml
Log:
Wiki command & url factories
Modified: labs/jbosslabs/trunk/portal-extensions/configuration/to-copy/server/default/deploy/jboss-portal.sar/META-INF/jboss-service.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/configuration/to-copy/server/default/deploy/jboss-portal.sar/META-INF/jboss-service.xml 2007-02-19 22:54:52 UTC (rev 9622)
+++ labs/jbosslabs/trunk/portal-extensions/configuration/to-copy/server/default/deploy/jboss-portal.sar/META-INF/jboss-service.xml 2007-02-20 00:24:50 UTC (rev 9623)
@@ -751,8 +751,27 @@
optional-attribute-name="Container"
proxy-type="attribute">portal:container=PortalObject</depends>
</mbean>
+ <mbean
+ code="org.jboss.labs.mapper.command.WikiCommandFactory"
+ name="portal:commandFactory=Wiki"
+ xmbean-dd=""
+ xmbean-code="org.jboss.portal.jems.as.system.JBossServiceModelMBean">
+ <xmbean/>
+ <attribute name="Path">wiki</attribute>
+ <attribute name="PageName">jbosswiki</attribute>
+ <attribute name="WindowName">WikiPortletWindow</attribute>
+ <depends
+ optional-attribute-name="Container"
+ proxy-type="attribute">portal:container=PortalObject</depends>
+ <depends
+ optional-attribute-name="DelegatingCF"
+ proxy-type="attribute">portal:commandFactory=LabsDelegating</depends>
+ <depends
+ optional-attribute-name="PortalObjectCF"
+ proxy-type="attribute">portal:commandFactory=LabsPortalObject</depends>
+ </mbean>
- <mbean
+ <mbean
code="org.jboss.labs.mapper.command.LabsPortalObjectCommandFactoryImpl"
name="portal:commandFactory=LabsPortalObject"
xmbean-dd=""
@@ -765,12 +784,17 @@
</mbean>
<!-- URL factories -->
+ <!-- LABS -->
<mbean
- code="org.jboss.portal.core.controller.command.mapper.DelegatingURLFactoryService"
+ code="org.jboss.labs.mapper.url.LabsDelegatingURLFactoryService"
name="portal:urlFactory=Delegating"
xmbean-dd=""
xmbean-code="org.jboss.portal.jems.as.system.JBossServiceModelMBean">
<xmbean/>
+ <!-- LABS -->
+ <depends
+ optional-attribute-name="NextFactory"
+ proxy-type="attribute">portal:urlFactory=LabsMain</depends>
</mbean>
<!-- LABS
<mbean
@@ -842,12 +866,21 @@
xmbean-code="org.jboss.portal.jems.as.system.JBossServiceModelMBean">
<xmbean/>
<depends
- optional-attribute-name="Factory"
- proxy-type="attribute">portal:urlFactory=Delegating</depends>
- <depends
optional-attribute-name="Container"
proxy-type="attribute">portal:container=PortalObject</depends>
</mbean>
+ <mbean
+ code="org.jboss.labs.mapper.url.WikiUrlFactory"
+ name="portal:urlFactory=Wiki"
+ xmbean-dd=""
+ xmbean-code="org.jboss.portal.jems.as.system.JBossServiceModelMBean">
+ <attribute name="Path">wiki</attribute>
+ <attribute name="PageName">jbosswiki</attribute>
+ <xmbean/>
+ <depends
+ optional-attribute-name="Factory"
+ proxy-type="attribute">portal:urlFactory=Delegating</depends>
+ </mbean>
<!-- The federating portlet invoker -->
<mbean
Modified: labs/jbosslabs/trunk/portal-extensions/forge-mapper/src/java/org/jboss/labs/mapper/command/AbstractLabsBaseCommandFactory.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-mapper/src/java/org/jboss/labs/mapper/command/AbstractLabsBaseCommandFactory.java 2007-02-19 22:54:52 UTC (rev 9622)
+++ labs/jbosslabs/trunk/portal-extensions/forge-mapper/src/java/org/jboss/labs/mapper/command/AbstractLabsBaseCommandFactory.java 2007-02-20 00:24:50 UTC (rev 9623)
@@ -1,7 +1,13 @@
package org.jboss.labs.mapper.command;
import org.jboss.portal.core.model.portal.*;
+import org.jboss.portal.core.model.portal.command.InvokePortletWindowRenderCommand;
+import org.jboss.portal.core.controller.ControllerCommand;
import org.jboss.portal.jems.as.system.AbstractJBossService;
+import org.jboss.portal.theme.navigation.WindowNavigationalState;
+import org.jboss.portal.server.ServerInvocation;
+import org.jboss.portal.portlet.StateString;
+import org.jboss.portal.portlet.impl.PortletRequestDecoder;
/**
* A base class for Labs command factories.
@@ -18,7 +24,34 @@
public void setContainer(PortalObjectContainer container) {
this.container = container;
}
-
+
+ protected WindowNavigationalState getWindowNavState(ServerInvocation invocation,
+ Window window) {
+ WindowNavigationalState windowNavState = (WindowNavigationalState)
+ invocation.getAttribute(ServerInvocation.NAVIGATIONAL_STATE_SCOPE,
+ window.getId() + "_window");
+ if (windowNavState == null) {
+ windowNavState = new WindowNavigationalState();
+ invocation.setAttribute(ServerInvocation.NAVIGATIONAL_STATE_SCOPE,
+ window.getId() + "_window", windowNavState);
+ }
+
+ return windowNavState;
+ }
+
+ protected ControllerCommand invokeRenderCommand(ServerInvocation invocation, Window window,
+ StateString params) {
+ WindowNavigationalState windowNavState = getWindowNavState(invocation, window);
+
+ return new InvokePortletWindowRenderCommand(window.getId(), windowNavState.getMode(),
+ windowNavState.getWindowState(), params);
+ }
+
+ protected boolean hasMetaParameter(ServerInvocation invocation) {
+ return invocation.getServerContext().getQueryParameterMap().get(
+ PortletRequestDecoder.META_PARAMETER) != null;
+ }
+
/*
* Service lifecycle methods.
*/
Modified: labs/jbosslabs/trunk/portal-extensions/forge-mapper/src/java/org/jboss/labs/mapper/command/LabsPortalObjectCommandFactory.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-mapper/src/java/org/jboss/labs/mapper/command/LabsPortalObjectCommandFactory.java 2007-02-19 22:54:52 UTC (rev 9622)
+++ labs/jbosslabs/trunk/portal-extensions/forge-mapper/src/java/org/jboss/labs/mapper/command/LabsPortalObjectCommandFactory.java 2007-02-20 00:24:50 UTC (rev 9623)
@@ -6,6 +6,8 @@
import org.jboss.portal.server.ServerInvocation;
import org.jboss.labs.mapper.PathParser;
+import java.util.Map;
+
/**
* A command factory which maps a page/ window request to a freezone
* request, or a portal action/ render request.
@@ -17,4 +19,7 @@
public ControllerCommand doMapping(ServerInvocation invocation, PathParser parser,
Window window);
+
+ public ControllerCommand doMapping(ServerInvocation invocation, Window window,
+ Map<String, String> additionalParameters);
}
Modified: labs/jbosslabs/trunk/portal-extensions/forge-mapper/src/java/org/jboss/labs/mapper/command/LabsPortalObjectCommandFactoryImpl.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-mapper/src/java/org/jboss/labs/mapper/command/LabsPortalObjectCommandFactoryImpl.java 2007-02-19 22:54:52 UTC (rev 9622)
+++ labs/jbosslabs/trunk/portal-extensions/forge-mapper/src/java/org/jboss/labs/mapper/command/LabsPortalObjectCommandFactoryImpl.java 2007-02-20 00:24:50 UTC (rev 9623)
@@ -36,33 +36,12 @@
@Inject
private ContentManager cm;
- private WindowNavigationalState getWindowNavState(ServerInvocation invocation, Window window) {
- WindowNavigationalState windowNavState = (WindowNavigationalState)
- invocation.getAttribute(ServerInvocation.NAVIGATIONAL_STATE_SCOPE,
- window.getId() + "_window");
- if (windowNavState == null) {
- windowNavState = new WindowNavigationalState();
- invocation.setAttribute(ServerInvocation.NAVIGATIONAL_STATE_SCOPE,
- window.getId() + "_window", windowNavState);
- }
-
- return windowNavState;
- }
-
- private ControllerCommand invokeRenderCommand(ServerInvocation invocation, Window window,
- StateString params) {
- WindowNavigationalState windowNavState = getWindowNavState(invocation, window);
-
- return new InvokePortletWindowRenderCommand(window.getId(), windowNavState.getMode(),
- windowNavState.getWindowState(), params);
- }
-
public ControllerCommand doMapping(ServerInvocation invocation, PathParser parser,
Window window) {
return doMapping(invocation, window, null);
}
- private ControllerCommand doMapping(ServerInvocation invocation, Window window,
+ public ControllerCommand doMapping(ServerInvocation invocation, Window window,
Map<String, String> additionalParameters) {
if (window == null) {
throw new IllegalArgumentException("Window cannot be null.");
@@ -190,8 +169,7 @@
if (path == null) { path = ""; }
// Checking if there is a meta parameter - if so, invoking portal actions.
- if (invocation.getServerContext().getQueryParameterMap().get(
- PortletRequestDecoder.META_PARAMETER) != null) {
+ if (hasMetaParameter(invocation)) {
// If so, invoking default portal actions on a window action request,
// with a default path parameter.
Map<String, String> additionalParameters = new HashMap<String, String>();
Added: labs/jbosslabs/trunk/portal-extensions/forge-mapper/src/java/org/jboss/labs/mapper/command/WikiCommandFactory.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-mapper/src/java/org/jboss/labs/mapper/command/WikiCommandFactory.java (rev 0)
+++ labs/jbosslabs/trunk/portal-extensions/forge-mapper/src/java/org/jboss/labs/mapper/command/WikiCommandFactory.java 2007-02-20 00:24:50 UTC (rev 9623)
@@ -0,0 +1,141 @@
+package org.jboss.labs.mapper.command;
+
+import org.jboss.portal.core.controller.ControllerCommand;
+import org.jboss.portal.core.model.portal.PortalObjectId;
+import org.jboss.portal.core.model.portal.Window;
+import org.jboss.portal.core.model.portal.command.RenderPageCommand;
+import org.jboss.portal.server.ServerInvocation;
+import org.jboss.portal.portlet.PortletParametersStateString;
+import org.jboss.labs.mapper.PathParser;
+import org.jboss.forge.common.Constants;
+
+import java.util.Map;
+
+/**
+ * @author <a href="mailto:adamw at aster.pl">Adam Warski</a>
+ */
+public class WikiCommandFactory extends AbstractLabsDelegateCommandFactory {
+ private String pageName;
+ private PortalObjectId wikiPageId;
+
+ private String windowName;
+ private PortalObjectId windowId;
+
+ private LabsPortalObjectCommandFactory portalObjectCF;
+
+ private void setIds() {
+ if ((pageName != null) && (windowName != null)) {
+ wikiPageId = PortalObjectId.parse("/" + Constants.LABS_PORTAL + "/" + pageName,
+ PortalObjectId.CANONICAL_FORMAT);
+
+ windowId = PortalObjectId.parse("/" + Constants.LABS_PORTAL + "/" + pageName +
+ "/" + windowName, PortalObjectId.CANONICAL_FORMAT);
+ }
+ }
+
+ public String getPageName() {
+ return pageName;
+ }
+
+ public void setPageName(String pageName) {
+ this.pageName = pageName;
+ setIds();
+ }
+
+ public String getWindowName() {
+ return windowName;
+ }
+
+ public void setWindowName(String windowName) {
+ this.windowName = windowName;
+ setIds();
+ }
+
+ public LabsPortalObjectCommandFactory getPortalObjectCF() {
+ return portalObjectCF;
+ }
+
+ public void setPortalObjectCF(LabsPortalObjectCommandFactory portalObjectCF) {
+ this.portalObjectCF = portalObjectCF;
+ }
+
+ private ControllerCommand getDefaultCommand() {
+ return new RenderPageCommand(wikiPageId);
+ }
+
+ public ControllerCommand doMapping(ServerInvocation invocation, String host,
+ String contextPath, PathParser parser) {
+ System.out.println("IN WIKI CF");
+
+ if (!parser.hasFirstToken()) {
+ return getDefaultCommand();
+ }
+
+ String firstToken = parser.getFirstToken();
+ String language = null;
+
+ if ((firstToken.length() == 2) && (Character.isUpperCase(firstToken.charAt(1)))) {
+ language = firstToken;
+ parser.proceed();
+ }
+
+ String page = null;
+ String file = null;
+ while (parser.hasFirstToken()) {
+ firstToken = parser.getFirstToken();
+ if (Character.isUpperCase(firstToken.charAt(0))) {
+ if (page == null) {
+ page = firstToken;
+ } else {
+ page += "/" + firstToken;
+ }
+ } else if (firstToken.startsWith("file:")) {
+ file = parser.getCurrent().substring(5);
+ } else {
+ return getDefaultCommand();
+ }
+ }
+
+ if (page == null) {
+ return getDefaultCommand();
+ }
+
+ String version = null;
+ if (page.contains(":")) {
+ String[] tokens = page.split("[:]", 2);
+ if ((tokens.length == 2)) {
+ page = tokens[0];
+ version = tokens[1];
+ } else {
+ return getDefaultCommand();
+ }
+ } else if ((file != null) && (file.contains(":"))) {
+ String[] tokens = file.split("[:]", 2);
+ if ((tokens.length == 2)) {
+ file = tokens[0];
+ version = tokens[1];
+ } else {
+ return getDefaultCommand();
+ }
+ }
+
+ if (file != null) {
+ // Redirect - where?
+ // TODO
+ return null;
+ }
+
+ PortletParametersStateString params = new PortletParametersStateString();
+ params.setValue("page", page);
+ if (language != null) { params.setValue("language", language); }
+ if (version != null) { params.setValue("version", version); }
+
+ Window wikiWindow = (Window) getContainer().getObject(windowId);
+ if (hasMetaParameter(invocation)) {
+ return getPortalObjectCF().doMapping(invocation, wikiWindow, params.getMap());
+ } else {
+ return invokeRenderCommand(invocation, wikiWindow,
+ params);
+ }
+ }
+}
Added: labs/jbosslabs/trunk/portal-extensions/forge-mapper/src/java/org/jboss/labs/mapper/url/AbstractLabsDelegateUrlFactory.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-mapper/src/java/org/jboss/labs/mapper/url/AbstractLabsDelegateUrlFactory.java (rev 0)
+++ labs/jbosslabs/trunk/portal-extensions/forge-mapper/src/java/org/jboss/labs/mapper/url/AbstractLabsDelegateUrlFactory.java 2007-02-20 00:24:50 UTC (rev 9623)
@@ -0,0 +1,31 @@
+package org.jboss.labs.mapper.url;
+
+import org.jboss.portal.core.controller.command.mapper.URLFactoryDelegate;
+import org.jboss.portal.server.ServerURL;
+import org.jboss.portal.server.AbstractServerURL;
+
+/**
+ * @author <a href="mailto:adamw at aster.pl">Adam Warski</a>
+ */
+public abstract class AbstractLabsDelegateUrlFactory extends URLFactoryDelegate {
+ private String path;
+
+ public String getPath() {
+ return path;
+ }
+
+ public void setPath(String path) {
+ this.path = path;
+ }
+
+ protected void addTokenToPath(StringBuffer sb, String toAdd) {
+ sb.append('/').append(toAdd);
+ }
+
+ protected ServerURL convertToURL(StringBuffer sb) {
+ AbstractServerURL asu = new AbstractServerURL();
+ asu.setPortalRequestPath(sb.toString());
+
+ return asu;
+ }
+}
Added: labs/jbosslabs/trunk/portal-extensions/forge-mapper/src/java/org/jboss/labs/mapper/url/LabsDelegatingURLFactoryService.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-mapper/src/java/org/jboss/labs/mapper/url/LabsDelegatingURLFactoryService.java (rev 0)
+++ labs/jbosslabs/trunk/portal-extensions/forge-mapper/src/java/org/jboss/labs/mapper/url/LabsDelegatingURLFactoryService.java 2007-02-20 00:24:50 UTC (rev 9623)
@@ -0,0 +1,106 @@
+package org.jboss.labs.mapper.url;
+
+import org.jboss.portal.core.controller.command.mapper.AbstractURLFactory;
+import org.jboss.portal.core.controller.command.mapper.DelegatingURLFactory;
+import org.jboss.portal.core.controller.command.mapper.URLFactory;
+import org.jboss.portal.core.controller.command.mapper.URLFactoryDelegate;
+import org.jboss.portal.core.controller.ControllerCommand;
+import org.jboss.portal.server.ServerURL;
+import org.jboss.portal.server.ServerInvocation;
+
+import java.util.ArrayList;
+
+/**
+ * @author <a href="mailto:julien at jboss.org">Julien Viet</a>
+ * @author <a href="mailto:adamw at aster.pl">Adam Warski</a>
+ */
+public class LabsDelegatingURLFactoryService extends AbstractURLFactory
+ implements DelegatingURLFactory
+{
+ private URLFactory nextFactory;
+
+ public URLFactory getNextFactory()
+ {
+ return nextFactory;
+ }
+
+ public void setNextFactory(URLFactory nextFactory)
+ {
+ this.nextFactory = nextFactory;
+ }
+
+ /** The different delegates. */
+ private ArrayList delegates = new ArrayList();
+
+ public ServerURL doMapping(ServerInvocation invocation, ControllerCommand cmd)
+ {
+ if (cmd == null)
+ {
+ throw new IllegalArgumentException("No null command accepted");
+ }
+
+ //
+ if (delegates != null)
+ {
+ for (int i = 0;i < delegates.size();i++)
+ {
+ URLFactory delegate = (URLFactory)delegates.get(i);
+ ServerURL url = delegate.doMapping(invocation, cmd);
+ if (url != null)
+ {
+ return url;
+ }
+ }
+ }
+
+ //
+ if (nextFactory != null)
+ {
+ return nextFactory.doMapping(invocation, cmd);
+ }
+
+ return null;
+ }
+
+ public void register(URLFactoryDelegate factory)
+ {
+ if (factory == null)
+ {
+ throw new IllegalArgumentException("Command class name must not be null");
+ }
+ synchronized (this)
+ {
+ if (delegates.contains(factory))
+ {
+ log.warn("Dual registration of URL factory " + factory);
+ }
+ else
+ {
+ ArrayList copy = new ArrayList(delegates);
+ copy.add(factory);
+ delegates = copy;
+ }
+ }
+ }
+
+ public void unregister(URLFactoryDelegate factory)
+ {
+ if (factory == null)
+ {
+ throw new IllegalArgumentException("Command class name must not be null");
+ }
+ synchronized (this)
+ {
+ if (delegates.contains(factory))
+ {
+ log.warn("Unregistration of URL factory " + factory + " failed because it is not registered");
+ }
+ else
+ {
+ ArrayList copy = new ArrayList(delegates);
+ copy.remove(factory);
+ delegates = copy;
+ }
+ }
+ }
+}
\ No newline at end of file
Modified: labs/jbosslabs/trunk/portal-extensions/forge-mapper/src/java/org/jboss/labs/mapper/url/LabsMainUrlFactory.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-mapper/src/java/org/jboss/labs/mapper/url/LabsMainUrlFactory.java 2007-02-19 22:54:52 UTC (rev 9622)
+++ labs/jbosslabs/trunk/portal-extensions/forge-mapper/src/java/org/jboss/labs/mapper/url/LabsMainUrlFactory.java 2007-02-20 00:24:50 UTC (rev 9623)
@@ -1,6 +1,6 @@
package org.jboss.labs.mapper.url;
-import org.jboss.portal.core.controller.command.mapper.URLFactoryDelegate;
+import org.jboss.portal.core.controller.command.mapper.AbstractURLFactory;
import org.jboss.portal.core.controller.ControllerCommand;
import org.jboss.portal.core.model.portal.command.*;
import org.jboss.portal.core.model.portal.*;
@@ -18,7 +18,7 @@
/**
* @author <a href="mailto:adamw at aster.pl">Adam Warski</a>
*/
-public class LabsMainUrlFactory extends URLFactoryDelegate {
+public class LabsMainUrlFactory extends AbstractURLFactory {
/*
* Getters and setters.
*/
@@ -83,8 +83,7 @@
addToPath(sb, poc.getTargetId(), true);
return convertToURL(sb);
- } else
- if (poc instanceof InvokeWindowCommand) {
+ } else if (poc instanceof InvokeWindowCommand) {
InvokeWindowCommand wndCmd = (InvokeWindowCommand) poc;
InvokePortletWindowActionCommand actionCmd = null;
InvokePortletWindowRenderCommand renderCmd = null;
Added: labs/jbosslabs/trunk/portal-extensions/forge-mapper/src/java/org/jboss/labs/mapper/url/WikiUrlFactory.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-mapper/src/java/org/jboss/labs/mapper/url/WikiUrlFactory.java (rev 0)
+++ labs/jbosslabs/trunk/portal-extensions/forge-mapper/src/java/org/jboss/labs/mapper/url/WikiUrlFactory.java 2007-02-20 00:24:50 UTC (rev 9623)
@@ -0,0 +1,111 @@
+package org.jboss.labs.mapper.url;
+
+import org.jboss.portal.core.controller.ControllerCommand;
+import org.jboss.portal.core.model.portal.command.*;
+import org.jboss.portal.server.ServerURL;
+import org.jboss.portal.server.ServerInvocation;
+import org.jboss.portal.portlet.StateString;
+import org.jboss.portal.portlet.PortletParametersStateString;
+import org.jboss.portal.portlet.impl.PortletRequestEncoder;
+import org.jboss.portal.portlet.impl.PortletRequestDecoder;
+
+/**
+ * @author <a href="mailto:adamw at aster.pl">Adam Warski</a>
+ */
+public class WikiUrlFactory extends AbstractLabsDelegateUrlFactory {
+ private String pageName;
+
+ public String getPageName() {
+ return pageName;
+ }
+
+ public void setPageName(String pageName) {
+ this.pageName = pageName;
+ }
+
+ public ServerURL doMapping(ServerInvocation serverInvocation, ControllerCommand cmd) {
+ if (cmd == null) {
+ throw new IllegalArgumentException("No null command accepted");
+ }
+
+ if (cmd instanceof PortalObjectCommand) {
+ PortalObjectCommand poc = (PortalObjectCommand) cmd;
+
+ if (getPageName().equals(poc.getTargetId().getName(1))) {
+ StringBuffer sb = new StringBuffer();
+ addTokenToPath(sb, getPath());
+
+ if (poc instanceof RenderPageCommand) {
+ return convertToURL(sb);
+ } else if (poc instanceof InvokeWindowCommand) {
+ InvokePortletWindowActionCommand actionCmd = null;
+ InvokePortletWindowRenderCommand renderCmd = null;
+
+ StateString navigationalState = null;
+
+ if (poc instanceof InvokePortletWindowActionCommand) {
+ actionCmd = (InvokePortletWindowActionCommand) poc;
+ navigationalState = actionCmd.getNavigationalState();
+ } else if (poc instanceof InvokePortletWindowRenderCommand) {
+ renderCmd = (InvokePortletWindowRenderCommand) poc;
+ navigationalState = renderCmd.getNavigationalState();
+ }
+
+ if (navigationalState instanceof PortletParametersStateString) {
+ PortletParametersStateString ppss =
+ (PortletParametersStateString) navigationalState;
+
+ if (ppss.getValue("language") != null) {
+ addTokenToPath(sb, ppss.getValue("language"));
+ }
+
+ if (ppss.getValue("page") != null) {
+ addTokenToPath(sb, ppss.getValue("page"));
+ }
+
+ if (ppss.getValue("version") != null) {
+ sb.append(":").append(ppss.getValue("version"));
+ }
+ }
+
+ ServerURL url = convertToURL(sb);
+
+ if (actionCmd != null) {
+ PortletRequestEncoder.encodeAction(url, actionCmd.getNavigationalState(),
+ actionCmd.getInteractionState(), actionCmd.getMode(),
+ actionCmd.getWindowState());
+ } else if (renderCmd != null) {
+ PortletRequestEncoder.encodeRender(url, navigationalState,
+ renderCmd.getMode(), renderCmd.getWindowState());
+
+ // If the request isn't only a render request, but also, for
+ // example, window state change, we leave the meta
+ // parameter intact. Otherwise, we remove it from the
+ // url.
+ Object meta = url.getParameterMap().get(
+ PortletRequestDecoder.META_PARAMETER);
+
+ if (meta != null) {
+ int metaInt = Integer.parseInt(((String []) meta)[0], 16);
+
+ if ((metaInt | PortletRequestDecoder.RENDER_MASK) ==
+ PortletRequestDecoder.RENDER_MASK) {
+ url.getParameterMap().remove(PortletRequestDecoder.META_PARAMETER);
+ }
+ }
+ }
+
+ url.getParameterMap().remove("language");
+ url.getParameterMap().remove("page");
+ url.getParameterMap().remove("version");
+
+ return url;
+ }
+ }
+
+ return null;
+ }
+
+ return null;
+ }
+}
Modified: labs/jbosslabs/trunk/portal-extensions/portal-default/src/web/WEB-INF/default-object.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/portal-default/src/web/WEB-INF/default-object.xml 2007-02-19 22:54:52 UTC (rev 9622)
+++ labs/jbosslabs/trunk/portal-extensions/portal-default/src/web/WEB-INF/default-object.xml 2007-02-20 00:24:50 UTC (rev 9623)
@@ -301,7 +301,7 @@
<if-exists>overwrite</if-exists>
<parent-ref>default</parent-ref>
<page>
- <page-name>wiki</page-name>
+ <page-name>jbosswiki</page-name>
<window>
<window-name>WikiPortletWindow</window-name>
<instance-ref>WikiPortletInstance</instance-ref>
More information about the jboss-svn-commits
mailing list