You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by kw...@apache.org on 2021/08/12 10:15:41 UTC

[sling-scriptingbundle-maven-plugin] 01/01: SLING-10726 support same name selectors

This is an automated email from the ASF dual-hosted git repository.

kwin pushed a commit to branch bugfix/same-name-selectors
in repository https://gitbox.apache.org/repos/asf/sling-scriptingbundle-maven-plugin.git

commit 29734ef56f9fc8ec64dbf9f3f514c18f0db2986e
Author: Konrad Windszus <kw...@apache.org>
AuthorDate: Thu Aug 12 12:15:30 2021 +0200

    SLING-10726 support same name selectors
---
 .../plugin/capability/Capabilities.java            |  3 +-
 .../capability/ProvidedResourceTypeCapability.java | 13 +++--
 .../capability/RequiredResourceTypeCapability.java |  4 +-
 .../plugin/processor/FileProcessor.java            |  3 +-
 .../scriptingbundle/plugin/AbstractPluginTest.java | 65 +++++++++++-----------
 .../plugin/processor/FileProcessorTest.java        |  2 +-
 .../org/apache/sling/foo/depth1/depth1/depth3.html | 18 ++++++
 7 files changed, 66 insertions(+), 42 deletions(-)

diff --git a/src/main/java/org/apache/sling/scriptingbundle/plugin/capability/Capabilities.java b/src/main/java/org/apache/sling/scriptingbundle/plugin/capability/Capabilities.java
index e332ac4..299f362 100644
--- a/src/main/java/org/apache/sling/scriptingbundle/plugin/capability/Capabilities.java
+++ b/src/main/java/org/apache/sling/scriptingbundle/plugin/capability/Capabilities.java
@@ -20,6 +20,7 @@ package org.apache.sling.scriptingbundle.plugin.capability;
 
 import java.nio.file.Files;
 import java.nio.file.Path;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.HashSet;
 import java.util.LinkedHashSet;
@@ -177,7 +178,7 @@ public class Capabilities {
         return new Capabilities(providedResourceTypeCapabilities, providedScriptCapabilities, requiredResourceTypeCapabilities);
     }
 
-    private void processListAttribute(@NotNull String capabilityAttribute, @NotNull StringBuilder builder, @NotNull Set<String> values) {
+    private void processListAttribute(@NotNull String capabilityAttribute, @NotNull StringBuilder builder, @NotNull Collection<String> values) {
         builder.append(capabilityAttribute).append("=").append("\"");
         int valuesSize = values.size();
         int valueIndex = 0;
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 2b425c7..ce2b68f 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
@@ -20,6 +20,7 @@ package org.apache.sling.scriptingbundle.plugin.capability;
 
 import java.util.Collections;
 import java.util.HashSet;
+import java.util.List;
 import java.util.Objects;
 import java.util.Set;
 
@@ -36,12 +37,12 @@ public class ProvidedResourceTypeCapability {
     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;
@@ -92,8 +93,8 @@ public class ProvidedResourceTypeCapability {
     }
 
     @NotNull
-    public Set<String> getSelectors() {
-        return Collections.unmodifiableSet(selectors);
+    public List<String> getSelectors() {
+        return Collections.unmodifiableList(selectors);
     }
 
     @Override
@@ -138,7 +139,7 @@ public class ProvidedResourceTypeCapability {
         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()) {
@@ -186,7 +187,7 @@ public class ProvidedResourceTypeCapability {
             return this;
         }
 
-        public Builder withSelectors(@NotNull Set<String> selectors) {
+        public Builder withSelectors(@NotNull List<String> selectors) {
             this.selectors = selectors;
             return this;
         }
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 class RequiredResourceTypeCapability {
     }
 
     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..ca2c8ae 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,6 +23,7 @@ import java.io.UncheckedIOException;
 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;
@@ -155,7 +156,7 @@ public class FileProcessor {
             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 static org.junit.Assert.fail;
 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 @@ public abstract class AbstractPluginTest {
                     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 @@ public abstract class AbstractPluginTest {
                                     "/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 @@ public abstract class AbstractPluginTest {
                     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 @@ public abstract class AbstractPluginTest {
                     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 @@ public class FileProcessorTest {
                 .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.
+  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->