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 94cc1bb SLING-12399: make empty alias invalid (#123)
94cc1bb is described below
commit 94cc1bb2f6b1abbd2602d588bbd41af228ea8358
Author: Julian Reschke <[email protected]>
AuthorDate: Tue Sep 3 12:12:36 2024 +0200
SLING-12399: make empty alias invalid (#123)
---
.../resourceresolver/impl/mapping/MapEntries.java | 6 +++---
.../impl/mapping/MapEntriesTest.java | 21 +++++++++------------
2 files changed, 12 insertions(+), 15 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 73fed11..0ed8a25 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
@@ -1270,7 +1270,7 @@ public class MapEntries implements
// the order matters here, the first alias in the array must
come first
for (final String alias : aliasArray) {
if (isAliasInvalid(alias)) {
- log.warn("Encountered invalid alias {} under parent
path {}. Refusing to use it.", alias, parentPath);
+ log.warn("Encountered invalid alias '{}' under parent
path '{}'. Refusing to use it.", alias, parentPath);
} else {
Map<String, Collection<String>> parentMap =
map.computeIfAbsent(parentPath, key -> new ConcurrentHashMap<>());
Optional<String> siblingResourceNameWithDuplicateAlias
= parentMap.entrySet().stream()
@@ -1279,7 +1279,7 @@ public class MapEntries implements
.findFirst().map(Map.Entry::getKey);
if (siblingResourceNameWithDuplicateAlias.isPresent())
{
log.warn(
- "Encountered duplicate alias {} under
parent path {}. Refusing to replace current target {} with {}.",
+ "Encountered duplicate alias '{}' under
parent path '{}'. Refusing to replace current target {} with {}.",
alias, parentPath,
siblingResourceNameWithDuplicateAlias.get(), resourceName);
} else {
Collection<String> existingAliases =
parentMap.computeIfAbsent(resourceName, name -> new CopyOnWriteArrayList<>());
@@ -1298,7 +1298,7 @@ public class MapEntries implements
* Check alias syntax
*/
private static boolean isAliasInvalid(String alias) {
- boolean invalid = alias.equals("..") || alias.equals(".");
+ boolean invalid = alias.equals("..") || alias.equals(".") ||
alias.isEmpty();
if (!invalid) {
for (final char c : alias.toCharArray()) {
// invalid if / or # or a ?
diff --git
a/src/test/java/org/apache/sling/resourceresolver/impl/mapping/MapEntriesTest.java
b/src/test/java/org/apache/sling/resourceresolver/impl/mapping/MapEntriesTest.java
index ea4512c..4335efe 100644
---
a/src/test/java/org/apache/sling/resourceresolver/impl/mapping/MapEntriesTest.java
+++
b/src/test/java/org/apache/sling/resourceresolver/impl/mapping/MapEntriesTest.java
@@ -178,15 +178,12 @@ public class MapEntriesTest extends
AbstractMappingMapEntriesTest {
@Test
public void test_simple_alias_support() {
- // SLING-12399 - empty alias is returned back (might be a bug)
- for (String validAlias : List.of("alias", "")) {
- prepareMapEntriesForAlias(validAlias);
- mapEntries.doInit();
- Map<String, Collection<String>> aliasMap =
mapEntries.getAliasMap("/parent");
- assertNotNull(aliasMap);
- assertTrue(aliasMap.containsKey("child"));
- assertEquals(List.of(validAlias), aliasMap.get("child"));
- }
+ prepareMapEntriesForAlias("alias");
+ mapEntries.doInit();
+ Map<String, Collection<String>> aliasMap =
mapEntries.getAliasMap("/parent");
+ assertNotNull(aliasMap);
+ assertTrue(aliasMap.containsKey("child"));
+ assertEquals(List.of("alias"), aliasMap.get("child"));
}
@Test
@@ -201,18 +198,18 @@ public class MapEntriesTest extends
AbstractMappingMapEntriesTest {
@Test
public void test_simple_multi_alias_support_with_blank_and_invalid() {
- // SLING-12399 - invalid aliases filtered out (but empty string not
considered invalid)
+ // invalid aliases filtered out
prepareMapEntriesForAlias("", "foo", ".", "bar", "x/y", "qux", " ");
mapEntries.doInit();
Map<String, Collection<String>> aliasMap =
mapEntries.getAliasMap("/parent");
assertNotNull(aliasMap);
assertTrue(aliasMap.containsKey("child"));
- assertEquals(List.of("", "foo", "bar", "qux", " "),
aliasMap.get("child"));
+ assertEquals(List.of("foo", "bar", "qux", " "), aliasMap.get("child"));
}
@Test
public void test_alias_support_invalid() {
- for (String invalidAlias : List.of(".", "..", "foo/bar")) {
+ for (String invalidAlias : List.of(".", "..", "foo/bar", "# foo", ""))
{
prepareMapEntriesForAlias(invalidAlias);
mapEntries.doInit();
Map<String, Collection<String>> aliasMap =
mapEntries.getAliasMap("/parent");