You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by cz...@apache.org on 2015/10/30 08:24:46 UTC
svn commit: r1711411 - in
/sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/observation:
ResourceChangeListenerInfo.java ResourceChangeListenerWhiteboard.java
Author: cziegeler
Date: Fri Oct 30 07:24:46 2015
New Revision: 1711411
URL: http://svn.apache.org/viewvc?rev=1711411&view=rev
Log:
Clean up code and log warning if listener is not used
Modified:
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/observation/ResourceChangeListenerInfo.java
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/observation/ResourceChangeListenerWhiteboard.java
Modified: sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/observation/ResourceChangeListenerInfo.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/observation/ResourceChangeListenerInfo.java?rev=1711411&r1=1711410&r2=1711411&view=diff
==============================================================================
--- sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/observation/ResourceChangeListenerInfo.java (original)
+++ sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/observation/ResourceChangeListenerInfo.java Fri Oct 30 07:24:46 2015
@@ -23,6 +23,7 @@ import static org.apache.sling.api.resou
import static org.apache.sling.commons.osgi.PropertiesUtil.toStringArray;
import java.util.Collections;
+import java.util.EnumSet;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
@@ -33,8 +34,15 @@ import org.apache.sling.api.resource.obs
import org.apache.sling.api.resource.observation.ResourceChangeListener;
import org.osgi.framework.ServiceReference;
+/**
+ * Information about a resource change listener.
+ */
public class ResourceChangeListenerInfo {
+ private static final Set<ChangeType> DEFAULT_CHANGE_TYPES = EnumSet.of(ChangeType.ADDED, ChangeType.REMOVED, ChangeType.CHANGED);
+
+ private static final Set<ChangeType> DEFAULT_CHANGE_PROVIDER_TYPES = EnumSet.of(ChangeType.PROVIDER_ADDED, ChangeType.PROVIDER_REMOVED);
+
private final PathSet paths;
private final Set<ChangeType> resourceChangeTypes;
@@ -88,41 +96,40 @@ public class ResourceChangeListenerInfo
}
}
this.paths = PathSet.fromStringCollection(pathsSet);
- final Set<ChangeType> typesSet = new HashSet<ChangeType>();
if (ref.getProperty(CHANGES) != null ) {
- for (String changeName : toStringArray(ref.getProperty(CHANGES))) {
+ final Set<ChangeType> rts = new HashSet<ChangeType>();
+ final Set<ChangeType> pts = new HashSet<ChangeType>();
+ for (final String changeName : toStringArray(ref.getProperty(CHANGES))) {
try {
- typesSet.add(ChangeType.valueOf(changeName));
+ final ChangeType ct = ChangeType.valueOf(changeName);
+ if ( ct.ordinal() < ChangeType.PROVIDER_ADDED.ordinal()) {
+ rts.add(ct);
+ } else {
+ pts.add(ct);
+ }
} catch ( final IllegalArgumentException iae) {
configValid = false;
}
}
+ if ( rts.isEmpty() ) {
+ this.resourceChangeTypes = Collections.emptySet();
+ } else if ( rts.size() == 3 ) {
+ this.resourceChangeTypes = DEFAULT_CHANGE_TYPES;
+ } else {
+ this.resourceChangeTypes = Collections.unmodifiableSet(rts);
+ }
+ if ( pts.isEmpty() ) {
+ this.providerChangeTypes = Collections.emptySet();
+ } else if ( pts.size() == 2 ) {
+ this.providerChangeTypes = DEFAULT_CHANGE_PROVIDER_TYPES;
+ } else {
+ this.providerChangeTypes = Collections.unmodifiableSet(pts);
+ }
} else {
// default is added, changed, removed
- typesSet.add(ChangeType.ADDED);
- typesSet.add(ChangeType.CHANGED);
- typesSet.add(ChangeType.REMOVED);
- }
- final Set<ChangeType> rts = new HashSet<ChangeType>();
- if ( typesSet.contains(ChangeType.ADDED)) {
- rts.add(ChangeType.ADDED);
- }
- if ( typesSet.contains(ChangeType.CHANGED)) {
- rts.add(ChangeType.CHANGED);
- }
- if ( typesSet.contains(ChangeType.REMOVED)) {
- rts.add(ChangeType.REMOVED);
- }
- this.resourceChangeTypes = Collections.unmodifiableSet(rts);
-
- final Set<ChangeType> pts = new HashSet<ChangeType>();
- if ( typesSet.contains(ChangeType.PROVIDER_ADDED)) {
- pts.add(ChangeType.PROVIDER_ADDED);
- }
- if ( typesSet.contains(ChangeType.PROVIDER_REMOVED)) {
- pts.add(ChangeType.PROVIDER_REMOVED);
+ this.resourceChangeTypes = DEFAULT_CHANGE_TYPES;
+ this.providerChangeTypes = Collections.emptySet();
}
- this.providerChangeTypes = Collections.unmodifiableSet(pts);
this.valid = configValid;
}
Modified: sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/observation/ResourceChangeListenerWhiteboard.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/observation/ResourceChangeListenerWhiteboard.java?rev=1711411&r1=1711410&r2=1711411&view=diff
==============================================================================
--- sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/observation/ResourceChangeListenerWhiteboard.java (original)
+++ sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/observation/ResourceChangeListenerWhiteboard.java Fri Oct 30 07:24:46 2015
@@ -35,12 +35,16 @@ import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceReference;
import org.osgi.util.tracker.ServiceTracker;
import org.osgi.util.tracker.ServiceTrackerCustomizer;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* Tracker component for the resource change listeners.
*/
public class ResourceChangeListenerWhiteboard implements ResourceProviderTracker.ObservationReporterGenerator {
+ private final Logger logger = LoggerFactory.getLogger(this.getClass());
+
private final Map<ServiceReference, ResourceChangeListenerInfo> listeners = new ConcurrentHashMap<ServiceReference, ResourceChangeListenerInfo>();
private volatile ResourceProviderTracker resourceProviderTracker;
@@ -81,6 +85,8 @@ public class ResourceChangeListenerWhite
listeners.put(reference, info);
updateProviderTracker();
}
+ } else {
+ logger.warn("Ignoring invalid resource change listenr {}", reference);
}
return reference;
}