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/21 08:14:55 UTC
[isis] branch master updated: ISIS-2437: model for LOCAL vs
EXTERNAL dependencies
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 fc70dbf ISIS-2437: model for LOCAL vs EXTERNAL dependencies
fc70dbf is described below
commit fc70dbf60bdd0efc96bd09dc4ef50b4b844784f5
Author: Andi Huber <ah...@apache.org>
AuthorDate: Mon Sep 21 10:14:42 2020 +0200
ISIS-2437: model for LOCAL vs EXTERNAL dependencies
---
.../tooling/projectmodel/ArtifactCoordinates.java | 6 ++++-
.../projectmodel/ArtifactShortNameFactory.java | 2 +-
.../isis/tooling/projectmodel/Dependency.java | 10 +++++++++
.../projectmodel/ProjectNodeFactory_maven.java | 26 ++++++++++++++++++++--
.../gradle/GradleDependenciesFactory.java | 6 +++--
.../gradle/GradleDependenciesWriter.java | 1 -
6 files changed, 44 insertions(+), 7 deletions(-)
diff --git a/tooling/projectmodel/src/main/java/org/apache/isis/tooling/projectmodel/ArtifactCoordinates.java b/tooling/projectmodel/src/main/java/org/apache/isis/tooling/projectmodel/ArtifactCoordinates.java
index b8c98ee..b08460c 100644
--- a/tooling/projectmodel/src/main/java/org/apache/isis/tooling/projectmodel/ArtifactCoordinates.java
+++ b/tooling/projectmodel/src/main/java/org/apache/isis/tooling/projectmodel/ArtifactCoordinates.java
@@ -35,11 +35,15 @@ public class ArtifactCoordinates implements Comparable<ArtifactCoordinates> {
@NonNull private final String version;
private final AtomicReference<ComparableVersion> comparableVersion = new AtomicReference<ComparableVersion>();
-
+
@Override
public String toString() {
return String.format("%s:%s:%s:%s", groupId, artifactId, packaging, version);
}
+
+ public String toStringWithGroupAndId() {
+ return String.format("%s:%s", groupId, artifactId);
+ }
// -- COMPARATOR
diff --git a/tooling/projectmodel/src/main/java/org/apache/isis/tooling/projectmodel/ArtifactShortNameFactory.java b/tooling/projectmodel/src/main/java/org/apache/isis/tooling/projectmodel/ArtifactShortNameFactory.java
index a56329a..fed8de2 100644
--- a/tooling/projectmodel/src/main/java/org/apache/isis/tooling/projectmodel/ArtifactShortNameFactory.java
+++ b/tooling/projectmodel/src/main/java/org/apache/isis/tooling/projectmodel/ArtifactShortNameFactory.java
@@ -23,6 +23,6 @@ import lombok.NonNull;
public class ArtifactShortNameFactory {
public static String toShortName(final @NonNull ArtifactCoordinates coors) {
- return String.format("%s:%s:%s", coors.getGroupId(), coors.getArtifactId(), coors.getVersion());
+ return String.format("%s:%s", coors.getGroupId(), coors.getArtifactId());
}
}
diff --git a/tooling/projectmodel/src/main/java/org/apache/isis/tooling/projectmodel/Dependency.java b/tooling/projectmodel/src/main/java/org/apache/isis/tooling/projectmodel/Dependency.java
index 710e427..e35c757 100644
--- a/tooling/projectmodel/src/main/java/org/apache/isis/tooling/projectmodel/Dependency.java
+++ b/tooling/projectmodel/src/main/java/org/apache/isis/tooling/projectmodel/Dependency.java
@@ -26,13 +26,23 @@ import lombok.Data;
@Data @Builder
public class Dependency implements Comparable<Dependency> {
+ public static enum Location {
+ LOCAL,
+ EXTERNAL;
+
+ public boolean isLocal() { return this == LOCAL; }
+ public boolean isExternal() { return this == EXTERNAL; }
+ }
+
private final ArtifactCoordinates artifactCoordinates;
+ private Location location;
/**
* as generated by {@link ArtifactShortNameFactory}
*/
private final String shortName;
+
// -- COMPARATOR
private final static Comparator<Dependency> comparator = Comparator
diff --git a/tooling/projectmodel/src/main/java/org/apache/isis/tooling/projectmodel/ProjectNodeFactory_maven.java b/tooling/projectmodel/src/main/java/org/apache/isis/tooling/projectmodel/ProjectNodeFactory_maven.java
index 1d2c27a..69b4641 100644
--- a/tooling/projectmodel/src/main/java/org/apache/isis/tooling/projectmodel/ProjectNodeFactory_maven.java
+++ b/tooling/projectmodel/src/main/java/org/apache/isis/tooling/projectmodel/ProjectNodeFactory_maven.java
@@ -19,6 +19,7 @@
package org.apache.isis.tooling.projectmodel;
import java.io.File;
+import java.util.HashSet;
import java.util.Objects;
import java.util.Optional;
import java.util.stream.Collectors;
@@ -29,6 +30,7 @@ import javax.annotation.Nullable;
import org.apache.maven.model.Model;
import org.apache.isis.commons.internal.base._Strings;
+import org.apache.isis.tooling.projectmodel.Dependency.Location;
import org.apache.isis.tooling.projectmodel.maven.MavenModelFactory;
import org.apache.isis.tooling.projectmodel.maven.SimpleModelResolver;
@@ -41,10 +43,26 @@ class ProjectNodeFactory_maven {
val modelResolver = new SimpleModelResolver(projRootFolder);
val rootModel = modelResolver.getRootModel();
val interpolate = false; //XXX interpolation is experimental
- return visitMavenProject(null, rootModel, modelResolver, interpolate);
+ val projTree = visitMavenProject(null, rootModel, modelResolver, interpolate);
+
+ // now post process the tree structure:
+ // first pass: collect local artifacts
+ // second pass: update all local dependencies' location to LOCAL
+ val localArtifacts = new HashSet<String>();
+ projTree.depthFirst(projModel->{
+ localArtifacts.add(projModel.getArtifactCoordinates().toStringWithGroupAndId());
+ });
+
+ projTree.depthFirst(projModel->{
+ projModel.getDependencies().stream()
+ .filter(dep->localArtifacts.contains(dep.getArtifactCoordinates().toStringWithGroupAndId()))
+ .forEach(localDep->localDep.setLocation(Location.LOCAL));
+ });
+
+ return projTree;
}
- // -- HELPER MAVEN
+ // -- HELPER
private static ProjectNode visitMavenProject(
final @Nullable ProjectNode parent,
@@ -95,6 +113,7 @@ class ProjectNodeFactory_maven {
return Dependency.builder()
.artifactCoordinates(artifactCoordinates)
+ .location(Location.EXTERNAL) // just priming here to be overwritten in post-processing if required
.shortName(ArtifactShortNameFactory.toShortName(artifactCoordinates))
.build();
}
@@ -120,4 +139,7 @@ class ProjectNodeFactory_maven {
.collect(Collectors.toList());
}
+
+
+
}
diff --git a/tooling/projectmodel/src/main/java/org/apache/isis/tooling/projectmodel/gradle/GradleDependenciesFactory.java b/tooling/projectmodel/src/main/java/org/apache/isis/tooling/projectmodel/gradle/GradleDependenciesFactory.java
index d6ac2a4..5d3c495 100644
--- a/tooling/projectmodel/src/main/java/org/apache/isis/tooling/projectmodel/gradle/GradleDependenciesFactory.java
+++ b/tooling/projectmodel/src/main/java/org/apache/isis/tooling/projectmodel/gradle/GradleDependenciesFactory.java
@@ -39,8 +39,10 @@ public class GradleDependenciesFactory {
projTree.depthFirst(projModel -> {
- projModel.getDependencies().forEach(dependency->{
- dependenciesByShortName.put(dependency.getShortName(), dependency);
+ projModel.getDependencies().stream()
+ .filter(dependency->dependency.getLocation().isExternal())
+ .forEach(extDependency->{
+ dependenciesByShortName.put(extDependency.getShortName(), extDependency);
});
});
diff --git a/tooling/projectmodel/src/main/java/org/apache/isis/tooling/projectmodel/gradle/GradleDependenciesWriter.java b/tooling/projectmodel/src/main/java/org/apache/isis/tooling/projectmodel/gradle/GradleDependenciesWriter.java
index de06c6d..dc6eec2 100644
--- a/tooling/projectmodel/src/main/java/org/apache/isis/tooling/projectmodel/gradle/GradleDependenciesWriter.java
+++ b/tooling/projectmodel/src/main/java/org/apache/isis/tooling/projectmodel/gradle/GradleDependenciesWriter.java
@@ -23,7 +23,6 @@ import java.io.Writer;
import org.apache.isis.commons.internal.base._Strings;
-import lombok.SneakyThrows;
import lombok.val;
public class GradleDependenciesWriter extends WriterAbstract {