try {
IFeed feed = fFactory.createFeed(null, new URL("http://www.foobar.com"));
FeedReference feedReference = new FeedReference(fDao.saveFeed(feed).getId());
/* Check News Added */
final INews news = fFactory.createNews(null, feedReference.resolve(), new Date());
news.setTitle("News Title");
final IAttachment attachment1 = fFactory.createAttachment(null, news);
attachment1.setUrl(new URI("http://www.attachment1.com"));
fDao.saveNews(news);
final boolean[] newsUpdated = new boolean[1];
newsListener = new NewsAdapter() {
@Override
public void newsUpdated(Set<NewsEvent> events) {
for (NewsEvent event : events) {
assertFalse("Expected this Event to be no Root Event", event.isRoot());
if (event.getEntity().getTitle().equals(news.getTitle()))
newsUpdated[0] = true;
try {
assertEquals(new URL("http://www.foobar.com").toString(),
event.getEntity().getFeedReference().getLink().toString());
} catch (MalformedURLException e) {
fail(e.getMessage());
}
}
}
};
fModel.addNewsListener(newsListener);
/* Check Attachments Added */
final boolean attachmentDeleted[] = new boolean[1];
attachmentListener = new AttachmentAdapter() {
@Override
public void attachmentDeleted(Set<AttachmentEvent> events) {
for (AttachmentEvent event : events) {
assertTrue("Expected this Event to be Root Event", event.isRoot());
IAttachment attachment = event.getEntity();
if (attachment.getUrl().equals(attachment1.getUrl()))
attachmentDeleted[0] = true;
}
}
};
fModel.addAttachmentListener(attachmentListener);
AttachmentReference attachmentRef = new AttachmentReference(news.getAttachments().get(0).getId());
fDao.deleteAttachment(attachmentRef);
assertNull(fDao.loadAttachment(attachmentRef.getId()));
/* Asserts Follow */
assertTrue("Missed newsUpdated Event in NewsListener!", newsUpdated[0]);