SearchConditionListener searchConditionListener = null;
try {
/* Check Folder Deleted */
IFolder root = fFactory.createFolder(null, null, "Root");
root = DynamicDAO.save(root);
final FolderReference rootRef = new FolderReference(root.getId());
fFactory.createFolder(null, root, "Root Child");
root = DynamicDAO.save(root);
IFolder rootChild = root.getFolders().get(0);
fFactory.createFolder(null, rootChild, "Root Child Child #1");
rootChild = DynamicDAO.save(rootChild);
FolderReference rootChildRef = new FolderReference(rootChild.getId());
IFolder rootChildChild1 = rootChild.getFolders().get(0);
FolderReference rootChildChild1Ref = new FolderReference(rootChildChild1.getId());
fFactory.createFolder(null, rootChild, "Root Child Child #2");
rootChild = DynamicDAO.save(rootChild);
IFolder rootChildChild2 = rootChild.getFolders().get(1);
FolderReference rootChildChild2Ref = new FolderReference(rootChildChild2.getId());
fFactory.createFolder(null, rootChildChild1, "Root Child Child #1 Child");
rootChildChild1 = DynamicDAO.save(rootChildChild1);
IFolder rootChildChild1Child = rootChildChild1.getFolders().get(0);
FolderReference rootChildChild1ChildRef = new FolderReference(rootChildChild1Child.getId());
final boolean[] folderEventsIssued = new boolean[5];
final FolderReference[] folderReferences = new FolderReference[] { rootRef, rootChildRef, rootChildChild1Ref, rootChildChild2Ref, rootChildChild1ChildRef };
folderListener = new FolderAdapter() {
@Override
public void entitiesDeleted(Set<FolderEvent> events) {
for (FolderEvent event : events) {
IFolder folder = event.getEntity();
if (rootRef.references(folder))
assertEquals(true, event.isRoot());
for (int i = 0; i < folderReferences.length; i++)
if (folderReferences[i].references(folder))
folderEventsIssued[i] = true;
}
}
};
DynamicDAO.addEntityListener(IFolder.class, folderListener);
/* Check BookMark Deleted */
final IFeed feed = fFactory.createFeed(null, new URI("http://www.feed.com"));
final FeedReference feedRef = new FeedReference(DynamicDAO.save(feed).getId());
IBookMark bookMark1 = fFactory.createBookMark(null, rootRef.resolve(), new FeedLinkReference(feed.getLink()), "Root BookMark");
root = DynamicDAO.save(bookMark1.getParent());
final BookMarkReference bookMarkRef1 = new BookMarkReference(root.getMarks().get(0).getId());
IBookMark bookMark2 = fFactory.createBookMark(null, rootChildRef.resolve(), new FeedLinkReference(feed.getLink()), "Root Child BookMark");
rootChild = DynamicDAO.save(bookMark2.getParent());
final BookMarkReference bookMarkRef2 = new BookMarkReference(rootChild.getMarks().get(0).getId());
IBookMark bookMark3 = fFactory.createBookMark(null, rootChildChild1Ref.resolve(), new FeedLinkReference(feed.getLink()), "Root Child Child #1 BookMark");
rootChildChild1 = DynamicDAO.save(bookMark3.getParent());
final BookMarkReference bookMarkRef3 = new BookMarkReference(rootChildChild1.getMarks().get(0).getId());
final boolean bookMarkEventsIssued[] = new boolean[3];
final boolean feedEventsIssued[] = new boolean[1];
bookMarkListener = new BookMarkAdapter() {
@Override
public void entitiesDeleted(Set<BookMarkEvent> events) {
for (BookMarkEvent event : events) {
IBookMark bookMark = event.getEntity();
if (bookMarkRef1.references(bookMark))
bookMarkEventsIssued[0] = true;
else if (bookMarkRef2.references(bookMark))
bookMarkEventsIssued[1] = true;
else if (bookMarkRef3.references(bookMark))
bookMarkEventsIssued[2] = true;
}
}
};
DynamicDAO.addEntityListener(IBookMark.class, bookMarkListener);
feedListener = new FeedAdapter() {
@Override
public void entitiesDeleted(Set<FeedEvent> events) {
for (FeedEvent event : events) {
assertFalse("Already received feed deleted event!", feedEventsIssued[0]);
if (feedRef.references(event.getEntity()))
feedEventsIssued[0] = true;
}
}
};
DynamicDAO.addEntityListener(IFeed.class, feedListener);
/* Check SearchMark Deleted */
ISearchMark searchMark1 = fFactory.createSearchMark(null, rootRef.resolve(), "Root SearchMark");
root = DynamicDAO.save(searchMark1.getParent());
searchMark1 = (ISearchMark) root.getMarks().get(root.getMarks().size() - 1);
final SearchMarkReference searchMarkRef1 = new SearchMarkReference(searchMark1.getId());
ISearchMark searchMark2 = fFactory.createSearchMark(null, rootChildRef.resolve(), "Root Child SearchMark");
rootChild = DynamicDAO.save(searchMark2.getParent());
searchMark2 = (ISearchMark) rootChild.getMarks().get(rootChild.getMarks().size() - 1);
final SearchMarkReference searchMarkRef2 = new SearchMarkReference(searchMark2.getId());
ISearchMark searchMark3 = fFactory.createSearchMark(null, rootChildChild1ChildRef.resolve(), "Root Child Child #1 Child SearchMark");
rootChildChild1Child = DynamicDAO.save(searchMark3.getParent());
searchMark3 = (ISearchMark) rootChildChild1Child.getMarks().get(rootChildChild1Child.getMarks().size() - 1);
final SearchMarkReference searchMarkRef3 = new SearchMarkReference(searchMark3.getId());
final boolean searchMarkEventsIssued[] = new boolean[3];