From 3cd4d9d69d6c91cfa3c8c24d4d0454867815c4fb Mon Sep 17 00:00:00 2001 From: Giovanni van der Schelde Date: Fri, 15 Mar 2024 10:52:33 +0100 Subject: [PATCH] [MPH-183] Fix error in import path and small refactor --- .../org/apache/maven/api/model/InputLocation.java | 4 ++-- .../maven/model/building/DefaultModelBuilder.java | 12 ++++++------ .../DefaultDependencyManagementImporter.java | 3 +-- 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/api/maven-api-model/src/main/java/org/apache/maven/api/model/InputLocation.java b/api/maven-api-model/src/main/java/org/apache/maven/api/model/InputLocation.java index dc81d2da83a4..9ec46decaa13 100644 --- a/api/maven-api-model/src/main/java/org/apache/maven/api/model/InputLocation.java +++ b/api/maven-api-model/src/main/java/org/apache/maven/api/model/InputLocation.java @@ -67,12 +67,12 @@ public InputLocation(int lineNumber, int columnNumber, InputSource source, Map importIds) { // a chain of model ID's that caused this depMgt to be loaded?! + Collection importIds) { DependencyManagement depMgmt = model.getDependencyManagement(); if (depMgmt == null) { return; } - // the one that's causing the import to happen? String importing = model.getGroupId() + ':' + model.getArtifactId() + ':' + model.getVersion(); importIds.add(importing); + // Model v4 List importMgmts = null; for (Iterator it = depMgmt.getDependencies().iterator(); it.hasNext(); ) { @@ -1684,6 +1684,7 @@ private void importDependencyManagement( it.remove(); + // Model v3 DependencyManagement importMgmt = loadDependencyManagement(model, request, problems, dependency, importIds); if (importMgmt != null) { @@ -1693,6 +1694,7 @@ private void importDependencyManagement( if (request.isLocationTracking()) { // Keep track of why this DependencyManagement was imported. + // And map model v3 to model v4 -> importMgmt(v3).getDelegate() returns a v4 object importMgmts.add( org.apache.maven.api.model.DependencyManagement.newBuilder(importMgmt.getDelegate(), true) .importedFrom(dependency.getDelegate().getLocation("")) @@ -1705,10 +1707,8 @@ private void importDependencyManagement( importIds.remove(importing); - org.apache.maven.api.model.Model updatedModel = - dependencyManagementImporter.importManagement(model.getDelegate(), importMgmts, request, problems); - model.update(updatedModel); - model.setDependencyManagement(new DependencyManagement(updatedModel.getDependencyManagement())); + model.update( + dependencyManagementImporter.importManagement(model.getDelegate(), importMgmts, request, problems)); } private DependencyManagement loadDependencyManagement( diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/composition/DefaultDependencyManagementImporter.java b/maven-model-builder/src/main/java/org/apache/maven/model/composition/DefaultDependencyManagementImporter.java index c560cfed1bce..9ba634adfebf 100644 --- a/maven-model-builder/src/main/java/org/apache/maven/model/composition/DefaultDependencyManagementImporter.java +++ b/maven-model-builder/src/main/java/org/apache/maven/model/composition/DefaultDependencyManagementImporter.java @@ -178,9 +178,8 @@ static Dependency updateWithImportedFrom(Dependency dependency, DependencyManage // We modify the input location that is used for the whole file. // This is likely correct because the POM hierarchy applies to the whole POM, not just one dependency. - // TODO What to do now?! return Dependency.newBuilder(dependency, true) - .importedFrom(new InputLocation(bomLocation, dependency.getImportedFrom())) + .importedFrom(new InputLocation(bomLocation)) .build(); } }