[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