[jboss-cvs] JBossBlog SVN: r225 - in trunk: lib and 24 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Wed Feb 27 10:51:16 EST 2008
Author: adamw
Date: 2008-02-27 10:51:16 -0500 (Wed, 27 Feb 2008)
New Revision: 225
Added:
trunk/resources-portlet/
trunk/resources-portlet/WEB-INF/
trunk/resources-portlet/WEB-INF/jboss-portlet.xml
trunk/resources-portlet/WEB-INF/portlet-instances.xml
trunk/resources-portlet/WEB-INF/portlet-object.xml
trunk/resources-portlet/WEB-INF/portlet.xml
trunk/resources-portlet/WEB-INF/web.xml
trunk/src/action/org/jboss/blog/session/tools/StringToolsBean.java
trunk/src/action/org/jboss/blog/session/view/LinkServiceImpl.java
trunk/src/portlet/
trunk/src/portlet/org/
trunk/src/portlet/org/jboss/
trunk/src/portlet/org/jboss/blog/
trunk/src/portlet/org/jboss/blog/portlet/
trunk/src/portlet/org/jboss/blog/portlet/BlogPortlet.java
trunk/src/services/org/jboss/blog/service/LinkService.java
trunk/view-portlet/
trunk/view-portlet/feed_not_found.jsp
trunk/view-portlet/view.jsp
Removed:
trunk/src/action/org/jboss/blog/session/tools/StringToolsBean.java
Modified:
trunk/blog.iml
trunk/build.xml
trunk/lib/jstl.jar
trunk/resources/META-INF/application.xml
trunk/resources/WEB-INF/components.xml
trunk/src/action/org/jboss/blog/session/converter/FeedConverter.java
trunk/src/action/org/jboss/blog/session/converter/PostConverter.java
trunk/src/action/org/jboss/blog/session/feed/FeedsServiceImpl.java
trunk/src/action/org/jboss/blog/session/feed/InvalidFeedTypeException.java
trunk/src/action/org/jboss/blog/session/feed/mod/AggregatedFeedModBean.java
trunk/src/action/org/jboss/blog/session/feed/mod/RemoteFeedModBean.java
trunk/src/action/org/jboss/blog/session/feed/type/FeedTypes.java
trunk/src/action/org/jboss/blog/session/merge/MergeServiceBean.java
trunk/src/action/org/jboss/blog/session/update/UpdateHandler.java
trunk/src/action/org/jboss/blog/session/xml/velocity/tools/XmlTools.java
trunk/src/services/org/jboss/blog/service/FeedNotFoundException.java
trunk/src/services/org/jboss/blog/service/PostNotFoundException.java
trunk/src/tools/org/jboss/blog/tools/StringTools.java
trunk/view/layout/template.xhtml
trunk/view/view/feed.xhtml
Log:
Modified: trunk/blog.iml
===================================================================
--- trunk/blog.iml 2008-02-26 16:34:15 UTC (rev 224)
+++ trunk/blog.iml 2008-02-27 15:51:16 UTC (rev 225)
@@ -22,6 +22,7 @@
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src/action" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/model" isTestSource="false" />
+ <sourceFolder url="file://$MODULE_DIR$/src/portlet" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/services" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/test" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/tools" isTestSource="false" />
@@ -177,6 +178,15 @@
<SOURCES />
</library>
</orderEntry>
+ <orderEntry type="module-library">
+ <library>
+ <CLASSES>
+ <root url="jar://$MODULE_DIR$/lib/portal-portlet-jsr168api-lib.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
<orderEntryProperties />
</component>
</module>
Modified: trunk/build.xml
===================================================================
--- trunk/build.xml 2008-02-26 16:34:15 UTC (rev 224)
+++ trunk/build.xml 2008-02-27 15:51:16 UTC (rev 225)
@@ -15,15 +15,18 @@
<property name="src.services.dir" value="src/services" />
<property name="src.tools.dir" value="src/tools" />
<property name="src.test.dir" value="src/test" />
+ <property name="src.portlet.dir" value="src/portlet" />
<property name="lib.dir" value="lib" />
<property name="jar.impl.name" value="${project.name}-impl.jar" />
<property name="jar.api.name" value="${project.name}.jar" />
+ <property name="portlet.name" value="${project.name}-portlet.war" />
<property name="ear.dir" value="exploded-archives/${project.name}.ear" />
<property name="jar.impl.dir" value="exploded-archives/${jar.impl.name}" />
<property name="jar.api.dir" value="exploded-archives/${jar.api.name}" />
<property name="war.dir" value="exploded-archives/${project.name}.war" />
+ <property name="portlet.dir" value="exploded-archives/${portlet.name}" />
<property name="test.dir" value="test-build" />
<property name="bootstrap.dir" value="${basedir}/bootstrap" />
<property name="deploy.dir" value="${jboss.home}/server/default/deploy" />
@@ -31,6 +34,7 @@
<property name="ear.deploy.dir" value="${deploy.dir}/${project.name}.ear" />
<property name="jar.deploy.dir" value="${ear.deploy.dir}/${jar.impl.name}" />
<property name="war.deploy.dir" value="${ear.deploy.dir}/${project.name}.war" />
+ <property name="portlet.deploy.dir" value="${ear.deploy.dir}/${portlet.name}" />
<property name="testng.jar" value="${basedir}/lib/testng.jar" />
<property name="javac.debug" value="true" />
<property name="javac.deprecation" value="false" />
@@ -60,6 +64,10 @@
<mkdir dir="${jar.api.dir}" />
<mkdir dir="${ear.dir}" />
<mkdir dir="${war.dir}" />
+ <mkdir dir="${portlet.dir}" />
+ <mkdir dir="${portlet.dir}/WEB-INF" />
+ <mkdir dir="${portlet.dir}/WEB-INF/classes" />
+ <mkdir dir="${portlet.dir}/WEB-INF/lib" />
<mkdir dir="${dist.dir}" />
</target>
@@ -81,6 +89,13 @@
nowarn="on">
<src path="${src.action.dir}" />
</javac>
+ <javac classpathref="build.impl.classpath"
+ destdir="${portlet.dir}/WEB-INF/classes"
+ debug="${javac.debug}"
+ deprecation="${javac.deprecation}"
+ nowarn="on">
+ <src path="${src.portlet.dir}" />
+ </javac>
</target>
<target name="jar" depends="compile"
@@ -145,6 +160,23 @@
<include name="messages*.properties"/>
</fileset>
</copy>
+
+ <copy todir="${portlet.dir}">
+ <fileset dir="${basedir}/resources-portlet">
+ <include name="**/*"/>
+ </fileset>
+ </copy>
+ <copy todir="${portlet.dir}">
+ <fileset dir="${basedir}/view-portlet">
+ <include name="**/*"/>
+ </fileset>
+ </copy>
+ <copy todir="${portlet.dir}/WEB-INF/lib">
+ <fileset dir="${basedir}/lib">
+ <include name="jstl.jar" />
+ <include name="standard.jar" />
+ </fileset>
+ </copy>
</target>
<target name="ear" description="Build the EAR">
@@ -210,6 +242,7 @@
description="Package the archives">
<jar jarfile="${dist.dir}/${jar.impl.name}" basedir="${jar.impl.dir}"/>
<jar jarfile="${dist.dir}/${project.name}.war" basedir="${war.dir}"/>
+ <jar jarfile="${dist.dir}/${portlet.name}" basedir="${portlet.dir}"/>
<jar jarfile="${dist.dir}/${project.name}.ear">
<fileset dir="${ear.dir}"/>
<fileset dir="${dist.dir}">
@@ -247,6 +280,7 @@
<mkdir dir="${jar.deploy.dir}"/>
<mkdir dir="${war.deploy.dir}"/>
+ <mkdir dir="${portlet.deploy.dir}"/>
<copy todir="${jar.deploy.dir}">
<fileset dir="${jar.impl.dir}"/>
@@ -254,6 +288,9 @@
<copy todir="${war.deploy.dir}">
<fileset dir="${war.dir}"/>
</copy>
+ <copy todir="${portlet.deploy.dir}">
+ <fileset dir="${portlet.dir}"/>
+ </copy>
<copy todir="${ear.deploy.dir}">
<fileset dir="${ear.dir}"/>
</copy>
@@ -303,6 +340,7 @@
<delete dir="${dist.dir}"/>
<delete dir="${ear.dir}"/>
<delete dir="${war.dir}"/>
+ <delete dir="${portlet.dir}"/>
<delete dir="${jar.impl.dir}"/>
<delete dir="${jar.api.dir}"/>
<delete dir="${src.schema.dir}" failonerror="no"/>
Modified: trunk/lib/jstl.jar
===================================================================
(Binary files differ)
Modified: trunk/resources/META-INF/application.xml
===================================================================
--- trunk/resources/META-INF/application.xml 2008-02-26 16:34:15 UTC (rev 224)
+++ trunk/resources/META-INF/application.xml 2008-02-27 15:51:16 UTC (rev 225)
@@ -21,5 +21,12 @@
<context-root>/blog</context-root>
</web>
</module>
+
+ <module>
+ <web>
+ <web-uri>blog-portlet.war</web-uri>
+ <context-root>/blog-portlet</context-root>
+ </web>
+ </module>
</application>
Modified: trunk/resources/WEB-INF/components.xml
===================================================================
--- trunk/resources/WEB-INF/components.xml 2008-02-26 16:34:15 UTC (rev 224)
+++ trunk/resources/WEB-INF/components.xml 2008-02-27 15:51:16 UTC (rev 225)
@@ -32,14 +32,14 @@
<security:identity authenticate-method="#{authenticator.authenticate}"
security-rules="#{securityRules}" />
-
+
<async:thread-pool-dispatcher />
<drools:rule-base name="securityRules">
- <drools:rule-files>
- <value>/META-INF/security.drl</value>
- </drools:rule-files>
- </drools:rule-base>
+ <drools:rule-files>
+ <value>/META-INF/security.drl</value>
+ </drools:rule-files>
+ </drools:rule-base>
<event type="org.jboss.seam.notLoggedIn">
<action execute="#{redirect.captureCurrentView}"/>
Added: trunk/resources-portlet/WEB-INF/jboss-portlet.xml
===================================================================
--- trunk/resources-portlet/WEB-INF/jboss-portlet.xml (rev 0)
+++ trunk/resources-portlet/WEB-INF/jboss-portlet.xml 2008-02-27 15:51:16 UTC (rev 225)
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<!DOCTYPE portlet-app PUBLIC
+ "-//JBoss Portal//DTD JBoss Portlet 2.6//EN"
+ "http://www.jboss.org/portal/dtd/jboss-portlet_2_6.dtd">
+<portlet-app>
+ <portlet>
+ <portlet-name>BlogPortlet</portlet-name>
+ </portlet>
+</portlet-app>
\ No newline at end of file
Added: trunk/resources-portlet/WEB-INF/portlet-instances.xml
===================================================================
--- trunk/resources-portlet/WEB-INF/portlet-instances.xml (rev 0)
+++ trunk/resources-portlet/WEB-INF/portlet-instances.xml 2008-02-27 15:51:16 UTC (rev 225)
@@ -0,0 +1,44 @@
+<?xml version="1.0" standalone="yes"?>
+<!DOCTYPE deployments PUBLIC
+ "-//JBoss Portal//DTD Portlet Instances 2.6//EN"
+ "http://www.jboss.org/portal/dtd/portlet-instances_2_6.dtd">
+<deployments>
+ <deployment>
+ <if-exists>overwrite</if-exists>
+ <instance>
+ <instance-id>BlogPortletInstance1</instance-id>
+ <portlet-ref>BlogPortlet</portlet-ref>
+ <preferences>
+ <preference>
+ <name>feedName</name>
+ <value>bob2</value>
+ </preference>
+ </preferences>
+ </instance>
+ </deployment>
+ <deployment>
+ <if-exists>overwrite</if-exists>
+ <instance>
+ <instance-id>BlogPortletInstance2</instance-id>
+ <portlet-ref>BlogPortlet</portlet-ref>
+ <preferences>
+ <preference>
+ <name>feedName</name>
+ <value>bob2</value>
+ </preference>
+ <preference>
+ <name>summaryLength</name>
+ <value>0</value>
+ </preference>
+ <preference>
+ <name>showDate</name>
+ <value>false</value>
+ </preference>
+ <preference>
+ <name>numberOfPostsPerPage</name>
+ <value>10</value>
+ </preference>
+ </preferences>
+ </instance>
+ </deployment>
+</deployments>
\ No newline at end of file
Added: trunk/resources-portlet/WEB-INF/portlet-object.xml
===================================================================
--- trunk/resources-portlet/WEB-INF/portlet-object.xml (rev 0)
+++ trunk/resources-portlet/WEB-INF/portlet-object.xml 2008-02-27 15:51:16 UTC (rev 225)
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE deployments PUBLIC
+ "-//JBoss Portal//DTD Portal Object 2.6//EN"
+ "http://www.jboss.org/portal/dtd/portal-object_2_6.dtd">
+<deployments>
+ <deployment>
+ <parent-ref>default.default</parent-ref>
+ <if-exists>overwrite</if-exists>
+ <window>
+ <window-name>BlogPortletWindow1</window-name>
+ <instance-ref>BlogPortletInstance1</instance-ref>
+ <region>center</region>
+ <height>1</height>
+ </window>
+ </deployment>
+ <deployment>
+ <parent-ref>default.default</parent-ref>
+ <if-exists>overwrite</if-exists>
+ <window>
+ <window-name>BlogPortletWindow2</window-name>
+ <instance-ref>BlogPortletInstance2</instance-ref>
+ <region>center</region>
+ <height>2</height>
+ </window>
+ </deployment>
+</deployments>
\ No newline at end of file
Added: trunk/resources-portlet/WEB-INF/portlet.xml
===================================================================
--- trunk/resources-portlet/WEB-INF/portlet.xml (rev 0)
+++ trunk/resources-portlet/WEB-INF/portlet.xml 2008-02-27 15:51:16 UTC (rev 225)
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<portlet-app xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd
+ http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd"
+ version="1.0">
+ <portlet>
+ <portlet-name>BlogPortlet</portlet-name>
+ <portlet-class>org.jboss.blog.portlet.BlogPortlet</portlet-class>
+ <supports>
+ <mime-type>text/html</mime-type>
+ <portlet-mode>VIEW</portlet-mode>
+ </supports>
+ <supported-locale>en</supported-locale>
+ <expiration-cache>0</expiration-cache>
+ <portlet-info>
+ <title>JBoss Blog Portlet</title>
+ </portlet-info>
+ <portlet-preferences>
+ <preference>
+ <name>feedName</name>
+ </preference>
+ <preference>
+ <name>numberOfPostsPerPage</name>
+ <value>5</value>
+ </preference>
+ <preference>
+ <name>summaryLength</name>
+ <value>200</value>
+ </preference>
+ <preference>
+ <name>showDate</name>
+ <value>true</value>
+ </preference>
+ </portlet-preferences>
+ </portlet>
+</portlet-app>
+
Added: trunk/resources-portlet/WEB-INF/web.xml
===================================================================
--- trunk/resources-portlet/WEB-INF/web.xml (rev 0)
+++ trunk/resources-portlet/WEB-INF/web.xml 2008-02-27 15:51:16 UTC (rev 225)
@@ -0,0 +1,24 @@
+<?xml version="1.0" ?>
+<web-app xmlns="http://java.sun.com/xml/ns/javaee"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
+ version="2.5">
+ <context-param>
+ <param-name>sourceBasePath</param-name>
+ <param-value>/Users/adamwarski/blog/view-portlet</param-value>
+ </context-param>
+
+ <filter>
+ <filter-name>Resources Filter</filter-name>
+ <filter-class>org.jboss.shotoku.web.ResourcesFilter</filter-class>
+ </filter>
+
+ <filter-mapping>
+ <filter-name>Resources Filter</filter-name>
+ <url-pattern>/*</url-pattern>
+ <dispatcher>ERROR</dispatcher>
+ <dispatcher>FORWARD</dispatcher>
+ <dispatcher>INCLUDE</dispatcher>
+ <dispatcher>REQUEST</dispatcher>
+ </filter-mapping>
+</web-app>
Modified: trunk/src/action/org/jboss/blog/session/converter/FeedConverter.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/converter/FeedConverter.java 2008-02-26 16:34:15 UTC (rev 224)
+++ trunk/src/action/org/jboss/blog/session/converter/FeedConverter.java 2008-02-27 15:51:16 UTC (rev 225)
@@ -2,6 +2,7 @@
import org.jboss.blog.model.feed.Feed;
import org.jboss.blog.service.FeedsService;
+import org.jboss.blog.service.FeedNotFoundException;
import org.jboss.seam.Component;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Transactional;
@@ -21,8 +22,12 @@
@Transactional
public Object getAsObject(FacesContext context, UIComponent cmp, String value) {
FeedsService feedsService = (FeedsService) Component.getInstance("feedsService");
-
- return feedsService.getFeed(value);
+
+ try {
+ return feedsService.getFeed(value);
+ } catch (FeedNotFoundException e) {
+ throw new RuntimeException(e);
+ }
}
public String getAsString(FacesContext context, UIComponent cmp, Object value) {
Modified: trunk/src/action/org/jboss/blog/session/converter/PostConverter.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/converter/PostConverter.java 2008-02-26 16:34:15 UTC (rev 224)
+++ trunk/src/action/org/jboss/blog/session/converter/PostConverter.java 2008-02-27 15:51:16 UTC (rev 225)
@@ -2,7 +2,9 @@
import org.jboss.blog.model.Post;
import org.jboss.blog.service.FeedsService;
+import org.jboss.blog.service.PostNotFoundException;
import org.jboss.seam.Component;
+import org.jboss.seam.log.Log;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Transactional;
import org.jboss.seam.annotations.faces.Converter;
@@ -22,7 +24,11 @@
public Object getAsObject(FacesContext context, UIComponent cmp, String value) {
FeedsService feedsService = (FeedsService) Component.getInstance("feedsService");
- return feedsService.getPost(value);
+ try {
+ return feedsService.getPost(value);
+ } catch (PostNotFoundException e) {
+ throw new RuntimeException(e);
+ }
}
public String getAsString(FacesContext context, UIComponent cmp, Object value) {
Modified: trunk/src/action/org/jboss/blog/session/feed/FeedsServiceImpl.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/FeedsServiceImpl.java 2008-02-26 16:34:15 UTC (rev 224)
+++ trunk/src/action/org/jboss/blog/session/feed/FeedsServiceImpl.java 2008-02-27 15:51:16 UTC (rev 225)
@@ -21,6 +21,7 @@
import javax.persistence.NoResultException;
import javax.interceptor.Interceptors;
import java.util.List;
+import java.util.ArrayList;
/**
* @author <a href="mailto:adam at warski.org">Adam Warski</a>
@@ -40,28 +41,43 @@
public Post getPost(String titleAsId) throws PostNotFoundException {
log.debug("Reading post '#0' from the DB.", titleAsId);
+
+ if (titleAsId == null) {
+ throw new PostNotFoundException(titleAsId);
+ }
+
try {
return (Post) entityManager.createQuery("select post from Post post where post.titleAsId = ?1")
.setParameter(1, titleAsId).setHint("org.hibernate.cacheable", Boolean.TRUE).getSingleResult();
} catch (NoResultException e) {
- throw new PostNotFoundException();
+ throw new PostNotFoundException(titleAsId);
}
}
public Feed getFeed(String feedName) throws FeedNotFoundException {
log.debug("Reading feed '#0' from the DB.", feedName);
+
+ if (feedName == null) {
+ throw new FeedNotFoundException(feedName);
+ }
+
try {
return (Feed) entityManager.createQuery("select feed from Feed feed where feed.name = ?1")
.setParameter(1, feedName).setHint("org.hibernate.cacheable", Boolean.TRUE).getSingleResult();
} catch (NoResultException e) {
- throw new FeedNotFoundException();
+ throw new FeedNotFoundException(feedName);
}
}
@Interceptors(FeedsServiceGetPostsInterceptor.class)
public List<? extends RestrictedPost> getPosts(RestrictedFeed feed, int from, int to) {
log.debug("Reading feed '#0' posts from the DB, from #1 to #2.", feed.getName(), from, to);
- return feedTypes.getFeedDao(feed).getPosts(from, to);
+ try {
+ return feedTypes.getFeedDao(feed).getPosts(from, to);
+ } catch (InvalidFeedTypeException e) {
+ log.error(e);
+ return new ArrayList<RestrictedPost>();
+ }
}
@Remove
Modified: trunk/src/action/org/jboss/blog/session/feed/InvalidFeedTypeException.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/InvalidFeedTypeException.java 2008-02-26 16:34:15 UTC (rev 224)
+++ trunk/src/action/org/jboss/blog/session/feed/InvalidFeedTypeException.java 2008-02-27 15:51:16 UTC (rev 225)
@@ -3,7 +3,7 @@
/**
* @author <a href="mailto:adam at warski.org">Adam Warski</a>
*/
-public class InvalidFeedTypeException extends RuntimeException {
+public class InvalidFeedTypeException extends Exception {
public InvalidFeedTypeException() {
}
Modified: trunk/src/action/org/jboss/blog/session/feed/mod/AggregatedFeedModBean.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/mod/AggregatedFeedModBean.java 2008-02-26 16:34:15 UTC (rev 224)
+++ trunk/src/action/org/jboss/blog/session/feed/mod/AggregatedFeedModBean.java 2008-02-27 15:51:16 UTC (rev 225)
@@ -53,7 +53,7 @@
private List<PostFilter> globalFilters;
- public AggregatedFeed getAggregatedFeed() {
+ public AggregatedFeed getAggregatedFeed() throws InvalidFeedTypeException {
if (aggregatedFeed == null) {
if (feedMod.getFeed() == null) {
aggregatedFeed = new AggregatedFeed();
@@ -103,7 +103,7 @@
}
@Create
- public void populateLists() {
+ public void populateLists() throws InvalidFeedTypeException {
// Populating available groups
availableGroups = groupsService.getAllGroups();
availableFeeds = new ArrayList<Feed>();
@@ -188,7 +188,7 @@
}
}
- private void save() {
+ private void save() throws InvalidFeedTypeException {
// Saving feeds and filters
saveSelectedEntities(getAggregatedFeed().getFeeds(), selectedFeeds, selectedFeedsFilters);
@@ -199,12 +199,12 @@
getAggregatedFeed().setGlobalFilter(new AndFilter(globalFilters));
}
- public void saveNew() {
+ public void saveNew() throws InvalidFeedTypeException {
save();
}
@Restrict("#{identity.hasPermission('feed', 'edit', feedMod.feed, feedMod.feed.group)}")
- public void saveExisting() {
+ public void saveExisting() throws InvalidFeedTypeException {
save();
entityManager.flush();
Modified: trunk/src/action/org/jboss/blog/session/feed/mod/RemoteFeedModBean.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/mod/RemoteFeedModBean.java 2008-02-26 16:34:15 UTC (rev 224)
+++ trunk/src/action/org/jboss/blog/session/feed/mod/RemoteFeedModBean.java 2008-02-27 15:51:16 UTC (rev 225)
@@ -51,7 +51,7 @@
private boolean parseOk;
private Exception parseException;
- public RemoteFeed getRemoteFeed() {
+ public RemoteFeed getRemoteFeed() throws InvalidFeedTypeException {
if (remoteFeed == null) {
if (feedMod.getFeed() == null) {
remoteFeed = new RemoteFeed();
@@ -88,7 +88,7 @@
this.parseException = parseException;
}
- public void unsetAccepted() {
+ public void unsetAccepted() throws InvalidFeedTypeException {
getRemoteFeed().setAccepted(false);
}
@@ -108,7 +108,7 @@
}
}
- public void parseFeed() {
+ public void parseFeed() throws InvalidFeedTypeException {
try {
parsedFeed = parserService.parse(getRemoteFeed().getRemoteLink());
validateFeedAndPosts(parsedFeed);
@@ -119,7 +119,7 @@
}
}
- public void saveNew() {
+ public void saveNew() throws InvalidFeedTypeException {
getRemoteFeed().setAuthor(parsedFeed.getAuthor());
getRemoteFeed().setDescription(parsedFeed.getDescription());
getRemoteFeed().setLink(parsedFeed.getLink());
@@ -131,7 +131,7 @@
}
@Restrict("#{identity.hasPermission('feed', 'edit', feedMod.feed, feedMod.feed.group)}")
- public void saveExisting() {
+ public void saveExisting() throws InvalidFeedTypeException {
getRemoteFeed().setLink(parsedFeed.getLink());
entityManager.flush();
@@ -143,7 +143,7 @@
}
@Restrict("#{identity.hasPermission('feed', 'edit', feedMod.feed, feedMod.feed.group)}")
- public void saveOnlyPostAuthorType() {
+ public void saveOnlyPostAuthorType() throws InvalidFeedTypeException {
PostAuthorType newPostAuthorType = getRemoteFeed().getPostAuthorType();
entityManager.refresh(getRemoteFeed());
Modified: trunk/src/action/org/jboss/blog/session/feed/type/FeedTypes.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/type/FeedTypes.java 2008-02-26 16:34:15 UTC (rev 224)
+++ trunk/src/action/org/jboss/blog/session/feed/type/FeedTypes.java 2008-02-27 15:51:16 UTC (rev 225)
@@ -47,7 +47,7 @@
}
}
- public FeedDao getFeedDao(RestrictedFeed feed) {
+ public FeedDao getFeedDao(RestrictedFeed feed) throws InvalidFeedTypeException {
try {
return feedDaos.get(feed.getClass()).newInstance(feed);
} catch (InstantiationException e) {
Modified: trunk/src/action/org/jboss/blog/session/merge/MergeServiceBean.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/merge/MergeServiceBean.java 2008-02-26 16:34:15 UTC (rev 224)
+++ trunk/src/action/org/jboss/blog/session/merge/MergeServiceBean.java 2008-02-27 15:51:16 UTC (rev 225)
@@ -6,6 +6,7 @@
import org.jboss.blog.model.RestrictedPost;
import org.jboss.blog.model.Image;
import org.jboss.blog.service.FeedsService;
+import org.jboss.blog.service.PostNotFoundException;
import org.jboss.blog.tools.GeneralTools;
import org.jboss.seam.ScopeType;
import org.jboss.seam.core.Events;
@@ -143,9 +144,13 @@
savePost(feed, mergeFrom.getCurrent());
mergeFrom.next();
} else if (compare == 0) {
- mergePosts(feedsService.getPost(mergeTo.getCurrent().getTitleAsId()), mergeFrom.getCurrent());
- mergeFrom.next();
- mergeTo.next();
+ try {
+ mergePosts(feedsService.getPost(mergeTo.getCurrent().getTitleAsId()), mergeFrom.getCurrent());
+ mergeTo.next();
+ mergeFrom.next();
+ } catch (PostNotFoundException e) {
+ mergeTo.next();
+ }
} else {
// mergeTo post is after mergeFrom post
// proceeding to the next mergeTo post (if exists)
Deleted: trunk/src/action/org/jboss/blog/session/tools/StringToolsBean.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/tools/StringToolsBean.java 2008-02-26 16:34:15 UTC (rev 224)
+++ trunk/src/action/org/jboss/blog/session/tools/StringToolsBean.java 2008-02-27 15:51:16 UTC (rev 225)
@@ -1,30 +0,0 @@
-package org.jboss.blog.session.tools;
-
-import org.jboss.blog.tools.StringTools;
-import org.jboss.seam.ScopeType;
-import org.jboss.seam.annotations.AutoCreate;
-import org.jboss.seam.annotations.Name;
-import org.jboss.seam.annotations.Scope;
-
-/**
- * @author <a href="mailto:adam at warski.org">Adam Warski</a>
- */
- at Name("stringTools")
- at Scope(ScopeType.APPLICATION)
- at AutoCreate
-public class StringToolsBean {
- public String createSummary(String s) {
- if (s == null) {
- return null;
- }
-
- s = StringTools.stripHtml(s);
-
- if (s.length() > 1000) {
- s = s.substring(0, 1000);
- return s + "...";
- } else {
- return s;
- }
- }
-}
Added: trunk/src/action/org/jboss/blog/session/tools/StringToolsBean.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/tools/StringToolsBean.java (rev 0)
+++ trunk/src/action/org/jboss/blog/session/tools/StringToolsBean.java 2008-02-27 15:51:16 UTC (rev 225)
@@ -0,0 +1,19 @@
+package org.jboss.blog.session.tools;
+
+import org.jboss.blog.tools.StringTools;
+import org.jboss.seam.ScopeType;
+import org.jboss.seam.annotations.AutoCreate;
+import org.jboss.seam.annotations.Name;
+import org.jboss.seam.annotations.Scope;
+
+/**
+ * @author <a href="mailto:adam at warski.org">Adam Warski</a>
+ */
+ at Name("stringTools")
+ at Scope(ScopeType.APPLICATION)
+ at AutoCreate
+public class StringToolsBean {
+ public String createSummary(String s) {
+ return StringTools.createSummary(s, 1000);
+ }
+}
Modified: trunk/src/action/org/jboss/blog/session/update/UpdateHandler.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/update/UpdateHandler.java 2008-02-26 16:34:15 UTC (rev 224)
+++ trunk/src/action/org/jboss/blog/session/update/UpdateHandler.java 2008-02-27 15:51:16 UTC (rev 225)
@@ -5,6 +5,7 @@
import org.jboss.blog.model.Group;
import org.jboss.blog.service.GroupsService;
import org.jboss.blog.session.feed.type.FeedTypes;
+import org.jboss.blog.session.feed.InvalidFeedTypeException;
import org.jboss.seam.annotations.AutoCreate;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
@@ -42,6 +43,8 @@
feedTypes.getFeedDao(feed).update();
} catch (UpdateException e) {
updateManager.addFeedUpdateException(feed.getName(), e);
+ } catch (InvalidFeedTypeException e) {
+ updateManager.addFeedUpdateException(feed.getName(), new UpdateException(e));
}
}
Copied: trunk/src/action/org/jboss/blog/session/view/LinkServiceImpl.java (from rev 216, trunk/src/action/org/jboss/blog/session/view/LinkServiceBean.java)
===================================================================
--- trunk/src/action/org/jboss/blog/session/view/LinkServiceImpl.java (rev 0)
+++ trunk/src/action/org/jboss/blog/session/view/LinkServiceImpl.java 2008-02-27 15:51:16 UTC (rev 225)
@@ -0,0 +1,53 @@
+package org.jboss.blog.session.view;
+
+import org.jboss.blog.model.feed.Feed;
+import org.jboss.blog.model.Post;
+import org.jboss.blog.model.XmlType;
+import org.jboss.blog.service.LinkService;
+import org.jboss.seam.annotations.AutoCreate;
+import org.jboss.seam.annotations.Name;
+
+import javax.ejb.Remove;
+import javax.ejb.Stateless;
+
+/**
+ * @author <a href="mailto:adam at warski.org">Adam Warski</a>
+ */
+ at AutoCreate
+ at Stateless
+ at Name("linkService")
+public class LinkServiceImpl implements LinkService {
+ private String serverAddress;
+ private String contextName;
+
+ public String getServerAddress() {
+ return serverAddress;
+ }
+
+ public void setServerAddress(String serverAddress) {
+ this.serverAddress = serverAddress;
+ }
+
+ public String getContextName() {
+ return contextName;
+ }
+
+ public void setContextName(String contextName) {
+ this.contextName = contextName;
+ }
+
+ public String generateFeedLink(Feed feed, XmlType type) {
+ return serverAddress + "/" + contextName + "/feed/" + feed.getName() + "?type=" + type;
+ }
+
+ public String generateFeedPageLink(Feed feed) {
+ return serverAddress + "/" + contextName + "/view/" + feed.getName();
+ }
+
+ public String generatePostLink(Post post) {
+ return serverAddress + "/" + contextName + "/post/" + post.getTitleAsId();
+ }
+
+ @Remove
+ public void remove() { }
+}
Modified: trunk/src/action/org/jboss/blog/session/xml/velocity/tools/XmlTools.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/xml/velocity/tools/XmlTools.java 2008-02-26 16:34:15 UTC (rev 224)
+++ trunk/src/action/org/jboss/blog/session/xml/velocity/tools/XmlTools.java 2008-02-27 15:51:16 UTC (rev 225)
@@ -3,7 +3,7 @@
import org.jboss.blog.model.feed.Feed;
import org.jboss.blog.model.Post;
import org.jboss.blog.model.XmlType;
-import org.jboss.blog.session.view.LinkServiceBean;
+import org.jboss.blog.service.LinkService;
import org.jboss.seam.Component;
import java.text.SimpleDateFormat;
@@ -30,8 +30,8 @@
return cal.getTime();
}
- private LinkServiceBean getLinkService() {
- return (LinkServiceBean) Component.getInstance("linkService");
+ private LinkService getLinkService() {
+ return (LinkService) Component.getInstance("linkService");
}
public String feedPageLink(Feed feed) {
Added: trunk/src/portlet/org/jboss/blog/portlet/BlogPortlet.java
===================================================================
--- trunk/src/portlet/org/jboss/blog/portlet/BlogPortlet.java (rev 0)
+++ trunk/src/portlet/org/jboss/blog/portlet/BlogPortlet.java 2008-02-27 15:51:16 UTC (rev 225)
@@ -0,0 +1,75 @@
+package org.jboss.blog.portlet;
+
+import org.jboss.blog.service.FeedsService;
+import org.jboss.blog.service.LinkService;
+import org.jboss.blog.service.FeedNotFoundException;
+import org.jboss.blog.model.feed.Feed;
+import org.jboss.blog.model.RestrictedPost;
+import org.jboss.seam.Component;
+import org.jboss.seam.contexts.Contexts;
+import org.jboss.seam.contexts.Lifecycle;
+
+import javax.portlet.*;
+import java.io.IOException;
+import java.util.List;
+
+/**
+ * @author <a href="mailto:adam at warski.org">Adam Warski</a>
+ */
+public class BlogPortlet extends GenericPortlet {
+ protected void doView(RenderRequest request, RenderResponse response)
+ throws PortletException, IOException {
+ boolean createContexts = !Contexts.isEventContextActive() && !Contexts.isApplicationContextActive();
+ if (createContexts) {
+ Lifecycle.beginCall();
+ }
+
+ try {
+ // Getting the services
+ FeedsService feedsService = (FeedsService) Component.getInstance("feedsService");
+ LinkService linkService = (LinkService) Component.getInstance("linkService");
+
+ // Reading the preferences
+ PortletPreferences preferences = request.getPreferences();
+ String feedName = preferences.getValue("feedName", null);
+
+ String numberOfPostsPerPageString = preferences.getValue("numberOfPostsPerPage", "5");
+ int numberOfPostsPerPage = Integer.parseInt(numberOfPostsPerPageString);
+
+ String summaryLengthString = preferences.getValue("summaryLength", "200");
+ Integer summaryLength = Integer.valueOf(summaryLengthString);
+
+ String showDateString = preferences.getValue("showDate", "true");
+ Boolean showDate = Boolean.valueOf(showDateString);
+
+ response.setContentType("text/html");
+
+ try {
+ Feed feed = feedsService.getFeed(feedName);
+
+ // Reading posts
+ List<? extends RestrictedPost> posts = feedsService.getPosts(feed, 0, numberOfPostsPerPage);
+
+ // Setting request attributes
+ request.setAttribute("feed", feed);
+ request.setAttribute("posts", posts);
+ request.setAttribute("summaryLength", summaryLength);
+ request.setAttribute("showDate", showDate);
+ request.setAttribute("linkService", linkService);
+
+ // Including the jsp
+ PortletRequestDispatcher rd = getPortletContext().getRequestDispatcher("/view.jsp");
+ rd.include(request, response);
+ } catch (FeedNotFoundException e) {
+ request.setAttribute("feedName", feedName);
+
+ PortletRequestDispatcher rd = getPortletContext().getRequestDispatcher("/feed_not_found.jsp");
+ rd.include(request, response);
+ }
+ } finally {
+ if (createContexts) {
+ Lifecycle.endCall();
+ }
+ }
+ }
+}
Modified: trunk/src/services/org/jboss/blog/service/FeedNotFoundException.java
===================================================================
--- trunk/src/services/org/jboss/blog/service/FeedNotFoundException.java 2008-02-26 16:34:15 UTC (rev 224)
+++ trunk/src/services/org/jboss/blog/service/FeedNotFoundException.java 2008-02-27 15:51:16 UTC (rev 225)
@@ -3,7 +3,7 @@
/**
* @author <a href="mailto:adam at warski.org">Adam Warski</a>
*/
-public class FeedNotFoundException extends RuntimeException {
+public class FeedNotFoundException extends Exception {
public FeedNotFoundException() {
}
Added: trunk/src/services/org/jboss/blog/service/LinkService.java
===================================================================
--- trunk/src/services/org/jboss/blog/service/LinkService.java (rev 0)
+++ trunk/src/services/org/jboss/blog/service/LinkService.java 2008-02-27 15:51:16 UTC (rev 225)
@@ -0,0 +1,31 @@
+package org.jboss.blog.service;
+
+import org.jboss.blog.model.feed.Feed;
+import org.jboss.blog.model.XmlType;
+import org.jboss.blog.model.Post;
+
+import javax.ejb.Local;
+import javax.ejb.Remove;
+
+/**
+ * @author <a href="mailto:adam at warski.org">Adam Warski</a>
+ */
+ at Local
+public interface LinkService {
+ String getServerAddress();
+
+ void setServerAddress(String serverAddress);
+
+ String getContextName();
+
+ void setContextName(String contextName);
+
+ String generateFeedLink(Feed feed, XmlType type);
+
+ String generateFeedPageLink(Feed feed);
+
+ String generatePostLink(Post post);
+
+ @Remove
+ void remove();
+}
Modified: trunk/src/services/org/jboss/blog/service/PostNotFoundException.java
===================================================================
--- trunk/src/services/org/jboss/blog/service/PostNotFoundException.java 2008-02-26 16:34:15 UTC (rev 224)
+++ trunk/src/services/org/jboss/blog/service/PostNotFoundException.java 2008-02-27 15:51:16 UTC (rev 225)
@@ -3,7 +3,7 @@
/**
* @author <a href="mailto:adam at warski.org">Adam Warski</a>
*/
-public class PostNotFoundException extends RuntimeException {
+public class PostNotFoundException extends Exception {
public PostNotFoundException() {
}
Modified: trunk/src/tools/org/jboss/blog/tools/StringTools.java
===================================================================
--- trunk/src/tools/org/jboss/blog/tools/StringTools.java 2008-02-26 16:34:15 UTC (rev 224)
+++ trunk/src/tools/org/jboss/blog/tools/StringTools.java 2008-02-27 15:51:16 UTC (rev 225)
@@ -76,4 +76,19 @@
return html;
}
}
+
+ public static String createSummary(String s, int length) {
+ if (s == null) {
+ return null;
+ }
+
+ s = stripHtml(s);
+
+ if (s.length() > length) {
+ s = s.substring(0, length);
+ return s + "...";
+ } else {
+ return s;
+ }
+ }
}
Modified: trunk/view/layout/template.xhtml
===================================================================
--- trunk/view/layout/template.xhtml 2008-02-26 16:34:15 UTC (rev 224)
+++ trunk/view/layout/template.xhtml 2008-02-27 15:51:16 UTC (rev 225)
@@ -12,6 +12,7 @@
<link href="/blog/stylesheet/org_main.css" rel="stylesheet" type="text/css" />
<link href="/blog/stylesheet/org_layout.css" rel="stylesheet" type="text/css" />
<link href="/blog/stylesheet/blog.css" rel="stylesheet" type="text/css" />
+ <ui:insert name="additional_headers" />
</head>
<body>
Modified: trunk/view/view/feed.xhtml
===================================================================
--- trunk/view/view/feed.xhtml 2008-02-26 16:34:15 UTC (rev 224)
+++ trunk/view/view/feed.xhtml 2008-02-27 15:51:16 UTC (rev 225)
@@ -8,6 +8,12 @@
xmlns:rich="http://richfaces.org/rich"
xmlns:a="http://richfaces.org/a4j"
template="../layout/template.xhtml">
+ <ui:define name="additional_headers">
+ <link rel="alternate" type="application/atom+xml"
+ title="Subscribe to an ATOM feed for '#{feedView.feed.title}'!"
+ href="#{linkService.generateFeedLink(feedView.feed, 'ATOM')}" />
+ </ui:define>
+
<ui:define name="header">
View feed: #{feedView.feed.title}
</ui:define>
Added: trunk/view-portlet/feed_not_found.jsp
===================================================================
--- trunk/view-portlet/feed_not_found.jsp (rev 0)
+++ trunk/view-portlet/feed_not_found.jsp 2008-02-27 15:51:16 UTC (rev 225)
@@ -0,0 +1,9 @@
+<%@ page language="java" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://java.sun.com/portlet" prefix="portlet" %>
+<%@ page isELIgnored ="false" %>
+
+<portlet:defineObjects />
+
+The feed: '${requestScope.feedName}' does not exist.
\ No newline at end of file
Added: trunk/view-portlet/view.jsp
===================================================================
--- trunk/view-portlet/view.jsp (rev 0)
+++ trunk/view-portlet/view.jsp 2008-02-27 15:51:16 UTC (rev 225)
@@ -0,0 +1,46 @@
+<%@ page import="org.jboss.blog.service.LinkService" %>
+<%@ page import="org.jboss.blog.model.feed.Feed" %>
+<%@ page import="org.jboss.blog.model.Post" %>
+<%@ page import="org.jboss.blog.tools.StringTools" %>
+<%@ page import="java.text.SimpleDateFormat" %>
+<%@ page language="java" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://java.sun.com/portlet" prefix="portlet" %>
+<%@ page isELIgnored ="false" %>
+
+<portlet:defineObjects />
+
+<%
+ Feed feed = (Feed) request.getAttribute("feed");
+ LinkService linkService = (LinkService) request.getAttribute("linkService");
+%>
+
+Now viewing feed '${feed.title}'.
+<a href="<%= linkService.generateFeedPageLink(feed) %>">View full feed on JBoss Feeds Central</a>
+
+<br />
+<br />
+
+<c:forEach items="${posts}" var="post">
+ <%
+ Post post = (Post) pageContext.getAttribute("post");
+ %>
+ <a href="<%= linkService.generatePostLink(post) %>">${post.title}</a>
+ <br />
+
+ <c:if test="${showDate}">
+ Posted on <%= SimpleDateFormat.getDateTimeInstance().format(post.getPublished()) %> by
+ <%= post.getEffectiveAuthor() %>.
+
+ <br/>
+ </c:if>
+
+ <c:if test="${summaryLength > 0}">
+ <%= StringTools.createSummary(post.getContent(), (Integer) request.getAttribute("summaryLength")) %>
+
+ <br />
+ </c:if>
+
+ <br />
+</c:forEach>
\ No newline at end of file
More information about the jboss-cvs-commits
mailing list