Using recursive BOM check from boot2 branch

Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/ea6747b4
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/ea6747b4
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/ea6747b4

Branch: refs/heads/master
Commit: ea6747b4e0a1423aa3d370f23dc37a4fdba3d639
Parents: f75d805
Author: Nicola Ferraro <ni.ferr...@gmail.com>
Authored: Mon Sep 25 11:40:09 2017 +0200
Committer: Nicola Ferraro <ni.ferr...@gmail.com>
Committed: Mon Sep 25 14:55:58 2017 +0200

----------------------------------------------------------------------
 .../maven/bom/generator/BomGeneratorMojo.java   | 33 ++++++++++++++++++--
 1 file changed, 31 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/ea6747b4/tooling/maven/bom-generator-maven-plugin/src/main/java/org/apache/camel/maven/bom/generator/BomGeneratorMojo.java
----------------------------------------------------------------------
diff --git 
a/tooling/maven/bom-generator-maven-plugin/src/main/java/org/apache/camel/maven/bom/generator/BomGeneratorMojo.java
 
b/tooling/maven/bom-generator-maven-plugin/src/main/java/org/apache/camel/maven/bom/generator/BomGeneratorMojo.java
index 9bfcb2a..3f47f15 100644
--- 
a/tooling/maven/bom-generator-maven-plugin/src/main/java/org/apache/camel/maven/bom/generator/BomGeneratorMojo.java
+++ 
b/tooling/maven/bom-generator-maven-plugin/src/main/java/org/apache/camel/maven/bom/generator/BomGeneratorMojo.java
@@ -385,21 +385,50 @@ public class BomGeneratorMojo extends AbstractMojo {
     }
 
     private Set<String> getProvidedDependencyManagement(String groupId, String 
artifactId, String version) throws Exception {
+        return getProvidedDependencyManagement(groupId, artifactId, version, 
new TreeSet<>());
+    }
+
+    private Set<String> getProvidedDependencyManagement(String groupId, String 
artifactId, String version, Set<String> gaChecked) throws Exception {
+        String ga = groupId + ":" + artifactId;
+        gaChecked.add(ga);
         Artifact bom = resolveArtifact(groupId, artifactId, version, "pom");
         MavenProject bomProject = loadExternalProjectPom(bom.getFile());
 
         Set<String> provided = new HashSet<>();
         if (bomProject.getDependencyManagement() != null && 
bomProject.getDependencyManagement().getDependencies() != null) {
             for (Dependency dep : 
bomProject.getDependencyManagement().getDependencies()) {
-                provided.add(comparisonKey(dep));
+                if ("pom".equals(dep.getType()) && 
"import".equals(dep.getScope())) {
+                    String subGa = dep.getGroupId() + ":" + 
dep.getArtifactId();
+                    if (!gaChecked.contains(subGa)) {
+                        Set<String> sub = 
getProvidedDependencyManagement(dep.getGroupId(), dep.getArtifactId(), 
resolveVersion(bomProject, dep.getVersion()), gaChecked);
+                        provided.addAll(sub);
+                    }
+                } else {
+                    provided.add(comparisonKey(dep));
+                }
             }
         }
 
         return provided;
     }
 
+    private String resolveVersion(MavenProject project, String version) {
+        if (version.contains("${")) {
+            int start = version.indexOf("${");
+            int end = version.indexOf("}");
+            if (end > start) {
+                String prop = version.substring(start + 2, end);
+                String resolved = project.getProperties().getProperty(prop);
+                if (resolved != null) {
+                    version = version.substring(0, start) + resolved + 
version.substring(end + 1);
+                }
+            }
+        }
+        return version;
+    }
+
     private String comparisonKey(Dependency dependency) {
-        return dependency.getGroupId() + ":" + dependency.getArtifactId();
+        return dependency.getGroupId() + ":" + dependency.getArtifactId() + 
":" + (dependency.getType() != null ? dependency.getType() : "jar");
     }
 
     private Artifact resolveArtifact(String groupId, String artifactId, String 
version, String type) throws Exception {

Reply via email to