Author: adamw Date: 2005-09-13 08:03:12 -0400 (Tue, 13 Sep 2005) New Revision: 1096 Added: trunk/forge/portal-extensions/forge-blog/src/java/org/jboss/portlet/blog/BlogNodeWatcher.java Removed: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/blog/AbstractBlog.java trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/blog/BlogNodeWatcher.java trunk/forge/portal-extensions/forge-prj-blog/ Modified: trunk/forge/portal-extensions/forge-ads/src/java/org/jbosslabs/portlet/ads/AdsPortlet.java 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-instances.xml trunk/forge/portal-extensions/forge-blog/src/web/WEB-INF/portlet.xml trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/ForgeHelper.java trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/ProjectsHelper.java trunk/forge/portal-extensions/forge-ear/src/META-INF/application.xml trunk/forge/portal-extensions/jbosswiki/.classpath trunk/forge/portal-extensions/portal-default/src/web/WEB-INF/default-portal.xml Log: Merging forge-blog and forge-prj-blog Modified: trunk/forge/portal-extensions/forge-ads/src/java/org/jbosslabs/portlet/ads/AdsPortlet.java =================================================================== --- trunk/forge/portal-extensions/forge-ads/src/java/org/jbosslabs/portlet/ads/AdsPortlet.java 2005-09-13 11:43:19 UTC (rev 1095) +++ trunk/forge/portal-extensions/forge-ads/src/java/org/jbosslabs/portlet/ads/AdsPortlet.java 2005-09-13 12:03:12 UTC (rev 1096) @@ -18,7 +18,6 @@ import javax.portlet.*; public class AdsPortlet extends ContentPortlet { - ForgeHelper forg = new ForgeHelper(); public AdsPortlet() { super("Ads", "ads"); } @@ -48,7 +47,7 @@ } public void prepareRequest(JBossRenderRequest rReq) { - forg.prepareRequest(rReq); + ForgeHelper.prepareRequest(rReq); } protected void displayContent(JBossRenderRequest rReq, Added: trunk/forge/portal-extensions/forge-blog/src/java/org/jboss/portlet/blog/BlogNodeWatcher.java =================================================================== --- trunk/forge/portal-extensions/forge-blog/src/java/org/jboss/portlet/blog/BlogNodeWatcher.java 2005-09-13 11:43:19 UTC (rev 1095) +++ trunk/forge/portal-extensions/forge-blog/src/java/org/jboss/portlet/blog/BlogNodeWatcher.java 2005-09-13 12:03:12 UTC (rev 1096) @@ -0,0 +1,35 @@ +package org.jboss.portlet.blog; + +import java.net.URL; + +import org.jboss.forge.common.service.NodeWatcher; + +import com.sun.syndication.feed.synd.SyndFeed; +import com.sun.syndication.io.SyndFeedInput; +import com.sun.syndication.io.XmlReader; + +public class BlogNodeWatcher implements NodeWatcher { + private String feedAddress; + + public BlogNodeWatcher(String feedAddress) { + this.feedAddress = feedAddress; + } + + private SyndFeed getFeed() { + try { + URL feedUrl = new URL(feedAddress); + SyndFeedInput input = new SyndFeedInput(); + return input.build(new XmlReader(feedUrl)); + } catch (Exception e) { + return null; + } + } + + public Object init(String portalName) { + return getFeed(); + } + + public Object nodeUpdate(String portalName, Object currentValue) { + return getFeed(); + } +} 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-09-13 11:43:19 UTC (rev 1095) +++ trunk/forge/portal-extensions/forge-blog/src/java/org/jboss/portlet/blog/BlogPortlet.java 2005-09-13 12:03:12 UTC (rev 1096) @@ -8,14 +8,306 @@ *****************************************/ package org.jboss.portlet.blog; -import org.jboss.forge.common.blog.AbstractBlog; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import java.net.URLEncoder; +import java.text.DateFormat; +import java.util.Date; +import java.util.Iterator; +import java.util.List; +import javax.portlet.PortalContext; +import javax.portlet.PortletConfig; +import javax.portlet.PortletException; +import javax.portlet.PortletRequestDispatcher; +import javax.portlet.WindowState; + +import org.jboss.forge.common.ForgeHelper; +import org.jboss.forge.common.projects.ProjectsHelper; +import org.jboss.logging.Logger; +import org.jboss.portal.common.context.DelegateContext; +import org.jboss.portal.core.servlet.jsp.PortalJsp; +import org.jboss.portlet.JBossPortlet; +import org.jboss.portlet.JBossRenderRequest; +import org.jboss.portlet.JBossRenderResponse; + +import com.sun.syndication.feed.synd.SyndContentImpl; +import com.sun.syndication.feed.synd.SyndEntryImpl; +import com.sun.syndication.feed.synd.SyndFeed; + /** - * Blog portlet for the Forge (global). + * A blog portlet. + * * @author Adam Warski */ -public class BlogPortlet extends AbstractBlog { - protected String getJsp() { - return "/blog/blog.jsp"; +public class BlogPortlet extends JBossPortlet { + /** The class logger */ + public static final Logger log = Logger.getLogger(JBossPortlet.class); + + /** + * Init method of the portlet + */ + public void init() throws PortletException { + super.init(); } + + /** + * In the given content, replaces a property with the given name (typically + * ${name}) with the provided value. + */ + public String replaceProperty(String content, String name, String value) { + return ForgeHelper.replace(content, name, value); + } + + private String getJsp(JBossRenderRequest request) { + return request.getPreferences().getValue("jsp", ""); + } + + public void doView(JBossRenderRequest request, JBossRenderResponse response) + throws IOException { + + response.setContentType("text/html"); + + PortalContext portalCtx = request.getPortalContext(); + + String projectId = ProjectsHelper.getSelectedProjectId(request, true); + String portalName = ForgeHelper.getPortalName(request); + + // Getting the number of headers and entries to display + PortletConfig pConfig = getPortletConfig(); + int headersNormal = Integer.valueOf( + pConfig.getInitParameter("headersNormal")).intValue(); + int headersMaximized = Integer.valueOf( + pConfig.getInitParameter("headersMaximized")).intValue(); + int defShowEntries = Integer.valueOf( + pConfig.getInitParameter("showEntries")).intValue(); + + String feedAddress = pConfig.getInitParameter("feedAddress"); + String remoteFeedAddress = pConfig.getInitParameter("remoteFeedAddress"); + + feedAddress = replaceProperty(feedAddress, "${host.address}", request + .getServerName()); + feedAddress = replaceProperty(feedAddress, "${host.port}", Integer + .toString(request.getServerPort())); + if (projectId != null) + feedAddress = replaceProperty(feedAddress, "${project.name}", projectId); + else + feedAddress = replaceProperty(feedAddress, "${project.name}", "default"); + feedAddress = replaceProperty(feedAddress, "${portal.name}", portalName); + feedAddress = replaceProperty(feedAddress, "${feed.type}", "atom"); + + remoteFeedAddress = replaceProperty(remoteFeedAddress, "${host.address}", request + .getServerName()); + remoteFeedAddress = replaceProperty(remoteFeedAddress, "${host.port}", Integer + .toString(request.getServerPort())); + remoteFeedAddress = replaceProperty(remoteFeedAddress, "${project.name}", projectId); + remoteFeedAddress = replaceProperty(remoteFeedAddress, "${portal.name}", portalName); + String feedTypeFreeAddress = remoteFeedAddress; + + /* Getting portal-specific blog properties */ + String mainportlet = portalCtx + .getProperty("org.jboss.portlet.blog.mainportlet"); + + /* + * Main portlet means that the blog is the central window, so we can + * display more headers and also display entries without mazimizing the + * window. + */ + boolean isMainPortlet = false; + if (mainportlet != null) + isMainPortlet = mainportlet.equals("yes"); + + // Name of the entry to expand + String blogLink = ForgeHelper.getRequestParameter(request, "link"); + if (blogLink != null) + blogLink = URLDecoder.decode(blogLink, "UTF-8"); + + // A string denoting the number of the first displayed entry + String fromEntryString = ForgeHelper.getRequestParameter(request, + "from"); + + if (fromEntryString == null) + fromEntryString = "1"; + + // Now we are sure that fromEntryString has the value that was given to + // us in the address + int fromEntry = Integer.parseInt(fromEntryString); + + String cacheKey = BlogPortlet.class.getName()+"/"+projectId; + + SyndFeed feed = (SyndFeed) ForgeHelper.getForgeManagement().getFromCache( + portalName, cacheKey); + + if (feed == null) { + feed = (SyndFeed) ForgeHelper.getForgeManagement(). + addNodeWatcher(portalName, cacheKey, + new BlogNodeWatcher(feedAddress)); + } + + WindowState ws = request.getWindowState(); + + String currentWindowState = "maximized"; + if (WindowState.NORMAL.equals(ws)) + currentWindowState = "normal"; + + String desiredWindowState = "maximized"; + if ((WindowState.NORMAL.equals(ws)) && (isMainPortlet)) + desiredWindowState = "normal"; + + int showEntries = defShowEntries; + // If we are displaying a specific entry, we don't display any other + // ones + if (blogLink != null) + showEntries = 0; + + int toEntry = fromEntry + defShowEntries + headersMaximized - 1; + if ((WindowState.NORMAL.equals(ws)) && (!isMainPortlet)) { + // Getting here means that the portlet is in a normal window size, + // not on the main page and not on a special page (e.g., no the + // default one). + toEntry = fromEntry + headersNormal - 1; + showEntries = 0; + } + + setBlogContext(request, response, feed, fromEntry, toEntry, + showEntries, blogLink, desiredWindowState, currentWindowState, + projectId, portalName, feedTypeFreeAddress); + + ProjectsHelper.prepareRequest(request); + writePage(request, response, ForgeHelper.createRepoAccessPath( + portalName, getJsp(request))); + response.setTitle("Blog"); + } + + /** + * Writes the given page to the portlet's output. + * + * @param name + * Name of the page to display. + */ + void writePage(JBossRenderRequest request, JBossRenderResponse response, + String name) { + try { + PortletRequestDispatcher rd = getPortletContext() + .getRequestDispatcher(name); + rd.include(request, response); + } catch (PortletException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + private int max(int a, int b) { + return a > b ? a : b; + } + + /** + * Sets the context for this blog - e.g. information about blog entries. + * + * @param fromEntry + * Number of entry from which to include information. + * @param toEntry + * Number of last entry to include information about. + * @param showEntries + * Number of first entries to expand. + * @param mainEntryLink + * Link to a blog entry to expand. + * @param desiredWindowState + * Desired portlet window state in which we want to show the + * information. + * @param currentWindowState + * Current state of the portlets' window. + * @param portalName + * Name of the portal. + * @return True iff an entry was found matching <code>mainEntryLink</code>. + */ + private boolean setBlogContext(JBossRenderRequest request, + JBossRenderResponse response, SyndFeed feed, int fromEntry, + int toEntry, int showEntries, String mainEntryLink, + String desiredWindowState, String currentWindowState, + String projectId, String portalName, String feedTypeFreeAddress) { + List entries = feed.getEntries(); + DelegateContext root = new DelegateContext(); + String defaultAuthor = feed.getAuthor(); + Iterator it = entries.iterator(); + int i = 1; + int showedEntries = 0; + boolean found = mainEntryLink == null; + + while (it.hasNext()) { + SyndEntryImpl entry = (SyndEntryImpl) it.next(); + + if (i >= fromEntry) { + DelegateContext entryContext = root.next("entry"); + List contents = entry.getContents(); + SyndContentImpl content = (SyndContentImpl) contents.iterator() + .next(); + + String author = entry.getAuthor(); + if ((author == null) || (author.equals(""))) + author = defaultAuthor; + + entryContext.put("date", DateFormat.getDateInstance( + DateFormat.FULL, request.getLocale()).format( + entry.getPublishedDate())); + entryContext.put("time", DateFormat.getTimeInstance( + DateFormat.SHORT, request.getLocale()).format( + entry.getPublishedDate())); + entryContext.put("author", author); + entryContext.put("title", entry.getTitle()); + entryContext.put("content", content.getValue()); + entryContext.put("link", entry.getLink()); + if ((showedEntries++ < showEntries) + || (entry.getLink().equals(mainEntryLink))) + entryContext.next("show"); + else + entryContext.next("dontShow"); + + try { + entryContext.put("linkEnc", URLEncoder.encode(entry + .getLink(), "UTF-8")); + } catch (UnsupportedEncodingException e) { + } + + if (entry.getLink().equals(mainEntryLink)) + found = true; + } + + i++; + if (i == toEntry + 1) + break; + } + + root.put("atomFeed", ForgeHelper.replace(feedTypeFreeAddress, + "${feed.type}", "atom")); + root.put("rssFeed", ForgeHelper.replace(feedTypeFreeAddress, + "${feed.type}", "rss")); + root.put("xmlFeed", ForgeHelper.replace(feedTypeFreeAddress, + "${feed.type}", "rdf")); + + root.put("currentTime", DateFormat.getTimeInstance(DateFormat.SHORT, + request.getLocale()).format(new Date())); + root.put("desiredWindowState", desiredWindowState); + root.put("currentWindowState", currentWindowState); + root.put("projectId", projectId); + root.put(ForgeHelper.PORTAL_NAME, portalName); + if (fromEntry != 1) { + root.next("showPrevEntries"); + root.put("prevEntries", Integer.toString(max(fromEntry + - (toEntry - fromEntry + 1), 1))); + } + + if (toEntry < entries.size()) { + root.next("showNextEntries"); + root.put("nextEntries", Integer.toString(toEntry + 1)); + } + + root.put("currEntries", Integer.toString(fromEntry)); + + request.setAttribute(PortalJsp.CTX_REQUEST, root); + + return found; + } } \ No newline at end of file Modified: trunk/forge/portal-extensions/forge-blog/src/web/WEB-INF/portlet-instances.xml =================================================================== --- trunk/forge/portal-extensions/forge-blog/src/web/WEB-INF/portlet-instances.xml 2005-09-13 11:43:19 UTC (rev 1095) +++ trunk/forge/portal-extensions/forge-blog/src/web/WEB-INF/portlet-instances.xml 2005-09-13 12:03:12 UTC (rev 1096) @@ -3,5 +3,21 @@ <instance> <instance-name>BlogPortletInstance</instance-name> <component-ref>BlogPortlet</component-ref> + <preferences> + <preference> + <name>jsp</name> + <value>/blog/blog.jsp</value> + </preference> + </preferences> </instance> + <instance> + <instance-name>PrjBlogPortletInstance</instance-name> + <component-ref>BlogPortlet</component-ref> + <preferences> + <preference> + <name>jsp</name> + <value>/prj-blog/blog.jsp</value> + </preference> + </preferences> + </instance> </instances> 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-09-13 11:43:19 UTC (rev 1095) +++ trunk/forge/portal-extensions/forge-blog/src/web/WEB-INF/portlet.xml 2005-09-13 12:03:12 UTC (rev 1096) @@ -29,14 +29,12 @@ <init-param> <description>Address of the blog's local feed.</description> <name>feedAddress</name> - <value>http://${host.address}:${host.port}/blojsom/blog/${portal.name}/?flavor=${feed.type}</value> - <!-- <value>http://forge.sicore.org:${host.port}/blojsom/blog/${portal.name}/?flavor=atom</value> --> + <value>http://${host.address}:${host.port}/blojsom/blog/${project.name}/?flavor=${feed.type}</value> </init-param> <init-param> <description>Address of the blog's remote feed.</description> <name>remoteFeedAddress</name> - <value>http://${host.address}:${host.port}/blojsom/blog/${portal.name}/?flavor=${feed.type}</value> - <!-- <value>http://forge.sicore.org:${host.port}/blojsom/blog/${portal.name}/?flavor=atom</value> --> + <value>http://${host.address}:${host.port}/blojsom/blog/${project.name}/?flavor=${feed.type}</value> </init-param> <portlet-info> <title>JBoss Blog Portlet</title> Modified: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/ForgeHelper.java =================================================================== --- trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/ForgeHelper.java 2005-09-13 11:43:19 UTC (rev 1095) +++ trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/ForgeHelper.java 2005-09-13 12:03:12 UTC (rev 1096) @@ -33,6 +33,13 @@ * @author adamw */ public class ForgeHelper { + /** + * This class cannot be instatiated. + */ + private ForgeHelper() { + + } + /** * <code>REPO_ACCESS_DIR</code> - name of the virtual directory which is * used by the servlets (portlets) to inlclude pages from the repository. Deleted: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/blog/AbstractBlog.java =================================================================== --- trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/blog/AbstractBlog.java 2005-09-13 11:43:19 UTC (rev 1095) +++ trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/blog/AbstractBlog.java 2005-09-13 12:03:12 UTC (rev 1096) @@ -1,310 +0,0 @@ -/***************************************** - * * - * JBoss Portal: The OpenSource Portal * - * * - * Distributable under LGPL license. * - * See terms of license at gnu.org. * - * * - *****************************************/ -package org.jboss.forge.common.blog; - -import java.io.IOException; -import java.io.UnsupportedEncodingException; -import java.net.URLDecoder; -import java.net.URLEncoder; -import java.text.DateFormat; -import java.util.Date; -import java.util.Iterator; -import java.util.List; - -import javax.portlet.PortalContext; -import javax.portlet.PortletConfig; -import javax.portlet.PortletException; -import javax.portlet.PortletRequestDispatcher; -import javax.portlet.WindowState; - -import org.jboss.forge.common.ForgeHelper; -import org.jboss.forge.common.projects.ProjectsHelper; -import org.jboss.logging.Logger; -import org.jboss.portal.common.context.DelegateContext; -import org.jboss.portal.core.servlet.jsp.PortalJsp; -import org.jboss.portlet.JBossPortlet; -import org.jboss.portlet.JBossRenderRequest; -import org.jboss.portlet.JBossRenderResponse; - -import com.sun.syndication.feed.synd.SyndContentImpl; -import com.sun.syndication.feed.synd.SyndEntryImpl; -import com.sun.syndication.feed.synd.SyndFeed; - -/** - * An abstract blog portlet. - * - * @author Adam Warski - */ -public abstract class AbstractBlog extends JBossPortlet { - /** The class logger */ - public static final Logger log = Logger.getLogger(JBossPortlet.class); - - /** - * Init method of the portlet - */ - public void init() throws PortletException { - super.init(); - } - - /** - * In the given content, replaces a property with the given name (typically - * ${name}) with the provided value. - */ - public String replaceProperty(String content, String name, String value) { - return ForgeHelper.replace(content, name, value); - } - - protected abstract String getJsp(); - - public void doView(JBossRenderRequest request, JBossRenderResponse response) - throws IOException { - response.setContentType("text/html"); - - PortalContext portalCtx = request.getPortalContext(); - - String projectId = ProjectsHelper.getSelectedProjectId(request); - String portalName = ForgeHelper.getPortalName(request); - - // Getting the number of headers and entries to display - PortletConfig pConfig = getPortletConfig(); - int headersNormal = Integer.valueOf( - pConfig.getInitParameter("headersNormal")).intValue(); - int headersMaximized = Integer.valueOf( - pConfig.getInitParameter("headersMaximized")).intValue(); - int defShowEntries = Integer.valueOf( - pConfig.getInitParameter("showEntries")).intValue(); - - String feedAddress = pConfig.getInitParameter("feedAddress"); - String remoteFeedAddress = pConfig.getInitParameter("remoteFeedAddress"); - - feedAddress = replaceProperty(feedAddress, "${host.address}", request - .getServerName()); - feedAddress = replaceProperty(feedAddress, "${host.port}", Integer - .toString(request.getServerPort())); - if (projectId != null) - feedAddress = replaceProperty(feedAddress, "${project.name}", projectId); - else - feedAddress = replaceProperty(feedAddress, "${project.name}", "default"); - feedAddress = replaceProperty(feedAddress, "${portal.name}", portalName); - feedAddress = replaceProperty(feedAddress, "${feed.type}", "atom"); - - remoteFeedAddress = replaceProperty(remoteFeedAddress, "${host.address}", request - .getServerName()); - remoteFeedAddress = replaceProperty(remoteFeedAddress, "${host.port}", Integer - .toString(request.getServerPort())); - remoteFeedAddress = replaceProperty(remoteFeedAddress, "${project.name}", projectId); - remoteFeedAddress = replaceProperty(remoteFeedAddress, "${portal.name}", portalName); - String feedTypeFreeAddress = remoteFeedAddress; - - /* Getting portal-specific blog properties */ - String mainportlet = portalCtx - .getProperty("org.jboss.portlet.blog.mainportlet"); - - /* - * Main portlet means that the blog is the central window, so we can - * display more headers and also display entries without mazimizing the - * window. - */ - boolean isMainPortlet = false; - if (mainportlet != null) - isMainPortlet = mainportlet.equals("yes"); - - // Name of the entry to expand - String blogLink = ForgeHelper.getRequestParameter(request, "link"); - if (blogLink != null) - blogLink = URLDecoder.decode(blogLink, "UTF-8"); - - // A string denoting the number of the first displayed entry - String fromEntryString = ForgeHelper.getRequestParameter(request, - "from"); - - if (fromEntryString == null) - fromEntryString = "1"; - - // Now we are sure that fromEntryString has the value that was given to - // us in the address - int fromEntry = Integer.parseInt(fromEntryString); - - String cacheKey = AbstractBlog.class.getName()+"/"+projectId; - - SyndFeed feed = (SyndFeed) ForgeHelper.getForgeManagement().getFromCache( - portalName, cacheKey); - - if (feed == null) { - feed = (SyndFeed) ForgeHelper.getForgeManagement(). - addNodeWatcher(portalName, cacheKey, - new BlogNodeWatcher(feedAddress)); - } - - WindowState ws = request.getWindowState(); - - String currentWindowState = "maximized"; - if (WindowState.NORMAL.equals(ws)) - currentWindowState = "normal"; - - String desiredWindowState = "maximized"; - if ((WindowState.NORMAL.equals(ws)) && (isMainPortlet)) - desiredWindowState = "normal"; - - int showEntries = defShowEntries; - // If we are displaying a specific entry, we don't display any other - // ones - if (blogLink != null) - showEntries = 0; - - int toEntry = fromEntry + defShowEntries + headersMaximized - 1; - if ((WindowState.NORMAL.equals(ws)) && (!isMainPortlet)) { - // Getting here means that the portlet is in a normal window size, - // not on the main page and not on a special page (e.g., no the - // default one). - toEntry = fromEntry + headersNormal - 1; - showEntries = 0; - } - - setBlogContext(request, response, feed, fromEntry, toEntry, - showEntries, blogLink, desiredWindowState, currentWindowState, - projectId, portalName, feedTypeFreeAddress); - - ProjectsHelper.prepareRequest(request); - writePage(request, response, ForgeHelper.createRepoAccessPath( - portalName, getJsp())); - response.setTitle("Blog"); - } - - /** - * Writes the given page to the portlet's output. - * - * @param name - * Name of the page to display. - */ - void writePage(JBossRenderRequest request, JBossRenderResponse response, - String name) { - try { - PortletRequestDispatcher rd = getPortletContext() - .getRequestDispatcher(name); - rd.include(request, response); - } catch (PortletException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } - } - - private int max(int a, int b) { - return a > b ? a : b; - } - - /** - * Sets the context for this blog - e.g. information about blog entries. - * - * @param fromEntry - * Number of entry from which to include information. - * @param toEntry - * Number of last entry to include information about. - * @param showEntries - * Number of first entries to expand. - * @param mainEntryLink - * Link to a blog entry to expand. - * @param desiredWindowState - * Desired portlet window state in which we want to show the - * information. - * @param currentWindowState - * Current state of the portlets' window. - * @param portalName - * Name of the portal. - * @return True iff an entry was found matching <code>mainEntryLink</code>. - */ - private boolean setBlogContext(JBossRenderRequest request, - JBossRenderResponse response, SyndFeed feed, int fromEntry, - int toEntry, int showEntries, String mainEntryLink, - String desiredWindowState, String currentWindowState, - String projectId, String portalName, String feedTypeFreeAddress) { - List entries = feed.getEntries(); - DelegateContext root = new DelegateContext(); - String defaultAuthor = feed.getAuthor(); - Iterator it = entries.iterator(); - int i = 1; - int showedEntries = 0; - boolean found = mainEntryLink == null; - - while (it.hasNext()) { - SyndEntryImpl entry = (SyndEntryImpl) it.next(); - - if (i >= fromEntry) { - DelegateContext entryContext = root.next("entry"); - List contents = entry.getContents(); - SyndContentImpl content = (SyndContentImpl) contents.iterator() - .next(); - - String author = entry.getAuthor(); - if ((author == null) || (author.equals(""))) - author = defaultAuthor; - - entryContext.put("date", DateFormat.getDateInstance( - DateFormat.FULL, request.getLocale()).format( - entry.getPublishedDate())); - entryContext.put("time", DateFormat.getTimeInstance( - DateFormat.SHORT, request.getLocale()).format( - entry.getPublishedDate())); - entryContext.put("author", author); - entryContext.put("title", entry.getTitle()); - entryContext.put("content", content.getValue()); - entryContext.put("link", entry.getLink()); - if ((showedEntries++ < showEntries) - || (entry.getLink().equals(mainEntryLink))) - entryContext.next("show"); - else - entryContext.next("dontShow"); - - try { - entryContext.put("linkEnc", URLEncoder.encode(entry - .getLink(), "UTF-8")); - } catch (UnsupportedEncodingException e) { - } - - if (entry.getLink().equals(mainEntryLink)) - found = true; - } - - i++; - if (i == toEntry + 1) - break; - } - - root.put("atomFeed", ForgeHelper.replace(feedTypeFreeAddress, - "${feed.type}", "atom")); - root.put("rssFeed", ForgeHelper.replace(feedTypeFreeAddress, - "${feed.type}", "rss")); - root.put("xmlFeed", ForgeHelper.replace(feedTypeFreeAddress, - "${feed.type}", "rdf")); - - root.put("currentTime", DateFormat.getTimeInstance(DateFormat.SHORT, - request.getLocale()).format(new Date())); - root.put("desiredWindowState", desiredWindowState); - root.put("currentWindowState", currentWindowState); - root.put("projectId", projectId); - root.put(ForgeHelper.PORTAL_NAME, portalName); - if (fromEntry != 1) { - root.next("showPrevEntries"); - root.put("prevEntries", Integer.toString(max(fromEntry - - (toEntry - fromEntry + 1), 1))); - } - - if (toEntry < entries.size()) { - root.next("showNextEntries"); - root.put("nextEntries", Integer.toString(toEntry + 1)); - } - - root.put("currEntries", Integer.toString(fromEntry)); - - request.setAttribute(PortalJsp.CTX_REQUEST, root); - - return found; - } -} \ No newline at end of file Deleted: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/blog/BlogNodeWatcher.java =================================================================== --- trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/blog/BlogNodeWatcher.java 2005-09-13 11:43:19 UTC (rev 1095) +++ trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/blog/BlogNodeWatcher.java 2005-09-13 12:03:12 UTC (rev 1096) @@ -1,35 +0,0 @@ -package org.jboss.forge.common.blog; - -import java.net.URL; - -import org.jboss.forge.common.service.NodeWatcher; - -import com.sun.syndication.feed.synd.SyndFeed; -import com.sun.syndication.io.SyndFeedInput; -import com.sun.syndication.io.XmlReader; - -public class BlogNodeWatcher implements NodeWatcher { - private String feedAddress; - - public BlogNodeWatcher(String feedAddress) { - this.feedAddress = feedAddress; - } - - private SyndFeed getFeed() { - try { - URL feedUrl = new URL(feedAddress); - SyndFeedInput input = new SyndFeedInput(); - return input.build(new XmlReader(feedUrl)); - } catch (Exception e) { - return null; - } - } - - public Object init(String portalName) { - return getFeed(); - } - - public Object nodeUpdate(String portalName, Object currentValue) { - return getFeed(); - } -} Modified: trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/ProjectsHelper.java =================================================================== --- trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/ProjectsHelper.java 2005-09-13 11:43:19 UTC (rev 1095) +++ trunk/forge/portal-extensions/forge-common/src/java/org/jboss/forge/common/projects/ProjectsHelper.java 2005-09-13 12:03:12 UTC (rev 1096) @@ -21,6 +21,13 @@ * @author adamw */ public class ProjectsHelper { + /** + * This class cannot be instatiated. + */ + private ProjectsHelper() { + + } + /** * <code>PROJECT_ID</code> - name of the attribute under which the * selected project's id can be found in a servlet response object. Modified: trunk/forge/portal-extensions/forge-ear/src/META-INF/application.xml =================================================================== --- trunk/forge/portal-extensions/forge-ear/src/META-INF/application.xml 2005-09-13 11:43:19 UTC (rev 1095) +++ trunk/forge/portal-extensions/forge-ear/src/META-INF/application.xml 2005-09-13 12:03:12 UTC (rev 1096) @@ -35,11 +35,6 @@ </module> <module> <web> - <web-uri>forge-prj-blog.war</web-uri> - </web> - </module> - <module> - <web> <web-uri>forge-prj-downloads.war</web-uri> </web> </module> Modified: trunk/forge/portal-extensions/jbosswiki/.classpath =================================================================== --- trunk/forge/portal-extensions/jbosswiki/.classpath 2005-09-13 11:43:19 UTC (rev 1095) +++ trunk/forge/portal-extensions/jbosswiki/.classpath 2005-09-13 12:03:12 UTC (rev 1096) @@ -1,8 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> - <classpath> - <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"> - </classpathentry> - <classpathentry kind="output" path="target/classes"> - </classpathentry> -</classpath> \ No newline at end of file + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> + <classpathentry kind="output" path="target/classes"/> +</classpath> Modified: trunk/forge/portal-extensions/portal-default/src/web/WEB-INF/default-portal.xml =================================================================== --- trunk/forge/portal-extensions/portal-default/src/web/WEB-INF/default-portal.xml 2005-09-13 11:43:19 UTC (rev 1095) +++ trunk/forge/portal-extensions/portal-default/src/web/WEB-INF/default-portal.xml 2005-09-13 12:03:12 UTC (rev 1096) @@ -238,7 +238,7 @@ <window> <window-name>PrjBlogPortletWindowDefaultBlog</window-name> - <instance-ref>prj-blog.PrjBlogPortlet.PrjBlogPortletInstance</instance-ref> + <instance-ref>blog.BlogPortlet.PrjBlogPortletInstance</instance-ref> <default>true</default> <region>center</region> <height>0</height> |