private void handleDocumentEvents(AbstractDocumentEvent event, XWikiDocument document) { if (event instanceof DocumentUpdatedEvent || event instanceof DocumentDeletedEvent) { unRegisterObjectComponents(document.getOriginalDocument()); } if (event instanceof DocumentCreatedEvent || event instanceof DocumentUpdatedEvent) { registerObjectComponents(document); } }
@Override public void onEvent(Event event, Object source, Object data) { XWikiDocument currentDoc = (XWikiDocument) source; XWikiDocument originalDoc = currentDoc.getOriginalDocument(); XWikiContext context = (XWikiContext) data; watchListJobObjectsEventHandler(originalDoc, currentDoc, context); watchListObjectsEventHandler(originalDoc, currentDoc, context); }
/** * @param document the translation document */ private void translationDocumentUpdated(XWikiDocument document) { if (!document.getOriginalDocument().isNew()) { unregisterTranslationBundle(document.getOriginalDocument()); } if (!document.isNew()) { try { registerTranslationBundle(document); } catch (Exception e) { this.logger.error("Failed to register translation bundle from document [{}]", document.getDocumentReference(), e); } } }
/** * @param document the document to serialize * @return the serialized version of the document */ protected Serializable serializeXWikiDocument(XWikiDocument document) { HashMap<String, Serializable> remoteDataMap = new HashMap<String, Serializable>(); remoteDataMap.put(DOC_NAME, document.getDocumentReference()); if (!document.isNew()) { remoteDataMap.put(DOC_VERSION, document.getVersion()); remoteDataMap.put(DOC_LANGUAGE, document.getLanguage()); } XWikiDocument originalDocument = document.getOriginalDocument(); if (originalDocument != null && !originalDocument.isNew()) { remoteDataMap.put(ORIGDOC_VERSION, originalDocument.getVersion()); remoteDataMap.put(ORIGDOC_LANGUAGE, originalDocument.getLanguage()); } return remoteDataMap; }
/** * {@inheritDoc} * * @see org.xwiki.observation.EventListener#onEvent(org.xwiki.observation.event.Event, java.lang.Object, * java.lang.Object) */ public void onEvent(Event event, Object source, Object data) { XWikiDocument document = (XWikiDocument) source; XWikiDocument oldDocument = document.getOriginalDocument(); // if there is any chance some group changed, flush the group cache if (document.getObject(CLASS_XWIKIGROUPS) != null || oldDocument.getObject(CLASS_XWIKIGROUPS) != null) { flushCache(); } }
@Override public void onEvent(Event event, Object source, Object data) { XWikiDocument doc = (XWikiDocument) source; if (doc == null || doc.getOriginalDocument() == null) { return; } XWikiDocument odoc = doc.getOriginalDocument(); BaseObject patientRecordObj = odoc.getXObject(Patient.CLASS_REFERENCE); if (patientRecordObj == null || "PatientTemplate".equals(doc.getDocumentReference().getName())) { return; } Patient patient = this.repo.load(odoc); User user = this.userManager.getCurrentUser(); this.observationManager.notify(new PatientDeletedEvent(patient, user), odoc); } }
@Override public void onEvent(Event event, Object source, Object data) { XWikiDocument doc = (XWikiDocument) source; if (doc == null || doc.getOriginalDocument() == null) { return; } XWikiDocument odoc = doc.getOriginalDocument(); BaseObject patientRecordObj = odoc.getXObject(Patient.CLASS_REFERENCE); if (patientRecordObj == null || "PatientTemplate".equals(doc.getDocumentReference().getName())) { return; } Patient patient = this.repo.load(odoc); User user = this.userManager.getCurrentUser(); this.observationManager.notify(new PatientDeletedEvent(patient, user), odoc); } }
@Override public void onEvent(Event event, Object source, Object data) { XWikiDocument document = (XWikiDocument) source; // If the document is deleted then check the original document to see if it had XWiki Server objects and if // so then unregister them if (event instanceof DocumentDeletedEvent || event instanceof DocumentUpdatedEvent) { removeExistingDescriptor(document.getOriginalDocument()); } // Register the new XWiki Server objects if any List<BaseObject> serverClassObjects = document.getXObjects(SERVER_CLASS); if (serverClassObjects != null && !serverClassObjects.isEmpty()) { DefaultWikiDescriptor descriptor = this.builder.buildDescriptorObject(serverClassObjects, document); if (descriptor != null) { this.cache.add(descriptor); this.cache.setWikiIds(null); } } }
@Override public void onEvent(Event event, Object source, Object data) { XWikiDocument doc = ((XWikiDocument) source).getOriginalDocument(); if (doc == null || doc.getXObject(Group.CLASS_REFERENCE) == null) { return; } XWikiContext context = this.xcontextProvider.get(); DocumentReference docReference = doc.getDocumentReference(); DocumentReference adminsReference = new DocumentReference(docReference.getName() + " Administrators", docReference.getLastSpaceReference()); XWiki xwiki = context.getWiki(); try { // Delete the administrative group XWikiDocument adminsDoc = xwiki.getDocument(adminsReference, context); xwiki.deleteDocument(adminsDoc, context); } catch (XWikiException ex) { this.logger.error("Failed to delete administrative group for [{}]: {}", docReference, ex.getMessage(), ex); } } }
/** * {@inheritDoc} * * @see org.xwiki.observation.EventListener#onEvent(org.xwiki.observation.event.Event, java.lang.Object, * java.lang.Object) */ public void onEvent(Event event, Object source, Object data) { // Only take into account local events if (!Utils.getComponent(RemoteObservationManagerContext.class).isRemoteState()) { XWikiDocument document = ((XWikiDocument) source).getOriginalDocument(); XWikiContext context = (XWikiContext) data; String userOrGroupWiki = document.getDatabase(); String userOrGroupSpace = document.getSpace(); String userOrGroupName = document.getName(); if (document.getObject("XWiki.XWikiUsers") != null) { try { cleanDeletedUserOrGroup(userOrGroupWiki, userOrGroupSpace, userOrGroupName, true, context); } catch (XWikiException e) { LOG.warn("Error when cleaning for deleted user", e); } } else if (document.getObject("XWiki.XWikiGroups") != null) { try { cleanDeletedUserOrGroup(userOrGroupWiki, userOrGroupSpace, userOrGroupName, false, context); } catch (XWikiException e) { LOG.warn("Error when cleaning for deleted group", e); } } } }
@Override public void onEvent(Event event, Object source, Object data) { Patient patient = ((PatientEvent) event).getPatient(); if (StringUtils.isBlank(patient.getExternalId())) { return; } String eventType = "update"; if (event instanceof PatientDeletedEvent) { eventType = "delete"; } else if (((XWikiDocument) source).getOriginalDocument().isNew()) { eventType = "create"; } XWikiContext context = (XWikiContext) this.execution.getContext().getProperty("xwikicontext"); JSONObject payload = getPayload(eventType, patient.getExternalId(), context); List<BaseObject> servers = getRegisteredServers(context); if (servers != null && !servers.isEmpty()) { for (BaseObject serverConfiguration : servers) { notifyServer(payload, serverConfiguration, context); } } }
XWikiDocument originalDocument = document.getOriginalDocument();
/** * @param event the current event * @param currentDoc the affected document * @param context the context of the event * @return the {@link WatchListEvent} to use to notify watchers of the current document */ private WatchListEvent getWatchListEvent(Event event, XWikiDocument currentDoc, XWikiContext context) { String type = null; DocumentReference documentReference = currentDoc.getDocumentReference(); DocumentReference userReference = context.getUserReference(); String version = currentDoc.getVersion(); Date date = currentDoc.getDate(); if (event instanceof DocumentCreatedEvent) { type = WatchListEventType.CREATE; } else if (event instanceof DocumentUpdatedEvent) { type = WatchListEventType.UPDATE; } else if (event instanceof DocumentDeletedEvent) { version = currentDoc.getOriginalDocument().getVersion(); type = WatchListEventType.DELETE; } WatchListEvent watchListEvent = new WatchListEvent(documentReference, type, userReference, version, date); return watchListEvent; } }
XWikiDocument document = ((XWikiDocument) source).getOriginalDocument(); XWikiDocument document = ((XWikiDocument) source).getOriginalDocument(); String fileName = ((AbstractAttachmentEvent) event).getName(); XWikiAttachment attachment = document.getAttachment(fileName);
@Override public void onEvent(Event event, Object source, Object data) { XWikiDocument doc = ((XWikiDocument) source).getOriginalDocument(); if (doc == null || doc.getXObject(Group.CLASS_REFERENCE) == null) { return; } XWikiContext context = this.xcontextProvider.get(); DocumentReference docReference = doc.getDocumentReference(); DocumentReference adminsReference = new DocumentReference(docReference.getName() + " Administrators", docReference.getLastSpaceReference()); DocumentReference managersReference = new DocumentReference(docReference.getName() + " Managers", docReference.getLastSpaceReference()); XWiki xwiki = context.getWiki(); try { // Delete the administrative group XWikiDocument adminsDoc = xwiki.getDocument(adminsReference, context); xwiki.deleteDocument(adminsDoc, context); // Delete the managers group XWikiDocument managersDoc = xwiki.getDocument(managersReference, context); xwiki.deleteDocument(managersDoc, context); } catch (XWikiException ex) { this.logger.error("Failed to delete administrative or managers group for [{}]: {}", docReference, ex.getMessage(), ex); } } }
} else if (document.getOriginalDocument().getObject(getExtensionClassName()) != null) {
public void onEvent(Event event, Object source, Object data) XWikiDocument originalDoc = doc.getOriginalDocument(); XWikiContext context = (XWikiContext) data;
} else if (event instanceof XObjectDeletedEvent) { object = document.getOriginalDocument().getXObject(objectReference); newEvent = new AnnotationDeletedEvent(documentReference, number);
XWikiDocument originalDoc = currentDoc.getOriginalDocument(); XWikiContext context = (XWikiContext) data; String wiki = context.getDatabase();
XWikiDocument originalDocument = doc.getOriginalDocument(); XWikiDocument newOriginal = doc.getOriginalDocument();