[jboss-cvs] JBossBlog SVN: r231 - in trunk/src: model/org/jboss/blog/model and 3 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Sat Mar 1 10:01:26 EST 2008


Author: adamw
Date: 2008-03-01 10:01:26 -0500 (Sat, 01 Mar 2008)
New Revision: 231

Added:
   trunk/src/action/org/jboss/blog/session/merge/TitleAsIdService.java
   trunk/src/test/org/jboss/blog/session/merge/test/GenericsExample1.java
Modified:
   trunk/src/action/org/jboss/blog/session/merge/MergeServiceBean.java
   trunk/src/action/org/jboss/blog/session/merge/TitleAsIdServiceBean.java
   trunk/src/model/org/jboss/blog/model/Post.java
   trunk/src/shotoku/org/jboss/blog/session/shotoku/ShotokuFeedService.java
   trunk/src/test/org/jboss/blog/session/merge/test/MergeServiceTest.java
   trunk/src/tools/org/jboss/blog/tools/GeneralTools.java
Log:


Modified: trunk/src/action/org/jboss/blog/session/merge/MergeServiceBean.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/merge/MergeServiceBean.java	2008-02-29 18:57:45 UTC (rev 230)
+++ trunk/src/action/org/jboss/blog/session/merge/MergeServiceBean.java	2008-03-01 15:01:26 UTC (rev 231)
@@ -3,7 +3,6 @@
 import org.jboss.blog.model.feed.Feed;
 import org.jboss.blog.model.Post;
 import org.jboss.blog.model.Enclosure;
-import org.jboss.blog.model.RestrictedPost;
 import org.jboss.blog.model.Image;
 import org.jboss.blog.service.FeedsService;
 import org.jboss.blog.service.PostNotFoundException;
@@ -32,7 +31,7 @@
     private EntityManager entityManager;
 
     @In
-    private TitleAsIdServiceBean titleAsIdService;
+    private TitleAsIdService titleAsIdService;
 
     @In
     private LinkService linkService;
@@ -40,18 +39,25 @@
     @Logger
     private Log log;
 
-    private void savePost(Feed feed, Post post, boolean prepared) {
+    @In
+    private Events events;
+
+    public void savePost(Feed feed, Post post) {
+        // Preparing the post
         post.setTitleAsId(titleAsIdService.generateTitleAsId(post.getTitle()));
 
-        log.debug("Saving post, feed: #0, post title: #1, post titleAsId: #2, published: #3.",
-                feed.getName(), post.getTitle(), post.getTitleAsId(), post.getPublished());
-
-        if (!prepared) {
-            preparePost(post);
+        if (StringTools.isEmpty(post.getLink())) {
+            post.setLink(linkService.generatePostLink(post));
         }
 
+        post.setContent(StringTools.fixHtml(post.getContent()));
+
         post.setFeed(feed);
-        
+
+        log.debug("Saving post, feed: #0, post title: #1, post titleAsId: #2, published: #3.",
+                feed.getName(), post.getTitle(), post.getTitleAsId(), post.getPublished());
+
+        // Persisting
         entityManager.persist(post);
 
         for (Enclosure enc : post.getEnclosures()) {
@@ -64,13 +70,9 @@
 
         entityManager.flush();
 
-        Events.instance().raiseEvent("org.jboss.blog.post.added", post);
+        events.raiseEvent("org.jboss.blog.post.added", post);
     }
 
-    public void savePost(Feed feed, Post post) {
-        savePost(feed, post, false);
-    }
-
     /**
      * Merges the given posts; checks for changes in:
      * - author
@@ -89,7 +91,7 @@
      * @param mergeTo Post to which to merge the changes.
      * @param mergeFrom Post from which to merge the changes.
      */
-    private void mergePosts(Post mergeTo, RestrictedPost mergeFrom) {
+    private void mergePosts(Post mergeTo, Post mergeFrom) {
         boolean changes = false;
 
         if (!GeneralTools.objectsEqual(mergeTo.getAuthor(), mergeFrom.getAuthor())) {
@@ -99,6 +101,7 @@
             changes = true;
         }
 
+        mergeFrom.setContent(StringTools.fixHtml(mergeFrom.getContent()));
         if (!GeneralTools.objectsEqual(mergeTo.getContent(), mergeFrom.getContent())) {
             log.debug("Post '#0' merge, changed content, new: '#1', old: '#2'.",
                     mergeTo.getTitleAsId(), mergeFrom.getContent(), mergeTo.getContent());
@@ -106,7 +109,7 @@
             changes = true;
         }
 
-        if (!GeneralTools.objectsEqual(mergeTo.getLink(), mergeFrom.getLink())) {
+        if ((mergeFrom.getLink() != null) && (!GeneralTools.objectsEqual(mergeTo.getLink(), mergeFrom.getLink()))) {
             log.debug("Post '#0' merge, changed link, new: '#1', old: '#2'.",
                     mergeTo.getTitleAsId(), mergeFrom.getLink(), mergeTo.getLink());
             mergeTo.setLink(mergeFrom.getLink());
@@ -121,7 +124,7 @@
         }
 
         if (!GeneralTools.objectsEqual(mergeTo.getTitle(), mergeFrom.getTitle())) {
-            log.debug("Post '#0' merge, changed title, new: '#1', old: '#2'.", 
+            log.debug("Post '#0' merge, changed title, new: '#1', old: '#2'.",
                     mergeTo.getTitleAsId(), mergeFrom.getTitle(), mergeTo.getTitle());
             mergeTo.setTitle(mergeFrom.getTitle());
             changes = true;
@@ -132,42 +135,30 @@
 
             entityManager.flush();
 
-            Events.instance().raiseEvent("org.jboss.blog.post.updated", mergeTo);
+            events.raiseEvent("org.jboss.blog.post.updated", mergeTo);
         }
     }
 
-    private void preparePost(Post post) {
-        if (StringTools.isEmpty(post.getLink())) {
-            post.setLink(linkService.generatePostLink(post));
-        }
-
-        post.setContent(StringTools.fixHtml(post.getContent()));
-    }
-
+    /**
+     *
+     * @param feed Feed, into which <code>posts</code> should be merged.
+     * @param posts A <b>sorted</b> list of posts, that should be merged to <code>feed</code>.
+     */
     public void merge(Feed feed, List<Post> posts) {
-        for (Post post : posts) {
-            preparePost(post);
-        }
-
         ListPostsIterator<Post> mergeFrom = new ListPostsIterator<Post>(posts);
         FeedsServicePostsIterator mergeTo = new FeedsServicePostsIterator(feedsService, feed, posts.size()+1);
 
         while (!mergeFrom.finished()) {
             if (mergeTo.finished()) {
                 // no more current posts
-                savePost(feed, mergeFrom.getCurrent(), true);
+                savePost(feed, mergeFrom.getCurrent());
                 mergeFrom.next();
             } else {
-                int publishedCompare = mergeTo.getCurrent().getPublished().compareTo(
-                        mergeFrom.getCurrent().getPublished());
-                int linksCompare = - GeneralTools.safeCompare(mergeTo.getCurrent().getLink(),
-                        mergeFrom.getCurrent().getLink());
-
-                int compare = publishedCompare == 0 ? linksCompare : publishedCompare;
-
-                if (compare < 0) {
+                int compare = mergeTo.getCurrent().compareTo(mergeFrom.getCurrent());
+                
+                if (compare > 0) {
                     // mergeTo post is before mergeFrom post
-                    savePost(feed, mergeFrom.getCurrent(), true);
+                    savePost(feed, mergeFrom.getCurrent());
                     mergeFrom.next();
                 } else if (compare == 0) {
                     try {

Added: trunk/src/action/org/jboss/blog/session/merge/TitleAsIdService.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/merge/TitleAsIdService.java	                        (rev 0)
+++ trunk/src/action/org/jboss/blog/session/merge/TitleAsIdService.java	2008-03-01 15:01:26 UTC (rev 231)
@@ -0,0 +1,8 @@
+package org.jboss.blog.session.merge;
+
+/**
+ * @author <a href="mailto:adam at warski.org">Adam Warski</a>
+ */
+public interface TitleAsIdService {
+    String generateTitleAsId(String title);
+}

Modified: trunk/src/action/org/jboss/blog/session/merge/TitleAsIdServiceBean.java
===================================================================
--- trunk/src/action/org/jboss/blog/session/merge/TitleAsIdServiceBean.java	2008-02-29 18:57:45 UTC (rev 230)
+++ trunk/src/action/org/jboss/blog/session/merge/TitleAsIdServiceBean.java	2008-03-01 15:01:26 UTC (rev 231)
@@ -15,7 +15,7 @@
 @Name("titleAsIdService")
 @Scope(ScopeType.STATELESS)
 @AutoCreate
-public class TitleAsIdServiceBean {
+public class TitleAsIdServiceBean implements TitleAsIdService {
     @In
     private EntityManager entityManager;
 

Modified: trunk/src/model/org/jboss/blog/model/Post.java
===================================================================
--- trunk/src/model/org/jboss/blog/model/Post.java	2008-02-29 18:57:45 UTC (rev 230)
+++ trunk/src/model/org/jboss/blog/model/Post.java	2008-03-01 15:01:26 UTC (rev 231)
@@ -212,16 +212,6 @@
     }
 
     public int compareTo(RestrictedPost post2) {
-        int dateCompare = - GeneralTools.safeCompare(getPublished(), post2.getPublished());
-        if (dateCompare == 0) {
-            int linkCompare = GeneralTools.safeCompare(getLink(), post2.getLink());
-            if (linkCompare == 0) {
-                return GeneralTools.safeCompare(getId(), post2.getId());
-            } else {
-                return linkCompare;
-            }
-        } else {
-            return dateCompare;
-        }
+        return - GeneralTools.compareDates(getPublished(), post2.getPublished());
     }
 }

Modified: trunk/src/shotoku/org/jboss/blog/session/shotoku/ShotokuFeedService.java
===================================================================
--- trunk/src/shotoku/org/jboss/blog/session/shotoku/ShotokuFeedService.java	2008-02-29 18:57:45 UTC (rev 230)
+++ trunk/src/shotoku/org/jboss/blog/session/shotoku/ShotokuFeedService.java	2008-03-01 15:01:26 UTC (rev 231)
@@ -19,6 +19,7 @@
 
 import java.util.List;
 import java.util.ArrayList;
+import java.util.Collections;
 
 /**
  * @author <a href="mailto:adam at warski.org">Adam Warski</a>
@@ -73,6 +74,8 @@
             posts.add(post);
         }
 
+        Collections.sort(posts);
+
         return posts;
     }
 }

Added: trunk/src/test/org/jboss/blog/session/merge/test/GenericsExample1.java
===================================================================
--- trunk/src/test/org/jboss/blog/session/merge/test/GenericsExample1.java	                        (rev 0)
+++ trunk/src/test/org/jboss/blog/session/merge/test/GenericsExample1.java	2008-03-01 15:01:26 UTC (rev 231)
@@ -0,0 +1,30 @@
+package org.jboss.blog.session.merge.test;
+
+import java.util.List;
+
+/**
+ * @author <a href="mailto:adam at warski.org">Adam Warski</a>
+ */
+public class GenericsExample1<T> {
+    public static <E> GenericsExample1<E> getInstance(E example) {
+        return new GenericsExample1<E>();
+    }
+
+    public void process(T example) { }
+
+    public static void test(List<? extends Number> list1, List<Long> list2) {
+        //GenericsExample1.getInstance(list1).process(list2);
+    }
+
+    public static void test1(List<Long> list2) {
+        new GenericsExample1<List<? extends Number>>().process(list2);
+    }
+
+    //
+
+    public void test2(List<? extends Number> list1) { }
+
+    public void test3(List<Long> list2) {
+        test2(list2);
+    }
+}

Modified: trunk/src/test/org/jboss/blog/session/merge/test/MergeServiceTest.java
===================================================================
--- trunk/src/test/org/jboss/blog/session/merge/test/MergeServiceTest.java	2008-02-29 18:57:45 UTC (rev 230)
+++ trunk/src/test/org/jboss/blog/session/merge/test/MergeServiceTest.java	2008-03-01 15:01:26 UTC (rev 231)
@@ -3,10 +3,13 @@
 import static org.easymock.EasyMock.*;
 import org.jboss.blog.model.feed.Feed;
 import org.jboss.blog.model.Post;
-import org.jboss.blog.model.RestrictedPost;
+import org.jboss.blog.model.Enclosure;
+import org.jboss.blog.model.Image;
 import org.jboss.blog.service.FeedsService;
 import org.jboss.blog.session.merge.MergeServiceBean;
+import org.jboss.blog.session.merge.TitleAsIdService;
 import org.jboss.blog.tools.TestTools;
+import org.jboss.seam.log.Log;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
@@ -33,12 +36,16 @@
     private EntityManager mockEntityManager;
     private FeedsService mockFeedsService;
 
+    private Feed feed;
+
     private Post createPost(Date published, String title, String content, String link) {
         Post post = new Post();
         post.setPublished(published);
         post.setTitle(title);
         post.setContent(content);
         post.setLink(link);
+        post.setEnclosures(new ArrayList<Enclosure>());
+        post.setImages(new ArrayList<Image>());
 
         return post;
     }
@@ -75,6 +82,14 @@
 
         mockFeedsService = createMock(FeedsService.class);
         TestTools.setField(mergeServiceBean, "feedsService", mockFeedsService);
+
+        TitleAsIdService mockTitleAsIdService = createMock(TitleAsIdService.class);
+        TestTools.setField(mergeServiceBean, "titleAsIdService", mockTitleAsIdService);
+
+        Log mockLog = createMock(Log.class);
+        TestTools.setField(mergeServiceBean, "log", mockLog);
+
+        feed = new Feed();
     }
 
     @Test
@@ -83,14 +98,14 @@
                 post_2007_11_01_t1_c1_l1);
         
         // Behaviour of mocks
-        expect(mockFeedsService.getPosts((Feed) null, 0, 3)).andReturn((List) posts);
+        expect(mockFeedsService.getPosts(feed, 0, 3)).andReturn((List) posts);
         mockEntityManager.flush();
 
         // Test
         replay(mockEntityManager);
         replay(mockFeedsService);
 
-        mergeServiceBean.merge(null, posts);
+        mergeServiceBean.merge(feed, posts);
         
         verify(mockEntityManager);
         verify(mockFeedsService);
@@ -103,7 +118,7 @@
                 post_2007_11_01_t1_c1_l1);
 
         // Behaviour of mocks
-        expect(mockFeedsService.getPosts((Feed) null, 0, 3)).andReturn((List) mergeTo);
+        expect(mockFeedsService.getPosts(feed, 0, 3)).andReturn((List) mergeTo);
         mockEntityManager.persist(post_2007_11_02_t3_c3_l3);
         mockEntityManager.persist(post_2007_11_01_t1_c1_l1);
         mockEntityManager.flush();
@@ -112,7 +127,7 @@
         replay(mockEntityManager);
         replay(mockFeedsService);
 
-        mergeServiceBean.merge(null, mergeFrom);
+        mergeServiceBean.merge(feed, mergeFrom);
 
         verify(mockEntityManager);
         verify(mockFeedsService);
@@ -125,14 +140,14 @@
         List<Post> mergeFrom = new ArrayList<Post>();
 
         // Behaviour of mocks
-        expect(mockFeedsService.getPosts((Feed) null, 0, 1)).andReturn((List) mergeTo);
+        expect(mockFeedsService.getPosts(feed, 0, 1)).andReturn((List) mergeTo);
         mockEntityManager.flush();
 
         // Test
         replay(mockEntityManager);
         replay(mockFeedsService);
 
-        mergeServiceBean.merge(null, mergeFrom);
+        mergeServiceBean.merge(feed, mergeFrom);
 
         verify(mockEntityManager);
         verify(mockFeedsService);
@@ -146,7 +161,7 @@
                 post_2007_11_02_t1_c1_l4);
 
         // Behaviour of mocks
-        expect(mockFeedsService.getPosts((Feed) null, 0, 3)).andReturn((List) mergeTo);
+        expect(mockFeedsService.getPosts(feed, 0, 3)).andReturn((List) mergeTo);
         mockEntityManager.persist(post_2007_11_04_t6_c6_l7);
         mockEntityManager.persist(post_2007_11_02_t1_c1_l4);
         mockEntityManager.flush();
@@ -155,7 +170,7 @@
         replay(mockEntityManager);
         replay(mockFeedsService);
 
-        mergeServiceBean.merge(null, mergeFrom);
+        mergeServiceBean.merge(feed, mergeFrom);
 
         verify(mockEntityManager);
         verify(mockFeedsService);
@@ -170,9 +185,9 @@
                 post_2007_11_03_t5_c5_l6, post_2007_11_01_t2_c2_l2);
 
         // Behaviour of mocks
-        expect(mockFeedsService.getPosts((Feed) null, 0, 4)).andReturn((List) mergeTo);
+        expect(mockFeedsService.getPosts(feed, 0, 4)).andReturn((List) mergeTo);
         mockEntityManager.persist(post_2007_11_03_t5_c5_l6);
-        expect(mockFeedsService.getPosts((Feed) null, 4, 8)).andReturn(new ArrayList());
+        expect(mockFeedsService.getPosts(feed, 4, 8)).andReturn(new ArrayList());
         mockEntityManager.persist(post_2007_11_01_t2_c2_l2);
         mockEntityManager.flush();
 
@@ -180,7 +195,7 @@
         replay(mockEntityManager);
         replay(mockFeedsService);
 
-        mergeServiceBean.merge(null, mergeFrom);
+        mergeServiceBean.merge(feed, mergeFrom);
 
         verify(mockEntityManager);
         verify(mockFeedsService);
@@ -196,14 +211,14 @@
                 post_2007_11_03_t4_c4_l5, post_2007_11_02_t3_c3_l3);
 
         // Behaviour of mocks
-        expect(mockFeedsService.getPosts((Feed) null, 0, 6)).andReturn((List) mergeTo);
+        expect(mockFeedsService.getPosts(feed, 0, 6)).andReturn((List) mergeTo);
         mockEntityManager.flush();
 
         // Test
         replay(mockEntityManager);
         replay(mockFeedsService);
 
-        mergeServiceBean.merge(null, mergeFrom);
+        mergeServiceBean.merge(feed, mergeFrom);
         assert "title6".equals(mergeTo.get(2).getTitle());
         assert "content6".equals(mergeTo.get(2).getContent());        
 
@@ -219,9 +234,9 @@
         List<Post> mergeFrom = Arrays.asList(post_2007_11_02_t1_c1_l4);
 
         // Behaviour of mocks
-        expect(mockFeedsService.getPosts((Feed) null, 0, 2)).andReturn((List) mergeTo1);
-        expect(mockFeedsService.getPosts((Feed) null, 2, 4)).andReturn((List) mergeTo2);
-        expect(mockFeedsService.getPosts((Feed) null, 4, 6)).andReturn((List) mergeTo3);
+        expect(mockFeedsService.getPosts(feed, 0, 2)).andReturn((List) mergeTo1);
+        expect(mockFeedsService.getPosts(feed, 2, 4)).andReturn((List) mergeTo2);
+        expect(mockFeedsService.getPosts(feed, 4, 6)).andReturn((List) mergeTo3);
         mockEntityManager.persist(post_2007_11_02_t1_c1_l4);
         mockEntityManager.flush();
 
@@ -229,7 +244,7 @@
         replay(mockEntityManager);
         replay(mockFeedsService);
 
-        mergeServiceBean.merge(null, mergeFrom);
+        mergeServiceBean.merge(feed, mergeFrom);
 
         verify(mockEntityManager);
         verify(mockFeedsService);

Modified: trunk/src/tools/org/jboss/blog/tools/GeneralTools.java
===================================================================
--- trunk/src/tools/org/jboss/blog/tools/GeneralTools.java	2008-02-29 18:57:45 UTC (rev 230)
+++ trunk/src/tools/org/jboss/blog/tools/GeneralTools.java	2008-03-01 15:01:26 UTC (rev 231)
@@ -3,6 +3,7 @@
 import java.io.*;
 import java.util.List;
 import java.util.Collections;
+import java.util.Date;
 
 /**
  * @author <a href="mailto:adam at warski.org">Adam Warski</a>
@@ -97,4 +98,17 @@
 
         return list.subList(from, Math.min(to, list.size()));
     }
+
+    public static int compareDates(Date date1, Date date2) {
+        long seconds1 = date1.getTime() / 1000;
+        long seconds2 = date2.getTime() / 1000;
+
+        if (seconds1 == seconds2) {
+            return 0;
+        } else if (seconds1 > seconds2) {
+            return 1;
+        } else {
+            return -1;
+        }
+    }
 }




More information about the jboss-cvs-commits mailing list