[jboss-svn-commits] JBL Code SVN: r5021 - in labs/jbosslabs/trunk/portal-extensions: . forge-contributor/src/java/org/jboss/forge/contributor forge-feeds forge-feeds/src/java/org/jboss/forge/feeds forge-links forge-links/src forge-links/src/java forge-links/src/java/org forge-links/src/java/org/jboss forge-links/src/java/org/jboss/labs forge-links/src/java/org/jboss/labs/links forge-links/src/java/org/jboss/labs/links/service forge-links/src/java/org/jboss/labs/links/tools forge-mapper

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Jul 11 17:51:07 EDT 2006


Author: adamw
Date: 2006-07-11 17:50:53 -0400 (Tue, 11 Jul 2006)
New Revision: 5021

Added:
   labs/jbosslabs/trunk/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/CmsLinkParser.java
   labs/jbosslabs/trunk/portal-extensions/forge-links/
   labs/jbosslabs/trunk/portal-extensions/forge-links/forge-links.iml
   labs/jbosslabs/trunk/portal-extensions/forge-links/maven.xml
   labs/jbosslabs/trunk/portal-extensions/forge-links/project.properties
   labs/jbosslabs/trunk/portal-extensions/forge-links/project.xml
   labs/jbosslabs/trunk/portal-extensions/forge-links/src/
   labs/jbosslabs/trunk/portal-extensions/forge-links/src/java/
   labs/jbosslabs/trunk/portal-extensions/forge-links/src/java/org/
   labs/jbosslabs/trunk/portal-extensions/forge-links/src/java/org/jboss/
   labs/jbosslabs/trunk/portal-extensions/forge-links/src/java/org/jboss/labs/
   labs/jbosslabs/trunk/portal-extensions/forge-links/src/java/org/jboss/labs/links/
   labs/jbosslabs/trunk/portal-extensions/forge-links/src/java/org/jboss/labs/links/FreezoneLink.java
   labs/jbosslabs/trunk/portal-extensions/forge-links/src/java/org/jboss/labs/links/Link.java
   labs/jbosslabs/trunk/portal-extensions/forge-links/src/java/org/jboss/labs/links/LinksService.java
   labs/jbosslabs/trunk/portal-extensions/forge-links/src/java/org/jboss/labs/links/OutsideLink.java
   labs/jbosslabs/trunk/portal-extensions/forge-links/src/java/org/jboss/labs/links/PageLink.java
   labs/jbosslabs/trunk/portal-extensions/forge-links/src/java/org/jboss/labs/links/service/
   labs/jbosslabs/trunk/portal-extensions/forge-links/src/java/org/jboss/labs/links/service/LinksServiceImpl.java
   labs/jbosslabs/trunk/portal-extensions/forge-links/src/java/org/jboss/labs/links/service/LinksServiceLocal.java
   labs/jbosslabs/trunk/portal-extensions/forge-links/src/java/org/jboss/labs/links/tools/
   labs/jbosslabs/trunk/portal-extensions/forge-links/src/java/org/jboss/labs/links/tools/Constants.java
   labs/jbosslabs/trunk/portal-extensions/forge-links/src/java/org/jboss/labs/links/tools/LinksTools.java
Modified:
   labs/jbosslabs/trunk/portal-extensions/forge-contributor/src/java/org/jboss/forge/contributor/ConAccessBean.java
   labs/jbosslabs/trunk/portal-extensions/forge-feeds/forge-feeds.iml
   labs/jbosslabs/trunk/portal-extensions/forge-mapper/forge-mapper.iml
Log:
http://jira.jboss.org/jira/browse/JBLAB-711


Modified: labs/jbosslabs/trunk/portal-extensions/forge-contributor/src/java/org/jboss/forge/contributor/ConAccessBean.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-contributor/src/java/org/jboss/forge/contributor/ConAccessBean.java	2006-07-11 21:36:04 UTC (rev 5020)
+++ labs/jbosslabs/trunk/portal-extensions/forge-contributor/src/java/org/jboss/forge/contributor/ConAccessBean.java	2006-07-11 21:50:53 UTC (rev 5021)
@@ -28,7 +28,7 @@
  */
 public class ConAccessBean {
 	public boolean isAdminLogged() {
-		return isUserLogged() && ConTools.hasPermission("con-admin");
+        return isUserLogged() && ConTools.hasPermission("con-admin");
 	}
 
 	public boolean isUserLogged() {

Modified: labs/jbosslabs/trunk/portal-extensions/forge-feeds/forge-feeds.iml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-feeds/forge-feeds.iml	2006-07-11 21:36:04 UTC (rev 5020)
+++ labs/jbosslabs/trunk/portal-extensions/forge-feeds/forge-feeds.iml	2006-07-11 21:50:53 UTC (rev 5021)
@@ -15,6 +15,8 @@
     <orderEntry type="module" module-name="shotoku-aop" />
     <orderEntry type="module" module-name="shotoku-base" />
     <orderEntry type="module" module-name="shotoku-feeds" />
+    <orderEntry type="library" name="velocity" level="application" />
+    <orderEntry type="module" module-name="forge-links" />
     <orderEntryProperties />
   </component>
 </module>

Added: labs/jbosslabs/trunk/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/CmsLinkParser.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/CmsLinkParser.java	2006-07-11 21:36:04 UTC (rev 5020)
+++ labs/jbosslabs/trunk/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/CmsLinkParser.java	2006-07-11 21:50:53 UTC (rev 5021)
@@ -0,0 +1,46 @@
+package org.jboss.forge.feeds;
+
+import org.jboss.shotoku.tools.Tools;
+import org.jboss.forge.common.ForgeHelper;
+import org.jboss.forge.common.projects.ProjectsHelper;
+
+/**
+ * @author Adam Warski (adamw at aster.pl)
+ */
+public class CmsLinkParser {
+    public static final String PRJ_FREEZONE_LINK_PREFIX     =
+            ForgeHelper.LABS_PORTAL + "/" +
+            ProjectsHelper.MEMBERS_DIR + "/";
+    public static final int PRJ_FREEZONE_LINK_PREFIX_LEN    =
+            PRJ_FREEZONE_LINK_PREFIX.length();
+
+    public String parseLink(String cmsPath) {
+        cmsPath = Tools.normalizeSlashes(cmsPath, false);
+
+        // Checking if this a link to a project's freezone page.
+        if (cmsPath.startsWith(PRJ_FREEZONE_LINK_PREFIX)) {
+            // Cutting off the default/members/
+            cmsPath = cmsPath.substring(PRJ_FREEZONE_LINK_PREFIX_LEN);
+
+            // Splitting into project and path
+            String[] tokens = cmsPath.split("[/]", 2);
+
+            // If there is enough data, creating a freezone link.
+            if (tokens.length == 2) {
+                int freezoneDirLen = ProjectsHelper.FREEZONE_DIR.length()+1;
+                if (tokens[1].length() > freezoneDirLen) {
+                    tokens[1] = tokens[1].substring(freezoneDirLen);
+                }
+
+                if (org.jboss.forge.common.Constants.
+                        DEFAULT_PORTAL_PAGE.equals(tokens[0])) {
+                    return "/portal/" + tokens[1];
+                } else {
+                    return "/portal/" + tokens[0] + "/" + tokens[1];
+                }
+            }
+        }
+
+        return ForgeHelper.FILE_ACCESS_DIR + "/" + cmsPath;
+    }
+}


Property changes on: labs/jbosslabs/trunk/portal-extensions/forge-links
___________________________________________________________________
Name: svn:ignore
   + target


Added: labs/jbosslabs/trunk/portal-extensions/forge-links/forge-links.iml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-links/forge-links.iml	2006-07-11 21:36:04 UTC (rev 5020)
+++ labs/jbosslabs/trunk/portal-extensions/forge-links/forge-links.iml	2006-07-11 21:50:53 UTC (rev 5021)
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module version="4" relativePaths="true" type="JAVA_MODULE">
+  <component name="ModuleRootManager" />
+  <component name="NewModuleRootManager">
+    <output url="file://$MODULE_DIR$/target" />
+    <exclude-output />
+    <content url="file://$MODULE_DIR$">
+      <sourceFolder url="file://$MODULE_DIR$/src/java" isTestSource="false" />
+    </content>
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+    <orderEntry type="library" name="jboss" level="application" />
+    <orderEntry type="module" module-name="forge-common" />
+    <orderEntry type="module" module-name="shotoku-aop" />
+    <orderEntry type="module" module-name="shotoku-base" />
+    <orderEntry type="library" name="portal" level="application" />
+    <orderEntryProperties />
+  </component>
+</module>
+

Added: labs/jbosslabs/trunk/portal-extensions/forge-links/maven.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-links/maven.xml	2006-07-11 21:36:04 UTC (rev 5020)
+++ labs/jbosslabs/trunk/portal-extensions/forge-links/maven.xml	2006-07-11 21:50:53 UTC (rev 5021)
@@ -0,0 +1,25 @@
+<!-- 
+  JBoss, the OpenSource J2EE webOS
+  Distributable under LGPL license.
+  See terms of license at gnu.org. 
+ -->
+<project xmlns:j="jelly:core" xmlns:ant="jelly:ant" xmlns:u="jelly:util">
+    <goal name="all">
+        <attainGoal name="prj-all" />
+    </goal>
+
+    <goal name="clean">
+        <attainGoal name="prj-clean" />
+    </goal>
+
+    <goal name="build">
+        <attainGoal name="ejb" />
+    </goal>
+
+    <goal name="deploy">
+    <!--    <ant:copy
+                file="target/forge-links.jar"
+                tofile="${local.deploy.dir}/forge-links.ejb3"
+                overwrite="true" />-->
+    </goal>
+</project>

Added: labs/jbosslabs/trunk/portal-extensions/forge-links/project.properties
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-links/project.properties	2006-07-11 21:36:04 UTC (rev 5020)
+++ labs/jbosslabs/trunk/portal-extensions/forge-links/project.properties	2006-07-11 21:50:53 UTC (rev 5021)
@@ -0,0 +1,5 @@
+maven.repo.remote=http://repository.atlassian.com,http://www.ibiblio.org/maven,http://dist.codehaus.org/
+maven.junit.fork=yes
+maven.war.src=${basedir}/src/web
+
+maven.final.name=${pom.artifactId}

Added: labs/jbosslabs/trunk/portal-extensions/forge-links/project.xml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-links/project.xml	2006-07-11 21:36:04 UTC (rev 5020)
+++ labs/jbosslabs/trunk/portal-extensions/forge-links/project.xml	2006-07-11 21:50:53 UTC (rev 5021)
@@ -0,0 +1,51 @@
+<?xml version='1.0' encoding='ISO-8859-1'?>
+<project>
+    <pomVersion>3</pomVersion>
+    <extend>../common.xml</extend>
+    <id>forge-links</id>
+    <name>Forge links service</name>
+    <currentVersion>1.0</currentVersion>
+    <organization>
+        <name>Adam Warski</name>
+        <url>http://mamut.net.pl</url>
+    </organization>
+    <description></description>
+
+    <dependencies>
+        <dependency>
+            <groupId>jboss-forge</groupId>
+            <artifactId>forge-common</artifactId>
+            <version>1.0</version>
+        </dependency>
+        <dependency>
+            <groupId>shotoku</groupId>
+            <artifactId>shotoku-base</artifactId>
+            <jar>shotoku-base.jar</jar>
+        </dependency>
+        <dependency>
+            <groupId>jboss</groupId>
+            <artifactId>ejb3-persistence</artifactId>
+            <jar>ejb3-persistence.jar</jar>
+        </dependency>
+        <dependency>
+            <groupId>jboss</groupId>
+            <artifactId>jboss-ejb3x</artifactId>
+            <jar>jboss-ejb3x.jar</jar>
+        </dependency>
+        <dependency>
+            <groupId>jboss</groupId>
+            <artifactId>jboss-j2ee</artifactId>
+            <jar>jboss-j2ee.jar</jar>
+        </dependency>
+        <dependency>
+            <groupId>jboss</groupId>
+            <artifactId>jboss-annotations-ejb3</artifactId>
+            <jar>jboss-annotations-ejb3.jar</jar>
+        </dependency>
+        <dependency>
+            <groupId>aslibs</groupId>
+            <artifactId>javax.servlet</artifactId>
+            <jar>javax.servlet.jar</jar>
+        </dependency>
+    </dependencies>
+</project>

Added: labs/jbosslabs/trunk/portal-extensions/forge-links/src/java/org/jboss/labs/links/FreezoneLink.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-links/src/java/org/jboss/labs/links/FreezoneLink.java	2006-07-11 21:36:04 UTC (rev 5020)
+++ labs/jbosslabs/trunk/portal-extensions/forge-links/src/java/org/jboss/labs/links/FreezoneLink.java	2006-07-11 21:50:53 UTC (rev 5021)
@@ -0,0 +1,14 @@
+package org.jboss.labs.links;
+
+/**
+ * @author Adam Warski (adamw at aster.pl)
+ */
+public class FreezoneLink extends Link {
+    public FreezoneLink(String freezone) {
+        super(null, null, null, null, freezone, null);
+    }
+
+    public FreezoneLink(String projectId, String freezone) {
+        super(projectId, null, null, null, freezone, null);
+    }
+}

Added: labs/jbosslabs/trunk/portal-extensions/forge-links/src/java/org/jboss/labs/links/Link.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-links/src/java/org/jboss/labs/links/Link.java	2006-07-11 21:36:04 UTC (rev 5020)
+++ labs/jbosslabs/trunk/portal-extensions/forge-links/src/java/org/jboss/labs/links/Link.java	2006-07-11 21:50:53 UTC (rev 5021)
@@ -0,0 +1,118 @@
+package org.jboss.labs.links;
+
+import org.jboss.labs.links.tools.Constants;
+import org.jboss.shotoku.tools.Tools;
+import org.jboss.portal.core.model.portal.PortalObjectContainer;
+import org.jboss.forge.common.projects.ProjectsHelper;
+import org.jboss.forge.common.projects.Projects;
+import org.jboss.forge.common.ForgeHelper;
+
+import java.util.Map;
+
+/**
+ * @author Adam Warski (adamw at aster.pl)
+ */
+public abstract class Link {
+    private String projectId;
+    private String page;
+    private String windowName;
+    private String renderMode;
+    private String freezone;
+    private Map<String, String> params;
+
+    private String link;
+
+    protected Link(String projectId, String page, String windowName,
+                   String renderMode, String freezone,
+                   Map<String, String> params) {
+        this.projectId = projectId;
+        this.page = page;
+        this.windowName = windowName;
+        this.renderMode = renderMode;
+        this.freezone = freezone;
+        this.params = params;
+    }
+
+    private void appendLinkPart(StringBuffer sb, String linkPart) {
+        if (linkPart != null) {
+            sb.append(linkPart);
+            sb.append(Constants.LINK_SEPARATOR);
+        }
+    }
+
+    /**
+     * Generates a string representation of this link basing on the
+     * not-null data that is provided.
+     */
+    private void generateLink() {
+        StringBuffer sb = new StringBuffer();
+
+        appendLinkPart(sb, Constants.LINK_PREFIX);
+        appendLinkPart(sb, projectId);
+
+        if (page != null) {
+            appendLinkPart(sb, page);
+            appendLinkPart(sb, windowName);
+            appendLinkPart(sb, renderMode);
+
+            if (params != null) {
+                boolean firstParam = true;
+                for (String key : params.keySet()) {
+                    if (firstParam) {
+                        sb.append("?");
+                    } else {
+                        sb.append("&");
+                    }
+
+                    sb.append(key).append("=").append(params.get(key));
+
+                    firstParam = false;
+                }
+            }
+        } else {
+            appendLinkPart(sb, freezone);
+        }
+
+        link = sb.toString();
+    }
+
+    /**
+     * @return A string representation of that link, that can be used in a
+     * browser.
+     */
+    public String toString() {
+        if (link == null) {
+            generateLink();
+        }
+
+        return link;
+    }
+
+    /*
+     * Getters.
+     */
+
+    public String getProjectId() {
+        return projectId;
+    }
+
+    public String getPage() {
+        return page;
+    }
+
+    public String getWindowName() {
+        return windowName;
+    }
+
+    public String getRenderMode() {
+        return renderMode;
+    }
+
+    public String getFreezone() {
+        return freezone;
+    }
+
+    public Map<String, String> getParams() {
+        return params;
+    }
+}

Added: labs/jbosslabs/trunk/portal-extensions/forge-links/src/java/org/jboss/labs/links/LinksService.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-links/src/java/org/jboss/labs/links/LinksService.java	2006-07-11 21:36:04 UTC (rev 5020)
+++ labs/jbosslabs/trunk/portal-extensions/forge-links/src/java/org/jboss/labs/links/LinksService.java	2006-07-11 21:50:53 UTC (rev 5021)
@@ -0,0 +1,32 @@
+package org.jboss.labs.links;
+
+import org.jboss.portal.core.model.portal.PortalObjectContainer;
+
+/**
+ * @author Adam Warski (adamw at aster.pl)
+ */
+public interface LinksService {
+    /**
+     * Basing on the given link, creates a link representation (structured).
+     * @param container Portal container (to read page information from it).
+     * @param link Link to parse.
+     * @return A link class initialized with data basing on the given link.
+     */
+    public Link parseLink(PortalObjectContainer container, String link);
+
+    /**
+     * Generates a link basing on the path to a resource in the CMS.
+     * @param cmsPath Full path to the resource in the CMS.
+     * @return A link to this resource.
+     */
+    public Link parseLink(String cmsPath);
+
+    /*
+     * SERVICE MANAGEMENT METHODS
+     */
+
+    public void create() throws Exception;
+    public void start() throws Exception;
+    public void stop();
+    public void destroy();
+}

Added: labs/jbosslabs/trunk/portal-extensions/forge-links/src/java/org/jboss/labs/links/OutsideLink.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-links/src/java/org/jboss/labs/links/OutsideLink.java	2006-07-11 21:36:04 UTC (rev 5020)
+++ labs/jbosslabs/trunk/portal-extensions/forge-links/src/java/org/jboss/labs/links/OutsideLink.java	2006-07-11 21:50:53 UTC (rev 5021)
@@ -0,0 +1,16 @@
+package org.jboss.labs.links;
+
+import java.util.Map;
+
+/**
+ * @author Adam Warski (adamw at aster.pl)
+ */
+public class OutsideLink extends Link {
+    public OutsideLink(String outsideLink) {
+        super(null, null, null, null, outsideLink, null);
+    }
+
+    public String toString() {
+        return getFreezone();
+    }
+}

Added: labs/jbosslabs/trunk/portal-extensions/forge-links/src/java/org/jboss/labs/links/PageLink.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-links/src/java/org/jboss/labs/links/PageLink.java	2006-07-11 21:36:04 UTC (rev 5020)
+++ labs/jbosslabs/trunk/portal-extensions/forge-links/src/java/org/jboss/labs/links/PageLink.java	2006-07-11 21:50:53 UTC (rev 5021)
@@ -0,0 +1,26 @@
+package org.jboss.labs.links;
+
+import java.util.Map;
+
+/**
+ * @author Adam Warski (adamw at aster.pl)
+ */
+public class PageLink extends Link {
+    public PageLink(String page, String windowName, String renderMode,
+                    Map<String, String> params) {
+        super(null, page, windowName, renderMode, null, params);
+    }
+
+    public PageLink(String page) {
+        super(null, page, null, null, null, null);
+    }
+
+    public PageLink(String projectId, String page, String windowName,
+                    String renderMode, Map<String, String> params) {
+        super(projectId, page, windowName, renderMode, null, params);
+    }
+
+    public PageLink(String projectId, String page) {
+        super(projectId, page, null, null, null, null);
+    }
+}

Added: labs/jbosslabs/trunk/portal-extensions/forge-links/src/java/org/jboss/labs/links/service/LinksServiceImpl.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-links/src/java/org/jboss/labs/links/service/LinksServiceImpl.java	2006-07-11 21:36:04 UTC (rev 5020)
+++ labs/jbosslabs/trunk/portal-extensions/forge-links/src/java/org/jboss/labs/links/service/LinksServiceImpl.java	2006-07-11 21:50:53 UTC (rev 5021)
@@ -0,0 +1,138 @@
+package org.jboss.labs.links.service;
+
+import org.jboss.portal.core.model.portal.PortalObjectContainer;
+import org.jboss.shotoku.tools.Tools;
+import org.jboss.labs.links.tools.Constants;
+import org.jboss.labs.links.*;
+import org.jboss.forge.common.projects.Projects;
+import org.jboss.forge.common.projects.ProjectsHelper;
+import org.jboss.forge.common.ForgeHelper;
+import org.jboss.annotation.ejb.Service;
+import org.jboss.annotation.ejb.Management;
+import org.jboss.annotation.ejb.Depends;
+
+import javax.ejb.Local;
+import java.util.Map;
+
+/**
+ * @author Adam Warski (adamw at aster.pl)
+ */
+ at Service(objectName = Constants.LINKS_SERVICE_NAME)
+ at Local(LinksServiceLocal.class)
+ at Management(LinksServiceLocal.class)
+ at Depends(org.jboss.shotoku.tools.Constants.SHOTOKU_SERVICE_NAME)
+public class LinksServiceImpl implements LinksService, LinksServiceLocal {
+    public Link parseLink(String cmsPath) {
+        cmsPath = Tools.normalizeSlashes(cmsPath, false);
+
+        // Checking if this a link to a project's freezone page.
+        if (cmsPath.startsWith(Constants.PRJ_FREEZONE_LINK_PREFIX)) {
+            // Cutting off the default/members/
+            cmsPath = cmsPath.substring(Constants.PRJ_FREEZONE_LINK_PREFIX_LEN);
+
+            // Splitting into project and path
+            String[] tokens = cmsPath.split(Constants.LINK_SEPARATOR_RE, 2);
+
+            // If there is enough data, creating a freezone link.
+            if (tokens.length == 2) {
+                if (org.jboss.forge.common.Constants.
+                        DEFAULT_PORTAL_PAGE.equals(tokens[0])) {
+                    return new FreezoneLink(tokens[1]);
+                } else {
+                    return new FreezoneLink(tokens[0], tokens[1]);
+                }
+            }
+        }
+
+        return new OutsideLink(ForgeHelper.FILE_ACCESS_DIR +
+            Constants.LINK_SEPARATOR + cmsPath);
+    }
+
+    public Link parseLink(PortalObjectContainer container, String link) {
+        link = Tools.normalizeSlashes(link, true);
+
+        // Removing the link prefix (however many times it is present).
+        while (link.startsWith(Constants.LINK_PREFIX)) {
+            link = link.substring(Constants.LINK_PREFIX_LEN);
+        }
+
+        // Removing the starting slash.
+        if (link.length() > 0) {
+            link = link.substring(1);
+        }
+
+        String[] tokens = link.split(Constants.LINK_SEPARATOR_RE, 2);
+        String[] newTokens;
+
+        if (tokens.length == 0) {
+            // Returning a link to the default page.
+            return new PageLink(org.jboss.forge.common.Constants.
+                    DEFAULT_PORTAL_PAGE);
+        }
+
+        Projects projects = ProjectsHelper.getProjects(ForgeHelper.LABS_PORTAL);
+
+        String projectId = null;
+        if (projects.projectExists(tokens[0])) {
+            projectId = tokens[0];
+
+            if (tokens.length == 0) {
+                /*
+                 * Returning a link to the project page.
+                 * This can be:
+                 * - a normal info page
+                 * - a freezone page - in this case we just redirect to a
+                 *   freezone
+                 * - an outside page - in this case, we redirect to this
+                 *   outside page.
+                 */
+                String freezonePage = projects.getProjectPageFreezone(projectId);
+                if (!org.jboss.shotoku.tools.Tools.isEmpty(freezonePage)) {
+                    if (ForgeHelper.isOutsideLink(freezonePage)) {
+                        return new OutsideLink(freezonePage);
+                    } else {
+                        return new FreezoneLink(projectId, freezonePage);
+                    }
+                }
+
+                return new PageLink(projectId,
+                        org.jboss.forge.common.Constants.DEFAULT_PROJECT_PAGE);
+            }
+
+            newTokens = tokens[1].split(Constants.LINK_SEPARATOR_RE, 2);
+        } else {
+            newTokens = tokens;
+        }
+
+        if (container.getContext().getDefaultPortal().getPage(newTokens[0])
+                == null) {
+            // This page is not present - which indicates a freezone page.
+            return new FreezoneLink(projectId, tokens[1]);
+        }
+
+        String page = newTokens[0];
+        newTokens = newTokens[1].split(Constants.LINK_SEPARATOR_RE);
+        String windowName = newTokens.length > 0 ? newTokens[0] : null;
+        String renderMode = newTokens.length > 1 ? newTokens[1] : null;
+        Map<String, String> params = newTokens.length > 2 ? null : null;
+
+        return new PageLink(projectId, page, windowName, renderMode, params);
+    }
+
+
+    public void create() throws Exception {
+
+    }
+
+    public void start() throws Exception {
+
+    }
+
+    public void stop() {
+
+    }
+
+    public void destroy() {
+
+    }
+}

Added: labs/jbosslabs/trunk/portal-extensions/forge-links/src/java/org/jboss/labs/links/service/LinksServiceLocal.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-links/src/java/org/jboss/labs/links/service/LinksServiceLocal.java	2006-07-11 21:36:04 UTC (rev 5020)
+++ labs/jbosslabs/trunk/portal-extensions/forge-links/src/java/org/jboss/labs/links/service/LinksServiceLocal.java	2006-07-11 21:50:53 UTC (rev 5021)
@@ -0,0 +1,7 @@
+package org.jboss.labs.links.service;
+
+/**
+ * @author Adam Warski (adamw at aster.pl)
+ */
+public interface LinksServiceLocal {
+}

Added: labs/jbosslabs/trunk/portal-extensions/forge-links/src/java/org/jboss/labs/links/tools/Constants.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-links/src/java/org/jboss/labs/links/tools/Constants.java	2006-07-11 21:36:04 UTC (rev 5020)
+++ labs/jbosslabs/trunk/portal-extensions/forge-links/src/java/org/jboss/labs/links/tools/Constants.java	2006-07-11 21:50:53 UTC (rev 5021)
@@ -0,0 +1,35 @@
+package org.jboss.labs.links.tools;
+
+import org.jboss.forge.common.projects.ProjectsHelper;
+import org.jboss.forge.common.ForgeHelper;
+
+/**
+ * @author Adam Warski (adamw at aster.pl)
+ */
+public class Constants {
+    /**
+     * Name of the links service.
+     */
+    public static final String LINKS_SERVICE_NAME   = "labs:service=links";
+
+    /**
+     * Beginning of each generated link.
+     */
+    public static final String LINK_PREFIX          = "/portal";
+    public static final int LINK_PREFIX_LEN         = LINK_PREFIX.length();
+
+    /**
+     * String that separates different parts of a link.
+     */
+    public static final String LINK_SEPARATOR       = "/";
+    public static final String LINK_SEPARATOR_RE    = "[" + LINK_SEPARATOR + "]";
+
+    /**
+     * Start of project freezone pages links.
+     */
+    public static final String PRJ_FREEZONE_LINK_PREFIX     =
+            ForgeHelper.LABS_PORTAL + LINK_SEPARATOR +
+            ProjectsHelper.MEMBERS_DIR + LINK_SEPARATOR;
+    public static final int PRJ_FREEZONE_LINK_PREFIX_LEN    =
+            PRJ_FREEZONE_LINK_PREFIX.length();   
+}

Added: labs/jbosslabs/trunk/portal-extensions/forge-links/src/java/org/jboss/labs/links/tools/LinksTools.java
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-links/src/java/org/jboss/labs/links/tools/LinksTools.java	2006-07-11 21:36:04 UTC (rev 5020)
+++ labs/jbosslabs/trunk/portal-extensions/forge-links/src/java/org/jboss/labs/links/tools/LinksTools.java	2006-07-11 21:50:53 UTC (rev 5021)
@@ -0,0 +1,30 @@
+package org.jboss.labs.links.tools;
+
+import org.jboss.labs.links.LinksService;
+import org.jboss.mx.util.MBeanProxyExt;
+import org.jboss.mx.util.MBeanServerLocator;
+
+/**
+ * @author Adam Warski (adamw at aster.pl)
+ */
+public class LinksTools {
+    private static LinksService instance;
+
+    /**
+     * Gets an instance of the Links Service.
+     */
+    public static LinksService getService() {
+        try {
+            if (instance == null) {
+                instance = (LinksService) MBeanProxyExt.create(
+                        LinksService.class,
+                        Constants.LINKS_SERVICE_NAME,
+                        MBeanServerLocator.locate());
+            }
+
+            return instance;
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+    }
+}

Modified: labs/jbosslabs/trunk/portal-extensions/forge-mapper/forge-mapper.iml
===================================================================
--- labs/jbosslabs/trunk/portal-extensions/forge-mapper/forge-mapper.iml	2006-07-11 21:36:04 UTC (rev 5020)
+++ labs/jbosslabs/trunk/portal-extensions/forge-mapper/forge-mapper.iml	2006-07-11 21:50:53 UTC (rev 5021)
@@ -13,6 +13,7 @@
     <orderEntry type="module" module-name="forge-common" />
     <orderEntry type="module" module-name="shotoku-aop" />
     <orderEntry type="module" module-name="shotoku-base" />
+    <orderEntry type="library" name="portal" level="application" />
     <orderEntryProperties />
   </component>
 </module>




More information about the jboss-svn-commits mailing list