[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