[jboss-cvs] JBossBlog SVN: r141 - in trunk: lib and 7 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Wed Nov 28 07:50:56 EST 2007
Author: adamw
Date: 2007-11-28 07:50:56 -0500 (Wed, 28 Nov 2007)
New Revision: 141
Added:
trunk/lib/jdom.jar
trunk/lib/rome-0.9.jar
trunk/src/action/org/jboss/blog/session/feed/FeedUpdate.java
trunk/src/action/org/jboss/blog/session/feed/remote/RemoteFeedUpdateBean.java
trunk/src/action/org/jboss/blog/session/update/
trunk/src/action/org/jboss/blog/session/update/UpdateHandler.java
trunk/src/action/org/jboss/blog/session/update/UpdateHandlerImpl.java
trunk/src/action/org/jboss/blog/session/update/UpdateManager.java
Modified:
trunk/blog.iml
trunk/resources/WEB-INF/components.xml
trunk/src/action/org/jboss/blog/session/feed/FeedModBean.java
trunk/src/action/org/jboss/blog/session/feed/FeedPosts.java
trunk/src/action/org/jboss/blog/session/feed/FeedType.java
trunk/src/action/org/jboss/blog/session/feed/FeedTypesBean.java
trunk/src/action/org/jboss/blog/session/feed/FeedsServiceImpl.java
trunk/src/action/org/jboss/blog/session/feed/aggregated/AggregatedFeedPostsBean.java
trunk/src/action/org/jboss/blog/session/feed/aggregated/AggregatedFeedTypeRegisterBean.java
trunk/src/action/org/jboss/blog/session/feed/remote/RemoteFeedTypeRegisterBean.java
trunk/view/view/feed.xhtml
Log:
Modified: trunk/blog.iml
===================================================================
--- trunk/blog.iml 2007-11-27 10:01:42 UTC (rev 140)
+++ trunk/blog.iml 2007-11-28 12:50:56 UTC (rev 141)
@@ -10,6 +10,12 @@
<deploymentDescriptor name="persistence.xml" url="file://$MODULE_DIR$/resources/META-INF/persistence-dev.xml" optional="false" version="1.0" />
</configuration>
</facet>
+ <facet type="hibernate" name="Hibernate">
+ <configuration>
+ <setting name="validation-enabled" value="true" />
+ <datasource-map />
+ </configuration>
+ </facet>
</component>
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
@@ -82,6 +88,15 @@
<SOURCES />
</library>
</orderEntry>
+ <orderEntry type="module-library">
+ <library name="shotoku-cache">
+ <CLASSES>
+ <root url="jar://$MODULE_DIR$/lib/shotoku-cache.jar!/" />
+ </CLASSES>
+ <JAVADOC />
+ <SOURCES />
+ </library>
+ </orderEntry>
<orderEntryProperties />
</component>
</module>
Added: trunk/lib/jdom.jar
===================================================================
(Binary files differ)
Property changes on: trunk/lib/jdom.jar
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/lib/rome-0.9.jar
===================================================================
(Binary files differ)
Property changes on: trunk/lib/rome-0.9.jar
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified: trunk/resources/WEB-INF/components.xml
===================================================================
--- trunk/resources/WEB-INF/components.xml 2007-11-27 10:01:42 UTC (rev 140)
+++ trunk/resources/WEB-INF/components.xml 2007-11-28 12:50:56 UTC (rev 141)
@@ -2,13 +2,15 @@
<components xmlns="http://jboss.com/products/seam/components"
xmlns:core="http://jboss.com/products/seam/core"
xmlns:persistence="http://jboss.com/products/seam/persistence"
+ xmlns:async="http://jboss.com/products/seam/async"
xmlns:drools="http://jboss.com/products/seam/drools"
xmlns:bpm="http://jboss.com/products/seam/bpm"
xmlns:security="http://jboss.com/products/seam/security"
xmlns:mail="http://jboss.com/products/seam/mail"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
- "http://jboss.com/products/seam/core http://jboss.com/products/seam/core-2.0.xsd
+ "http://jboss.com/products/seam/core http://jboss.com/products/seam/core-2.0.xsd
+ http://jboss.com/products/seam/async http://jboss.com/products/seam/async-2.0.xsd
http://jboss.com/products/seam/persistence http://jboss.com/products/seam/persistence-2.0.xsd
http://jboss.com/products/seam/drools http://jboss.com/products/seam/drools-2.0.xsd
http://jboss.com/products/seam/bpm http://jboss.com/products/seam/bpm-2.0.xsd
@@ -16,40 +18,42 @@
http://jboss.com/products/seam/mail http://jboss.com/products/seam/mail-2.0.xsd
http://jboss.com/products/seam/components http://jboss.com/products/seam/components-2.0.xsd">
- <core:init debug="@debug@" jndi-pattern="@jndiPattern@"/>
-
- <core:manager concurrent-request-timeout="500"
- conversation-timeout="120000"
- conversation-id-parameter="cid"/>
-
- <persistence:managed-persistence-context name="entityManager"
- auto-create="true"
- persistence-unit-jndi-name="java:/blogEntityManagerFactory"/>
+ <core:init debug="@debug@" jndi-pattern="@jndiPattern@"/>
- <drools:rule-base name="securityRules">
- <drools:rule-files>
- <value>/security.drl</value>
- </drools:rule-files>
- </drools:rule-base>
+ <core:manager concurrent-request-timeout="500"
+ conversation-timeout="120000"
+ conversation-id-parameter="cid"/>
- <security:identity authenticate-method="#{authenticator.authenticate}"
- security-rules="#{securityRules}"/>
-
- <event type="org.jboss.seam.notLoggedIn">
- <action execute="#{redirect.captureCurrentView}"/>
- </event>
- <event type="org.jboss.seam.postAuthenticate">
- <action execute="#{redirect.returnToCapturedView}"/>
- </event>
-
- <mail:mail-session host="localhost" port="2525" username="test" password="test" />
-
- <!-- For use with jBPM pageflow or process management -->
- <!--
- <bpm:jbpm>
- <bpm:process-definitions></bpm:process-definitions>
- <bpm:pageflow-definitions></bpm:pageflow-definitions>
- </bpm:jbpm>
- -->
-
+ <persistence:managed-persistence-context name="entityManager"
+ auto-create="true"
+ persistence-unit-jndi-name="java:/blogEntityManagerFactory"/>
+
+ <drools:rule-base name="securityRules">
+ <drools:rule-files>
+ <value>/security.drl</value>
+ </drools:rule-files>
+ </drools:rule-base>
+
+ <security:identity authenticate-method="#{authenticator.authenticate}"
+ security-rules="#{securityRules}"/>
+
+ <event type="org.jboss.seam.notLoggedIn">
+ <action execute="#{redirect.captureCurrentView}"/>
+ </event>
+ <event type="org.jboss.seam.postAuthenticate">
+ <action execute="#{redirect.returnToCapturedView}"/>
+ </event>
+
+ <mail:mail-session host="localhost" port="2525" username="test" password="test" />
+
+ <async:quartz-dispatcher />
+
+ <!-- For use with jBPM pageflow or process management -->
+ <!--
+ <bpm:jbpm>
+ <bpm:process-definitions></bpm:process-definitions>
+ <bpm:pageflow-definitions></bpm:pageflow-definitions>
+ </bpm:jbpm>
+ -->
+
</components>
Modified: trunk/src/action/org/jboss/blog/session/feed/FeedModBean.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/FeedModBean.java 2007-11-27 10:01:42 UTC (rev 140)
+++ trunk/src/action/org/jboss/blog/session/feed/FeedModBean.java 2007-11-28 12:50:56 UTC (rev 141)
@@ -7,6 +7,7 @@
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;
+import org.jboss.seam.core.Events;
import javax.persistence.EntityManager;
@@ -45,6 +46,8 @@
}
entityManager.flush();
+
+ Events.instance().raiseEvent("org.jboss.blog.feed.new");
}
public void saveExisting() {
@@ -53,5 +56,7 @@
public void delete() {
entityManager.remove(getFeed());
+
+ Events.instance().raiseEvent("org.jboss.blog.feed.deleted");
}
}
Modified: trunk/src/action/org/jboss/blog/session/feed/FeedPosts.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/FeedPosts.java 2007-11-27 10:01:42 UTC (rev 140)
+++ trunk/src/action/org/jboss/blog/session/feed/FeedPosts.java 2007-11-28 12:50:56 UTC (rev 141)
@@ -3,12 +3,11 @@
import org.jboss.blog.model.Feed;
import org.jboss.blog.model.Post;
-import javax.persistence.EntityManager;
import java.util.List;
/**
* @author <a href="mailto:adam at warski.org">Adam Warski</a>
*/
public interface FeedPosts {
- public List<Post> getPosts(EntityManager entityManager, Feed feed, int from, int to);
+ public List<Post> getPosts(Feed feed, int from, int to);
}
Modified: trunk/src/action/org/jboss/blog/session/feed/FeedType.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/FeedType.java 2007-11-27 10:01:42 UTC (rev 140)
+++ trunk/src/action/org/jboss/blog/session/feed/FeedType.java 2007-11-28 12:50:56 UTC (rev 141)
@@ -7,8 +7,10 @@
*/
public interface FeedType {
public String getName();
- public Class getModelClass();
+ public Class<? extends Feed> getModelClass();
public String getAddPage();
public String getEditPage();
- public FeedPosts getFeedPosts();
+
+ public String getFeedPostsComponentName();
+ public String getFeedUpdateComponentName();
}
Modified: trunk/src/action/org/jboss/blog/session/feed/FeedTypesBean.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/FeedTypesBean.java 2007-11-27 10:01:42 UTC (rev 140)
+++ trunk/src/action/org/jboss/blog/session/feed/FeedTypesBean.java 2007-11-28 12:50:56 UTC (rev 141)
@@ -16,10 +16,10 @@
@Scope(ScopeType.APPLICATION)
@AutoCreate
public class FeedTypesBean {
- private Map<Class<?>, FeedType> feedTypes;
+ private Map<Class<? extends Feed>, FeedType> feedTypes;
public FeedTypesBean() {
- feedTypes = new ConcurrentHashMap<Class<?>, FeedType>();
+ feedTypes = new ConcurrentHashMap<Class<? extends Feed>, FeedType>();
}
public void registerType(FeedType feedType) {
@@ -30,7 +30,7 @@
return feedTypes.values().toArray(new FeedType[feedTypes.size()]);
}
- public FeedType getFeedType(Class<?> c) throws InvalidFeedTypeException {
+ public FeedType getFeedType(Class<? extends Feed> c) throws InvalidFeedTypeException {
FeedType entry = feedTypes.get(c);
if (entry == null) {
throw new InvalidFeedTypeException();
Added: trunk/src/action/org/jboss/blog/session/feed/FeedUpdate.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/FeedUpdate.java (rev 0)
+++ trunk/src/action/org/jboss/blog/session/feed/FeedUpdate.java 2007-11-28 12:50:56 UTC (rev 141)
@@ -0,0 +1,10 @@
+package org.jboss.blog.session.feed;
+
+import org.jboss.blog.model.Feed;
+
+/**
+ * @author <a href="mailto:adam at warski.org">Adam Warski</a>
+ */
+public interface FeedUpdate {
+ public void update(Feed feed);
+}
Modified: trunk/src/action/org/jboss/blog/session/feed/FeedsServiceImpl.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/FeedsServiceImpl.java 2007-11-27 10:01:42 UTC (rev 140)
+++ trunk/src/action/org/jboss/blog/session/feed/FeedsServiceImpl.java 2007-11-28 12:50:56 UTC (rev 141)
@@ -4,6 +4,7 @@
import org.jboss.blog.model.Post;
import org.jboss.blog.service.FeedNotFoundException;
import org.jboss.blog.service.FeedsService;
+import org.jboss.seam.Component;
import org.jboss.seam.annotations.AutoCreate;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
@@ -43,9 +44,9 @@
@SuppressWarnings("unchecked")
public List<Post> getPosts(Feed feed, int from, int to) {
- FeedPosts feedPosts = feedTypes.getFeedType(feed.getClass()).getFeedPosts();
- if (feedPosts != null) {
- return feedPosts.getPosts(entityManager, feed, from, to);
+ String feedPostsComponentName = feedTypes.getFeedType(feed.getClass()).getFeedPostsComponentName();
+ if (feedPostsComponentName != null) {
+ return ((FeedPosts) Component.getInstance(feedPostsComponentName)).getPosts(feed, from, to);
} else {
return (List<Post>) entityManager.createQuery(
"select post from Post post where post.feed = ?1 order by post.published desc")
Modified: trunk/src/action/org/jboss/blog/session/feed/aggregated/AggregatedFeedPostsBean.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/aggregated/AggregatedFeedPostsBean.java 2007-11-27 10:01:42 UTC (rev 140)
+++ trunk/src/action/org/jboss/blog/session/feed/aggregated/AggregatedFeedPostsBean.java 2007-11-28 12:50:56 UTC (rev 141)
@@ -1,9 +1,12 @@
package org.jboss.blog.session.feed.aggregated;
-import org.jboss.blog.model.AggregatedFeed;
import org.jboss.blog.model.Feed;
import org.jboss.blog.model.Post;
import org.jboss.blog.session.feed.FeedPosts;
+import org.jboss.seam.ScopeType;
+import org.jboss.seam.annotations.In;
+import org.jboss.seam.annotations.Name;
+import org.jboss.seam.annotations.Scope;
import javax.persistence.EntityManager;
import java.util.List;
@@ -11,12 +14,19 @@
/**
* @author <a href="mailto:adam at warski.org">Adam Warski</a>
*/
+ at Name("aggregatedFeedPosts")
+ at Scope(ScopeType.STATELESS)
public class AggregatedFeedPostsBean implements FeedPosts {
+ @In
+ private EntityManager entityManager;
+
@SuppressWarnings("unchecked")
- public List<Post> getPosts(EntityManager entityManager, Feed feed, int from, int to) {
+ public List<Post> getPosts(Feed feed, int from, int to) {
return entityManager.createQuery(
- "select post from Post post, AggregatedFeed af, in (af.feeds) as ff where af = ?1 " +
- "and post.feed = ff order by post.published desc")
+ "select post from Post post " +
+ "where post.feed in " +
+ "(select feed from AggregatedFeed af, Feed feed where af = ?1 and feed in elements(af.feeds)) " +
+ "order by post.published desc")
.setParameter(1, feed).setMaxResults(to-from).setFirstResult(from).getResultList();
}
}
Modified: trunk/src/action/org/jboss/blog/session/feed/aggregated/AggregatedFeedTypeRegisterBean.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/aggregated/AggregatedFeedTypeRegisterBean.java 2007-11-27 10:01:42 UTC (rev 140)
+++ trunk/src/action/org/jboss/blog/session/feed/aggregated/AggregatedFeedTypeRegisterBean.java 2007-11-28 12:50:56 UTC (rev 141)
@@ -1,10 +1,9 @@
package org.jboss.blog.session.feed.aggregated;
import org.jboss.blog.model.AggregatedFeed;
-import org.jboss.blog.session.feed.FeedPosts;
+import org.jboss.blog.model.Feed;
import org.jboss.blog.session.feed.FeedType;
import org.jboss.blog.session.feed.FeedTypesBean;
-import org.jboss.seam.annotations.Create;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Observer;
@@ -18,7 +17,7 @@
return "aggregated";
}
- public Class<AggregatedFeed> getModelClass() {
+ public Class<? extends Feed> getModelClass() {
return AggregatedFeed.class;
}
@@ -30,15 +29,12 @@
return "/manage/aggregated/aggregated_edit.xhtml";
}
- public FeedPosts getFeedPosts() {
- return feedPosts;
+ public String getFeedPostsComponentName() {
+ return "aggregatedFeedPosts";
}
- private FeedPosts feedPosts;
-
- @Create
- public void initFeedPosts() {
- feedPosts = new AggregatedFeedPostsBean();
+ public String getFeedUpdateComponentName() {
+ return null;
}
@In
Modified: trunk/src/action/org/jboss/blog/session/feed/remote/RemoteFeedTypeRegisterBean.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/remote/RemoteFeedTypeRegisterBean.java 2007-11-27 10:01:42 UTC (rev 140)
+++ trunk/src/action/org/jboss/blog/session/feed/remote/RemoteFeedTypeRegisterBean.java 2007-11-28 12:50:56 UTC (rev 141)
@@ -1,9 +1,9 @@
package org.jboss.blog.session.feed.remote;
import org.jboss.blog.model.RemoteFeed;
+import org.jboss.blog.model.Feed;
import org.jboss.blog.session.feed.FeedType;
import org.jboss.blog.session.feed.FeedTypesBean;
-import org.jboss.blog.session.feed.FeedPosts;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Observer;
@@ -17,7 +17,7 @@
return "remote";
}
- public Class<?> getModelClass() {
+ public Class<? extends Feed> getModelClass() {
return RemoteFeed.class;
}
@@ -29,10 +29,14 @@
return "/manage/remote/remote_edit.xhtml";
}
- public FeedPosts getFeedPosts() {
+ public String getFeedPostsComponentName() {
return null;
}
+ public String getFeedUpdateComponentName() {
+ return "remoteFeedUpdate";
+ }
+
@In
private FeedTypesBean feedTypes;
Added: trunk/src/action/org/jboss/blog/session/feed/remote/RemoteFeedUpdateBean.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/remote/RemoteFeedUpdateBean.java (rev 0)
+++ trunk/src/action/org/jboss/blog/session/feed/remote/RemoteFeedUpdateBean.java 2007-11-28 12:50:56 UTC (rev 141)
@@ -0,0 +1,18 @@
+package org.jboss.blog.session.feed.remote;
+
+import org.jboss.blog.session.feed.FeedUpdate;
+import org.jboss.blog.model.Feed;
+import org.jboss.seam.ScopeType;
+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("remoteFeedUpdate")
+ at Scope(ScopeType.STATELESS)
+public class RemoteFeedUpdateBean implements FeedUpdate {
+ public void update(Feed feed) {
+ System.out.println("Updating " + feed.getName());
+ }
+}
Added: trunk/src/action/org/jboss/blog/session/update/UpdateHandler.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/update/UpdateHandler.java (rev 0)
+++ trunk/src/action/org/jboss/blog/session/update/UpdateHandler.java 2007-11-28 12:50:56 UTC (rev 141)
@@ -0,0 +1,19 @@
+package org.jboss.blog.session.update;
+
+import org.jboss.seam.annotations.async.Asynchronous;
+import org.jboss.seam.annotations.async.Expiration;
+import org.jboss.seam.annotations.async.IntervalDuration;
+
+import javax.ejb.Local;
+import java.util.Date;
+
+/**
+ * @author <a href="mailto:adam at warski.org">Adam Warski</a>
+ */
+ at Local
+public interface UpdateHandler {
+ @Asynchronous
+ void update(@Expiration Date expiration, @IntervalDuration long interval);
+
+ void remove();
+}
Added: trunk/src/action/org/jboss/blog/session/update/UpdateHandlerImpl.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/update/UpdateHandlerImpl.java (rev 0)
+++ trunk/src/action/org/jboss/blog/session/update/UpdateHandlerImpl.java 2007-11-28 12:50:56 UTC (rev 141)
@@ -0,0 +1,40 @@
+package org.jboss.blog.session.update;
+
+import org.jboss.blog.model.Feed;
+import org.jboss.blog.service.FeedsService;
+import org.jboss.blog.session.feed.FeedTypesBean;
+import org.jboss.blog.session.feed.FeedUpdate;
+import org.jboss.seam.Component;
+import org.jboss.seam.annotations.AutoCreate;
+import org.jboss.seam.annotations.In;
+import org.jboss.seam.annotations.Name;
+
+import javax.ejb.Remove;
+import javax.ejb.Stateless;
+import java.util.Date;
+
+/**
+ * @author <a href="mailto:adam at warski.org">Adam Warski</a>
+ */
+ at Name("updateHandler")
+ at Stateless
+ at AutoCreate
+public class UpdateHandlerImpl implements UpdateHandler {
+ @In
+ private FeedsService feedsService;
+
+ @In
+ private FeedTypesBean feedTypes;
+
+ public void update(Date expiration, long interval) {
+ for (Feed feed : feedsService.getAllFeeds()) {
+ String feedUpdateComponentName = feedTypes.getFeedType(feed.getClass()).getFeedUpdateComponentName();
+ if (feedUpdateComponentName != null) {
+ ((FeedUpdate) Component.getInstance(feedUpdateComponentName)).update(feed);
+ }
+ }
+ }
+
+ @Remove
+ public void remove() { }
+}
Added: trunk/src/action/org/jboss/blog/session/update/UpdateManager.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/update/UpdateManager.java (rev 0)
+++ trunk/src/action/org/jboss/blog/session/update/UpdateManager.java 2007-11-28 12:50:56 UTC (rev 141)
@@ -0,0 +1,24 @@
+package org.jboss.blog.session.update;
+
+import org.jboss.seam.ScopeType;
+import org.jboss.seam.annotations.In;
+import org.jboss.seam.annotations.Name;
+import org.jboss.seam.annotations.Observer;
+import org.jboss.seam.annotations.Scope;
+
+import java.util.Date;
+
+/**
+ * @author <a href="mailto:adam at warski.org">Adam Warski</a>
+ */
+ at Name("updateManager")
+ at Scope(ScopeType.APPLICATION)
+public class UpdateManager {
+ @In
+ private UpdateHandler updateHandler;
+
+ @Observer("org.jboss.seam.postInitialization")
+ public void register() {
+ updateHandler.update(new Date(), 60000);
+ }
+}
Modified: trunk/view/view/feed.xhtml
===================================================================
--- trunk/view/view/feed.xhtml 2007-11-27 10:01:42 UTC (rev 140)
+++ trunk/view/view/feed.xhtml 2007-11-28 12:50:56 UTC (rev 141)
@@ -28,7 +28,7 @@
<a:repeat var="post" value="#{feedView.posts}" rows="#{feedView.feed.maxPostsOnPage}">
<rich:panel>
<f:facet name="header">
- #{post.title}
+ #{post.title}, published on #{post.published}
</f:facet>
<s:link value="View on separate page »" view="/view/post.xhtml" propagation="none">
<f:param name="post" value="#{post.titleAsId}" />
More information about the jboss-cvs-commits
mailing list