[jboss-cvs] JBossBlog SVN: r190 - in trunk: resources/WEB-INF and 10 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Feb 5 12:34:16 EST 2008


Author: adamw
Date: 2008-02-05 12:34:16 -0500 (Tue, 05 Feb 2008)
New Revision: 190

Added:
   trunk/lib/ehcache-1.2.3.jar
   trunk/src/action/org/jboss/blog/session/cache/CacheManager.java
   trunk/src/action/org/jboss/blog/session/cache/CacheManagerHashMapImpl.java
   trunk/src/action/org/jboss/blog/session/cache/CacheManagerJBossCacheImpl.java
   trunk/src/action/org/jboss/blog/session/update/UpdateHandler.java
   trunk/src/model/org/jboss/blog/model/post/filter/
   trunk/src/model/org/jboss/blog/model/post/filter/AndFilter.java
   trunk/src/model/org/jboss/blog/model/post/filter/AuthorRegexpFilter.java
   trunk/src/model/org/jboss/blog/model/post/filter/FilterAddBean.java
   trunk/src/model/org/jboss/blog/model/post/filter/NotPodcastFilter.java
   trunk/src/model/org/jboss/blog/model/post/filter/PodcastFilter.java
   trunk/src/model/org/jboss/blog/model/post/filter/TotalFilter.java
   trunk/src/test/org/jboss/blog/session/parser/RomeExample3.java
Removed:
   trunk/lib/quartz.jar
   trunk/src/action/org/jboss/blog/session/cache/CacheManager.java
   trunk/src/action/org/jboss/blog/session/feed/posts/filter/
   trunk/src/action/org/jboss/blog/session/update/UpdateHandler.java
   trunk/src/action/org/jboss/blog/session/update/UpdateHandlerImpl.java
   trunk/src/model/org/jboss/blog/model/post/filter/AndFilter.java
   trunk/src/model/org/jboss/blog/model/post/filter/AuthorRegexpFilter.java
   trunk/src/model/org/jboss/blog/model/post/filter/FilterAddBean.java
   trunk/src/model/org/jboss/blog/model/post/filter/NotPodcastFilter.java
   trunk/src/model/org/jboss/blog/model/post/filter/PodcastFilter.java
   trunk/src/model/org/jboss/blog/model/post/filter/TotalFilter.java
Modified:
   trunk/lib/jboss-cache.jar
   trunk/resources/WEB-INF/components.xml
   trunk/src/action/org/jboss/blog/session/feed/dao/FeedDao.java
   trunk/src/action/org/jboss/blog/session/feed/dao/RemoteFeedDao.java
   trunk/src/action/org/jboss/blog/session/feed/mod/AggregatedFeedModBean.java
   trunk/src/action/org/jboss/blog/session/parser/ParserServiceImpl.java
   trunk/src/action/org/jboss/blog/session/update/UpdateException.java
   trunk/src/action/org/jboss/blog/session/update/UpdateManager.java
   trunk/src/test/org/jboss/blog/session/feed/posts/AggregatedFeedPostsTest.java
   trunk/src/test/org/jboss/blog/session/parser/RomeExample2.java
Log:


Added: trunk/lib/ehcache-1.2.3.jar
===================================================================
(Binary files differ)


Property changes on: trunk/lib/ehcache-1.2.3.jar
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: trunk/lib/jboss-cache.jar
===================================================================
(Binary files differ)

Deleted: trunk/lib/quartz.jar
===================================================================
(Binary files differ)

Modified: trunk/resources/WEB-INF/components.xml
===================================================================
--- trunk/resources/WEB-INF/components.xml	2008-02-05 10:36:59 UTC (rev 189)
+++ trunk/resources/WEB-INF/components.xml	2008-02-05 17:34:16 UTC (rev 190)
@@ -30,15 +30,8 @@
                                              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:identity authenticate-method="#{authenticator.authenticate}"
-                       security-rules="#{securityRules}"/>
-
     <event type="org.jboss.seam.notLoggedIn">
         <action execute="#{redirect.captureCurrentView}"/>
     </event>
@@ -59,21 +52,11 @@
 
     <mail:mail-session host="localhost" port="2525" username="test" password="test" />
 
-    <async:quartz-dispatcher />
+    <web:context-filter url-pattern="/feeds.seam" />
 
-    <web:context-filter url-pattern="/feeds.seam"/>
-
     <component name="linkService">
         <property name="serverAddress">http://localhost:8080</property>
         <property name="contextName">blog</property>
     </component>
 
-    <!-- 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>

Deleted: trunk/src/action/org/jboss/blog/session/cache/CacheManager.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/cache/CacheManager.java	2008-02-05 10:36:59 UTC (rev 189)
+++ trunk/src/action/org/jboss/blog/session/cache/CacheManager.java	2008-02-05 17:34:16 UTC (rev 190)
@@ -1,132 +0,0 @@
-package org.jboss.blog.session.cache;
-
-import org.jboss.seam.annotations.In;
-import org.jboss.seam.annotations.Name;
-import org.jboss.seam.annotations.Logger;
-import org.jboss.seam.annotations.AutoCreate;
-import org.jboss.seam.log.Log;
-import org.jboss.cache.aop.PojoCache;
-import org.jboss.cache.Fqn;
-import org.jboss.cache.CacheException;
-import org.jboss.blog.model.feed.RestrictedFeed;
-import org.jboss.blog.model.RestrictedPost;
-import org.jboss.blog.session.xml.content.InMemoryContentResponse;
-
-import java.lang.ref.SoftReference;
-import java.util.List;
-
-/**
- * TODO: check Soft References
- * @author <a href="mailto:adam at warski.org">Adam Warski</a>
- */
- at Name("cacheManager")
- at AutoCreate
-public class CacheManager {
-    @In
-    private PojoCache pojoCache;
-
-    @Logger
-    private Log log;
-
-    private final static Fqn BASE_FQN = new Fqn("blog");
-    private final static Object CACHE_MAP_KEY = new Object();
-
-    //
-
-    private <T> T getFromSoftReference(SoftReference<T> reference) {
-        if (reference == null) {
-            return null;
-        }
-
-        return reference.get();
-    }
-
-    private void readPost(RestrictedPost post) {
-        post.getFeed();
-        post.getCategories();
-        post.getEnclosures();
-        post.getImages();
-    }
-
-    private void readPosts(List<? extends RestrictedPost> posts) {
-        for (RestrictedPost post : posts) {
-            readPost(post);
-        }
-    }
-
-    //
-
-    public void evictAll() {
-        try {
-            log.debug("Evicting everything from the cache.");
-            pojoCache.remove(BASE_FQN);
-        } catch (CacheException e) {
-            log.error(e);
-        }
-    }
-
-    //
-
-    private Fqn getFeedPostsFqn(String feedName, int from, int to) {
-        return new Fqn(BASE_FQN, feedName, from, to);
-    }
-
-    public void putFeedPosts(RestrictedFeed feed, List<? extends RestrictedPost> posts, int from, int to) {
-        try {
-            readPosts(posts);
-            
-            log.debug("Putting feed '#0' posts into the cache, from #1 to #2.", feed.getName(), from, to);
-            pojoCache.put(getFeedPostsFqn(feed.getName(), from, to), CACHE_MAP_KEY, 
-                    new SoftReference<List<? extends RestrictedPost>>(posts));
-        } catch (CacheException e) {
-            log.error(e);
-        }
-    }
-
-    public List<? extends RestrictedPost> getFeedPosts(String feedName, int from, int to) {
-        try {
-            //noinspection unchecked
-            List<? extends RestrictedPost> inCache =
-                    getFromSoftReference(((SoftReference<List<? extends RestrictedPost>>) pojoCache.get(
-                    getFeedPostsFqn(feedName, from, to), CACHE_MAP_KEY)));
-            log.debug("Getting feed '#0' posts from the cache, from #1 to #2, result: #3.",
-                    feedName, from, to, inCache);
-            return inCache;
-        } catch (CacheException e) {
-            log.error(e);
-            return null;
-        }
-    }
-
-    //
-
-    private final static Object FEED_XML = new Object();
-
-    private Fqn getFeedXmlFqn(String feedName, String feedType) {
-        return new Fqn(BASE_FQN, FEED_XML, feedName, feedType == null ? null : feedType.toLowerCase());
-    }
-
-    public void putFeedXml(String feedName, String feedType, InMemoryContentResponse xml) {
-        try {
-            log.debug("Putting xml for feed '#0' to the cache, type: #1.", feedName, feedType);
-            pojoCache.put(getFeedXmlFqn(feedName, feedType), CACHE_MAP_KEY,
-                    new SoftReference<InMemoryContentResponse>(xml));
-        } catch (CacheException e) {
-            log.error(e);
-        }
-    }
-
-    public InMemoryContentResponse getFeedXml(String feedName, String feedType) {
-        try {
-            //noinspection unchecked
-            InMemoryContentResponse inCache = getFromSoftReference(((SoftReference<InMemoryContentResponse>)
-                    pojoCache.get(getFeedXmlFqn(feedName, feedType), CACHE_MAP_KEY)));
-            log.debug("Getting xml for feed '#0' from the cache, type: #1, result: #2.",
-                    feedName, feedType, inCache);
-            return inCache;
-        } catch (CacheException e) {
-            log.error(e);
-            return null;
-        }
-    }
-}

Added: trunk/src/action/org/jboss/blog/session/cache/CacheManager.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/cache/CacheManager.java	                        (rev 0)
+++ trunk/src/action/org/jboss/blog/session/cache/CacheManager.java	2008-02-05 17:34:16 UTC (rev 190)
@@ -0,0 +1,22 @@
+package org.jboss.blog.session.cache;
+
+import org.jboss.blog.model.feed.RestrictedFeed;
+import org.jboss.blog.model.RestrictedPost;
+import org.jboss.blog.session.xml.content.InMemoryContentResponse;
+
+import java.util.List;
+
+/**
+ * @author <a href="mailto:adam at warski.org">Adam Warski</a>
+ */
+public interface CacheManager {
+    void evictAll();
+
+    void putFeedPosts(RestrictedFeed feed, List<? extends RestrictedPost> posts, int from, int to);
+
+    List<? extends RestrictedPost> getFeedPosts(String feedName, int from, int to);
+
+    void putFeedXml(String feedName, String feedType, InMemoryContentResponse xml);
+
+    InMemoryContentResponse getFeedXml(String feedName, String feedType);
+}

Added: trunk/src/action/org/jboss/blog/session/cache/CacheManagerHashMapImpl.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/cache/CacheManagerHashMapImpl.java	                        (rev 0)
+++ trunk/src/action/org/jboss/blog/session/cache/CacheManagerHashMapImpl.java	2008-02-05 17:34:16 UTC (rev 190)
@@ -0,0 +1,110 @@
+package org.jboss.blog.session.cache;
+
+import org.jboss.seam.annotations.Name;
+import org.jboss.seam.annotations.Logger;
+import org.jboss.seam.annotations.AutoCreate;
+import org.jboss.seam.log.Log;
+import org.jboss.blog.model.feed.RestrictedFeed;
+import org.jboss.blog.model.RestrictedPost;
+import org.jboss.blog.session.xml.content.InMemoryContentResponse;
+
+import javax.annotation.PostConstruct;
+import java.lang.ref.SoftReference;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * TODO: check Soft References
+ * @author <a href="mailto:adam at warski.org">Adam Warski</a>
+ */
+ at Name("cacheManager")
+ at AutoCreate
+public class CacheManagerHashMapImpl implements CacheManager {
+    @Logger
+    private Log log;
+
+    private Map<Object, Object> cache;
+
+    @PostConstruct
+    public void init() {
+        cache = new ConcurrentHashMap<Object, Object>();
+    }
+
+    //
+
+    private <T> T getFromSoftReference(SoftReference<T> reference) {
+        if (reference == null) {
+            return null;
+        }
+
+        return reference.get();
+    }
+
+    private void readPost(RestrictedPost post) {
+        post.getFeed();
+        post.getCategories();
+        post.getEnclosures();
+        post.getImages();
+    }
+
+    private void readPosts(List<? extends RestrictedPost> posts) {
+        for (RestrictedPost post : posts) {
+            readPost(post);
+        }
+    }
+
+    //
+
+    public void evictAll() {
+        log.debug("Evicting everything from the cache.");
+        cache.clear();
+    }
+
+    //
+
+    private String getFeedPostsFqn(String feedName, int from, int to) {
+        return feedName + "/" + from + "/" + to;
+    }
+
+    public void putFeedPosts(RestrictedFeed feed, List<? extends RestrictedPost> posts, int from, int to) {
+        readPosts(posts);
+
+        log.debug("Putting feed '#0' posts into the cache, from #1 to #2.", feed.getName(), from, to);
+        
+        cache.put(getFeedPostsFqn(feed.getName(), from, to), new SoftReference<List<? extends RestrictedPost>>(posts));
+    }
+
+    public List<? extends RestrictedPost> getFeedPosts(String feedName, int from, int to) {
+        //noinspection unchecked
+        List<? extends RestrictedPost> inCache =
+                getFromSoftReference(((SoftReference<List<? extends RestrictedPost>>) cache.get(
+                        getFeedPostsFqn(feedName, from, to))));
+        log.debug("Getting feed '#0' posts from the cache, from #1 to #2, result: #3.",
+                feedName, from, to, inCache);
+        return inCache;
+    }
+
+    //
+
+    private final static String FEED_XML = "$feedxml";
+
+    private String getFeedXmlFqn(String feedName, String feedType) {
+        return FEED_XML + "/" + feedName + "/" + (feedType == null ? null : feedType.toLowerCase());
+    }
+
+    public void putFeedXml(String feedName, String feedType, InMemoryContentResponse xml) {
+        log.debug("Putting xml for feed '#0' to the cache, type: #1.", feedName, feedType);
+        cache.put(getFeedXmlFqn(feedName, feedType),
+                new SoftReference<InMemoryContentResponse>(xml));
+    }
+
+    public InMemoryContentResponse getFeedXml(String feedName, String feedType) {
+        //noinspection unchecked
+        InMemoryContentResponse inCache = getFromSoftReference(((SoftReference<InMemoryContentResponse>)
+                cache.get(getFeedXmlFqn(feedName, feedType))));
+        log.debug("Getting xml for feed '#0' from the cache, type: #1, result: #2.",
+                feedName, feedType, inCache);
+        return inCache;
+    }
+}
\ No newline at end of file

Copied: trunk/src/action/org/jboss/blog/session/cache/CacheManagerJBossCacheImpl.java (from rev 189, trunk/src/action/org/jboss/blog/session/cache/CacheManager.java)
===================================================================
--- trunk/src/action/org/jboss/blog/session/cache/CacheManagerJBossCacheImpl.java	                        (rev 0)
+++ trunk/src/action/org/jboss/blog/session/cache/CacheManagerJBossCacheImpl.java	2008-02-05 17:34:16 UTC (rev 190)
@@ -0,0 +1,128 @@
+package org.jboss.blog.session.cache;
+
+import org.jboss.seam.annotations.In;
+import org.jboss.seam.annotations.Logger;
+import org.jboss.seam.log.Log;
+import org.jboss.cache.aop.PojoCache;
+import org.jboss.cache.Fqn;
+import org.jboss.cache.CacheException;
+import org.jboss.blog.model.feed.RestrictedFeed;
+import org.jboss.blog.model.RestrictedPost;
+import org.jboss.blog.session.xml.content.InMemoryContentResponse;
+
+import java.lang.ref.SoftReference;
+import java.util.List;
+
+/**
+ * TODO: fix, doesn't work
+ * @author <a href="mailto:adam at warski.org">Adam Warski</a>
+ */
+public class CacheManagerJBossCacheImpl implements CacheManager {
+    @In
+    private PojoCache pojoCache;
+
+    @Logger
+    private Log log;
+
+    private final static Fqn BASE_FQN = new Fqn("blog");
+    private final static Object CACHE_MAP_KEY = new Object();
+
+    //
+
+    private <T> T getFromSoftReference(SoftReference<T> reference) {
+        if (reference == null) {
+            return null;
+        }
+
+        return reference.get();
+    }
+
+    private void readPost(RestrictedPost post) {
+        post.getFeed();
+        post.getCategories();
+        post.getEnclosures();
+        post.getImages();
+    }
+
+    private void readPosts(List<? extends RestrictedPost> posts) {
+        for (RestrictedPost post : posts) {
+            readPost(post);
+        }
+    }
+
+    //
+
+    public void evictAll() {
+        try {
+            log.debug("Evicting everything from the cache.");
+            pojoCache.remove(BASE_FQN);
+        } catch (CacheException e) {
+            log.error(e);
+        }
+    }
+
+    //
+
+    private Fqn getFeedPostsFqn(String feedName, int from, int to) {
+        return new Fqn(BASE_FQN, feedName, from, to);
+    }
+
+    public void putFeedPosts(RestrictedFeed feed, List<? extends RestrictedPost> posts, int from, int to) {
+        try {
+            readPosts(posts);
+            
+            log.debug("Putting feed '#0' posts into the cache, from #1 to #2.", feed.getName(), from, to);
+            pojoCache.put(getFeedPostsFqn(feed.getName(), from, to), CACHE_MAP_KEY, 
+                    new SoftReference<List<? extends RestrictedPost>>(posts));
+        } catch (CacheException e) {
+            log.error(e);
+        }
+    }
+
+    public List<? extends RestrictedPost> getFeedPosts(String feedName, int from, int to) {
+        try {
+            //noinspection unchecked
+            List<? extends RestrictedPost> inCache =
+                    getFromSoftReference(((SoftReference<List<? extends RestrictedPost>>) pojoCache.get(
+                    getFeedPostsFqn(feedName, from, to), CACHE_MAP_KEY)));
+            log.debug("Getting feed '#0' posts from the cache, from #1 to #2, result: #3.",
+                    feedName, from, to, inCache);
+            return inCache;
+        } catch (CacheException e) {
+            log.error(e);
+            return null;
+        }
+    }
+
+    //
+
+    private final static Object FEED_XML = new Object();
+
+    private Fqn getFeedXmlFqn(String feedName, String feedType) {
+        return new Fqn(BASE_FQN, FEED_XML, feedName, feedType == null ? null : feedType.toLowerCase());
+    }
+
+    public void putFeedXml(String feedName, String feedType, InMemoryContentResponse xml) {
+        try {
+            log.debug("Putting xml for feed '#0' to the cache, type: #1.", feedName, feedType);
+            pojoCache.put(getFeedXmlFqn(feedName, feedType), CACHE_MAP_KEY,
+                    new SoftReference<InMemoryContentResponse>(xml));
+        } catch (CacheException e) {
+            log.error(e);
+        }
+    }
+
+    public InMemoryContentResponse getFeedXml(String feedName, String feedType) {
+        try {
+            //noinspection unchecked
+            InMemoryContentResponse inCache = getFromSoftReference(((SoftReference<InMemoryContentResponse>)
+                    pojoCache.get(getFeedXmlFqn(feedName, feedType), CACHE_MAP_KEY)));
+            log.debug("Getting xml for feed '#0' from the cache, type: #1, result: #2.",
+                    feedName, feedType, inCache);
+            return inCache;
+        } catch (CacheException e) {
+            log.error(e);
+            return null;
+        }
+    }
+}

Modified: trunk/src/action/org/jboss/blog/session/feed/dao/FeedDao.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/dao/FeedDao.java	2008-02-05 10:36:59 UTC (rev 189)
+++ trunk/src/action/org/jboss/blog/session/feed/dao/FeedDao.java	2008-02-05 17:34:16 UTC (rev 190)
@@ -1,6 +1,7 @@
 package org.jboss.blog.session.feed.dao;
 
 import org.jboss.blog.model.RestrictedPost;
+import org.jboss.blog.session.update.UpdateException;
 
 import java.util.List;
 
@@ -10,5 +11,5 @@
 public interface FeedDao {
     public List<? extends RestrictedPost> getPosts(int from, int to);
 
-    public void update();
+    public void update() throws UpdateException;
 }

Modified: trunk/src/action/org/jboss/blog/session/feed/dao/RemoteFeedDao.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/dao/RemoteFeedDao.java	2008-02-05 10:36:59 UTC (rev 189)
+++ trunk/src/action/org/jboss/blog/session/feed/dao/RemoteFeedDao.java	2008-02-05 17:34:16 UTC (rev 190)
@@ -5,6 +5,7 @@
 import org.jboss.blog.session.feed.posts.DatabaseFeedPosts;
 import org.jboss.blog.session.feed.type.FeedType;
 import org.jboss.blog.session.feed.update.RemoteFeedUpdate;
+import org.jboss.blog.session.update.UpdateException;
 import org.jboss.seam.Component;
 
 import java.util.List;
@@ -29,7 +30,7 @@
                 remoteFeed, from, to);
     }
 
-    public void update() {
+    public void update() throws UpdateException {
         ((RemoteFeedUpdate) Component.getInstance("remoteFeedUpdate")).update(remoteFeed);
     }
 }

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-05 10:36:59 UTC (rev 189)
+++ trunk/src/action/org/jboss/blog/session/feed/mod/AggregatedFeedModBean.java	2008-02-05 17:34:16 UTC (rev 190)
@@ -6,7 +6,7 @@
 import org.jboss.blog.model.post.PostFilter;
 import org.jboss.blog.service.FeedsService;
 import org.jboss.blog.session.feed.InvalidFeedTypeException;
-import org.jboss.blog.session.feed.posts.filter.AndFilter;
+import org.jboss.blog.model.post.filter.AndFilter;
 import org.jboss.blog.session.view.LinkServiceBean;
 import org.jboss.blog.tools.GeneralTools;
 import org.jboss.seam.ScopeType;

Modified: trunk/src/action/org/jboss/blog/session/parser/ParserServiceImpl.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/parser/ParserServiceImpl.java	2008-02-05 10:36:59 UTC (rev 189)
+++ trunk/src/action/org/jboss/blog/session/parser/ParserServiceImpl.java	2008-02-05 17:34:16 UTC (rev 190)
@@ -23,6 +23,7 @@
 import java.io.IOException;
 import java.net.MalformedURLException;
 import java.net.URL;
+import java.net.URLConnection;
 import java.util.*;
 
 /**
@@ -56,8 +57,14 @@
     public Feed parse(String link) throws ParserException {
         try {
             SyndFeedInput input = new SyndFeedInput();
-            SyndFeed syndFeed = input.build(new XmlReader(new URL(link)));
 
+            URLConnection conn = new URL(link).openConnection();
+            conn.setReadTimeout(3000);
+            conn.setConnectTimeout(5000);
+            conn.connect();
+
+            SyndFeed syndFeed = input.build(new XmlReader(conn.getInputStream()));
+
             Feed feed = new Feed();
 
             feed.setAuthor(syndFeed.getAuthor());

Modified: trunk/src/action/org/jboss/blog/session/update/UpdateException.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/update/UpdateException.java	2008-02-05 10:36:59 UTC (rev 189)
+++ trunk/src/action/org/jboss/blog/session/update/UpdateException.java	2008-02-05 17:34:16 UTC (rev 190)
@@ -3,7 +3,7 @@
 /**
  * @author <a href="mailto:adam at warski.org">Adam Warski</a>
  */
-public class UpdateException extends RuntimeException {
+public class UpdateException extends Exception {
     public UpdateException() {
     }
 

Deleted: trunk/src/action/org/jboss/blog/session/update/UpdateHandler.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/update/UpdateHandler.java	2008-02-05 10:36:59 UTC (rev 189)
+++ trunk/src/action/org/jboss/blog/session/update/UpdateHandler.java	2008-02-05 17:34:16 UTC (rev 190)
@@ -1,19 +0,0 @@
-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();
-}

Copied: trunk/src/action/org/jboss/blog/session/update/UpdateHandler.java (from rev 183, trunk/src/action/org/jboss/blog/session/update/UpdateHandlerImpl.java)
===================================================================
--- trunk/src/action/org/jboss/blog/session/update/UpdateHandler.java	                        (rev 0)
+++ trunk/src/action/org/jboss/blog/session/update/UpdateHandler.java	2008-02-05 17:34:16 UTC (rev 190)
@@ -0,0 +1,46 @@
+package org.jboss.blog.session.update;
+
+import org.jboss.blog.model.feed.Feed;
+import org.jboss.blog.model.Group;
+import org.jboss.blog.service.FeedsService;
+import org.jboss.blog.session.feed.type.FeedTypes;
+import org.jboss.seam.annotations.AutoCreate;
+import org.jboss.seam.annotations.In;
+import org.jboss.seam.annotations.Name;
+import org.jboss.seam.annotations.Scope;
+import org.jboss.seam.ScopeType;
+
+import javax.ejb.Remove;
+
+/**
+ * @author <a href="mailto:adam at warski.org">Adam Warski</a>
+ */
+ at Name("updateHandler")
+ at Scope(ScopeType.STATELESS)
+ at AutoCreate
+public class UpdateHandler {
+    @In
+    private FeedsService feedsService;
+
+    @In
+    private FeedTypes feedTypes;
+
+    public void update() {
+        for (Group group : feedsService.getAllGroups()) {
+            for (Feed feed : group.getFeeds()) {
+                // TODO: remove
+                System.out.println("Updating feed: (1) " + feed.getName());
+                if (feed.isAccepted()) {
+                    try {
+                        feedTypes.getFeedDao(feed).update();
+                    } catch (UpdateException e) {
+                        System.out.println("Exception when updating feed: " + feed.getName() + "; " + e.getMessage());           
+                    }
+                }
+            }
+        }
+    }
+
+    @Remove
+    public void remove() { }
+}

Deleted: trunk/src/action/org/jboss/blog/session/update/UpdateHandlerImpl.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/update/UpdateHandlerImpl.java	2008-02-05 10:36:59 UTC (rev 189)
+++ trunk/src/action/org/jboss/blog/session/update/UpdateHandlerImpl.java	2008-02-05 17:34:16 UTC (rev 190)
@@ -1,40 +0,0 @@
-package org.jboss.blog.session.update;
-
-import org.jboss.blog.model.feed.Feed;
-import org.jboss.blog.model.Group;
-import org.jboss.blog.service.FeedsService;
-import org.jboss.blog.session.feed.type.FeedTypes;
-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 FeedTypes feedTypes;
-
-    public void update(Date expiration, long interval) {
-        for (Group group : feedsService.getAllGroups()) {
-            for (Feed feed : group.getFeeds()) {
-                if (feed.isAccepted()) {
-                    feedTypes.getFeedDao(feed).update();
-                }
-            }
-        }
-    }
-
-    @Remove
-    public void remove() { }
-}

Modified: trunk/src/action/org/jboss/blog/session/update/UpdateManager.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/update/UpdateManager.java	2008-02-05 10:36:59 UTC (rev 189)
+++ trunk/src/action/org/jboss/blog/session/update/UpdateManager.java	2008-02-05 17:34:16 UTC (rev 190)
@@ -1,9 +1,20 @@
 package org.jboss.blog.session.update;
 
 import org.jboss.seam.ScopeType;
+import org.jboss.seam.Component;
+import org.jboss.seam.log.Logging;
+import org.jboss.seam.async.AbstractDispatcher;
+import org.jboss.seam.contexts.Contexts;
+import org.jboss.seam.contexts.Lifecycle;
 import org.jboss.seam.annotations.*;
 
-import java.util.Date;
+import javax.transaction.UserTransaction;
+import javax.transaction.Status;
+import javax.transaction.SystemException;
+import javax.persistence.EntityManager;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.TimeUnit;
 
 /**
  * @author <a href="mailto:adam at warski.org">Adam Warski</a>
@@ -11,12 +22,57 @@
 @Name("updateManager")
 @Scope(ScopeType.APPLICATION)
 public class UpdateManager {
-    @In 
-    private UpdateHandler updateHandler;
+    private ScheduledExecutorService executor;
 
     @Observer("org.jboss.blog.postBlogInit")
     public void register() {
+        executor = Executors.newScheduledThreadPool(10);
+
         // TODO: add monitor and configurable intervals
-        // updateHandler.update(new Date(System.currentTimeMillis() + 3000), 60000 * 10);
+
+        executor.scheduleAtFixedRate(new UpdateRunnable(), 3, 20, TimeUnit.SECONDS);
     }
+
+    // TODO: the cache in this thread is not updated
+    private static class UpdateRunnable implements Runnable {
+        public void run() {
+            boolean createContexts = !Contexts.isEventContextActive() && !Contexts.isApplicationContextActive();
+            if (createContexts) {
+                Lifecycle.beginCall();
+            }
+            
+            try {
+                UserTransaction tx = null;
+                boolean txStarted = false;
+                try {
+                    tx = (UserTransaction) Component.getInstance("org.jboss.seam.transaction.transaction");
+                    if (tx.getStatus() != Status.STATUS_ACTIVE) {
+                        txStarted = true;
+                        tx.begin();
+                    }
+
+                    ((EntityManager) Component.getInstance("entityManager")).joinTransaction();
+                    ((UpdateHandler) Component.getInstance("updateHandler")).update();
+
+                    if (txStarted) {
+                        tx.commit();
+                    }
+                }  catch (Exception e) {
+                    try {
+                        if (txStarted) {
+                            tx.rollback();
+                        }
+                    } catch (SystemException e1) {
+                        Logging.getLog(UpdateManager.class).error("Exception when rolling back the transaction", e1);
+                    }
+
+                    e.printStackTrace();
+                }
+            } finally {
+                if (createContexts) {
+                    Lifecycle.endCall();
+                }
+            }
+        }
+    }
 }

Copied: trunk/src/model/org/jboss/blog/model/post/filter (from rev 175, trunk/src/action/org/jboss/blog/session/feed/posts/filter)

Deleted: trunk/src/model/org/jboss/blog/model/post/filter/AndFilter.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/posts/filter/AndFilter.java	2008-01-18 19:09:09 UTC (rev 175)
+++ trunk/src/model/org/jboss/blog/model/post/filter/AndFilter.java	2008-02-05 17:34:16 UTC (rev 190)
@@ -1,71 +0,0 @@
-package org.jboss.blog.session.feed.posts.filter;
-
-import org.jboss.blog.model.Post;
-import org.jboss.blog.model.post.PostFilter;
-
-import java.util.List;
-import java.util.ArrayList;
-import java.util.Iterator;
-
-/**
- * @author <a href="mailto:adam at warski.org">Adam Warski</a>
- */
-public class AndFilter implements PostFilter {
-    private static final long serialVersionUID = 6716831026867502343L;
-
-    private List<PostFilter> filters;
-
-    public AndFilter() {
-        filters = new ArrayList<PostFilter>();
-    }
-
-    public AndFilter(List<PostFilter> filters) {
-        this.filters = filters;
-    }
-
-    public List<PostFilter> getFilters() {
-        return filters;
-    }
-
-    public void setFilters(List<PostFilter> filters) {
-        this.filters = filters;
-    }
-
-    public boolean filter(Post post) {
-        for (PostFilter filter : filters) {
-            if (!filter.filter(post)) {
-                return false;
-            }
-        }
-
-        return true;
-    }
-
-    public String toString() {
-        StringBuilder result = new StringBuilder();
-        result.append("And(");
-        for (Iterator<PostFilter> iter = filters.iterator(); iter.hasNext();) {
-            result.append(iter.next().toString());
-            if (iter.hasNext()) {
-                result.append(", ");
-            }
-        }
-
-        return result.append(")").toString();
-    }
-
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (!(o instanceof AndFilter)) return false;
-
-        AndFilter andFilter = (AndFilter) o;
-
-        if (filters != null ? !filters.equals(andFilter.filters) : andFilter.filters != null) return false;
-
-        return true;
-    }
-
-    public int hashCode() {
-        return (filters != null ? filters.hashCode() : 0);
-    }
-}

Copied: trunk/src/model/org/jboss/blog/model/post/filter/AndFilter.java (from rev 189, trunk/src/action/org/jboss/blog/session/feed/posts/filter/AndFilter.java)
===================================================================
--- trunk/src/model/org/jboss/blog/model/post/filter/AndFilter.java	                        (rev 0)
+++ trunk/src/model/org/jboss/blog/model/post/filter/AndFilter.java	2008-02-05 17:34:16 UTC (rev 190)
@@ -0,0 +1,71 @@
+package org.jboss.blog.model.post.filter;
+
+import org.jboss.blog.model.RestrictedPost;
+import org.jboss.blog.model.post.PostFilter;
+
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Iterator;
+
+/**
+ * @author <a href="mailto:adam at warski.org">Adam Warski</a>
+ */
+public class AndFilter implements PostFilter {
+    private static final long serialVersionUID = 6716831026867502343L;
+
+    private List<PostFilter> filters;
+
+    public AndFilter() {
+        filters = new ArrayList<PostFilter>();
+    }
+
+    public AndFilter(List<PostFilter> filters) {
+        this.filters = filters;
+    }
+
+    public List<PostFilter> getFilters() {
+        return filters;
+    }
+
+    public void setFilters(List<PostFilter> filters) {
+        this.filters = filters;
+    }
+
+    public boolean filter(RestrictedPost post) {
+        for (PostFilter filter : filters) {
+            if (!filter.filter(post)) {
+                return false;
+            }
+        }
+
+        return true;
+    }
+
+    public String toString() {
+        StringBuilder result = new StringBuilder();
+        result.append("And(");
+        for (Iterator<PostFilter> iter = filters.iterator(); iter.hasNext();) {
+            result.append(iter.next().toString());
+            if (iter.hasNext()) {
+                result.append(", ");
+            }
+        }
+
+        return result.append(")").toString();
+    }
+
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (!(o instanceof AndFilter)) return false;
+
+        AndFilter andFilter = (AndFilter) o;
+
+        if (filters != null ? !filters.equals(andFilter.filters) : andFilter.filters != null) return false;
+
+        return true;
+    }
+
+    public int hashCode() {
+        return (filters != null ? filters.hashCode() : 0);
+    }
+}

Deleted: trunk/src/model/org/jboss/blog/model/post/filter/AuthorRegexpFilter.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/posts/filter/AuthorRegexpFilter.java	2008-01-18 19:09:09 UTC (rev 175)
+++ trunk/src/model/org/jboss/blog/model/post/filter/AuthorRegexpFilter.java	2008-02-05 17:34:16 UTC (rev 190)
@@ -1,65 +0,0 @@
-package org.jboss.blog.session.feed.posts.filter;
-
-import org.jboss.blog.model.Post;
-import org.jboss.blog.model.post.PostFilter;
-import org.jboss.blog.tools.validator.Regexp;
-
-import java.util.regex.Pattern;
-import java.io.IOException;
-
-/**
- * @author <a href="mailto:adam at warski.org">Adam Warski</a>
- */
-public class AuthorRegexpFilter implements PostFilter {
-    private static final long serialVersionUID = 2015864901762113142L;
-
-    @Regexp
-    private String regexp;
-
-    private transient Pattern pattern;
-
-    public String getRegexp() {
-        return regexp;
-    }
-
-    public void setRegexp(String regexp) {
-        this.regexp = regexp;
-
-        pattern = Pattern.compile(this.regexp);
-    }
-
-    public boolean filter(Post post) {
-        return pattern.matcher(post.getAuthor()).matches();
-    }
-
-    private void writeObject(java.io.ObjectOutputStream out)
-            throws IOException {
-        out.defaultWriteObject();
-    }
-
-    private void readObject(java.io.ObjectInputStream in)
-            throws IOException, ClassNotFoundException {
-        in.defaultReadObject();
-
-        setRegexp(getRegexp());
-    }
-
-    public String toString() {
-        return "Author matching regexp: " + regexp;
-    }
-
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (!(o instanceof AuthorRegexpFilter)) return false;
-
-        AuthorRegexpFilter that = (AuthorRegexpFilter) o;
-
-        if (regexp != null ? !regexp.equals(that.regexp) : that.regexp != null) return false;
-
-        return true;
-    }
-
-    public int hashCode() {
-        return (regexp != null ? regexp.hashCode() : 0);
-    }
-}

Copied: trunk/src/model/org/jboss/blog/model/post/filter/AuthorRegexpFilter.java (from rev 189, trunk/src/action/org/jboss/blog/session/feed/posts/filter/AuthorRegexpFilter.java)
===================================================================
--- trunk/src/model/org/jboss/blog/model/post/filter/AuthorRegexpFilter.java	                        (rev 0)
+++ trunk/src/model/org/jboss/blog/model/post/filter/AuthorRegexpFilter.java	2008-02-05 17:34:16 UTC (rev 190)
@@ -0,0 +1,65 @@
+package org.jboss.blog.model.post.filter;
+
+import org.jboss.blog.model.post.PostFilter;
+import org.jboss.blog.model.RestrictedPost;
+import org.jboss.blog.tools.validator.Regexp;
+
+import java.util.regex.Pattern;
+import java.io.IOException;
+
+/**
+ * @author <a href="mailto:adam at warski.org">Adam Warski</a>
+ */
+public class AuthorRegexpFilter implements PostFilter {
+    private static final long serialVersionUID = 2015864901762113142L;
+
+    @Regexp
+    private String regexp;
+
+    private transient Pattern pattern;
+
+    public String getRegexp() {
+        return regexp;
+    }
+
+    public void setRegexp(String regexp) {
+        this.regexp = regexp;
+
+        pattern = Pattern.compile(this.regexp);
+    }
+
+    public boolean filter(RestrictedPost post) {
+        return pattern.matcher(post.getAuthor()).matches();
+    }
+
+    private void writeObject(java.io.ObjectOutputStream out)
+            throws IOException {
+        out.defaultWriteObject();
+    }
+
+    private void readObject(java.io.ObjectInputStream in)
+            throws IOException, ClassNotFoundException {
+        in.defaultReadObject();
+
+        setRegexp(getRegexp());
+    }
+
+    public String toString() {
+        return "Author matching regexp: " + regexp;
+    }
+
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (!(o instanceof AuthorRegexpFilter)) return false;
+
+        AuthorRegexpFilter that = (AuthorRegexpFilter) o;
+
+        if (regexp != null ? !regexp.equals(that.regexp) : that.regexp != null) return false;
+
+        return true;
+    }
+
+    public int hashCode() {
+        return (regexp != null ? regexp.hashCode() : 0);
+    }
+}

Deleted: trunk/src/model/org/jboss/blog/model/post/filter/FilterAddBean.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/posts/filter/FilterAddBean.java	2008-01-18 19:09:09 UTC (rev 175)
+++ trunk/src/model/org/jboss/blog/model/post/filter/FilterAddBean.java	2008-02-05 17:34:16 UTC (rev 190)
@@ -1,55 +0,0 @@
-package org.jboss.blog.session.feed.posts.filter;
-
-import org.jboss.seam.annotations.Name;
-import org.jboss.seam.annotations.Scope;
-import org.jboss.seam.ScopeType;
-import org.jboss.blog.model.post.PostFilter;
-
-import java.util.List;
-
-/**
- * @author <a href="mailto:adam at warski.org">Adam Warski</a>
- */
- at Name("filterAdd")
- at Scope(ScopeType.CONVERSATION)
-public class FilterAddBean {
-    private List<PostFilter> addToList;
-
-    private PodcastFilter podcastFilter;
-
-    private NotPodcastFilter notPodcastFilter;
-
-    private AuthorRegexpFilter authorRegexpFilter;
-
-    public PodcastFilter getPodcastFilter() {
-        if (podcastFilter == null) {
-            podcastFilter = new PodcastFilter();
-        }
-
-        return podcastFilter;
-    }
-
-    public NotPodcastFilter getNotPodcastFilter() {
-        if (notPodcastFilter == null) {
-            notPodcastFilter =  new NotPodcastFilter();
-        }
-
-        return notPodcastFilter;
-    }
-
-    public AuthorRegexpFilter getAuthorRegexpFilter() {
-        if (authorRegexpFilter == null) {
-            authorRegexpFilter = new AuthorRegexpFilter();
-        }
-        
-        return authorRegexpFilter;
-    }
-
-    public void add(PostFilter filter) {
-        addToList.add(filter);
-    }
-
-    public void addToList(List<PostFilter> addToList) {
-        this.addToList = addToList;
-    }
-}

Copied: trunk/src/model/org/jboss/blog/model/post/filter/FilterAddBean.java (from rev 189, trunk/src/action/org/jboss/blog/session/feed/posts/filter/FilterAddBean.java)
===================================================================
--- trunk/src/model/org/jboss/blog/model/post/filter/FilterAddBean.java	                        (rev 0)
+++ trunk/src/model/org/jboss/blog/model/post/filter/FilterAddBean.java	2008-02-05 17:34:16 UTC (rev 190)
@@ -0,0 +1,57 @@
+package org.jboss.blog.model.post.filter;
+
+import org.jboss.seam.annotations.Name;
+import org.jboss.seam.annotations.Scope;
+import org.jboss.seam.ScopeType;
+import org.jboss.blog.model.post.PostFilter;
+
+import java.util.List;
+
+/**
+ * @author <a href="mailto:adam at warski.org">Adam Warski</a>
+ */
+ at Name("filterAdd")
+ at Scope(ScopeType.CONVERSATION)
+public class FilterAddBean {
+    private List<PostFilter> addToList;
+
+    private PodcastFilter podcastFilter;
+
+    private NotPodcastFilter notPodcastFilter;
+
+    private AuthorRegexpFilter authorRegexpFilter;
+
+    public PodcastFilter getPodcastFilter() {
+        if (podcastFilter == null) {
+            podcastFilter = new PodcastFilter();
+        }
+
+        return podcastFilter;
+    }
+
+    public NotPodcastFilter getNotPodcastFilter() {
+        if (notPodcastFilter == null) {
+            notPodcastFilter =  new NotPodcastFilter();
+        }
+
+        return notPodcastFilter;
+    }
+
+    public AuthorRegexpFilter getAuthorRegexpFilter() {
+        if (authorRegexpFilter == null) {
+            authorRegexpFilter = new AuthorRegexpFilter();
+        }
+        
+        return authorRegexpFilter;
+    }
+
+    public void add(PostFilter filter) {
+        addToList.add(filter);
+    }
+
+    public void addToList(List<PostFilter> addToList) {
+        this.addToList = addToList;
+    }
+
+    public void cancel() { }
+}

Deleted: trunk/src/model/org/jboss/blog/model/post/filter/NotPodcastFilter.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/posts/filter/NotPodcastFilter.java	2008-01-18 19:09:09 UTC (rev 175)
+++ trunk/src/model/org/jboss/blog/model/post/filter/NotPodcastFilter.java	2008-02-05 17:34:16 UTC (rev 190)
@@ -1,30 +0,0 @@
-package org.jboss.blog.session.feed.posts.filter;
-
-import org.jboss.blog.model.Post;
-import org.jboss.blog.model.post.PostFilter;
-
-/**
- * @author <a href="mailto:adam at warski.org">Adam Warski</a>
- */
-public class NotPodcastFilter implements PostFilter {
-    private static final long serialVersionUID = 3962316121420952911L;
-
-    public boolean filter(Post post) {
-        return post.getEnclosures() == null || post.getEnclosures().size() == 0;
-    }
-
-    public String toString() {
-        return "No enclosure (not a podcast entry)";
-    }
-
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (!(o instanceof NotPodcastFilter)) return false;
-
-        return true;
-    }
-
-    public int hashCode() {
-        return NotPodcastFilter.class.hashCode();
-    }
-}

Copied: trunk/src/model/org/jboss/blog/model/post/filter/NotPodcastFilter.java (from rev 189, trunk/src/action/org/jboss/blog/session/feed/posts/filter/NotPodcastFilter.java)
===================================================================
--- trunk/src/model/org/jboss/blog/model/post/filter/NotPodcastFilter.java	                        (rev 0)
+++ trunk/src/model/org/jboss/blog/model/post/filter/NotPodcastFilter.java	2008-02-05 17:34:16 UTC (rev 190)
@@ -0,0 +1,30 @@
+package org.jboss.blog.model.post.filter;
+
+import org.jboss.blog.model.RestrictedPost;
+import org.jboss.blog.model.post.PostFilter;
+
+/**
+ * @author <a href="mailto:adam at warski.org">Adam Warski</a>
+ */
+public class NotPodcastFilter implements PostFilter {
+    private static final long serialVersionUID = 3962316121420952911L;
+
+    public boolean filter(RestrictedPost post) {
+        return post.getEnclosures() == null || post.getEnclosures().size() == 0;
+    }
+
+    public String toString() {
+        return "No enclosure (not a podcast entry)";
+    }
+
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (!(o instanceof NotPodcastFilter)) return false;
+
+        return true;
+    }
+
+    public int hashCode() {
+        return NotPodcastFilter.class.hashCode();
+    }
+}

Deleted: trunk/src/model/org/jboss/blog/model/post/filter/PodcastFilter.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/posts/filter/PodcastFilter.java	2008-01-18 19:09:09 UTC (rev 175)
+++ trunk/src/model/org/jboss/blog/model/post/filter/PodcastFilter.java	2008-02-05 17:34:16 UTC (rev 190)
@@ -1,30 +0,0 @@
-package org.jboss.blog.session.feed.posts.filter;
-
-import org.jboss.blog.model.Post;
-import org.jboss.blog.model.post.PostFilter;
-
-/**
- * @author <a href="mailto:adam at warski.org">Adam Warski</a>
- */
-public class PodcastFilter implements PostFilter {
-    private static final long serialVersionUID = -1115632975507749056L;
-
-    public boolean filter(Post post) {
-        return post.getEnclosures() != null && post.getEnclosures().size() != 0;
-    }
-
-    public String toString() {
-        return "With enclosure (a podcast entry)";
-    }
-
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (!(o instanceof PodcastFilter)) return false;
-
-        return true;
-    }
-
-    public int hashCode() {
-        return PodcastFilter.class.hashCode();
-    }
-}

Copied: trunk/src/model/org/jboss/blog/model/post/filter/PodcastFilter.java (from rev 189, trunk/src/action/org/jboss/blog/session/feed/posts/filter/PodcastFilter.java)
===================================================================
--- trunk/src/model/org/jboss/blog/model/post/filter/PodcastFilter.java	                        (rev 0)
+++ trunk/src/model/org/jboss/blog/model/post/filter/PodcastFilter.java	2008-02-05 17:34:16 UTC (rev 190)
@@ -0,0 +1,30 @@
+package org.jboss.blog.model.post.filter;
+
+import org.jboss.blog.model.RestrictedPost;
+import org.jboss.blog.model.post.PostFilter;
+
+/**
+ * @author <a href="mailto:adam at warski.org">Adam Warski</a>
+ */
+public class PodcastFilter implements PostFilter {
+    private static final long serialVersionUID = -1115632975507749056L;
+
+    public boolean filter(RestrictedPost post) {
+        return post.getEnclosures() != null && post.getEnclosures().size() != 0;
+    }
+
+    public String toString() {
+        return "With enclosure (a podcast entry)";
+    }
+
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (!(o instanceof PodcastFilter)) return false;
+
+        return true;
+    }
+
+    public int hashCode() {
+        return PodcastFilter.class.hashCode();
+    }
+}

Deleted: trunk/src/model/org/jboss/blog/model/post/filter/TotalFilter.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/feed/posts/filter/TotalFilter.java	2008-01-18 19:09:09 UTC (rev 175)
+++ trunk/src/model/org/jboss/blog/model/post/filter/TotalFilter.java	2008-02-05 17:34:16 UTC (rev 190)
@@ -1,30 +0,0 @@
-package org.jboss.blog.session.feed.posts.filter;
-
-import org.jboss.blog.model.Post;
-import org.jboss.blog.model.post.PostFilter;
-
-/**
- * @author <a href="mailto:adam at warski.org">Adam Warski</a>
- */
-public class TotalFilter implements PostFilter {
-    private static final long serialVersionUID = -8839681871861904116L;
-
-    public boolean filter(Post post) {
-        return true;
-    }
-
-    public String toString() {
-        return "Everything";
-    }
-
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (!(o instanceof TotalFilter)) return false;
-
-        return true;
-    }
-
-    public int hashCode() {
-        return TotalFilter.class.hashCode();
-    }
-}

Copied: trunk/src/model/org/jboss/blog/model/post/filter/TotalFilter.java (from rev 189, trunk/src/action/org/jboss/blog/session/feed/posts/filter/TotalFilter.java)
===================================================================
--- trunk/src/model/org/jboss/blog/model/post/filter/TotalFilter.java	                        (rev 0)
+++ trunk/src/model/org/jboss/blog/model/post/filter/TotalFilter.java	2008-02-05 17:34:16 UTC (rev 190)
@@ -0,0 +1,30 @@
+package org.jboss.blog.model.post.filter;
+
+import org.jboss.blog.model.RestrictedPost;
+import org.jboss.blog.model.post.PostFilter;
+
+/**
+ * @author <a href="mailto:adam at warski.org">Adam Warski</a>
+ */
+public class TotalFilter implements PostFilter {
+    private static final long serialVersionUID = -8839681871861904116L;
+
+    public boolean filter(RestrictedPost post) {
+        return true;
+    }
+
+    public String toString() {
+        return "Everything";
+    }
+
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (!(o instanceof TotalFilter)) return false;
+
+        return true;
+    }
+
+    public int hashCode() {
+        return TotalFilter.class.hashCode();
+    }
+}

Modified: trunk/src/test/org/jboss/blog/session/feed/posts/AggregatedFeedPostsTest.java
===================================================================
--- trunk/src/test/org/jboss/blog/session/feed/posts/AggregatedFeedPostsTest.java	2008-02-05 10:36:59 UTC (rev 189)
+++ trunk/src/test/org/jboss/blog/session/feed/posts/AggregatedFeedPostsTest.java	2008-02-05 17:34:16 UTC (rev 190)
@@ -11,7 +11,7 @@
 import org.jboss.blog.model.post.PostFilter;
 import org.jboss.blog.service.FeedsService;
 import org.jboss.blog.tools.TestTools;
-import org.jboss.blog.session.feed.posts.filter.TotalFilter;
+import org.jboss.blog.model.post.filter.TotalFilter;
 
 import java.util.*;
 

Modified: trunk/src/test/org/jboss/blog/session/parser/RomeExample2.java
===================================================================
--- trunk/src/test/org/jboss/blog/session/parser/RomeExample2.java	2008-02-05 10:36:59 UTC (rev 189)
+++ trunk/src/test/org/jboss/blog/session/parser/RomeExample2.java	2008-02-05 17:34:16 UTC (rev 190)
@@ -5,7 +5,6 @@
 import com.sun.syndication.io.FeedException;
 import com.sun.syndication.feed.synd.SyndFeed;
 import com.sun.syndication.feed.synd.SyndEntry;
-import com.sun.syndication.feed.module.Module;
 
 import java.net.URL;
 import java.io.IOException;

Copied: trunk/src/test/org/jboss/blog/session/parser/RomeExample3.java (from rev 185, trunk/src/test/org/jboss/blog/session/parser/RomeExample2.java)
===================================================================
--- trunk/src/test/org/jboss/blog/session/parser/RomeExample3.java	                        (rev 0)
+++ trunk/src/test/org/jboss/blog/session/parser/RomeExample3.java	2008-02-05 17:34:16 UTC (rev 190)
@@ -0,0 +1,31 @@
+package org.jboss.blog.session.parser;
+
+import com.sun.syndication.io.SyndFeedInput;
+import com.sun.syndication.io.XmlReader;
+import com.sun.syndication.io.FeedException;
+import com.sun.syndication.feed.synd.SyndFeed;
+import com.sun.syndication.feed.synd.SyndEntry;
+import com.sun.syndication.feed.module.Module;
+
+import java.net.URL;
+import java.net.URLConnection;
+import java.io.IOException;
+import java.util.List;
+
+/**
+ * @author <a href="mailto:adam at warski.org">Adam Warski</a>
+ */
+public class RomeExample3 {
+    public static void main(String[] args) throws IOException, FeedException, ParserException {
+        /*SyndFeedInput input = new SyndFeedInput();
+
+        URLConnection conn = new URL("http://www.warski.org/blog/?feed=rss2").openConnection();
+        conn.setReadTimeout(3000);
+        conn.setConnectTimeout(5000);
+        conn.connect();
+
+        SyndFeed syndFeed = input.build(new XmlReader(conn.getInputStream()));*/
+
+        new ParserServiceImpl().parse("http://www.warski.org/blog/?feed=rss2");
+    }
+}
\ No newline at end of file




More information about the jboss-cvs-commits mailing list