On Oct 26, 2010, at 9:19 PM, Sergiu Dumitriu wrote: > On 10/26/2010 07:43 PM, Vincent Massol wrote: >> >> On Oct 26, 2010, at 6:12 PM, sdumitriu (SVN) wrote: >> >>> Author: sdumitriu >>> Date: 2010-10-26 18:12:09 +0200 (Tue, 26 Oct 2010) >>> New Revision: 32196 >>> >>> Modified: >>> platform/xwiki-plugins/trunk/activitystream/pom.xml >>> >>> platform/xwiki-plugins/trunk/activitystream/src/main/java/com/xpn/xwiki/plugin/activitystream/api/ActivityEventType.java >>> >>> platform/xwiki-plugins/trunk/activitystream/src/main/java/com/xpn/xwiki/plugin/activitystream/impl/ActivityStreamImpl.java >>> Log: >>> XPAS-19: New event types for create, edit and delete comment >>> XPAS-20: New event types for create, edit and delete attachment >>> XPAS-21: New event type for create, edit and delete annotation >>> Done. >>> Patch from Stefan Abageru applied without changes. >> >> [snip] >> >>> @@ -87,6 +96,15 @@ >>> add(new DocumentSaveEvent()); >>> add(new DocumentUpdateEvent()); >>> add(new DocumentDeleteEvent()); >>> + add(new CommentAddEvent()); >>> + add(new CommentDeleteEvent()); >>> + add(new CommentUpdateEvent()); >>> + add(new AttachmentAddEvent()); >>> + add(new AttachmentDeleteEvent()); >>> + add(new AttachmentUpdateEvent()); >>> + add(new AnnotationAddEvent()); >>> + add(new AnnotationDeleteEvent()); >>> + add(new AnnotationUpdateEvent()); >> >> hmm this doesn't look right. I don't think the activity stream should know >> about all modules. Also this won't work when you add a new module which >> offers new events. There's a design problem. >> >>> } >>> }; >>> >>> @@ -875,21 +893,61 @@ >>> if >>> (!Utils.getComponent(RemoteObservationManagerContext.class).isRemoteState()) >>> { >>> String eventType; >>> String displayTitle; >>> - >>> + String additionalIdentifier = null; >>> + >>> if (event instanceof DocumentSaveEvent) { >>> eventType = ActivityEventType.CREATE; >>> displayTitle = currentDoc.getDisplayTitle(context); >>> } else if (event instanceof DocumentUpdateEvent) { >>> eventType = ActivityEventType.UPDATE; >>> displayTitle = originalDoc.getDisplayTitle(context); >>> - } else { // event instanceof DocumentDeleteEvent >>> + } else if (event instanceof DocumentDeleteEvent) { >>> eventType = ActivityEventType.DELETE; >>> displayTitle = originalDoc.getDisplayTitle(context); >>> + } else if (event instanceof CommentAddEvent) { >>> + eventType = ActivityEventType.ADD_COMMENT; >>> + displayTitle = currentDoc.getDisplayTitle(context); >>> + additionalIdentifier = ((CommentAddEvent) >>> event).getComment(); >>> + } else if (event instanceof CommentDeleteEvent) { >>> + eventType = ActivityEventType.DELETE_COMMENT; >>> + displayTitle = currentDoc.getDisplayTitle(context); >>> + additionalIdentifier = ((CommentDeleteEvent) >>> event).getComment(); >>> + } else if (event instanceof CommentUpdateEvent){ >>> + eventType = ActivityEventType.UPDATE_COMMENT; >>> + displayTitle = currentDoc.getDisplayTitle(context); >>> + additionalIdentifier = ((CommentUpdateEvent) >>> event).getComment(); >>> + } else if (event instanceof AttachmentAddEvent){ >>> + eventType = ActivityEventType.ADD_ATTACHMENT; >>> + displayTitle = currentDoc.getDisplayTitle(context); >>> + additionalIdentifier = ((AttachmentAddEvent) >>> event).getName(); >>> + } else if (event instanceof AttachmentDeleteEvent){ >>> + eventType = ActivityEventType.DELETE_ATTACHMENT; >>> + displayTitle = currentDoc.getDisplayTitle(context); >>> + additionalIdentifier = ((AttachmentDeleteEvent) >>> event).getName(); >>> + } else if (event instanceof AttachmentUpdateEvent){ >>> + eventType = ActivityEventType.UPDATE_ATTACHMENT; >>> + displayTitle = currentDoc.getDisplayTitle(context); >>> + additionalIdentifier = ((AttachmentUpdateEvent) >>> event).getName(); >>> + } else if (event instanceof AnnotationAddEvent){ >>> + eventType = ActivityEventType.ADD_ANNOTATION; >>> + displayTitle = currentDoc.getDisplayTitle(context); >>> + additionalIdentifier = ((AnnotationAddEvent) >>> event).getIdentifier(); >>> + } else if (event instanceof AnnotationDeleteEvent){ >>> + eventType = ActivityEventType.DELETE_ANNOTATION; >>> + displayTitle = currentDoc.getDisplayTitle(context); >>> + additionalIdentifier = ((AnnotationDeleteEvent) >>> event).getIdentifier(); >>> + } else { // update annotation >>> + eventType = ActivityEventType.UPDATE_ANNOTATION; >>> + displayTitle = currentDoc.getDisplayTitle(context); >>> + additionalIdentifier = ((AnnotationUpdateEvent) >>> event).getIdentifier(); >> >> This also looks like a design issue. It's a lot of "if"s and duplicated code. >> >> [snip] >> >> In general this whole commit really smells like some code that was done >> without refactoring in mind. It shows problems but the time wasn't taken to >> refactor the issues IMO. Let's do that now since otherwise we're introducing >> technical debt. >> > > Yes, both me and Ștefan disliked this a lot, but this is all we can do > in a very busy day. It hurt me a lot to commit this many else-ifs. If > there wasn't such a tight deadline, I'd take the time to refactor the > whole activity stream into nice components, but the RC is in a few days > and I still have a lot of things to do.
oh this is a prereq for the Recent Activity feature (rewrite of the old recent changes)? If so I wasn't aware (didn't realizer) and I understand the urgency. Let's just remember to fix this as soon as we can. Thanks -Vincent _______________________________________________ devs mailing list devs@xwiki.org http://lists.xwiki.org/mailman/listinfo/devs