[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