[jboss-cvs] JBossBlog SVN: r173 - in trunk: resources/WEB-INF and 8 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Wed Jan 16 13:43:49 EST 2008
Author: adamw
Date: 2008-01-16 13:43:49 -0500 (Wed, 16 Jan 2008)
New Revision: 173
Added:
trunk/src/action/org/jboss/blog/session/cache/
trunk/src/action/org/jboss/blog/session/cache/FeedsChangesObserver.java
trunk/src/action/org/jboss/blog/session/converter/cached/
trunk/src/action/org/jboss/blog/session/converter/cached/CachedFeedConverter.java
trunk/src/action/org/jboss/blog/session/converter/cached/CachedPostConverter.java
Modified:
trunk/blog.iml
trunk/build.xml
trunk/resources/WEB-INF/pages.xml
trunk/src/action/org/jboss/blog/session/feed/mod/FeedModBean.java
trunk/src/action/org/jboss/blog/session/merge/MergeServiceBean.java
trunk/src/action/org/jboss/blog/session/scanner/Init.java
trunk/src/action/org/jboss/blog/session/view/FeedViewBean.java
trunk/src/action/org/jboss/blog/session/view/PostViewBean.java
Log:
Modified: trunk/blog.iml
===================================================================
--- trunk/blog.iml 2008-01-16 09:45:50 UTC (rev 172)
+++ trunk/blog.iml 2008-01-16 18:43:49 UTC (rev 173)
@@ -157,6 +157,7 @@
<SOURCES />
</library>
</orderEntry>
+ <orderEntry type="library" name="jbosscache" level="project" />
<orderEntryProperties />
</component>
</module>
Modified: trunk/build.xml
===================================================================
--- trunk/build.xml 2008-01-16 09:45:50 UTC (rev 172)
+++ trunk/build.xml 2008-01-16 18:43:49 UTC (rev 173)
@@ -173,6 +173,9 @@
<include name="lib/richfaces-api*.jar" />
<include name="lib/rome*.jar" />
+ <include name="lib/jgroups*.jar" />
+ <include name="lib/jboss-cache*.jar" />
+
<include name="lib/lucene-core.jar" />
<include name="lib/hibernate-search.jar" />
<include name="lib/hibernate-commons-annotations.jar" />
Modified: trunk/resources/WEB-INF/pages.xml
===================================================================
--- trunk/resources/WEB-INF/pages.xml 2008-01-16 09:45:50 UTC (rev 172)
+++ trunk/resources/WEB-INF/pages.xml 2008-01-16 18:43:49 UTC (rev 173)
@@ -17,12 +17,12 @@
<!-- View feeds -->
<page view-id="/view/feed.xhtml">
- <param name="name" converterId="feedConverter" value="#{feedView.feed}" />
+ <param name="name" converterId="cachedFeedConverter" value="#{feedView.feed}" />
<param name="from" value="#{feedView.from}" />
</page>
<page view-id="/view/post.xhtml">
- <param name="post" converterId="postConverter" value="#{postView.post}" />
+ <param name="post" converterId="cachedPostConverter" value="#{postView.post}" />
<navigation from-action="#{postView.delete}">
<redirect view-id="/view/feed.xhtml">
<param name="name" value="#{postView.post.feed.name}" />
Added: trunk/src/action/org/jboss/blog/session/cache/FeedsChangesObserver.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/cache/FeedsChangesObserver.java (rev 0)
+++ trunk/src/action/org/jboss/blog/session/cache/FeedsChangesObserver.java 2008-01-16 18:43:49 UTC (rev 173)
@@ -0,0 +1,20 @@
+package org.jboss.blog.session.cache;
+
+import org.jboss.seam.annotations.Observer;
+import org.jboss.seam.annotations.Name;
+import org.jboss.seam.annotations.In;
+import org.jboss.cache.aop.PojoCache;
+
+/**
+ * @author <a href="mailto:adam at warski.org">Adam Warski</a>
+ */
+ at Name("feedsChangesObserver")
+public class FeedsChangesObserver {
+ @In
+ private PojoCache pojoCache;
+
+ @Observer({"org.jboss.blog.feed.updated", "org.jboss.blog.feed.removed"})
+ public void feedUpdated(String feedName) {
+
+ }
+}
Copied: trunk/src/action/org/jboss/blog/session/converter/cached/CachedFeedConverter.java (from rev 166, trunk/src/action/org/jboss/blog/session/converter/FeedConverter.java)
===================================================================
--- trunk/src/action/org/jboss/blog/session/converter/cached/CachedFeedConverter.java (rev 0)
+++ trunk/src/action/org/jboss/blog/session/converter/cached/CachedFeedConverter.java 2008-01-16 18:43:49 UTC (rev 173)
@@ -0,0 +1,44 @@
+package org.jboss.blog.session.converter.cached;
+
+import org.jboss.blog.model.feed.Feed;
+import org.jboss.blog.service.FeedNotFoundException;
+import org.jboss.seam.Component;
+import org.jboss.seam.annotations.Name;
+import org.jboss.seam.annotations.Transactional;
+import org.jboss.seam.annotations.faces.Converter;
+import org.jboss.seam.annotations.intercept.BypassInterceptors;
+
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceException;
+
+/**
+ * @author <a href="mailto:adam at warski.org">Adam Warski</a>
+ */
+ at Name("cachedFeedConverter")
+ at BypassInterceptors
+ at Converter
+public class CachedFeedConverter implements javax.faces.convert.Converter {
+ @Transactional
+ public Object getAsObject(FacesContext context, UIComponent cmp, String value) {
+ EntityManager entityManager = (EntityManager) Component.getInstance("entityManager");
+
+ entityManager.joinTransaction();
+
+ if (value != null) {
+ value = value.toLowerCase();
+ }
+
+ try {
+ return entityManager.createQuery("select feed from Feed feed where feed.name = ?1")
+ .setParameter(1, value).getSingleResult();
+ } catch (PersistenceException e) {
+ throw new FeedNotFoundException(value, e);
+ }
+ }
+
+ public String getAsString(FacesContext context, UIComponent cmp, Object value) {
+ return value == null ? null : ((Feed) value).getName();
+ }
+}
\ No newline at end of file
Copied: trunk/src/action/org/jboss/blog/session/converter/cached/CachedPostConverter.java (from rev 166, trunk/src/action/org/jboss/blog/session/converter/PostConverter.java)
===================================================================
--- trunk/src/action/org/jboss/blog/session/converter/cached/CachedPostConverter.java (rev 0)
+++ trunk/src/action/org/jboss/blog/session/converter/cached/CachedPostConverter.java 2008-01-16 18:43:49 UTC (rev 173)
@@ -0,0 +1,44 @@
+package org.jboss.blog.session.converter.cached;
+
+import org.jboss.blog.model.Post;
+import org.jboss.blog.service.FeedNotFoundException;
+import org.jboss.seam.Component;
+import org.jboss.seam.annotations.Name;
+import org.jboss.seam.annotations.Transactional;
+import org.jboss.seam.annotations.faces.Converter;
+import org.jboss.seam.annotations.intercept.BypassInterceptors;
+
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceException;
+
+/**
+ * @author <a href="mailto:adam at warski.org">Adam Warski</a>
+ */
+ at Name("cachedPostConverter")
+ at BypassInterceptors
+ at Converter
+public class CachedPostConverter implements javax.faces.convert.Converter {
+ @Transactional
+ public Object getAsObject(FacesContext context, UIComponent cmp, String value) {
+ EntityManager entityManager = (EntityManager) Component.getInstance("entityManager");
+
+ entityManager.joinTransaction();
+
+ if (value != null) {
+ value = value.toLowerCase();
+ }
+
+ try {
+ return entityManager.createQuery("select post from Post post where post.titleAsId = ?1")
+ .setParameter(1, value).getSingleResult();
+ } catch (PersistenceException e) {
+ throw new FeedNotFoundException(value, e);
+ }
+ }
+
+ public String getAsString(FacesContext context, UIComponent cmp, Object value) {
+ return value == null ? null : ((Post) value).getTitleAsId();
+ }
+}
\ No newline at end of file
Modified: trunk/src/action/org/jboss/blog/session/feed/mod/FeedModBean.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/mod/FeedModBean.java 2008-01-16 09:45:50 UTC (rev 172)
+++ trunk/src/action/org/jboss/blog/session/feed/mod/FeedModBean.java 2008-01-16 18:43:49 UTC (rev 173)
@@ -6,6 +6,7 @@
import org.jboss.blog.model.XmlType;
import org.jboss.blog.session.merge.MergeServiceBean;
import org.jboss.seam.ScopeType;
+import org.jboss.seam.core.Events;
import org.jboss.seam.annotations.AutoCreate;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
@@ -64,17 +65,23 @@
entityManager.flush();
facesMessages.addFromResourceBundle(FacesMessage.SEVERITY_INFO, "blog.feed.added", getFeed().getName());
+
+ Events.instance().raiseEvent("org.jboss.blog.feed.added", getFeed().getName());
}
public void saveExisting() {
entityManager.flush();
facesMessages.addFromResourceBundle(FacesMessage.SEVERITY_INFO, "blog.feed.updated", getFeed().getName());
+
+ Events.instance().raiseEvent("org.jboss.blog.feed.updated", getFeed().getName());
}
public void delete() {
entityManager.remove(getFeed());
facesMessages.addFromResourceBundle(FacesMessage.SEVERITY_INFO, "blog.feed.deleted", getFeed().getName());
+
+ Events.instance().raiseEvent("org.jboss.blog.feed.deleted", getFeed().getName());
}
}
Modified: trunk/src/action/org/jboss/blog/session/merge/MergeServiceBean.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/merge/MergeServiceBean.java 2008-01-16 09:45:50 UTC (rev 172)
+++ trunk/src/action/org/jboss/blog/session/merge/MergeServiceBean.java 2008-01-16 18:43:49 UTC (rev 173)
@@ -7,6 +7,7 @@
import org.jboss.blog.tools.GeneralTools;
import org.jboss.blog.tools.StringTools;
import org.jboss.seam.ScopeType;
+import org.jboss.seam.core.Events;
import org.jboss.seam.annotations.*;
import org.jboss.seam.log.Log;
@@ -46,6 +47,8 @@
for (Enclosure enc : post.getEnclosures()) {
entityManager.persist(enc);
}
+
+ Events.instance().raiseEvent("org.jboss.blog.post.added", post.getTitleAsId(), feed.getName());
}
/**
@@ -63,29 +66,43 @@
*
* Also, in case of a title change, the titleAsId is not chagned.
*
+ * TODO: check only some fields
+ *
+ * @param feed Feed to which the posts belong
* @param mergeTo Post to which to merge the changes.
* @param mergeFrom Post from which to merge the changes.
*/
- private void mergePosts(Post mergeTo, Post mergeFrom) {
+ private void mergePosts(Feed feed, Post mergeTo, Post mergeFrom) {
+ boolean changes = false;
+
if (!GeneralTools.objectsEquals(mergeTo.getAuthor(), mergeFrom.getAuthor())) {
mergeTo.setAuthor(mergeFrom.getAuthor());
+ changes = true;
}
if (!GeneralTools.objectsEquals(mergeTo.getContent(), mergeFrom.getContent())) {
mergeTo.setContent(mergeFrom.getContent());
+ changes = true;
}
if (!GeneralTools.objectsEquals(mergeTo.getLink(), mergeFrom.getLink())) {
mergeTo.setLink(mergeFrom.getLink());
+ changes = true;
}
if (!GeneralTools.objectsEquals(mergeTo.getModified(), mergeFrom.getModified())) {
mergeTo.setModified(mergeFrom.getModified());
+ changes = true;
}
if (!GeneralTools.objectsEquals(mergeTo.getTitle(), mergeFrom.getTitle())) {
mergeTo.setTitle(mergeFrom.getTitle());
+ changes = true;
}
+
+ if (changes) {
+ Events.instance().raiseEvent("org.jboss.blog.post.updated", mergeTo.getTitleAsId(), feed.getName());
+ }
}
public void merge(Feed feed, List<Post> posts) {
@@ -109,7 +126,7 @@
savePost(feed, mergeFrom.getCurrent());
mergeFrom.next();
} else if (compare == 0) {
- mergePosts(mergeTo.getCurrent(), mergeFrom.getCurrent());
+ mergePosts(feed, mergeTo.getCurrent(), mergeFrom.getCurrent());
mergeFrom.next();
mergeTo.next();
} else {
Modified: trunk/src/action/org/jboss/blog/session/scanner/Init.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/scanner/Init.java 2008-01-16 09:45:50 UTC (rev 172)
+++ trunk/src/action/org/jboss/blog/session/scanner/Init.java 2008-01-16 18:43:49 UTC (rev 173)
@@ -5,8 +5,6 @@
import org.jboss.seam.core.Events;
import org.jboss.blog.session.feed.type.FeedType;
import org.jboss.blog.session.feed.type.FeedTypes;
-import org.jboss.blog.session.feed.dao.AggregatedFeedDao;
-import org.jboss.blog.session.feed.dao.RemoteFeedDao;
import java.util.Map;
import java.util.HashMap;
@@ -30,8 +28,6 @@
handlers.put(FeedType.class, feedTypes);
new AnnotationScanner(Thread.currentThread().getContextClassLoader(), handlers).scan();
- //feedTypes.handleClass(AggregatedFeedDao.class);
- //feedTypes.handleClass(RemoteFeedDao.class);
Events.instance().raiseEvent("org.jboss.blog.postBlogInit");
}
Modified: trunk/src/action/org/jboss/blog/session/view/FeedViewBean.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/view/FeedViewBean.java 2008-01-16 09:45:50 UTC (rev 172)
+++ trunk/src/action/org/jboss/blog/session/view/FeedViewBean.java 2008-01-16 18:43:49 UTC (rev 173)
@@ -8,12 +8,9 @@
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;
-import org.htmlcleaner.HtmlCleaner;
import java.util.List;
import java.io.Serializable;
-import java.io.IOException;
-import java.lang.reflect.Method;
/**
* @author <a href="mailto:adam at warski.org">Adam Warski</a>
Modified: trunk/src/action/org/jboss/blog/session/view/PostViewBean.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/view/PostViewBean.java 2008-01-16 09:45:50 UTC (rev 172)
+++ trunk/src/action/org/jboss/blog/session/view/PostViewBean.java 2008-01-16 18:43:49 UTC (rev 173)
@@ -4,6 +4,7 @@
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.faces.FacesMessages;
+import org.jboss.seam.core.Events;
import javax.faces.application.FacesMessage;
import javax.persistence.EntityManager;
@@ -30,9 +31,13 @@
this.post = post;
}
+ // TODO: the delete method shouldn't be here
public void delete() {
- entityManager.remove(post);
+ entityManager.remove(entityManager.merge(post));
facesMessages.addFromResourceBundle(FacesMessage.SEVERITY_INFO, "blog.post.deleted", post.getTitle());
+
+ Events.instance().raiseEvent("org.jboss.blog.post.deleted", post.getTitleAsId(),
+ post.getFeed().getName());
}
}
More information about the jboss-cvs-commits
mailing list