@Override public String toString() { StringBuilder b = new StringBuilder(); b.append("ResourceChange[type=") .append(this.getType()) .append(", path=") .append(this.getPath()) .append(", external=") .append(this.isExternal) .append("]"); return b.toString(); } }
@Override public void onChange(@NotNull List<ResourceChange> changes) { for (ResourceChange change : changes) { String path = change.getPath(); ResourceChange.ChangeType changeType = change.getType(); switch (changeType) { case CHANGED: if (slyJavaUseMap.containsKey(path)) { slyJavaUseMap.put(path, System.currentTimeMillis()); } break; case REMOVED: if (slyJavaUseMap.containsKey(path)) { slyJavaUseMap.remove(path); } break; default: break; } LOG.debug("Java Use Object {} was {}.", path, changeType.toString()); } } }
/** * Match a change against the configuration * @param change The change * @param config The configuration * @return {@code true} whether it matches */ private boolean matches(final ResourceChange change, final ResourceChangeListenerInfo config) { if (!config.getResourceChangeTypes().contains(change.getType()) && !config.getProviderChangeTypes().contains(change.getType())) { return false; } if (!config.isExternal() && change.isExternal()) { return false; } return true; } }
private boolean scriptAdded(ResourceChange change) { return ResourceChange.ChangeType.ADDED.equals(change.getType()) && scriptVerified(change); }
private boolean scriptChanged(ResourceChange change) { return ResourceChange.ChangeType.CHANGED.equals(change.getType()) && (fileReplaced(change)); }
private boolean scriptAdded(ResourceChange change) { return ResourceChange.ChangeType.ADDED.equals(change.getType()) && scriptVerified(change); }
private boolean scriptChanged(ResourceChange change) { return ResourceChange.ChangeType.CHANGED.equals(change.getType()) && (fileReplaced(change)); }
private ResourceChangeListener resourceChangeListener() { return resourceChanges -> { for (final ResourceChange resourceChange : resourceChanges) { if (path.equals(resourceChange.getPath())) { final ChangeType type = resourceChange.getType(); logger.info("change for {} observed: {}", path, type); if (type == ChangeType.ADDED) { unregisterResourcePresence(); registerResourcePresence(); } else if (type == ChangeType.REMOVED) { unregisterResourcePresence(); } } } }; }
switch (change.getType()) { case ADDED: log.debug("Change Type ADDED: {}", change);
private void onChange(final ChangeStatus status, final ResourceChange change) throws LoginException { log.debug("onChange: Detecting change {} for path '{}'", change.getType(), change.getPath());
/** * @see org.apache.sling.api.resource.observation.ResourceChangeListener#onChange(java.util.List) */ @Override public void onChange(List<ResourceChange> changes) { for(final ResourceChange change : changes ) { if ( change.getPath() != null && change.getPath().startsWith(this.configuration.getScheduledJobsPath(true)) ) { if ( change.getType() == ResourceChange.ChangeType.REMOVED ) { // removal logger.debug("Remove scheduled job {}", change.getPath()); this.scheduledJobHandler.handleRemove(change.getPath()); } else { // add or update logger.debug("Add or update scheduled job {}, event {}", change.getPath(), change.getType()); this.scheduledJobHandler.handleAddUpdate(change.getPath()); } } } } }
/** * Send the event async via the event admin. */ private void sendEvents(final Monitorable monitorable, final ChangeType changeType, final ObservationReporter reporter) { if (log.isDebugEnabled()) { log.debug("Detected change for resource {} : {}", transformPath(monitorable.path), changeType); } List<ResourceChange> changes = null; for (final ObserverConfiguration config : reporter.getObserverConfigurations()) { if (config.matches(transformPath(monitorable.path))) { if (changes == null) { changes = collectResourceChanges(monitorable, changeType); } if (log.isTraceEnabled()) { for (ResourceChange change : changes) { log.debug("Send change for resource {}: {} to {}", change.getPath(), change.getType(), config); } } } } if (changes != null) { reporter.reportChanges(changes, false); } }
Dictionary<String, Object> props = new Hashtable<String, Object>(); String topic; switch (change.getType()) { case ADDED: topic = SlingConstants.TOPIC_RESOURCE_ADDED; props.put(SlingConstants.PROPERTY_REMOVED_ATTRIBUTES, change.getRemovedPropertyNames().toArray(new String[change.getRemovedPropertyNames().size()])); if (change.getType() != ChangeType.REMOVED) { Resource resource = resolver.getResource(change.getPath()); if (resource == null) {
log.trace("Could not get resource for '{}' for event {}", change.getPath(), change.getType()); return false;
/** * Match a change against the configuration * @param change The change * @param config The configuration * @return {@code true} whether it matches */ private boolean matches(final ResourceChange change, final ObserverConfiguration config) { if (!config.getChangeTypes().contains(change.getType())) { return false; } if (!config.includeExternal() && change.isExternal()) { return false; } if (config.getPaths().matches(change.getPath()) == null ) { return false; } if ( config.getExcludedPaths().matches(change.getPath()) != null ) { return false; } return true; }