This is an automated email from the ASF dual-hosted git repository.
reschke pushed a commit to branch master
in repository
https://gitbox.apache.org/repos/asf/sling-org-apache-sling-resourceresolver.git
The following commit(s) were added to refs/heads/master by this push:
new 8aa44a2 SLING-12658: refactor vanity path handling - encapsulate code
for better isolation and unit testing (#142)
8aa44a2 is described below
commit 8aa44a2b11cd16c0e546fce5dcd60f97b34d4456
Author: Julian Reschke <[email protected]>
AuthorDate: Mon Feb 17 13:49:07 2025 +0100
SLING-12658: refactor vanity path handling - encapsulate code for better
isolation and unit testing (#142)
---
.../resourceresolver/impl/mapping/MapEntries.java | 106 ++++++++++-----------
1 file changed, 53 insertions(+), 53 deletions(-)
diff --git
a/src/main/java/org/apache/sling/resourceresolver/impl/mapping/MapEntries.java
b/src/main/java/org/apache/sling/resourceresolver/impl/mapping/MapEntries.java
index 2e868bc..b993ea0 100644
---
a/src/main/java/org/apache/sling/resourceresolver/impl/mapping/MapEntries.java
+++
b/src/main/java/org/apache/sling/resourceresolver/impl/mapping/MapEntries.java
@@ -644,6 +644,59 @@ public class MapEntries implements
// ---------- ResourceChangeListener interface
+ /**
+ * Handles the change to any of the node properties relevant for vanity URL
+ * mappings. The {@link #MapEntries(MapConfigurationProvider,
BundleContext, EventAdmin, StringInterpolationProvider, Optional)}
+ * constructor makes sure the event listener is registered to only get
+ * appropriate events.
+ */
+ @Override
+ public void onChange(final List<ResourceChange> changes) {
+
+ final boolean inStartup = !vanityPathsProcessed.get();
+
+ final AtomicBoolean resolverRefreshed = new AtomicBoolean(false);
+
+ // send the change event only once
+ boolean sendEvent = false;
+
+ // the config needs to be reloaded only once
+ final AtomicBoolean hasReloadedConfig = new AtomicBoolean(false);
+
+ for (final ResourceChange rc : changes) {
+
+ final ResourceChange.ChangeType type = rc.getType();
+ final String path = rc.getPath();
+
+ log.debug("onChange, type={}, path={}", rc.getType(), path);
+
+ // don't care for system area
+ if (path.startsWith(JCR_SYSTEM_PREFIX)) {
+ continue;
+ }
+
+ // during startup: just enqueue the events
+ if (inStartup) {
+ if (type == ResourceChange.ChangeType.REMOVED || type ==
ResourceChange.ChangeType.ADDED
+ || type == ResourceChange.ChangeType.CHANGED) {
+ Map.Entry<String, ResourceChange.ChangeType> entry = new
SimpleEntry<>(path, type);
+ log.trace("enqueue: {}", entry);
+ resourceChangeQueue.add(entry);
+ }
+ } else {
+ boolean changed = handleResourceChange(type, path,
resolverRefreshed, hasReloadedConfig);
+
+ if (changed) {
+ sendEvent = true;
+ }
+ }
+ }
+
+ if (sendEvent) {
+ this.sendChangeEvent();
+ }
+ }
+
private boolean handleResourceChange(ResourceChange.ChangeType type,
String path, AtomicBoolean resolverRefreshed,
AtomicBoolean hasReloadedConfig) {
boolean changed = false;
@@ -1366,59 +1419,6 @@ public class MapEntries implements
return mapEntries == NO_MAP_ENTRIES ? null : mapEntries;
}
- /**
- * Handles the change to any of the node properties relevant for vanity URL
- * mappings. The {@link #MapEntries(MapConfigurationProvider,
BundleContext, EventAdmin, StringInterpolationProvider, Optional)}
- * constructor makes sure the event listener is registered to only get
- * appropriate events.
- */
- @Override
- public void onChange(final List<ResourceChange> changes) {
-
- final boolean inStartup = !vanityPathsProcessed.get();
-
- final AtomicBoolean resolverRefreshed = new AtomicBoolean(false);
-
- // send the change event only once
- boolean sendEvent = false;
-
- // the config needs to be reloaded only once
- final AtomicBoolean hasReloadedConfig = new AtomicBoolean(false);
-
- for (final ResourceChange rc : changes) {
-
- final ResourceChange.ChangeType type = rc.getType();
- final String path = rc.getPath();
-
- log.debug("onChange, type={}, path={}", rc.getType(), path);
-
- // don't care for system area
- if (path.startsWith(JCR_SYSTEM_PREFIX)) {
- continue;
- }
-
- // during startup: just enqueue the events
- if (inStartup) {
- if (type == ResourceChange.ChangeType.REMOVED || type ==
ResourceChange.ChangeType.ADDED
- || type == ResourceChange.ChangeType.CHANGED) {
- Map.Entry<String, ResourceChange.ChangeType> entry = new
SimpleEntry<>(path, type);
- log.trace("enqueue: {}", entry);
- resourceChangeQueue.add(entry);
- }
- } else {
- boolean changed = handleResourceChange(type, path,
resolverRefreshed, hasReloadedConfig);
-
- if (changed) {
- sendEvent = true;
- }
- }
- }
-
- if (sendEvent) {
- this.sendChangeEvent();
- }
- }
-
private byte[] createVanityBloomFilter() throws IOException {
return BloomFilterUtils.createFilter(VANITY_BLOOM_FILTER_MAX_ENTRIES,
this.factory.getVanityBloomFilterMaxBytes());
}