You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ra...@apache.org on 2020/04/09 08:20:04 UTC

[sling-scriptingbundle-maven-plugin] branch master updated: SLING-9346 - Skip files for which a script engine mapping doesn't exist

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

radu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-scriptingbundle-maven-plugin.git


The following commit(s) were added to refs/heads/master by this push:
     new 603a3b9  SLING-9346 - Skip files for which a script engine mapping doesn't exist
603a3b9 is described below

commit 603a3b95ec7ebbb85d9f9246d249f4963a4a7794
Author: Radu Cotescu <ra...@apache.org>
AuthorDate: Thu Apr 9 10:19:27 2020 +0200

    SLING-9346 - Skip files for which a script engine mapping doesn't exist
---
 .../maven/plugin/FileProcessor.java                | 96 ++++++++++++----------
 .../maven/plugin/PathOnlyScriptAnalyser.java       | 54 ++++++------
 .../capability/ProvidedScriptCapability.java       |  6 +-
 3 files changed, 84 insertions(+), 72 deletions(-)

diff --git a/src/main/java/org/apache/sling/scriptingbundle/maven/plugin/FileProcessor.java b/src/main/java/org/apache/sling/scriptingbundle/maven/plugin/FileProcessor.java
index f78f5d2..fc94c9b 100644
--- a/src/main/java/org/apache/sling/scriptingbundle/maven/plugin/FileProcessor.java
+++ b/src/main/java/org/apache/sling/scriptingbundle/maven/plugin/FileProcessor.java
@@ -29,6 +29,7 @@ import java.util.Map;
 import java.util.Optional;
 import java.util.Set;
 
+import org.apache.commons.io.FilenameUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.maven.plugin.logging.Log;
 import org.apache.sling.scripting.bundle.tracker.ResourceType;
@@ -114,56 +115,63 @@ public class FileProcessor {
 
     void processScriptFile(@NotNull Path resourceTypeDirectory, @NotNull Path scriptPath,
                                    @NotNull ResourceType resourceType, @NotNull Set<ProvidedResourceTypeCapability> providedCapabilities) {
-        Path scriptFile = scriptPath.getFileName();
-        if (scriptFile != null) {
-            Path relativeResourceTypeFolder = resourceTypeDirectory.relativize(scriptPath);
-            int pathSegments = relativeResourceTypeFolder.getNameCount();
-            LinkedHashSet<String> selectors = new LinkedHashSet<>();
-            if (pathSegments > 1) {
-                for (int i = 0; i < pathSegments - 1; i++) {
-                    selectors.add(relativeResourceTypeFolder.getName(i).toString());
-                }
-            }
-            String scriptFileName = scriptFile.toString();
-            Script script = Script.parseScript(scriptFileName);
-            if (script != null) {
-                String scriptEngine = scriptEngineMappings.get(script.getScriptExtension());
-                if (scriptEngine != null) {
-                    String scriptName = script.getName();
-                    Set<String> searchPathProcessesResourceTypes = processSearchPathResourceTypes(resourceType);
-                    if (scriptName != null && !resourceType.getResourceLabel().equals(scriptName)) {
-                        selectors.add(script.getName());
+        String filePath = scriptPath.toString();
+        String extension = FilenameUtils.getExtension(filePath);
+        if (StringUtils.isNotEmpty(extension) && scriptEngineMappings.containsKey(extension)) {
+            Path scriptFile = scriptPath.getFileName();
+            if (scriptFile != null) {
+                Path relativeResourceTypeFolder = resourceTypeDirectory.relativize(scriptPath);
+                int pathSegments = relativeResourceTypeFolder.getNameCount();
+                LinkedHashSet<String> selectors = new LinkedHashSet<>();
+                if (pathSegments > 1) {
+                    for (int i = 0; i < pathSegments - 1; i++) {
+                        selectors.add(relativeResourceTypeFolder.getName(i).toString());
                     }
-                    Optional<ProvidedResourceTypeCapability> extendsCapability = Optional.empty();
-                    if (selectors.isEmpty() && StringUtils.isEmpty(script.getRequestExtension()) && StringUtils.isEmpty(script.getRequestMethod())) {
-                         extendsCapability =
-                                 providedCapabilities.stream().filter(capability -> StringUtils.isNotEmpty(capability.getExtendsResourceType()) &&
-                                 capability.getResourceTypes().equals(searchPathProcessesResourceTypes) &&
-                                 capability.getSelectors().isEmpty() && StringUtils.isEmpty(capability.getRequestExtension()) &&
-                                 StringUtils.isEmpty(capability.getRequestMethod())).findAny();
+                }
+                String scriptFileName = scriptFile.toString();
+                Script script = Script.parseScript(scriptFileName);
+                if (script != null) {
+                    String scriptEngine = scriptEngineMappings.get(script.getScriptExtension());
+                    if (scriptEngine != null) {
+                        String scriptName = script.getName();
+                        Set<String> searchPathProcessesResourceTypes = processSearchPathResourceTypes(resourceType);
+                        if (scriptName != null && !resourceType.getResourceLabel().equals(scriptName)) {
+                            selectors.add(script.getName());
+                        }
+                        Optional<ProvidedResourceTypeCapability> extendsCapability = Optional.empty();
+                        if (selectors.isEmpty() && StringUtils.isEmpty(script.getRequestExtension()) &&
+                                StringUtils.isEmpty(script.getRequestMethod())) {
+                            extendsCapability =
+                                    providedCapabilities.stream()
+                                            .filter(capability -> StringUtils.isNotEmpty(capability.getExtendsResourceType()) &&
+                                                    capability.getResourceTypes().equals(searchPathProcessesResourceTypes) &&
+                                                    capability.getSelectors().isEmpty() &&
+                                                    StringUtils.isEmpty(capability.getRequestExtension()) &&
+                                                    StringUtils.isEmpty(capability.getRequestMethod())).findAny();
+                        }
+                        ProvidedResourceTypeCapability.Builder builder = ProvidedResourceTypeCapability.builder()
+                                .withResourceTypes(searchPathProcessesResourceTypes)
+                                .withVersion(resourceType.getVersion())
+                                .withSelectors(selectors)
+                                .withRequestExtension(script.getRequestExtension())
+                                .withRequestMethod(script.getRequestMethod())
+                                .withScriptEngine(scriptEngine)
+                                .withScriptExtension(script.getScriptExtension());
+                        extendsCapability.ifPresent(capability -> {
+                                    builder.withExtendsResourceType(capability.getExtendsResourceType());
+                                    providedCapabilities.remove(capability);
+                                }
+                        );
+                        providedCapabilities.add(builder.build());
+                    } else {
+                        log.warn(String.format("Cannot find a script engine mapping for script %s.", scriptPath.toString()));
                     }
-                    ProvidedResourceTypeCapability.Builder builder = ProvidedResourceTypeCapability.builder()
-                            .withResourceTypes(searchPathProcessesResourceTypes)
-                            .withVersion(resourceType.getVersion())
-                            .withSelectors(selectors)
-                            .withRequestExtension(script.getRequestExtension())
-                            .withRequestMethod(script.getRequestMethod())
-                            .withScriptEngine(scriptEngine)
-                            .withScriptExtension(script.getScriptExtension());
-                    extendsCapability.ifPresent(capability -> {
-                                builder.withExtendsResourceType(capability.getExtendsResourceType());
-                                providedCapabilities.remove(capability);
-                            }
-                    );
-                    providedCapabilities.add(builder.build());
                 } else {
-                    log.warn(String.format("Cannot find a script engine mapping for script %s.", scriptPath.toString()));
+                    log.warn(String.format("File %s does not denote a script.", scriptPath.toString()));
                 }
             } else {
-                log.warn(String.format("File %s does not denote a script.", scriptPath.toString()));
+                log.warn(String.format("Skipping path %s since it has 0 elements.", scriptPath.toString()));
             }
-        } else {
-            log.warn(String.format("Skipping path %s since it has 0 elements.", scriptPath.toString()));
         }
     }
 
diff --git a/src/main/java/org/apache/sling/scriptingbundle/maven/plugin/PathOnlyScriptAnalyser.java b/src/main/java/org/apache/sling/scriptingbundle/maven/plugin/PathOnlyScriptAnalyser.java
index a59db74..cdb6099 100644
--- a/src/main/java/org/apache/sling/scriptingbundle/maven/plugin/PathOnlyScriptAnalyser.java
+++ b/src/main/java/org/apache/sling/scriptingbundle/maven/plugin/PathOnlyScriptAnalyser.java
@@ -27,6 +27,8 @@ import java.util.Map;
 import java.util.Set;
 import java.util.function.Predicate;
 
+import org.apache.commons.io.FilenameUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.maven.plugin.logging.Log;
 import org.apache.sling.scriptingbundle.maven.plugin.capability.Capabilities;
 import org.apache.sling.scriptingbundle.maven.plugin.capability.ProvidedScriptCapability;
@@ -50,36 +52,38 @@ public class PathOnlyScriptAnalyser {
 
     public @NotNull Capabilities getProvidedScriptCapability(@NotNull Path file) {
         if (Files.isRegularFile(file) && file.startsWith(scriptsDirectory)) {
-            boolean useFile = true;
-            Path parent = file.getParent();
-            Path loopParent = parent;
-            while (useFile && loopParent != null && !loopParent.equals(scriptsDirectory)) {
-                useFile = isNotAResourceTypeFolder.test(loopParent);
-                loopParent = loopParent.getParent();
-            }
-            if (parent != null && useFile) {
-                Path fileName = file.getFileName();
-                if (fileName != null) {
-                    String name = fileName.toString();
-                    int dotLastIndex = name.lastIndexOf('.');
-                    if (dotLastIndex > -1 && dotLastIndex != name.length() - 1) {
-                        String scriptPath = "/" + scriptsDirectory.relativize(file).toString();
-                        ProvidedScriptCapability providedScriptCapability =
-                                ProvidedScriptCapability.builder(scriptEngineMappings).withPath(scriptPath).build();
-                        Path requires = parent.resolve(MetadataMojo.REQUIRES_FILE);
-                        Set<RequiredResourceTypeCapability> requiredCapabilities = new HashSet<>();
-                        if (Files.exists(requires)) {
-                            fileProcessor.processRequiresFile(requires, requiredCapabilities);
+            String filePath = file.toString();
+            String extension = FilenameUtils.getExtension(filePath);
+            if (StringUtils.isNotEmpty(extension) && scriptEngineMappings.containsKey(extension)) {
+                boolean useFile = true;
+                Path parent = file.getParent();
+                Path loopParent = parent;
+                while (useFile && loopParent != null && !loopParent.equals(scriptsDirectory)) {
+                    useFile = isNotAResourceTypeFolder.test(loopParent);
+                    loopParent = loopParent.getParent();
+                }
+                if (parent != null && useFile) {
+                    Path fileName = file.getFileName();
+                    if (fileName != null) {
+                        String name = fileName.toString();
+                        int dotLastIndex = name.lastIndexOf('.');
+                        if (dotLastIndex > -1 && dotLastIndex != name.length() - 1) {
+                            String scriptPath = "/" + scriptsDirectory.relativize(file).toString();
+                            ProvidedScriptCapability providedScriptCapability =
+                                    ProvidedScriptCapability.builder(scriptEngineMappings).withPath(scriptPath).build();
+                            Path requires = parent.resolve(MetadataMojo.REQUIRES_FILE);
+                            Set<RequiredResourceTypeCapability> requiredCapabilities = new HashSet<>();
+                            if (Files.exists(requires)) {
+                                fileProcessor.processRequiresFile(requires, requiredCapabilities);
+                            }
+                            return new Capabilities(Collections.emptySet(),
+                                    new HashSet<>(Arrays.asList(providedScriptCapability)),
+                                    requiredCapabilities);
                         }
-                        return new Capabilities(Collections.emptySet(),
-                                new HashSet<>(Arrays.asList(providedScriptCapability)),
-                                requiredCapabilities);
                     }
                 }
             }
         }
         return Capabilities.EMPTY;
     }
-
-
 }
diff --git a/src/main/java/org/apache/sling/scriptingbundle/maven/plugin/capability/ProvidedScriptCapability.java b/src/main/java/org/apache/sling/scriptingbundle/maven/plugin/capability/ProvidedScriptCapability.java
index d7e157a..63c04f1 100644
--- a/src/main/java/org/apache/sling/scriptingbundle/maven/plugin/capability/ProvidedScriptCapability.java
+++ b/src/main/java/org/apache/sling/scriptingbundle/maven/plugin/capability/ProvidedScriptCapability.java
@@ -90,12 +90,12 @@ public class ProvidedScriptCapability {
                 throw new IllegalStateException(String.format("Path %s does not seem to have an extension.", path));
             }
             String extension = path.substring(lastDotIndex + 1);
-            String scripEngine = scriptEngineMappings.get(extension);
-            if (StringUtils.isEmpty(scripEngine)) {
+            String scriptEngine = scriptEngineMappings.get(extension);
+            if (StringUtils.isEmpty(scriptEngine)) {
                 throw new IllegalStateException(String.format("Path %s does not seem to have an extension mapped to a script engine.",
                         path));
             }
-            return new ProvidedScriptCapability(path, extension, scripEngine);
+            return new ProvidedScriptCapability(path, extension, scriptEngine);
         }
 
         public ProvidedScriptCapability.Builder withPath(String path) {