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

[isis] branch master updated: ISIS-2426: tooling: fix relative path resolution when building maven tree

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

ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git


The following commit(s) were added to refs/heads/master by this push:
     new 5d201cf  ISIS-2426: tooling: fix relative path resolution when building maven tree
5d201cf is described below

commit 5d201cf1f65e701e6da2c82f8af3c3589d60d4a2
Author: Andi Huber <ah...@apache.org>
AuthorDate: Wed Sep 9 13:40:49 2020 +0200

    ISIS-2426: tooling: fix relative path resolution when building maven
    tree
---
 .../tooling/projectmodel/ProjectNodeFactory.java   |  8 +++++--
 .../projectmodel/maven/SimpleModelResolver.java    | 26 +++++++++++++++-------
 .../project-model/src/main/resources/log4j2.xml    |  2 +-
 3 files changed, 25 insertions(+), 11 deletions(-)

diff --git a/tooling/project-model/src/main/java/org/apache/isis/tooling/projectmodel/ProjectNodeFactory.java b/tooling/project-model/src/main/java/org/apache/isis/tooling/projectmodel/ProjectNodeFactory.java
index a4ec7ab..4fad900 100644
--- a/tooling/project-model/src/main/java/org/apache/isis/tooling/projectmodel/ProjectNodeFactory.java
+++ b/tooling/project-model/src/main/java/org/apache/isis/tooling/projectmodel/ProjectNodeFactory.java
@@ -21,6 +21,7 @@ package org.apache.isis.tooling.projectmodel;
 import java.io.File;
 import java.util.Objects;
 import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 import org.apache.maven.model.Model;
 import org.gradle.tooling.GradleConnector;
@@ -82,8 +83,11 @@ public class ProjectNodeFactory {
     }
     
     private static Iterable<Model> childrenOf(Model mavenProj, SimpleModelResolver modelResolver) {
-        return mavenProj.getModules()
-        .stream()
+        
+        return Stream.<String>concat(
+                mavenProj.getProfiles().stream().flatMap(profile->profile.getModules().stream()),
+                mavenProj.getModules().stream())
+        .distinct()
         .map(name->modelResolver.lookupCatalogForSubmoduleOf(mavenProj, name))
         .filter(Objects::nonNull)
         .collect(Collectors.toList());
diff --git a/tooling/project-model/src/main/java/org/apache/isis/tooling/projectmodel/maven/SimpleModelResolver.java b/tooling/project-model/src/main/java/org/apache/isis/tooling/projectmodel/maven/SimpleModelResolver.java
index c7309ae..7901686 100644
--- a/tooling/project-model/src/main/java/org/apache/isis/tooling/projectmodel/maven/SimpleModelResolver.java
+++ b/tooling/project-model/src/main/java/org/apache/isis/tooling/projectmodel/maven/SimpleModelResolver.java
@@ -19,6 +19,7 @@
 package org.apache.isis.tooling.projectmodel.maven;
 
 import java.io.File;
+import java.io.IOException;
 import java.net.URL;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -51,10 +52,13 @@ public class SimpleModelResolver implements ModelResolver {
     private final Map<String, Model> projectPomCatalog = new HashMap<>();
     private final Map<String, String> pathToArtifactMap = new HashMap<>();
     private final Map<String, Repository> repositories = new LinkedHashMap<>();
+    private final Set<String> directoriesToIgnore = new HashSet<>();
     
     @Getter private Model rootModel;
     
     public SimpleModelResolver(final File projectRoot) {
+        directoriesToIgnore.add("target");
+        directoriesToIgnore.add("target-ide");
         populateCatalogs(projectRoot);
     }
 
@@ -138,10 +142,17 @@ public class SimpleModelResolver implements ModelResolver {
         return this;
     }
     
-    public Model lookupCatalogForSubmoduleOf(Model mavenProj, String name) {
+    
+    public Model lookupCatalogForSubmoduleOf(Model mavenProj, String realtivePath) {
         
-        val localPath = new File(mavenProj.getPomFile().getParentFile(), name)
-                .getAbsolutePath();
+        final String localPath;
+        try {
+            localPath = new File(mavenProj.getPomFile().getParentFile(), realtivePath)
+                    .getCanonicalPath();
+        } catch (IOException e) {
+            log.error("cannot resolve local path {} relative to {}", realtivePath, mavenProj.getPomFile().getParent(), e);
+            return null;
+        }
         
         val artifactKey = pathToArtifactMap.get(localPath);
         if(artifactKey==null) {
@@ -161,7 +172,9 @@ public class SimpleModelResolver implements ModelResolver {
         val localRootPath = projectRoot.getAbsolutePath();
         
         _Files.searchFiles(projectRoot, 
-                file->!"target".equals(file.getName()), 
+                file->
+                    !file.getName().startsWith(".")
+                    && !directoriesToIgnore.contains(file.getName()), 
                 file->"pom.xml".equals(file.getName()))
         .stream()
         .forEach(pomFile->{
@@ -181,10 +194,7 @@ public class SimpleModelResolver implements ModelResolver {
                 pathToArtifactMap.put(localPath, artifactKey);
             }
         });
+        
     }
-
-
-
-
     
 }
diff --git a/tooling/project-model/src/main/resources/log4j2.xml b/tooling/project-model/src/main/resources/log4j2.xml
index 5cea1c5..9f54e77 100644
--- a/tooling/project-model/src/main/resources/log4j2.xml
+++ b/tooling/project-model/src/main/resources/log4j2.xml
@@ -6,7 +6,7 @@
         </Console>
     </Appenders>
     <Loggers>
-        <Logger name="org.apache.isis.tooling" level="info" additivity="true">
+        <Logger name="org.apache.isis.tooling" level="info" additivity="false">
             <appender-ref ref="console" />
         </Logger>
         <Root level="warn" additivity="false">