Author: cziegeler
Date: Tue Oct 11 16:22:14 2016
New Revision: 1764287
URL: http://svn.apache.org/viewvc?rev=1764287&view=rev
Log:
SLING-6131 : MapEntries: Invalid logic around added/changed/removed property
names
Modified:
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/mapping/MapEntries.java
Modified:
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/mapping/MapEntries.java
URL:
http://svn.apache.org/viewvc/sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/mapping/MapEntries.java?rev=1764287&r1=1764286&r2=1764287&view=diff
==============================================================================
---
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/mapping/MapEntries.java
(original)
+++
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/mapping/MapEntries.java
Tue Oct 11 16:22:14 2016
@@ -457,7 +457,7 @@ public class MapEntries implements Resou
this.mapMaps = Collections.unmodifiableSet(new
TreeSet<MapEntry>(newMapMaps.values()));
}
- private void doAddVanity(String path) {
+ private boolean doAddVanity(String path) {
Resource resource = resolver.getResource(path);
boolean needsUpdate = false;
if (isAllVanityPathEntriesCached() || vanityCounter.longValue() <
maxCachedVanityPathEntries) {
@@ -469,15 +469,19 @@ public class MapEntries implements Resou
}
if ( needsUpdate ) {
updateBloomFilterFile = true;
+ return true;
}
+ return false;
}
- private void doUpdateVanity(String path) {
- doRemoveVanity(path);
- doAddVanity(path);
+ private boolean doUpdateVanity(String path) {
+ boolean changed = doRemoveVanity(path);
+ changed |= doAddVanity(path);
+
+ return changed;
}
- private void doRemoveVanity(String path) {
+ private boolean doRemoveVanity(String path) {
String actualContentPath = getActualContentPath(path);
List <String> l = vanityTargets.remove(actualContentPath);
if (l != null){
@@ -499,7 +503,9 @@ public class MapEntries implements Resou
if (vanityCounter.longValue() > 0) {
vanityCounter.addAndGet(-2);
}
+ return true;
}
+ return false;
}
private void doUpdateVanityOrder(String path, boolean deletion) {
@@ -546,7 +552,7 @@ public class MapEntries implements Resou
loadAlias(resource, this.aliasMap);
}
- private void doUpdateAlias(String path, boolean nodeDeletion) {
+ private boolean doUpdateAlias(String path, boolean nodeDeletion) {
if (nodeDeletion){
if (path.endsWith("/jcr:content")) {
path = path.substring(0, path.length() -
"/jcr:content".length());
@@ -556,6 +562,7 @@ public class MapEntries implements Resou
final ValueMap props = resource.adaptTo(ValueMap.class);
if (props.get(ResourceResolverImpl.PROP_ALIAS,
String[].class) != null) {
doAddAlias(path);
+ return true;
}
}
}
@@ -568,6 +575,7 @@ public class MapEntries implements Resou
final ValueMap props = parent.adaptTo(ValueMap.class);
if (props.get(ResourceResolverImpl.PROP_ALIAS,
String[].class) != null) {
doAddAlias(path);
+ return true;
}
} else if (resource.getChild("jcr:content") != null) {
Resource jcrContent = resource.getChild("jcr:content");
@@ -575,10 +583,12 @@ public class MapEntries implements Resou
final ValueMap props = jcrContent.adaptTo(ValueMap.class);
if (props.get(ResourceResolverImpl.PROP_ALIAS,
String[].class) != null) {
doAddAlias(path);
+ return true;
}
}
}
}
+ return false;
}
private void doRemoveAlias(String path, boolean nodeDeletion) {
@@ -801,10 +811,18 @@ public class MapEntries implements Resou
} else {
if (path.startsWith(this.mapRoot)) {
- doUpdateConfiguration();
+ wasResolverRefreshed =
doUpdateConfiguration(wasResolverRefreshed);
} else {
- doUpdateVanity(path);
- doUpdateAlias(path, false);
+ if ( !wasResolverRefreshed ) {
+ wasResolverRefreshed = true;
+ this.resolver.refresh();
+ }
+ boolean changed = doUpdateVanity(path);
+ changed |= doUpdateAlias(path, false);
+
+ if ( changed ) {
+ this.sendChangeEvent();
+ }
}
}