[jboss-svn-commits] JBL Code SVN: r9569 - in labs/jbosslabs/trunk/portal-extensions: forge-ejb3/src/java/org/jboss/forge/ejb3/projectpages and 1 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sat Feb 17 11:28:01 EST 2007


Author: adamw
Date: 2007-02-17 11:28:01 -0500 (Sat, 17 Feb 2007)
New Revision: 9569

Added:
   labs/jbosslabs/trunk/portal-extensions/forge-mapper/src/java/org/jboss/labs/mapper/url/LabsMainUrlFactory.java
Modified:
   labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/Constants.java
   labs/jbosslabs/trunk/portal-extensions/forge-ejb3/src/java/org/jboss/forge/ejb3/projectpages/ProjectPagesServiceBean.java
Log:
http://jira.jboss.com/jira/browse/JBLAB-837

Modified: labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/Constants.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/Constants.java	2007-02-17 15:32:32 UTC (rev 9568)
+++ labs/jbosslabs/trunk/portal-extensions/forge-common/src/java/org/jboss/forge/common/Constants.java	2007-02-17 16:28:01 UTC (rev 9569)
@@ -31,8 +31,15 @@
 	 */
 	public static final String FREEZONE_PATH_PARAM  = "path";
 	public static final String ATTR_URL				= "nav-url";
-	
-	/*
+
+    /**
+     * Name of a declared property for portal objects, which are handled
+     * and created by labs services. Value of this propety tells, which
+     * project does the object belong to.
+     */
+    public static final String PORTAL_OBJECT_LABS_MARKER = "labs";
+
+    /*
 	 * Portal pages names.
 	 */
 	public static final String DEFAULT_PROJECT_PAGE	= "info";

Modified: labs/jbosslabs/trunk/portal-extensions/forge-ejb3/src/java/org/jboss/forge/ejb3/projectpages/ProjectPagesServiceBean.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-ejb3/src/java/org/jboss/forge/ejb3/projectpages/ProjectPagesServiceBean.java	2007-02-17 15:32:32 UTC (rev 9568)
+++ labs/jbosslabs/trunk/portal-extensions/forge-ejb3/src/java/org/jboss/forge/ejb3/projectpages/ProjectPagesServiceBean.java	2007-02-17 16:28:01 UTC (rev 9569)
@@ -189,7 +189,7 @@
      * @param projectId Project id, to which this object belongs.
      */
     private void markAsLabsObject(PortalObject po, String projectId) {
-        po.setDeclaredProperty("labs", projectId);
+        po.setDeclaredProperty(Constants.PORTAL_OBJECT_LABS_MARKER, projectId);
     }
 
     /**
@@ -213,7 +213,7 @@
      */
     private void markAsLabsObject(Instance instance, String projectId)
             throws PortletInvokerException {
-        setInstancePreference(instance, "labs", projectId);
+        setInstancePreference(instance, Constants.PORTAL_OBJECT_LABS_MARKER, projectId);
     }
 
     /**

Added: 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	                        (rev 0)
+++ labs/jbosslabs/trunk/portal-extensions/forge-mapper/src/java/org/jboss/labs/mapper/url/LabsMainUrlFactory.java	2007-02-17 16:28:01 UTC (rev 9569)
@@ -0,0 +1,124 @@
+package org.jboss.labs.mapper.url;
+
+import org.jboss.portal.core.controller.command.mapper.URLFactoryDelegate;
+import org.jboss.portal.core.controller.ControllerCommand;
+import org.jboss.portal.core.model.portal.command.*;
+import org.jboss.portal.core.model.portal.PortalObject;
+import org.jboss.portal.core.model.portal.Window;
+import org.jboss.portal.core.model.portal.Page;
+import org.jboss.portal.server.ServerURL;
+import org.jboss.portal.server.ServerInvocation;
+import org.jboss.portal.server.AbstractServerURL;
+import org.jboss.portal.portlet.StateString;
+import org.jboss.portal.portlet.impl.PortletRequestEncoder;
+import org.jboss.portal.Mode;
+import org.jboss.portal.WindowState;
+import org.jboss.forge.common.Constants;
+
+/**
+ * @author <a href="mailto:adamw at aster.pl">Adam Warski</a>
+ */
+public class LabsMainUrlFactory extends URLFactoryDelegate {
+    private static final String FREEZONE_WINDOW_COMPONENT = "Freezone";
+
+    private void addTokenToPath(StringBuffer sb, String toAdd) {
+        sb.append('/').append(toAdd);
+    }
+
+    private void addToPath(StringBuffer sb, PortalObject po) {
+        while ((po instanceof Window) || (po instanceof Page)) {
+            addTokenToPath(sb, po.getName());
+            po = po.getParent();
+        }
+    }
+
+    private ServerURL convertToURL(StringBuffer sb) {
+        AbstractServerURL asu = new AbstractServerURL();
+        asu.setPortalRequestPath(sb.toString());
+
+        return asu;
+    }
+
+    public ServerURL doMapping(ServerInvocation serverInvocation,
+                               ControllerCommand command) {
+        if (command == null) {
+            throw new IllegalArgumentException("No null command accepted");
+        }
+
+        System.out.println("        LABS URLS");
+
+        if (command instanceof PortalObjectCommand) {
+            StringBuffer sb = new StringBuffer();
+            PortalObjectCommand poc = (PortalObjectCommand) command;
+
+            if (poc.getTarget() == null) {
+                return convertToURL(sb);
+            }
+
+            String projectId = poc.getTarget().getDeclaredProperty(
+                    Constants.PORTAL_OBJECT_LABS_MARKER);
+
+            if (projectId != null) {
+                System.out.println("        ADDING PROJECT");
+                addTokenToPath(sb, projectId);
+            }
+
+            if (poc instanceof RenderPageCommand) {
+                System.out.println("        RENDER PAGE");
+                addToPath(sb, poc.getTarget());
+
+                return convertToURL(sb);
+            } else if (poc instanceof InvokePortletWindowActionCommand) {
+                System.out.println("        ACTION");
+                InvokePortletWindowActionCommand actionCmd =
+                        (InvokePortletWindowActionCommand) poc;
+
+                if (actionCmd.getWindow().getName().contains(FREEZONE_WINDOW_COMPONENT)) {
+                    System.out.println("        FREEZONE");
+                    String path =
+                            actionCmd.getFormParameters().getValue(Constants.FREEZONE_PATH_PARAM);
+                    if (path != null) {
+                        addTokenToPath(sb, path);
+                        actionCmd.getFormParameters().remove(Constants.FREEZONE_PATH_PARAM);
+                    } else {
+                        addToPath(sb, poc.getTarget().getParent());    
+                    }
+                } else {
+                    addToPath(sb, poc.getTarget());
+                }
+
+                Mode mode = actionCmd.getMode();
+                WindowState windowState = actionCmd.getWindowState();
+
+                ServerURL url = convertToURL(sb);
+
+                StateString interactionState = actionCmd.getInteractionState();
+                StateString navigationalState = actionCmd.getNavigationalState();
+                PortletRequestEncoder.encodeAction(url, navigationalState, interactionState,
+                        mode, windowState);
+            } else if (poc instanceof InvokePortletWindowRenderCommand) {
+                System.out.println("        RENDER");
+                InvokePortletWindowRenderCommand renderCmd =
+                        (InvokePortletWindowRenderCommand) poc;
+
+                addToPath(sb, poc.getTarget());
+
+                Mode mode = renderCmd.getMode();
+                WindowState windowState = renderCmd.getWindowState();
+
+                ServerURL url = convertToURL(sb);
+
+                StateString navigationalState = renderCmd.getNavigationalState();
+                PortletRequestEncoder.encodeRender(url, navigationalState, mode, windowState);
+            } else if (poc instanceof ImportPageToDashboardCommand) {
+                System.out.println("        DASHBOARD");
+                ServerURL url = convertToURL(sb);
+                url.setParameterValue("action", "import");
+
+                return url;
+            }
+        }
+
+        return null;
+    }
+}




More information about the jboss-svn-commits mailing list