[jboss-svn-commits] JBL Code SVN: r32871 - in labs/jbosslabs/labs-3.0-build/integration/sbs-projectinfo/trunk/src: main/java/org/jboss/labs/sbs/plugin/projectinfo and 11 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu May 13 10:30:28 EDT 2010


Author: lkrzyzanek
Date: 2010-05-13 10:30:26 -0400 (Thu, 13 May 2010)
New Revision: 32871

Added:
   labs/jbosslabs/labs-3.0-build/integration/sbs-projectinfo/trunk/src/main/java/org/jboss/labs/sbs/plugin/projectinfo/ProjectInfoManager.java
   labs/jbosslabs/labs-3.0-build/integration/sbs-projectinfo/trunk/src/main/java/org/jboss/labs/sbs/plugin/projectinfo/ProjectInfoManagerImpl.java
   labs/jbosslabs/labs-3.0-build/integration/sbs-projectinfo/trunk/src/main/plugin/cache-config.xml
   labs/jbosslabs/labs-3.0-build/integration/sbs-projectinfo/trunk/src/main/plugin/spring.xml
   labs/jbosslabs/labs-3.0-build/integration/sbs-projectinfo/trunk/src/test/
   labs/jbosslabs/labs-3.0-build/integration/sbs-projectinfo/trunk/src/test/java/
   labs/jbosslabs/labs-3.0-build/integration/sbs-projectinfo/trunk/src/test/java/org/
   labs/jbosslabs/labs-3.0-build/integration/sbs-projectinfo/trunk/src/test/java/org/jboss/
   labs/jbosslabs/labs-3.0-build/integration/sbs-projectinfo/trunk/src/test/java/org/jboss/labs/
   labs/jbosslabs/labs-3.0-build/integration/sbs-projectinfo/trunk/src/test/java/org/jboss/labs/sbs/
   labs/jbosslabs/labs-3.0-build/integration/sbs-projectinfo/trunk/src/test/java/org/jboss/labs/sbs/plugin/
   labs/jbosslabs/labs-3.0-build/integration/sbs-projectinfo/trunk/src/test/java/org/jboss/labs/sbs/plugin/projectinfo/
   labs/jbosslabs/labs-3.0-build/integration/sbs-projectinfo/trunk/src/test/java/org/jboss/labs/sbs/plugin/projectinfo/ProjectInfoManagerImplTest.java
Modified:
   labs/jbosslabs/labs-3.0-build/integration/sbs-projectinfo/trunk/src/main/java/org/jboss/labs/sbs/plugin/projectinfo/struts/ProjectInfoAction.java
   labs/jbosslabs/labs-3.0-build/integration/sbs-projectinfo/trunk/src/main/plugin/resources/templates/rawdata.ftl
   labs/jbosslabs/labs-3.0-build/integration/sbs-projectinfo/trunk/src/main/plugin/struts.xml
Log:
ORG-517: Added business logic to plugin project info (still without Magnolia's WS call)

Added: labs/jbosslabs/labs-3.0-build/integration/sbs-projectinfo/trunk/src/main/java/org/jboss/labs/sbs/plugin/projectinfo/ProjectInfoManager.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/sbs-projectinfo/trunk/src/main/java/org/jboss/labs/sbs/plugin/projectinfo/ProjectInfoManager.java	                        (rev 0)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs-projectinfo/trunk/src/main/java/org/jboss/labs/sbs/plugin/projectinfo/ProjectInfoManager.java	2010-05-13 14:30:26 UTC (rev 32871)
@@ -0,0 +1,41 @@
+/*
+ * JBoss Community http://jboss.org/
+ *
+ * Copyright (c) 2010 Red Hat Middleware, LLC. All rights reserved.
+ *
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT A WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License, v.2.1 along with this distribution; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301, USA.
+ *
+ * Red Hat Author(s): Libor Krzyzanek
+ */
+package org.jboss.labs.sbs.plugin.projectinfo;
+
+import com.jivesoftware.community.JiveContainer;
+
+/**
+ * Basic project info manager
+ * 
+ * @author <a href="mailto:lkrzyzan at redhat.com">Libor Krzyzanek</a>
+ */
+public interface ProjectInfoManager {
+
+  /**
+   * Get project navigation
+   * 
+   * @param container
+   * @return project navigation bar in HTML
+   */
+  public String getSpaceNavigation(JiveContainer container);
+
+}


Property changes on: labs/jbosslabs/labs-3.0-build/integration/sbs-projectinfo/trunk/src/main/java/org/jboss/labs/sbs/plugin/projectinfo/ProjectInfoManager.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Added: labs/jbosslabs/labs-3.0-build/integration/sbs-projectinfo/trunk/src/main/java/org/jboss/labs/sbs/plugin/projectinfo/ProjectInfoManagerImpl.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/sbs-projectinfo/trunk/src/main/java/org/jboss/labs/sbs/plugin/projectinfo/ProjectInfoManagerImpl.java	                        (rev 0)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs-projectinfo/trunk/src/main/java/org/jboss/labs/sbs/plugin/projectinfo/ProjectInfoManagerImpl.java	2010-05-13 14:30:26 UTC (rev 32871)
@@ -0,0 +1,83 @@
+/*
+ * JBoss Community http://jboss.org/
+ *
+ * Copyright (c) 2010 Red Hat Middleware, LLC. All rights reserved.
+ *
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT A WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License, v.2.1 along with this distribution; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301, USA.
+ *
+ * Red Hat Author(s): Libor Krzyzanek
+ */
+package org.jboss.labs.sbs.plugin.projectinfo;
+
+import com.jivesoftware.community.JiveContainer;
+import com.jivesoftware.community.cache.Cache;
+
+/**
+ * Implementation of ProjectInfoManager
+ * 
+ * @author <a href="mailto:lkrzyzan at redhat.com">Libor Krzyzanek</a>
+ */
+public class ProjectInfoManagerImpl implements ProjectInfoManager {
+
+  // private static final Logger log =
+  // LogManager.getLogger(ProjectInfoManagerImpl.class);
+
+  /**
+   * A cache for HF URL titles.<br>
+   * Key is Space ID in DB (Jive Container ID)<br>
+   * Value is project navigation
+   */
+  private Cache<Long, String> spaceNavigationCache;
+
+  @Override
+  public String getSpaceNavigation(JiveContainer container) {
+    if (container.getParentContainer() == null) {
+      return null;
+    }
+    String navigation = spaceNavigationCache.get(container.getID());
+
+    if (navigation == null) {
+      JiveContainer projectSpace = getProjectSpace(container);
+      if (projectSpace == null) {
+        // incorrect space (e.g. root)
+        return null;
+      }
+      // TODO retrieve navigation from WS and put value to cache
+      navigation = "TODO: Call Magnolia's WS for project: " + projectSpace.getDisplayName();
+      spaceNavigationCache.put(projectSpace.getID(), navigation);
+    }
+    return navigation;
+  }
+
+  protected JiveContainer getProjectSpace(JiveContainer c) {
+    if (c.getParentContainer() == null) {
+      return null;
+    }
+    JiveContainer projectSpace = c;
+    while (projectSpace.getParentContainer().getParentContainer() != null) {
+      projectSpace = projectSpace.getParentContainer();
+    }
+    return projectSpace;
+  }
+
+  public Cache<Long, String> getSpaceNavigationCache() {
+    return spaceNavigationCache;
+  }
+
+  public void setSpaceNavigationCache(Cache<Long, String> spaceNavigationCache) {
+    this.spaceNavigationCache = spaceNavigationCache;
+  }
+
+}


Property changes on: labs/jbosslabs/labs-3.0-build/integration/sbs-projectinfo/trunk/src/main/java/org/jboss/labs/sbs/plugin/projectinfo/ProjectInfoManagerImpl.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Modified: labs/jbosslabs/labs-3.0-build/integration/sbs-projectinfo/trunk/src/main/java/org/jboss/labs/sbs/plugin/projectinfo/struts/ProjectInfoAction.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/sbs-projectinfo/trunk/src/main/java/org/jboss/labs/sbs/plugin/projectinfo/struts/ProjectInfoAction.java	2010-05-13 13:47:50 UTC (rev 32870)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs-projectinfo/trunk/src/main/java/org/jboss/labs/sbs/plugin/projectinfo/struts/ProjectInfoAction.java	2010-05-13 14:30:26 UTC (rev 32871)
@@ -21,6 +21,9 @@
  */
 package org.jboss.labs.sbs.plugin.projectinfo.struts;
 
+import org.jboss.labs.sbs.plugin.projectinfo.ProjectInfoManager;
+
+import com.jivesoftware.community.JiveContainer;
 import com.jivesoftware.community.action.JiveActionSupport;
 
 /**
@@ -30,10 +33,28 @@
  */
 public class ProjectInfoAction extends JiveActionSupport {
 
-  public String data;
+  /** Raw data */
+  private String data;
 
-  public String getProjectNavigation() {
-    data = "TODO: Call Magnolia's WS.";
+  private ProjectInfoManager projectInfoManager;
+
+  /**
+   * Get project (space navigation) for current container.<br>
+   * Don't forget to pass values for containerType and containerID attributes
+   * 
+   * @see JiveActionSupport#setContainerID(long)
+   * @see JiveActionSupport#setContainerType(int)
+   */
+  public String getSpaceNavigation() {
+    if (getContainerType() <= 0 && getContainerID() <= 0) {
+      return INPUT;
+    }
+
+    JiveContainer container = getContainer();
+    if (container == null) {
+      return INPUT;
+    }
+    data = projectInfoManager.getSpaceNavigation(container);
     return SUCCESS;
   }
 
@@ -41,8 +62,8 @@
     return data;
   }
 
-  public void setData(String data) {
-    this.data = data;
+  public void setProjectInfoManager(ProjectInfoManager projectInfoManager) {
+    this.projectInfoManager = projectInfoManager;
   }
 
 }

Added: labs/jbosslabs/labs-3.0-build/integration/sbs-projectinfo/trunk/src/main/plugin/cache-config.xml
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/sbs-projectinfo/trunk/src/main/plugin/cache-config.xml	                        (rev 0)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs-projectinfo/trunk/src/main/plugin/cache-config.xml	2010-05-13 14:30:26 UTC (rev 32871)
@@ -0,0 +1,20 @@
+<cache-config>
+  <cache-mapping>
+    <cache-name>Space Navigation Cache</cache-name>
+    <scheme-name>default-near</scheme-name>
+    <init-params>
+      <init-param>
+        <param-name>back-size-high</param-name>
+        <param-value>1048576</param-value>
+      </init-param>
+      <init-param>
+        <param-name>back-expiry</param-name>
+        <param-value>24h</param-value>
+      </init-param>
+      <init-param>
+        <param-name>back-size-low</param-name>
+        <param-value>117965</param-value>
+      </init-param>
+    </init-params>
+  </cache-mapping>
+</cache-config>


Property changes on: labs/jbosslabs/labs-3.0-build/integration/sbs-projectinfo/trunk/src/main/plugin/cache-config.xml
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Modified: labs/jbosslabs/labs-3.0-build/integration/sbs-projectinfo/trunk/src/main/plugin/resources/templates/rawdata.ftl
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/sbs-projectinfo/trunk/src/main/plugin/resources/templates/rawdata.ftl	2010-05-13 13:47:50 UTC (rev 32870)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs-projectinfo/trunk/src/main/plugin/resources/templates/rawdata.ftl	2010-05-13 14:30:26 UTC (rev 32871)
@@ -1 +1,5 @@
-${data}
\ No newline at end of file
+<#if data??>
+${data}
+<#else>
+
+</#if>
\ No newline at end of file

Added: labs/jbosslabs/labs-3.0-build/integration/sbs-projectinfo/trunk/src/main/plugin/spring.xml
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/sbs-projectinfo/trunk/src/main/plugin/spring.xml	                        (rev 0)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs-projectinfo/trunk/src/main/plugin/spring.xml	2010-05-13 14:30:26 UTC (rev 32871)
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:util="http://www.springframework.org/schema/util"
+  xsi:schemaLocation="
+http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
+http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.5.xsd">
+
+
+  <bean id="spaceNavigationCache" parent="cacheBean" depends-on="cacheFactoryManager">
+    <constructor-arg value="Space Navigation Cache" />
+  </bean>
+
+  <bean id="projectInfoManager"
+    class="org.jboss.labs.sbs.plugin.projectinfo.ProjectInfoManagerImpl">
+    <property name="spaceNavigationCache" ref="spaceNavigationCache" />
+
+  </bean>
+
+</beans>


Property changes on: labs/jbosslabs/labs-3.0-build/integration/sbs-projectinfo/trunk/src/main/plugin/spring.xml
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Modified: labs/jbosslabs/labs-3.0-build/integration/sbs-projectinfo/trunk/src/main/plugin/struts.xml
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/sbs-projectinfo/trunk/src/main/plugin/struts.xml	2010-05-13 13:47:50 UTC (rev 32870)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs-projectinfo/trunk/src/main/plugin/struts.xml	2010-05-13 14:30:26 UTC (rev 32871)
@@ -3,9 +3,9 @@
   <package name="projectinfo-actions" namespace="/projectinfo"
     extends="community-actions">
 
-    <action name="project-navigation"
+    <action name="space-navigation"
       class="org.jboss.labs.sbs.plugin.projectinfo.struts.ProjectInfoAction"
-      method="getProjectNavigation">
+      method="getSpaceNavigation">
       <result name="input" type="freemarker">
         /plugins/projectinfo/resources/templates/rawdata.ftl
       </result>

Added: labs/jbosslabs/labs-3.0-build/integration/sbs-projectinfo/trunk/src/test/java/org/jboss/labs/sbs/plugin/projectinfo/ProjectInfoManagerImplTest.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/sbs-projectinfo/trunk/src/test/java/org/jboss/labs/sbs/plugin/projectinfo/ProjectInfoManagerImplTest.java	                        (rev 0)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs-projectinfo/trunk/src/test/java/org/jboss/labs/sbs/plugin/projectinfo/ProjectInfoManagerImplTest.java	2010-05-13 14:30:26 UTC (rev 32871)
@@ -0,0 +1,47 @@
+package org.jboss.labs.sbs.plugin.projectinfo;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Test;
+
+import com.jivesoftware.community.Community;
+import com.jivesoftware.community.impl.DbCommunity;
+
+public class ProjectInfoManagerImplTest {
+
+  @Test
+  public void testGetProjectSpace() {
+    ProjectInfoManagerImpl projectInfoManager = new ProjectInfoManagerImpl();
+
+    Community root = new DbCommunityMock("root", null);
+    Community space1 = new DbCommunityMock("space1", root);
+    Community space11 = new DbCommunityMock("space11", space1);
+    Community space111 = new DbCommunityMock("space111", space11);
+    Community space112 = new DbCommunityMock("space112", space11);
+    Community space1111 = new DbCommunityMock("space1111", space111);
+
+    assertEquals(null, projectInfoManager.getProjectSpace(root));
+    assertEquals("space1", projectInfoManager.getProjectSpace(space1).getDisplayName());
+    assertEquals("space1", projectInfoManager.getProjectSpace(space11).getDisplayName());
+    assertEquals("space1", projectInfoManager.getProjectSpace(space111).getDisplayName());
+    assertEquals("space1", projectInfoManager.getProjectSpace(space112).getDisplayName());
+    assertEquals("space1", projectInfoManager.getProjectSpace(space1111).getDisplayName());
+
+  }
+
+  class DbCommunityMock extends DbCommunity {
+
+    Community parent;
+
+    public DbCommunityMock(String displayName, Community parent) {
+      this.parent = parent;
+      setDisplayName(displayName);
+    }
+
+    @Override
+    public Community getParentContainer() {
+      return parent;
+    }
+  }
+
+}


Property changes on: labs/jbosslabs/labs-3.0-build/integration/sbs-projectinfo/trunk/src/test/java/org/jboss/labs/sbs/plugin/projectinfo/ProjectInfoManagerImplTest.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain



More information about the jboss-svn-commits mailing list