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/10 09:00:39 UTC
[isis] 02/02: ISIS-2426: project-model: fix maven root model not
found (tooling)
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
commit 89514f31c7be149be64f266dc0a800b2718aa35a
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Sep 10 10:59:29 2020 +0200
ISIS-2426: project-model: fix maven root model not found (tooling)
---
.../tooling/projectmodel/ProjectNodeFactory.java | 38 +++++++++++++++-------
.../projectmodel/maven/MavenModelFactory.java | 5 +--
.../projectmodel/maven/SimpleModelResolver.java | 30 ++++++++++-------
3 files changed, 47 insertions(+), 26 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 f57112a..61667d0 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
@@ -23,6 +23,8 @@ import java.util.Objects;
import java.util.stream.Collectors;
import java.util.stream.Stream;
+import javax.annotation.Nullable;
+
import org.apache.maven.model.Model;
import org.gradle.tooling.GradleConnector;
import org.gradle.tooling.model.GradleProject;
@@ -30,20 +32,21 @@ import org.gradle.tooling.model.GradleProject;
import org.apache.isis.tooling.projectmodel.maven.MavenModelFactory;
import org.apache.isis.tooling.projectmodel.maven.SimpleModelResolver;
+import lombok.NonNull;
import lombok.val;
import lombok.extern.log4j.Log4j2;
@Log4j2
public class ProjectNodeFactory {
- public static ProjectNode maven(File projRootFolder) {
+ public static ProjectNode maven(final @NonNull File projRootFolder) {
val modelResolver = new SimpleModelResolver(projRootFolder);
val rootModel = modelResolver.getRootModel();
- val interpolate = false; //XXX experimental
+ val interpolate = false; //XXX interpolation is experimental
return visitMavenProject(null, rootModel, modelResolver, interpolate);
}
- public static ProjectNode gradle(File projRootFolder) {
+ public static ProjectNode gradle(final @NonNull File projRootFolder) {
try(val projectConnection = GradleConnector.newConnector().forProjectDirectory(projRootFolder).connect()) {
val rootProject = projectConnection.getModel(GradleProject.class);
val rootNode = visitGradleProject(null, rootProject);
@@ -54,9 +57,9 @@ public class ProjectNodeFactory {
// -- HELPER MAVEN
private static ProjectNode visitMavenProject(
- ProjectNode parent,
- Model mavenProj,
- SimpleModelResolver modelResolver,
+ final @Nullable ProjectNode parent,
+ final @NonNull Model mavenProj,
+ final @NonNull SimpleModelResolver modelResolver,
boolean interpolate) {
val interpolatedProj = interpolate
@@ -69,7 +72,9 @@ public class ProjectNodeFactory {
return projNode;
}
- private static ProjectNode toProjectNode(ProjectNode parent, Model mavenProj) {
+ private static ProjectNode toProjectNode(
+ final @Nullable ProjectNode parent,
+ final @NonNull Model mavenProj) {
val projNode = ProjectNode.builder()
.parent(parent)
.artifactKey(artifactKeyOf(mavenProj))
@@ -84,14 +89,17 @@ public class ProjectNodeFactory {
}
- private static ArtifactKey artifactKeyOf(Model mavenProj) {
+ private static ArtifactKey artifactKeyOf(final @NonNull Model mavenProj) {
val groupId = MavenModelFactory.getGroupId(mavenProj);
val artifactId = mavenProj.getArtifactId();
val version = MavenModelFactory.getVersion(mavenProj);
return ArtifactKey.of(groupId, artifactId, version);
}
- private static Iterable<Model> childrenOf(Model mavenProj, SimpleModelResolver modelResolver) {
+ private static Iterable<Model> childrenOf(
+ final @NonNull Model mavenProj,
+ final @NonNull SimpleModelResolver modelResolver) {
+
return Stream.<String>concat(
mavenProj.getProfiles().stream().flatMap(profile->profile.getModules().stream()),
mavenProj.getModules().stream())
@@ -103,7 +111,10 @@ public class ProjectNodeFactory {
// -- HELPER GRADLE
- private static ProjectNode visitGradleProject(ProjectNode parent, GradleProject gradleProj) {
+ private static ProjectNode visitGradleProject(
+ final @Nullable ProjectNode parent,
+ final @NonNull GradleProject gradleProj) {
+
val projNode = toProjectNode(parent, gradleProj);
for(val child : gradleProj.getChildren()){
visitGradleProject(projNode, child);
@@ -111,7 +122,10 @@ public class ProjectNodeFactory {
return projNode;
}
- private static ProjectNode toProjectNode(ProjectNode parent, GradleProject gradleProj) {
+ private static ProjectNode toProjectNode(
+ final @Nullable ProjectNode parent,
+ final @NonNull GradleProject gradleProj) {
+
val projNode = ProjectNode.builder()
.parent(parent)
.artifactKey(artifactKeyOf(gradleProj))
@@ -123,7 +137,7 @@ public class ProjectNodeFactory {
return projNode;
}
- private static ArtifactKey artifactKeyOf(GradleProject gradleProj) {
+ private static ArtifactKey artifactKeyOf(final @NonNull GradleProject gradleProj) {
val pomFile = new File(gradleProj.getProjectDirectory().getAbsoluteFile(), "pom.xml");
if(pomFile.canRead()) {
val mavenModel = MavenModelFactory.readModel(pomFile);
diff --git a/tooling/project-model/src/main/java/org/apache/isis/tooling/projectmodel/maven/MavenModelFactory.java b/tooling/project-model/src/main/java/org/apache/isis/tooling/projectmodel/maven/MavenModelFactory.java
index d016f15..dc8cafc 100644
--- a/tooling/project-model/src/main/java/org/apache/isis/tooling/projectmodel/maven/MavenModelFactory.java
+++ b/tooling/project-model/src/main/java/org/apache/isis/tooling/projectmodel/maven/MavenModelFactory.java
@@ -30,6 +30,7 @@ import org.apache.maven.model.building.ModelBuildingRequest;
import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
import org.apache.maven.model.resolution.ModelResolver;
+import lombok.NonNull;
import lombok.val;
import lombok.experimental.UtilityClass;
import lombok.extern.log4j.Log4j2;
@@ -88,11 +89,11 @@ public class MavenModelFactory {
return artifactKey;
}
- public static String getGroupId(Model model) {
+ public static String getGroupId(@NonNull Model model) {
return Optional.ofNullable(model.getGroupId()).orElseGet(()->model.getParent().getGroupId());
}
- public static String getVersion(Model model) {
+ public static String getVersion(@NonNull Model model) {
return Optional.ofNullable(model.getVersion()).orElseGet(()->model.getParent().getVersion());
}
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 7901686..37f8151 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
@@ -149,7 +149,7 @@ public class SimpleModelResolver implements ModelResolver {
try {
localPath = new File(mavenProj.getPomFile().getParentFile(), realtivePath)
.getCanonicalPath();
- } catch (IOException e) {
+ } catch (Exception e) {
log.error("cannot resolve local path {} relative to {}", realtivePath, mavenProj.getPomFile().getParent(), e);
return null;
}
@@ -169,7 +169,7 @@ public class SimpleModelResolver implements ModelResolver {
@SneakyThrows
private void populateCatalogs(final File projectRoot) {
- val localRootPath = projectRoot.getAbsolutePath();
+ val localRootPath = projectRoot.getCanonicalPath();
_Files.searchFiles(projectRoot,
file->
@@ -181,17 +181,23 @@ public class SimpleModelResolver implements ModelResolver {
val model = MavenModelFactory.readModel(pomFile);
- val localPath = pomFile.getParentFile().getAbsolutePath();
+ try {
- if(localPath.equals(localRootPath)) {
- rootModel = model;
- }
-
- val artifactKey = MavenModelFactory.readArtifactKey(model);
- if(artifactKey!=null) {
- log.debug("found {} at {}", artifactKey, model.getPomFile().getAbsolutePath());
- projectPomCatalog.put(artifactKey, model);
- pathToArtifactMap.put(localPath, artifactKey);
+ val localPath = pomFile.getParentFile().getCanonicalPath();
+
+ if(localPath.equals(localRootPath)) {
+ rootModel = model;
+ }
+
+ val artifactKey = MavenModelFactory.readArtifactKey(model);
+ if(artifactKey!=null) {
+ log.debug("found {} at {}", artifactKey, model.getPomFile().getAbsolutePath());
+ projectPomCatalog.put(artifactKey, model);
+ pathToArtifactMap.put(localPath, artifactKey);
+ }
+
+ } catch (Exception e) {
+ log.error("cannot resolve local path {}", pomFile.getParentFile().getAbsolutePath(), e);
}
});