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:14 UTC

[maven] branch MNG-7272 updated (8fbef36 -> 8c9cee3)

This is an automated email from the ASF dual-hosted git repository.

khmarbaise pushed a change to branch MNG-7272
in repository https://gitbox.apache.org/repos/asf/maven.git.


    omit 8fbef36  Remove useless final modifier.
    omit 0f5768e  Consistently changed to use Collection instead of List.
    omit b0994c4  Fixed missing.
    omit ab2d3c5  Review comments.
    omit b06315a  [MNG-7272] - Code Improvement - II
     new 8c9cee3  [MNG-7272] - Code Improvement - II

This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version.  This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:

 * -- * -- B -- O -- O -- O   (8fbef36)
            \
             N -- N -- N   refs/heads/MNG-7272 (8c9cee3)

You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.

Any revisions marked "omit" are not gone; other references still
refer to them.  Any revisions marked "discard" are gone forever.

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:

[maven] 01/01: [MNG-7272] - Code Improvement - II

Posted by kh...@apache.org.
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()