This is an automated email from the ASF dual-hosted git repository. radu pushed a commit to branch issue/SLING-10815 in repository https://gitbox.apache.org/repos/asf/sling-scriptingbundle-maven-plugin.git
commit 89eff7db38a0925e6f57f5db9e22c83f5f6666a7 Author: Radu Cotescu <[email protected]> AuthorDate: Wed Sep 15 18:19:12 2021 +0200 SLING-10815 - Do not require the presence of a similarly named script as the resource type label to create a capability * removed the artificial restriction --- .../processor/ResourceTypeFolderAnalyser.java | 5 +-- .../processor/ResourceTypeFolderPredicate.java | 24 +--------- .../scriptingbundle/plugin/AbstractPluginTest.java | 52 +++++++++++++++++++--- 3 files changed, 47 insertions(+), 34 deletions(-) diff --git a/src/main/java/org/apache/sling/scriptingbundle/plugin/processor/ResourceTypeFolderAnalyser.java b/src/main/java/org/apache/sling/scriptingbundle/plugin/processor/ResourceTypeFolderAnalyser.java index b7b6820..b3b73b8 100644 --- a/src/main/java/org/apache/sling/scriptingbundle/plugin/processor/ResourceTypeFolderAnalyser.java +++ b/src/main/java/org/apache/sling/scriptingbundle/plugin/processor/ResourceTypeFolderAnalyser.java @@ -70,13 +70,10 @@ public class ResourceTypeFolderAnalyser { fileProcessor.processScriptFile(resourceTypeDirectory, entry, resourceType, providedCapabilities); } } - } else if (Files.isDirectory(entry) && !resourceTypeFolderPredicate.test(entry)) { + } else if (Files.isDirectory(entry)) { try (Stream<Path> selectorFilesStream = Files.walk(entry).filter(Files::isRegularFile).filter(file -> { Path fileParent = file.getParent(); while (!resourceTypeDirectory.equals(fileParent)) { - if (resourceTypeFolderPredicate.test(fileParent)) { - return false; - } fileParent = fileParent.getParent(); } return true; diff --git a/src/main/java/org/apache/sling/scriptingbundle/plugin/processor/ResourceTypeFolderPredicate.java b/src/main/java/org/apache/sling/scriptingbundle/plugin/processor/ResourceTypeFolderPredicate.java index 684c685..e485f2d 100644 --- a/src/main/java/org/apache/sling/scriptingbundle/plugin/processor/ResourceTypeFolderPredicate.java +++ b/src/main/java/org/apache/sling/scriptingbundle/plugin/processor/ResourceTypeFolderPredicate.java @@ -52,36 +52,14 @@ public class ResourceTypeFolderPredicate implements Predicate<Path> { } catch (IllegalArgumentException ignored) { // last segment does not denote a version } - String resourceTypeLabel; if (lastSegment != null) { - String lastSegmentString = lastSegment.toString(); - int lastDotIndex = lastSegmentString.lastIndexOf('.'); - if (lastDotIndex != -1 && lastDotIndex < lastSegmentString.length() - 1) { - resourceTypeLabel = lastSegmentString.substring(++lastDotIndex); - } else { - resourceTypeLabel = lastSegmentString; - } try (DirectoryStream<Path> directoryStream = Files.newDirectoryStream(folder, Files::isRegularFile)) { for (Path path : directoryStream) { Path fileName = path.getFileName(); if (fileName != null) { String childName = fileName.toString(); Script script = Script.parseScript(childName); - if ( - Constants.EXTENDS_FILE.equals(childName) || - ( - script != null && - ( - resourceTypeLabel.equals(script.getName()) || - ( - script.getName() == null && - ( - "html".equals(script.getRequestExtension()) || "GET".equals(script.getRequestMethod()) - ) - ) - ) - ) - ) { + if (Constants.EXTENDS_FILE.equals(childName) || script != null) { return true; } } 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 9a96b9b..323a069 100644 --- a/src/test/java/org/apache/sling/scriptingbundle/plugin/AbstractPluginTest.java +++ b/src/test/java/org/apache/sling/scriptingbundle/plugin/AbstractPluginTest.java @@ -61,6 +61,12 @@ public abstract class AbstractPluginTest { ProvidedResourceTypeCapability.builder().withResourceType("org/apache/sling/bar").withScriptEngine("htl") .withScriptExtension("html").withVersion(new Version("1.0.0")).withSelectors(Arrays.asList("depth1" , "depth2", "100")).build(), + + ProvidedResourceTypeCapability.builder().withResourceType("org/apache/sling/bar/1.0.0/depth1").withScriptEngine("htl").withScriptExtension("html").withSelectors("100").build(), + ProvidedResourceTypeCapability.builder().withResourceType("org/apache/sling/bar/1.0.0/depth1").withScriptEngine("htl").withScriptExtension("html").withSelectors("200").build(), + ProvidedResourceTypeCapability.builder().withResourceType("org/apache/sling/bar/1.0.0/depth1").withScriptEngine("htl").withScriptExtension("html").withSelectors("depth2", "100").build(), + ProvidedResourceTypeCapability.builder().withResourceType("org/apache/sling/bar/1.0.0/depth1/depth2").withScriptEngine("htl").withScriptExtension("html").withSelectors("100").build(), + // org/apache/sling/foo ProvidedResourceTypeCapability.builder().withResourceType("org/apache/sling/foo").withScriptEngine("htl") @@ -78,7 +84,19 @@ public abstract class AbstractPluginTest { ProvidedResourceTypeCapability.builder().withResourceType("org/apache/sling/foo").withScriptEngine("htl") .withScriptExtension("html").withSelectors(Arrays.asList("depth1" , "depth2", "100")).build(), - + ProvidedResourceTypeCapability.builder().withResourceType("org/apache/sling/foo").withScriptEngine("htl").withScriptExtension("html").withSelectors("depth1", "depth2", "depth3", "depth3-selector").build(), + + ProvidedResourceTypeCapability.builder().withResourceType("org/apache/sling/foo/depth1").withScriptEngine("htl").withScriptExtension("html").withSelectors("100").build(), + ProvidedResourceTypeCapability.builder().withResourceType("org/apache/sling/foo/depth1").withScriptEngine("htl").withScriptExtension("html").withSelectors("200").build(), + ProvidedResourceTypeCapability.builder().withResourceType("org/apache/sling/foo/depth1").withScriptEngine("htl").withScriptExtension("html").withSelectors("depth1", "depth3").build(), + ProvidedResourceTypeCapability.builder().withResourceType("org/apache/sling/foo/depth1").withScriptEngine("htl").withScriptExtension("html").withSelectors("depth2", "100").build(), + ProvidedResourceTypeCapability.builder().withResourceType("org/apache/sling/foo/depth1").withScriptEngine("htl").withScriptExtension("html").withSelectors("depth2", "depth3", "depth3-selector").build(), + + ProvidedResourceTypeCapability.builder().withResourceType("org/apache/sling/foo/depth1/depth1").withScriptEngine("htl").withScriptExtension("html").withSelectors("depth3").build(), + + ProvidedResourceTypeCapability.builder().withResourceType("org/apache/sling/foo/depth1/depth2").withScriptEngine("htl").withScriptExtension("html").withSelectors("100").build(), + ProvidedResourceTypeCapability.builder().withResourceType("org/apache/sling/foo/depth1/depth2").withScriptEngine("htl").withScriptExtension("html").withSelectors("depth3", "depth3-selector").build(), + // org/apache/sling/foo/depth1/depth2/depth3 ProvidedResourceTypeCapability.builder().withResourceType("org/apache/sling/foo/depth1/depth2/depth3") .withExtendsResourceType("org" + @@ -99,6 +117,16 @@ public abstract class AbstractPluginTest { ProvidedResourceTypeCapability.builder().withResourceType("org.apache.sling.foobar").withScriptEngine("htl") .withScriptExtension("html").withVersion(new Version("1.0.0")).withSelectors(Arrays.asList("depth1" , "depth2", "100")).build(), + + ProvidedResourceTypeCapability.builder().withResourceType("org.apache.sling.foobar/1.0.0/depth1").withScriptEngine( + "htl").withScriptExtension("html").withSelectors("100").build(), + ProvidedResourceTypeCapability.builder().withResourceType("org.apache.sling.foobar/1.0.0/depth1").withScriptEngine( + "htl").withScriptExtension("html").withSelectors("200").build(), + ProvidedResourceTypeCapability.builder().withResourceType("org.apache.sling.foobar/1.0.0/depth1").withScriptEngine( + "htl").withScriptExtension("html").withSelectors("depth2", "100").build(), + ProvidedResourceTypeCapability.builder().withResourceType("org.apache.sling.foobar/1.0.0/depth1/depth2").withScriptEngine( + "htl").withScriptExtension("html").withSelectors("100").build(), + // org.apache.sling.foobar ProvidedResourceTypeCapability.builder().withResourceType("org.apache.sling.foobar") @@ -123,6 +151,15 @@ public abstract class AbstractPluginTest { ProvidedResourceTypeCapability.builder().withResourceType("org.apache.sling.foobar").withScriptEngine("htl") .withScriptExtension("html").withSelectors(Arrays.asList("test")) .withRequestExtension("txt").build(), + ProvidedResourceTypeCapability.builder().withResourceType("org.apache.sling.foobar").withScriptEngine("htl").withScriptExtension("html").withSelectors("1.0.0").build(), + ProvidedResourceTypeCapability.builder().withResourceType("org.apache.sling.foobar").withScriptEngine("htl").withScriptExtension("html").withSelectors("1.0.0", "depth1", "depth2", "100").build(), + ProvidedResourceTypeCapability.builder().withResourceType("org.apache.sling.foobar").withScriptEngine("htl").withScriptExtension("html").withSelectors("1.0.0", "depth1", "100").build(), + ProvidedResourceTypeCapability.builder().withResourceType("org.apache.sling.foobar").withScriptEngine("htl").withScriptExtension("html").withSelectors("1.0.0", "depth1", "200").build(), + ProvidedResourceTypeCapability.builder().withResourceType("org.apache.sling.foobar/depth1").withScriptEngine("htl").withScriptExtension("html").withSelectors("100").build(), + ProvidedResourceTypeCapability.builder().withResourceType("org.apache.sling.foobar/depth1").withScriptEngine("htl").withScriptExtension("html").withSelectors("200").build(), + ProvidedResourceTypeCapability.builder().withResourceType("org.apache.sling.foobar/depth1").withScriptEngine("htl").withScriptExtension("html").withSelectors("depth2", "100").build(), + ProvidedResourceTypeCapability.builder().withResourceType("org.apache.sling.foobar/depth1/depth2").withScriptEngine("htl").withScriptExtension("html").withSelectors("100").build(), + // sling ProvidedResourceTypeCapability.builder().withResourceType("sling").withScriptEngine("htl").withScriptExtension("html") @@ -162,17 +199,17 @@ public abstract class AbstractPluginTest { ProvidedResourceTypeCapability.builder().withResourceType("libs/sling/test").withScriptEngine("rhino") .withScriptExtension("js").withSelectors(Arrays.asList("merged")).build(), ProvidedResourceTypeCapability.builder().withResourceType("libs/sling/test2").withScriptEngine("jsp") - .withScriptExtension("jsp").withRequestExtension("html").build() - )); - Set<ProvidedScriptCapability> expectedScriptCapabilities = new HashSet<>(Arrays.asList( - ProvidedScriptCapability.builder(scriptEngineMappings).withPath("/libs/sling/commons/template.html").build(), - ProvidedScriptCapability.builder(scriptEngineMappings).withPath("/libs/sling/utils/initialiseWarpDrive.html").build() + .withScriptExtension("jsp").withRequestExtension("html").build(), + ProvidedResourceTypeCapability.builder().withResourceType("libs/sling/commons").withScriptEngine("thymeleaf") + .withScriptExtension("html").withSelectors("template").build(), + ProvidedResourceTypeCapability.builder().withResourceType("libs/sling/utils").withScriptEngine("thymeleaf") + .withScriptExtension("html").withSelectors("initialiseWarpDrive").build() )); Set<RequiredResourceTypeCapability> expectedRequired = new HashSet<>(Arrays.asList( RequiredResourceTypeCapability.builder().withResourceType("sling/scripting/warpDrive") .withVersionRange(VersionRange.valueOf("[1.0.0,2.0.0)")).withIsOptional().build() )); - verifyCapabilities(capabilities, pExpected, expectedRequired, expectedScriptCapabilities); + verifyCapabilities(capabilities, pExpected, expectedRequired, Collections.emptySet()); } finally { cleanUp("project-2"); } @@ -273,5 +310,6 @@ public abstract class AbstractPluginTest { if (extraProvidedScripts.length() > 0) { fail(extraProvidedScripts.toString()); } + } }
