/** * @return The wiki name in which the event was created */ public String getWiki() { return event.getWiki(); }
/** * Generate event ID for the given ID. Note that this method does not perform the set of the ID in the event object. * * @param event event to generate the ID for * @param context the XWiki context * @return the generated ID */ private String generateEventId(ActivityEvent event, XWikiContext context) { String keySeparator = EVENT_ID_ELEMENTS_SEPARATOR; String wikiSpaceSeparator = ":"; String key = event.getStream() + keySeparator + event.getApplication() + keySeparator + event.getWiki() + wikiSpaceSeparator + event.getPage() + keySeparator + event.getType(); long hash = key.hashCode(); if (hash < 0) { hash = -hash; } String id = "" + hash + keySeparator + event.getDate().getTime() + keySeparator + RandomStringUtils.randomAlphanumeric(8); if (context.get(REQUEST_ID_CONTEXT_KEY) == null) { context.put(REQUEST_ID_CONTEXT_KEY, id); } return id; }
@Override public WatchListEvent convert(ActivityEvent from, Object... parameters) { DocumentReference documentReference = new DocumentReference(resolver.resolve(from.getPage(), EntityType.DOCUMENT, new WikiReference(from.getWiki()))); String type = from.getType(); DocumentReference userReference = null; // Watch out for unregistered user events since they have a null user. if (from.getUser() != null) { userReference = new DocumentReference(resolver.resolve(from.getUser(), EntityType.DOCUMENT, new WikiReference(from.getWiki()))); } return new WatchListEvent(documentReference, type, userReference, from.getVersion(), from.getDate()); } }
/** * Set fields in the given event object. * * @param event the event to prepare * @param doc document which fired the event * @param context the XWiki context */ private void prepareEvent(ActivityEvent event, XWikiDocument doc, XWikiContext context) { if (event.getUser() == null) { event.setUser(context.getUser()); } if (event.getWiki() == null) { event.setWiki(context.getDatabase()); } if (event.getApplication() == null) { event.setApplication("xwiki"); } if (event.getDate() == null) { event.setDate(context.getWiki().getCurrentDate()); } if (event.getEventId() == null) { event.setEventId(generateEventId(event, context)); } if (event.getRequestId() == null) { event.setRequestId((String) context.get(REQUEST_ID_CONTEXT_KEY)); } setEventDocumentRelatedInformation(event, doc, context); }