/** * Helper method to create all create/modify events caused by a rename/move operation. (delete * events must be created separately.) This method should be called just before the action takes * place in order to analyze the effects properly. * * <p>Rename/move causes children to be moved as well. * * @param src Resource being renamed * @param dest Target resource after renatmed * @return List of notification events covering all the modified Resources */ public static List<Event> createRenameEvents(Resource src, Resource dest) { List<Event> events = new ArrayList<Event>(); events.add( new ResourceNotification.Event( dest.path(), Resources.exists(dest) ? Kind.ENTRY_MODIFY : Kind.ENTRY_CREATE)); for (Resource child : Resources.listRecursively(src)) { Resource newChild = dest.get(child.path().substring(src.path().length() + 1)); events.add( new ResourceNotification.Event( newChild.path(), Resources.exists(newChild) ? Kind.ENTRY_MODIFY : Kind.ENTRY_CREATE)); } return events; } }
for (Resource child : Resources.listRecursively(resource)) { events.add(new ResourceNotification.Event(child.path(), kind));