[jboss-svn-commits] JBL Code SVN: r35863 - in labs/jbosslabs/labs-3.0-build/integration/sbs-projectinfo/trunk/src/main: java/org/jboss/labs/sbs/plugin/projectinfo/struts and 1 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu Nov 4 10:14:18 EDT 2010
Author: lkrzyzanek
Date: 2010-11-04 10:14:16 -0400 (Thu, 04 Nov 2010)
New Revision: 35863
Modified:
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/struts/ProjectInfoAction.java
labs/jbosslabs/labs-3.0-build/integration/sbs-projectinfo/trunk/src/main/plugin/spring.xml
Log:
Changed implementation of caches to local variable.
added isBannerExists
Modified: 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 2010-11-04 13:57:29 UTC (rev 35862)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs-projectinfo/trunk/src/main/java/org/jboss/labs/sbs/plugin/projectinfo/ProjectInfoManagerImpl.java 2010-11-04 14:14:16 UTC (rev 35863)
@@ -23,6 +23,7 @@
import java.net.MalformedURLException;
import java.net.URL;
+import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
@@ -34,7 +35,6 @@
import org.jboss.community.magnolia.services.ws.MagnoliaWebService;
import org.jboss.community.magnolia.services.ws.MagnoliaWebServiceBeanService;
-import com.jivesoftware.cache.Cache;
import com.jivesoftware.community.Community;
import com.jivesoftware.community.CommunityManager;
import com.jivesoftware.community.JiveContainer;
@@ -52,43 +52,37 @@
public static final String TAB_TO_HIGHLIGHT = "community";
public static final String EXCLUDED_SPACES_PROP_NAME = "jbossorg.navigation.excludedspaces";
+
+ public static final String BANNER_NOT_EXISTS_PROP_NAME = "jbossorg.navigation.bannerNotExists";
+ public static final String REFRESH_PROP_NAME = "jbossorg.navigation.refresh";
+
+ public static final String REFRESH_RUNNING_PROP_NAME = "jbossorg.navigation.refreshRunning";
+
public static final String MAGNOLIA_SERVICES_URL_PROP_NAME = "jbossorg.navigation.magnoliaNavigationServiceURL";
public static final String GA_CODE_PROP_NAME = "ga.code";
+ public static final String PROJECT_ID_PROP_NAME = "project.id";
+
/**
* A cache for space navigations.<br>
* Key is Space ID in DB (Jive Container ID)<br>
* Value is project navigation
*/
- private Cache<Long, String> spaceNavigationCache;
+ private Map<Long, String> spaceNavigationCache = new HashMap<Long, String>();
/**
* A cache for space navigations.<br>
* Key is Space ID in DB (Jive Container ID)<br>
* Value is project navigation
*/
- private Cache<Long, String> spaceFooterCache;
+ private Map<Long, String> spaceFooterCache = new HashMap<Long, String>();
private MagnoliaWebService projectService = null;
private CommunityManager communityManager;
- protected static ThreadLocal<Boolean> refreshNavigationRunning = new ThreadLocal<Boolean>() {
- @Override
- protected Boolean initialValue() {
- return false;
- };
- };
-
- protected static ThreadLocal<Boolean> refreshFooterRunning = new ThreadLocal<Boolean>() {
- @Override
- protected Boolean initialValue() {
- return false;
- };
- };
-
public static boolean isSpaceProject(JiveContainer c) {
JiveContainer space = getProjectSpace(c);
if (space == null) {
@@ -126,7 +120,15 @@
if (examineParentContainers) {
projectSpace = getProjectSpace(projectSpace);
}
- return projectSpace.getDisplayName();
+
+ Map<String, String> properties = projectSpace.getProperties();
+ String projectID = properties.get(PROJECT_ID_PROP_NAME);
+
+ if (projectID == null) {
+ projectID = projectSpace.getDisplayName();
+ }
+
+ return projectID;
}
public static String getGACode(JiveContainer container, boolean examineParentContainers) {
@@ -137,6 +139,18 @@
Map<String, String> properties = projectSpace.getProperties();
return properties.get(GA_CODE_PROP_NAME);
}
+
+ public static boolean isBannerExists(JiveContainer container, boolean examineParentContainers) {
+ JiveContainer projectSpace = container;
+ if (examineParentContainers) {
+ projectSpace = getProjectSpace(projectSpace);
+ }
+ String bannerNotExists = JiveGlobals.getJiveProperty(BANNER_NOT_EXISTS_PROP_NAME);
+ if (bannerNotExists != null && bannerNotExists.indexOf(projectSpace.getDisplayName()) != -1) {
+ return false;
+ }
+ return true;
+ }
protected static JiveContainer getProjectSpace(JiveContainer c) {
if (c.getParentContainer() == null) {
@@ -149,6 +163,29 @@
return projectSpace;
}
+ private static boolean getRefreshRunning() {
+ return JiveGlobals.getJiveBooleanProperty(REFRESH_RUNNING_PROP_NAME, false);
+ }
+
+ private static void setRefreshRunning(boolean value) {
+ JiveGlobals.setJiveProperty(REFRESH_RUNNING_PROP_NAME, "" + value);
+ }
+
+ private void refreshNavigationFooter() {
+ if (!getRefreshRunning()) {
+ setRefreshRunning(true);
+ spaceNavigationCache.clear();
+ spaceFooterCache.clear();
+ try {
+ new RefreshNavigationFooterThread(getProjectService(), spaceNavigationCache, spaceFooterCache, communityManager)
+ .start();
+ } catch (MalformedURLException e) {
+ log.error("Cannot access Magnolia Project service");
+ setRefreshRunning(false);
+ }
+ }
+ }
+
@Override
public String getSpaceNavigation(JiveContainer container) {
JiveContainer projectSpace = getProjectSpace(container);
@@ -157,15 +194,9 @@
return null;
}
- if (spaceNavigationCache.getSize() == 0) {
- try {
- if (!refreshNavigationRunning.get()) {
- refreshNavigationRunning.set(true);
- new RefreshNavigationThread(getProjectService(), spaceNavigationCache, communityManager).start();
- }
- } catch (MalformedURLException e) {
- log.error("Cannot access Magnolia Project service");
- }
+ if (JiveGlobals.getJiveBooleanProperty(REFRESH_PROP_NAME, false)) {
+ JiveGlobals.setJiveProperty(REFRESH_PROP_NAME, "false");
+ refreshNavigationFooter();
}
return spaceNavigationCache.get(projectSpace.getID());
@@ -178,16 +209,6 @@
// incorrect space (e.g. root)
return null;
}
- if (spaceFooterCache.getSize() == 0) {
- try {
- if (!refreshFooterRunning.get()) {
- refreshFooterRunning.set(true);
- new RefreshFooterThread(getProjectService(), spaceFooterCache, communityManager).start();
- }
- } catch (MalformedURLException e) {
- log.error("Cannot access Magnolia Project service");
- }
- }
return spaceFooterCache.get(projectSpace.getID());
}
@@ -207,32 +228,38 @@
return projectService;
}
- public class RefreshNavigationThread extends Thread {
+ public class RefreshNavigationFooterThread extends Thread {
- private final Logger log = LogManager.getLogger(RefreshNavigationThread.class);
+ private final Logger log = LogManager.getLogger(RefreshNavigationFooterThread.class);
private MagnoliaWebService service;
- private Cache<Long, String> spaceNavigationCache;
+ private Map<Long, String> spaceFooterCache;
+ private Map<Long, String> spaceNavigationCache;
+
private CommunityManager communityManager;
- public RefreshNavigationThread(MagnoliaWebService service, Cache<Long, String> spaceNavigationCache,
- CommunityManager communityManager) {
- super("RefreshNavigationThread");
+ public RefreshNavigationFooterThread(MagnoliaWebService service, Map<Long, String> spaceNavigationCache,
+ Map<Long, String> spaceFooterCache, CommunityManager communityManager) {
+ super("RefreshNavigationFooterThread");
this.service = service;
+ this.spaceFooterCache = spaceFooterCache;
this.spaceNavigationCache = spaceNavigationCache;
this.communityManager = communityManager;
}
@Override
public void run() {
+ log.info("RefreshNavigationFooterThread started");
+
Iterator<Community> communities = communityManager.getCommunities(communityManager.getRootCommunity());
while (communities.hasNext()) {
Community c = communities.next();
+
String projectID = getProjectID(c);
if (log.isInfoEnabled()) {
- log.info("Get navigation for " + projectID);
+ log.info("Get navigation for " + c.getDisplayName());
}
try {
String navigation = service.projectNavigationWithParentAndHighlighting(projectID, null, TAB_TO_HIGHLIGHT);
@@ -243,39 +270,8 @@
} catch (Exception e) {
log.error("Cannot get navigation for " + projectID, e);
}
- }
-
- refreshNavigationRunning.set(false);
- log.info("RefreshNavigationThread completed");
- }
- }
-
- public class RefreshFooterThread extends Thread {
-
- private final Logger log = LogManager.getLogger(RefreshNavigationThread.class);
-
- private MagnoliaWebService service;
-
- private Cache<Long, String> spaceFooterCache;
-
- private CommunityManager communityManager;
-
- public RefreshFooterThread(MagnoliaWebService service, Cache<Long, String> spaceFooterCache,
- CommunityManager communityManager) {
- super("RefreshFooterThread");
- this.service = service;
- this.spaceFooterCache = spaceFooterCache;
- this.communityManager = communityManager;
- }
-
- @Override
- public void run() {
- Iterator<Community> communities = communityManager.getCommunities(communityManager.getRootCommunity());
- while (communities.hasNext()) {
- Community c = communities.next();
- String projectID = getProjectID(c);
if (log.isInfoEnabled()) {
- log.info("Get navigation for " + c.getDisplayName());
+ log.info("Get footer for " + c.getDisplayName());
}
try {
String footer = service.projectFooterNavigation(projectID);
@@ -288,24 +284,24 @@
}
}
- refreshFooterRunning.set(false);
- log.info("RefreshFooterThread completed");
+ setRefreshRunning(false);
+ log.info("RefreshNavigationFooterThread completed");
}
}
- public Cache<Long, String> getSpaceNavigationCache() {
+ public Map<Long, String> getSpaceNavigationCache() {
return spaceNavigationCache;
}
- public void setSpaceNavigationCache(Cache<Long, String> spaceNavigationCache) {
+ public void setSpaceNavigationCache(Map<Long, String> spaceNavigationCache) {
this.spaceNavigationCache = spaceNavigationCache;
}
- public void setSpaceFooterCache(Cache<Long, String> spaceFooterCache) {
+ public void setSpaceFooterCache(Map<Long, String> spaceFooterCache) {
this.spaceFooterCache = spaceFooterCache;
}
- public Cache<Long, String> getSpaceFooterCache() {
+ public Map<Long, String> getSpaceFooterCache() {
return spaceFooterCache;
}
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-11-04 13:57:29 UTC (rev 35862)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs-projectinfo/trunk/src/main/java/org/jboss/labs/sbs/plugin/projectinfo/struts/ProjectInfoAction.java 2010-11-04 14:14:16 UTC (rev 35863)
@@ -120,6 +120,18 @@
}
/**
+ * Determine if space has banner or not
+ *
+ * @param containerType
+ * @param containerID
+ * @return "true" or "false"
+ */
+ public static String isBannerExists(int containerType, int containerID) {
+ JiveContainer container = getSpaceContainer(containerType, containerID);
+ return "" + ProjectInfoManagerImpl.isBannerExists(container, true);
+ }
+
+ /**
* Get Project ID for specified container
*
* @param containerType
Modified: 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 2010-11-04 13:57:29 UTC (rev 35862)
+++ labs/jbosslabs/labs-3.0-build/integration/sbs-projectinfo/trunk/src/main/plugin/spring.xml 2010-11-04 14:14:16 UTC (rev 35863)
@@ -6,18 +6,8 @@
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="spaceFooterCache" parent="cacheBean" depends-on="cacheFactoryManager">
- <constructor-arg value="Space Footer Cache" />
- </bean>
-
<bean id="projectInfoManager"
class="org.jboss.labs.sbs.plugin.projectinfo.ProjectInfoManagerImpl">
- <property name="spaceNavigationCache" ref="spaceNavigationCache" />
- <property name="spaceFooterCache" ref="spaceFooterCache" />
<property name="communityManager" ref="communityManager" />
</bean>
More information about the jboss-svn-commits
mailing list