[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