SLING-10726 support same name selectors (#7)
diff --git a/src/main/java/org/apache/sling/scriptingbundle/plugin/capability/ProvidedResourceTypeCapability.java b/src/main/java/org/apache/sling/scriptingbundle/plugin/capability/ProvidedResourceTypeCapability.java
index 3da1a13..0495be8 100644
--- a/src/main/java/org/apache/sling/scriptingbundle/plugin/capability/ProvidedResourceTypeCapability.java
+++ b/src/main/java/org/apache/sling/scriptingbundle/plugin/capability/ProvidedResourceTypeCapability.java
@@ -22,6 +22,7 @@
import java.util.Collections;
import java.util.HashSet;
import java.util.LinkedHashSet;
+import java.util.List;
import java.util.Objects;
import java.util.Set;
@@ -38,12 +39,12 @@
private final Version version;
private final String requestExtension;
private final String requestMethod;
- private final Set<String> selectors;
+ private final List<String> selectors;
private ProvidedResourceTypeCapability(@NotNull Set<String> resourceTypes, @Nullable String scriptEngine,
@Nullable String scriptExtension, @Nullable String extendsResourceType,
@Nullable Version version, @Nullable String requestExtension, @Nullable String requestMethod,
- @NotNull Set<String> selectors) {
+ @NotNull List<String> selectors) {
this.resourceTypes = resourceTypes;
this.scriptEngine = scriptEngine;
this.scriptExtension = scriptExtension;
@@ -94,8 +95,8 @@
}
@NotNull
- public Set<String> getSelectors() {
- return Collections.unmodifiableSet(selectors);
+ public List<String> getSelectors() {
+ return Collections.unmodifiableList(selectors);
}
@Override
@@ -140,7 +141,7 @@
private Version version;
private String requestExtension;
private String requestMethod;
- private Set<String> selectors = Collections.emptySet();
+ private List<String> selectors = Collections.emptyList();
public Builder withResourceTypes(@NotNull Set<String> resourceTypes) {
if (resourceTypes.isEmpty()) {
@@ -192,13 +193,13 @@
return this;
}
- public Builder withSelectors(@NotNull Set<String> selectors) {
+ public Builder withSelectors(@NotNull List<String> selectors) {
this.selectors = selectors;
return this;
}
public Builder withSelectors(@NotNull String... selectors) {
- return withSelectors(new LinkedHashSet<>(Arrays.asList(selectors)));
+ return withSelectors(Arrays.asList(selectors));
}
public Builder fromCapability(@NotNull ProvidedResourceTypeCapability capability) {
diff --git a/src/main/java/org/apache/sling/scriptingbundle/plugin/capability/RequiredResourceTypeCapability.java b/src/main/java/org/apache/sling/scriptingbundle/plugin/capability/RequiredResourceTypeCapability.java
index f35e267..7fbab3b 100644
--- a/src/main/java/org/apache/sling/scriptingbundle/plugin/capability/RequiredResourceTypeCapability.java
+++ b/src/main/java/org/apache/sling/scriptingbundle/plugin/capability/RequiredResourceTypeCapability.java
@@ -18,8 +18,8 @@
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
package org.apache.sling.scriptingbundle.plugin.capability;
+import java.util.List;
import java.util.Objects;
-import java.util.Set;
import org.apache.commons.lang3.StringUtils;
import org.jetbrains.annotations.NotNull;
@@ -58,7 +58,7 @@
}
public boolean isSatisfied(@NotNull ProvidedResourceTypeCapability providedResourceTypeCapability) {
- Set<String> providedSelectors = providedResourceTypeCapability.getSelectors();
+ List<String> providedSelectors = providedResourceTypeCapability.getSelectors();
if (providedSelectors.isEmpty()) {
for (String providedResourceType : providedResourceTypeCapability.getResourceTypes()) {
if (resourceType.equals(providedResourceType)) {
diff --git a/src/main/java/org/apache/sling/scriptingbundle/plugin/processor/FileProcessor.java b/src/main/java/org/apache/sling/scriptingbundle/plugin/processor/FileProcessor.java
index dab50f7..2ddc24b 100644
--- a/src/main/java/org/apache/sling/scriptingbundle/plugin/processor/FileProcessor.java
+++ b/src/main/java/org/apache/sling/scriptingbundle/plugin/processor/FileProcessor.java
@@ -23,10 +23,10 @@
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashSet;
-import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
@@ -155,7 +155,7 @@
if (scriptFile != null) {
Path relativeResourceTypeFolder = resourceTypeDirectory.relativize(scriptPath);
int pathSegments = relativeResourceTypeFolder.getNameCount();
- LinkedHashSet<String> selectors = new LinkedHashSet<>();
+ List<String> selectors = new ArrayList<>();
if (pathSegments > 1) {
for (int i = 0; i < pathSegments - 1; i++) {
selectors.add(relativeResourceTypeFolder.getName(i).toString());
diff --git a/src/test/java/org/apache/sling/scriptingbundle/plugin/AbstractPluginTest.java b/src/test/java/org/apache/sling/scriptingbundle/plugin/AbstractPluginTest.java
index 7a8e181..fa35391 100644
--- a/src/test/java/org/apache/sling/scriptingbundle/plugin/AbstractPluginTest.java
+++ b/src/test/java/org/apache/sling/scriptingbundle/plugin/AbstractPluginTest.java
@@ -24,7 +24,6 @@
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
-import java.util.LinkedHashSet;
import java.util.Map;
import java.util.Set;
@@ -54,27 +53,31 @@
ProvidedResourceTypeCapability.builder().withResourceType("org/apache/sling/bar").withScriptEngine("htl")
.withScriptExtension("html").withVersion(new Version("1.0.0")).build(),
ProvidedResourceTypeCapability.builder().withResourceType("org/apache/sling/bar").withScriptEngine("htl")
- .withScriptExtension("html").withVersion(new Version("1.0.0")).withSelectors(new LinkedHashSet<>(Arrays.asList("depth1"
- , "100"))).build(),
+ .withScriptExtension("html").withVersion(new Version("1.0.0")).withSelectors(Arrays.asList("depth1"
+ , "100")).build(),
ProvidedResourceTypeCapability.builder().withResourceType("org/apache/sling/bar").withScriptEngine("htl")
- .withScriptExtension("html").withVersion(new Version("1.0.0")).withSelectors(new LinkedHashSet<>(Arrays.asList("depth1"
- , "200"))).build(),
+ .withScriptExtension("html").withVersion(new Version("1.0.0")).withSelectors(Arrays.asList("depth1"
+ , "200")).build(),
ProvidedResourceTypeCapability.builder().withResourceType("org/apache/sling/bar").withScriptEngine("htl")
- .withScriptExtension("html").withVersion(new Version("1.0.0")).withSelectors(new LinkedHashSet<>(Arrays.asList("depth1"
- , "depth2", "100"))).build(),
+ .withScriptExtension("html").withVersion(new Version("1.0.0")).withSelectors(Arrays.asList("depth1"
+ , "depth2", "100")).build(),
// org/apache/sling/foo
ProvidedResourceTypeCapability.builder().withResourceType("org/apache/sling/foo").withScriptEngine("htl")
.withScriptExtension("html").build(),
ProvidedResourceTypeCapability.builder().withResourceType("org/apache/sling/foo").withScriptEngine("htl")
- .withScriptExtension("html").withSelectors(new LinkedHashSet<>(Arrays.asList("depth1"
- , "100"))).build(),
+ .withScriptExtension("html").withSelectors(Arrays.asList("depth1"
+ , "100")).build(),
ProvidedResourceTypeCapability.builder().withResourceType("org/apache/sling/foo").withScriptEngine("htl")
- .withScriptExtension("html").withSelectors(new LinkedHashSet<>(Arrays.asList("depth1"
- , "200"))).build(),
+ .withScriptExtension("html").withSelectors(Arrays.asList("depth1"
+ , "200")).build(),
+
ProvidedResourceTypeCapability.builder().withResourceType("org/apache/sling/foo").withScriptEngine("htl")
- .withScriptExtension("html").withSelectors(new LinkedHashSet<>(Arrays.asList("depth1"
- , "depth2", "100"))).build(),
+ .withScriptExtension("html").withSelectors(Arrays.asList("depth1"
+ , "depth1", "depth3")).build(),
+ ProvidedResourceTypeCapability.builder().withResourceType("org/apache/sling/foo").withScriptEngine("htl")
+ .withScriptExtension("html").withSelectors(Arrays.asList("depth1"
+ , "depth2", "100")).build(),
// org/apache/sling/foo/depth1/depth2/depth3
ProvidedResourceTypeCapability.builder().withResourceType("org/apache/sling/foo/depth1/depth2/depth3")
@@ -82,43 +85,43 @@
"/apache/sling/bar").build(),
ProvidedResourceTypeCapability.builder().withResourceType("org/apache/sling/foo/depth1/depth2/depth3")
.withScriptEngine("htl").withScriptExtension("html")
- .withSelectors(new LinkedHashSet<>(Arrays.asList("depth3-selector"))).build(),
+ .withSelectors(Arrays.asList("depth3-selector")).build(),
// org.apache.sling.foobar/1.0.0
ProvidedResourceTypeCapability.builder().withResourceType("org.apache.sling.foobar").withScriptEngine("htl")
.withScriptExtension("html").withVersion(new Version("1.0.0")).withExtendsResourceType("org/apache/sling/bar").build(),
ProvidedResourceTypeCapability.builder().withResourceType("org.apache.sling.foobar").withScriptEngine("htl")
- .withScriptExtension("html").withVersion(new Version("1.0.0")).withSelectors(new LinkedHashSet<>(Arrays.asList("depth1"
- , "100"))).build(),
+ .withScriptExtension("html").withVersion(new Version("1.0.0")).withSelectors(Arrays.asList("depth1"
+ , "100")).build(),
ProvidedResourceTypeCapability.builder().withResourceType("org.apache.sling.foobar").withScriptEngine("htl")
- .withScriptExtension("html").withVersion(new Version("1.0.0")).withSelectors(new LinkedHashSet<>(Arrays.asList("depth1"
- , "200"))).build(),
+ .withScriptExtension("html").withVersion(new Version("1.0.0")).withSelectors(Arrays.asList("depth1"
+ , "200")).build(),
ProvidedResourceTypeCapability.builder().withResourceType("org.apache.sling.foobar").withScriptEngine("htl")
- .withScriptExtension("html").withVersion(new Version("1.0.0")).withSelectors(new LinkedHashSet<>(Arrays.asList("depth1"
- , "depth2", "100"))).build(),
+ .withScriptExtension("html").withVersion(new Version("1.0.0")).withSelectors(Arrays.asList("depth1"
+ , "depth2", "100")).build(),
// org.apache.sling.foobar
ProvidedResourceTypeCapability.builder().withResourceType("org.apache.sling.foobar")
.withExtendsResourceType("org/apache/sling/bar").build(),
ProvidedResourceTypeCapability.builder().withResourceType("org.apache.sling.foobar").withScriptEngine("htl")
- .withScriptExtension("html").withSelectors(new LinkedHashSet<>(Arrays.asList("depth1"
- , "100"))).build(),
+ .withScriptExtension("html").withSelectors(Arrays.asList("depth1"
+ , "100")).build(),
ProvidedResourceTypeCapability.builder().withResourceType("org.apache.sling.foobar").withScriptEngine("htl")
- .withScriptExtension("html").withSelectors(new LinkedHashSet<>(Arrays.asList("depth1"
- , "200"))).build(),
+ .withScriptExtension("html").withSelectors(Arrays.asList("depth1"
+ , "200")).build(),
ProvidedResourceTypeCapability.builder().withResourceType("org.apache.sling.foobar").withScriptEngine("htl")
- .withScriptExtension("html").withSelectors(new LinkedHashSet<>(Arrays.asList("depth1"
- , "depth2", "100"))).build(),
+ .withScriptExtension("html").withSelectors(Arrays.asList("depth1"
+ , "depth2", "100")).build(),
ProvidedResourceTypeCapability.builder().withResourceType("org.apache.sling.foobar").withScriptEngine("htl")
.withScriptExtension("html").withRequestMethod("GET").build(),
ProvidedResourceTypeCapability.builder().withResourceType("org.apache.sling.foobar").withScriptEngine("htl")
- .withScriptExtension("html").withRequestMethod("GET").withSelectors(new LinkedHashSet<>(Arrays.asList("test")))
+ .withScriptExtension("html").withRequestMethod("GET").withSelectors(Arrays.asList("test"))
.build(),
ProvidedResourceTypeCapability.builder().withResourceType("org.apache.sling.foobar").withScriptEngine("htl")
- .withScriptExtension("html").withRequestMethod("GET").withSelectors(new LinkedHashSet<>(Arrays.asList("test")))
+ .withScriptExtension("html").withRequestMethod("GET").withSelectors(Arrays.asList("test"))
.withRequestExtension("txt").build(),
ProvidedResourceTypeCapability.builder().withResourceType("org.apache.sling.foobar").withScriptEngine("htl")
- .withScriptExtension("html").withSelectors(new LinkedHashSet<>(Arrays.asList("test")))
+ .withScriptExtension("html").withSelectors(Arrays.asList("test"))
.withRequestExtension("txt").build(),
// sling
@@ -161,7 +164,7 @@
ProvidedResourceTypeCapability.builder().withResourceType("libs/sling/test").withScriptEngine("thymeleaf")
.withScriptExtension("html").build(),
ProvidedResourceTypeCapability.builder().withResourceType("libs/sling/test").withScriptEngine("rhino")
- .withScriptExtension("js").withSelectors(new HashSet<>(Arrays.asList("merged"))).build(),
+ .withScriptExtension("js").withSelectors(Arrays.asList("merged")).build(),
ProvidedResourceTypeCapability.builder().withResourceType("libs/sling/test2").withScriptEngine("jsp")
.withScriptExtension("jsp").withRequestExtension("html").build()
));
@@ -192,7 +195,7 @@
ProvidedResourceTypeCapability.builder().withResourceType("sling/scriptingbundle/includeexclude")
.withScriptEngine("htl").withScriptExtension("html").build(),
ProvidedResourceTypeCapability.builder().withResourceType("sling/scriptingbundle/includeexclude")
- .withSelectors(new HashSet<>(Arrays.asList("selector"))).withScriptEngine("htl").withScriptExtension("html")
+ .withSelectors(Arrays.asList("selector")).withScriptEngine("htl").withScriptExtension("html")
.build()
));
verifyCapabilities(capabilities, pExpected, Collections.emptySet(), Collections.emptySet(), Collections.emptySet());
diff --git a/src/test/java/org/apache/sling/scriptingbundle/plugin/processor/FileProcessorTest.java b/src/test/java/org/apache/sling/scriptingbundle/plugin/processor/FileProcessorTest.java
index f692ee2..55e074c 100644
--- a/src/test/java/org/apache/sling/scriptingbundle/plugin/processor/FileProcessorTest.java
+++ b/src/test/java/org/apache/sling/scriptingbundle/plugin/processor/FileProcessorTest.java
@@ -117,7 +117,7 @@
.withResourceTypes(new HashSet<>(Arrays.asList("my/resource", "/apps/my/resource")))
.withVersion(MY_RESOURCE_TYPE.getVersion())
.withRequestMethod("POST")
- .withSelectors(new HashSet<>(Arrays.asList("selectorb", "selectora")))
+ .withSelectors(Arrays.asList("selectorb", "selectora"))
.withScriptEngine("htl")
.withScriptExtension("html")
.build();
diff --git a/src/test/resources/project-1/src/main/scripts/org/apache/sling/foo/depth1/depth1/depth3.html b/src/test/resources/project-1/src/main/scripts/org/apache/sling/foo/depth1/depth1/depth3.html
new file mode 100644
index 0000000..2853663
--- /dev/null
+++ b/src/test/resources/project-1/src/main/scripts/org/apache/sling/foo/depth1/depth1/depth3.html
@@ -0,0 +1,18 @@
+<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ ~ Licensed to the Apache Software Foundation (ASF) under one
+ ~ or more contributor license agreements. See the NOTICE file
+ ~ distributed with this work for additional information
+ ~ regarding copyright ownership. The ASF licenses this file
+ ~ to you under the Apache License, Version 2.0 (the
+ ~ "License"); you may not use this file except in compliance
+ ~ with the License. You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing,
+ ~ software distributed under the License is distributed on an
+ ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ ~ KIND, either express or implied. See the License for the
+ ~ specific language governing permissions and limitations
+ ~ under the License.
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->