You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by kh...@apache.org on 2021/10/02 08:20:15 UTC
[maven] 01/01: [MNG-7272] - Code Improvement - II
This is an automated email from the ASF dual-hosted git repository.
khmarbaise pushed a commit to branch MNG-7272
in repository https://gitbox.apache.org/repos/asf/maven.git
commit 8c9cee35c0c58ad4af57652a6e957494e4fb2413
Author: Karl Heinz Marbaise <kh...@apache.org>
AuthorDate: Thu Sep 30 00:46:08 2021 +0200
[MNG-7272] - Code Improvement - II
---
.../maven/graph/DefaultProjectDependencyGraph.java | 28 +++--------
.../org/apache/maven/project/ProjectSorter.java | 58 ++++++----------------
2 files changed, 22 insertions(+), 64 deletions(-)
diff --git a/maven-core/src/main/java/org/apache/maven/graph/DefaultProjectDependencyGraph.java b/maven-core/src/main/java/org/apache/maven/graph/DefaultProjectDependencyGraph.java
index de4ea73..1f42293 100644
--- a/maven-core/src/main/java/org/apache/maven/graph/DefaultProjectDependencyGraph.java
+++ b/maven-core/src/main/java/org/apache/maven/graph/DefaultProjectDependencyGraph.java
@@ -43,7 +43,7 @@ import org.codehaus.plexus.util.dag.CycleDetectedException;
* @author Benjamin Bentmann
*/
public class DefaultProjectDependencyGraph
- implements ProjectDependencyGraph
+ implements ProjectDependencyGraph
{
private final ProjectSorter sorter;
@@ -62,38 +62,24 @@ public class DefaultProjectDependencyGraph
* @throws CycleDetectedException
*/
public DefaultProjectDependencyGraph( Collection<MavenProject> projects )
- throws CycleDetectedException, DuplicateProjectException
+ throws CycleDetectedException, DuplicateProjectException
{
- super();
- this.allProjects = Collections.unmodifiableList( new ArrayList<>( projects ) );
- this.sorter = new ProjectSorter( projects );
- this.order = new HashMap<>();
- this.projects = new HashMap<>();
- List<MavenProject> sorted = this.sorter.getSortedProjects();
- for ( int index = 0; index < sorted.size(); index++ )
- {
- MavenProject project = sorted.get( index );
- String id = ProjectSorter.getId( project );
- this.projects.put( id, project );
- this.order.put( project, index );
- }
+ this( projects, projects );
}
/**
* Creates a new project dependency graph based on the specified projects.
*
* @param allProjects All collected projects.
- * @param projects The projects to create the dependency graph with.
- *
+ * @param projects The projects to create the dependency graph with.
* @throws DuplicateProjectException
* @throws CycleDetectedException
* @since 3.5.0
*/
- public DefaultProjectDependencyGraph( final List<MavenProject> allProjects,
- final Collection<MavenProject> projects )
- throws CycleDetectedException, DuplicateProjectException
+ public DefaultProjectDependencyGraph( Collection<MavenProject> allProjects,
+ Collection<MavenProject> projects )
+ throws CycleDetectedException, DuplicateProjectException
{
- super();
this.allProjects = Collections.unmodifiableList( new ArrayList<>( allProjects ) );
this.sorter = new ProjectSorter( projects );
this.order = new HashMap<>();
diff --git a/maven-core/src/main/java/org/apache/maven/project/ProjectSorter.java b/maven-core/src/main/java/org/apache/maven/project/ProjectSorter.java
index 40cdf1b..a736410 100644
--- a/maven-core/src/main/java/org/apache/maven/project/ProjectSorter.java
+++ b/maven-core/src/main/java/org/apache/maven/project/ProjectSorter.java
@@ -19,13 +19,12 @@ package org.apache.maven.project;
* under the License.
*/
-import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
-import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
import org.apache.maven.artifact.ArtifactUtils;
import org.apache.maven.model.Dependency;
@@ -49,8 +48,6 @@ public class ProjectSorter
private Map<String, MavenProject> projectMap;
- private MavenProject topLevelProject;
-
/**
* Sort a list of projects.
* <ul>
@@ -126,43 +123,29 @@ public class ProjectSorter
parent.getVersion(), true, false );
}
- List<Plugin> buildPlugins = project.getBuildPlugins();
- if ( buildPlugins != null )
+ for ( Plugin plugin : project.getBuildPlugins() )
{
- for ( Plugin plugin : buildPlugins )
+ addEdge( projectMap, vertexMap, project, projectVertex, plugin.getGroupId(),
+ plugin.getArtifactId(), plugin.getVersion(), false, true );
+
+ for ( Dependency dependency : plugin.getDependencies() )
{
- addEdge( projectMap, vertexMap, project, projectVertex, plugin.getGroupId(),
- plugin.getArtifactId(), plugin.getVersion(), false, true );
-
- for ( Dependency dependency : plugin.getDependencies() )
- {
- addEdge( projectMap, vertexMap, project, projectVertex, dependency.getGroupId(),
- dependency.getArtifactId(), dependency.getVersion(), false, true );
- }
+ addEdge( projectMap, vertexMap, project, projectVertex, dependency.getGroupId(),
+ dependency.getArtifactId(), dependency.getVersion(), false, true );
}
}
- List<Extension> buildExtensions = project.getBuildExtensions();
- if ( buildExtensions != null )
+ for ( Extension extension : project.getBuildExtensions() )
{
- for ( Extension extension : buildExtensions )
- {
- addEdge( projectMap, vertexMap, project, projectVertex, extension.getGroupId(),
- extension.getArtifactId(), extension.getVersion(), false, true );
- }
+ addEdge( projectMap, vertexMap, project, projectVertex, extension.getGroupId(),
+ extension.getArtifactId(), extension.getVersion(), false, true );
}
}
- List<MavenProject> sortedProjects = new ArrayList<>( projects.size() );
-
List<String> sortedProjectLabels = TopologicalSorter.sort( dag );
- for ( String id : sortedProjectLabels )
- {
- sortedProjects.add( projectMap.get( id ) );
- }
-
- this.sortedProjects = Collections.unmodifiableList( sortedProjects );
+ this.sortedProjects = sortedProjectLabels.stream().map( id -> projectMap.get( id ) )
+ .collect( Collectors.collectingAndThen( Collectors.toList(), Collections::unmodifiableList ) );
}
@SuppressWarnings( "checkstyle:parameternumber" )
private void addEdge( Map<String, MavenProject> projectMap, Map<String, Map<String, Vertex>> vertexMap,
@@ -235,19 +218,8 @@ public class ProjectSorter
// TODO !![jc; 28-jul-2005] check this; if we're using '-r' and there are aggregator tasks, this will result in weirdness.
public MavenProject getTopLevelProject()
{
- if ( topLevelProject == null )
- {
- for ( Iterator<MavenProject> i = sortedProjects.iterator(); i.hasNext() && ( topLevelProject == null ); )
- {
- MavenProject project = i.next();
- if ( project.isExecutionRoot() )
- {
- topLevelProject = project;
- }
- }
- }
-
- return topLevelProject;
+ return sortedProjects.stream().filter( MavenProject::isExecutionRoot ).findFirst()
+ .orElse( null );
}
public List<MavenProject> getSortedProjects()