From: <jbo...@li...> - 2005-12-12 21:03:12
|
Author: adamw Date: 2005-12-12 16:03:02 -0500 (Mon, 12 Dec 2005) New Revision: 1795 Added: trunk/forge/portal-extensions/forge-blog/src/java/org/jboss/portlet/blog/BlogConfigurationWatcher.java Modified: trunk/forge/portal-extensions/forge-blog/src/java/org/jboss/portlet/blog/BlogPortlet.java trunk/forge/portal-extensions/forge-blog/src/web/WEB-INF/portlet.xml Log: http://jira.jboss.com/jira/browse/JBLAB-572 Added: trunk/forge/portal-extensions/forge-blog/src/java/org/jboss/portlet/blog/BlogConfigurationWatcher.java =================================================================== --- trunk/forge/portal-extensions/forge-blog/src/java/org/jboss/portlet/blog/BlogConfigurationWatcher.java 2005-12-12 18:56:22 UTC (rev 1794) +++ trunk/forge/portal-extensions/forge-blog/src/java/org/jboss/portlet/blog/BlogConfigurationWatcher.java 2005-12-12 21:03:02 UTC (rev 1795) @@ -0,0 +1,45 @@ +package org.jboss.portlet.blog; + +import java.io.IOException; +import java.util.Properties; + +import org.jboss.forge.common.service.NodeWatcher; +import org.jboss.forge.common.service.ResourceWatcher; +import org.jboss.shotoku.ContentManager; +import org.jboss.shotoku.exceptions.ResourceDoesNotExist; + +public class BlogConfigurationWatcher implements NodeWatcher { + private final static String CONFIG_FILE_NAME = "blog/blog.properties"; + private ResourceWatcher rw; + private ContentManager cm; + + public Properties getProperties() { + try { + Properties ret = new Properties(); + ret.load(cm.getNode(CONFIG_FILE_NAME).getContentInputStream()); + return ret; + } catch (IOException e) { + e.printStackTrace(); + } catch (ResourceDoesNotExist e) { + // Well ... + e.printStackTrace(); + } + + return null; + } + + public Object init(String portalName) { + cm = ContentManager.getContentManager(portalName); + rw = new ResourceWatcher(cm); + rw.watchResource(CONFIG_FILE_NAME); + return getProperties(); + } + + public Object nodeUpdate(String portalName, Object currentValue) { + if (rw.checkResources()) { + return getProperties(); + } else { + return null; + } + } +} Modified: trunk/forge/portal-extensions/forge-blog/src/java/org/jboss/portlet/blog/BlogPortlet.java =================================================================== --- trunk/forge/portal-extensions/forge-blog/src/java/org/jboss/portlet/blog/BlogPortlet.java 2005-12-12 18:56:22 UTC (rev 1794) +++ trunk/forge/portal-extensions/forge-blog/src/java/org/jboss/portlet/blog/BlogPortlet.java 2005-12-12 21:03:02 UTC (rev 1795) @@ -29,9 +29,9 @@ import java.util.Date; import java.util.Iterator; import java.util.List; +import java.util.Properties; import javax.portlet.PortalContext; -import javax.portlet.PortletConfig; import javax.portlet.PortletException; import javax.portlet.PortletRequestDispatcher; import javax.portlet.WindowState; @@ -81,25 +81,34 @@ throws IOException { response.setContentType("text/html"); + String portalName = ForgeHelper.getPortalName(request); + + String configCacheKey = BlogPortlet.class.getName() + "/configuration"; + Properties config = (Properties) ForgeHelper.getForgeManagement().getFromCache( + portalName, configCacheKey); + + if (config == null) { + config = (Properties) ForgeHelper.getForgeManagement(). + addNodeWatcher(portalName, configCacheKey, + new BlogConfigurationWatcher()); + } + PortalContext portalCtx = request.getPortalContext(); - PortletConfig pConfig = getPortletConfig(); String projectId = ProjectsHelper.getSelectedProjectId(request, false); if (projectId == null) - projectId = pConfig.getInitParameter("defaultFeed"); - - String portalName = ForgeHelper.getPortalName(request); + projectId = config.getProperty("default.feed"); // Getting the number of headers and entries to display int headersNormal = Integer.valueOf( - pConfig.getInitParameter("headersNormal")).intValue(); + config.getProperty("headers.normal")).intValue(); int headersMaximized = Integer.valueOf( - pConfig.getInitParameter("headersMaximized")).intValue(); + config.getProperty("headers.maximized")).intValue(); int defShowEntries = Integer.valueOf( - pConfig.getInitParameter("showEntries")).intValue(); + config.getProperty("show.entries")).intValue(); - String feedAddress = pConfig.getInitParameter("feedAddress"); - String remoteFeedAddress = pConfig.getInitParameter("remoteFeedAddress"); + String feedAddress = config.getProperty("feed.address"); + String remoteFeedAddress = config.getProperty("remote.feed.address"); feedAddress = replaceProperty(feedAddress, "${host.address}", request .getServerName()); @@ -112,7 +121,7 @@ else feedAddress = replaceProperty(feedAddress, "${project.name}", "default"); feedAddress = replaceProperty(feedAddress, "${portal.name}", portalName); - feedAddress = replaceProperty(feedAddress, "${feed.type}", "rss2"); + feedAddress = replaceProperty(feedAddress, "${feed.type}", config.getProperty("default.feed.type")); remoteFeedAddress = replaceProperty(remoteFeedAddress, "${host.address}", request .getServerName()); Modified: trunk/forge/portal-extensions/forge-blog/src/web/WEB-INF/portlet.xml =================================================================== --- trunk/forge/portal-extensions/forge-blog/src/web/WEB-INF/portlet.xml 2005-12-12 18:56:22 UTC (rev 1794) +++ trunk/forge/portal-extensions/forge-blog/src/web/WEB-INF/portlet.xml 2005-12-12 21:03:02 UTC (rev 1795) @@ -10,37 +10,6 @@ <mime-type>text/html</mime-type> <portlet-mode>VIEW</portlet-mode> </supports> - <init-param> - <description>Number of headers to display in a normal, not-main portlet. The following - should be true: headersNormal (less or equal to) showEntries+headersMaximized.</description> - <name>headersNormal</name> - <value>50</value> - </init-param> - <init-param> - <description>Number of entries to display in a main page or maximized portlet.</description> - <name>showEntries</name> - <value>50</value> - </init-param> - <init-param> - <description>Number of headers to display in a main page or maximized portlet.</description> - <name>headersMaximized</name> - <value>50</value> - </init-param> - <init-param> - <description>Address of the blog's local feed.</description> - <name>feedAddress</name> - <value>${scheme.name}://${host.address}:${host.port}/feeds/${project.name}/${feed.type}</value> - </init-param> - <init-param> - <description>Address of the blog's remote feed.</description> - <name>remoteFeedAddress</name> - <value>${scheme.name}://${host.address}:${host.port}/feeds/${project.name}/${feed.type}</value> - </init-param> - <init-param> - <description>Default feed to display.</description> - <name>defaultFeed</name> - <value>all</value> - </init-param> <portlet-info> <title>JBoss Blog Portlet</title> </portlet-info> |