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/09/29 23:33:22 UTC

[maven] branch MNG-7272 updated (2a0928b -> 6d16033)

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.


 discard 2a0928b  [MNG-7272] - Code Improvement - II
     new 6d16033  [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   (2a0928b)
            \
             N -- N -- N   refs/heads/MNG-7272 (6d16033)

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:
 .../java/org/apache/maven/graph/DefaultProjectDependencyGraph.java   | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

[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 6d1603367581e43af7168732846812bb2b42368f
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 | 38 ++++++--------
 .../org/apache/maven/project/ProjectSorter.java    | 58 ++++++----------------
 2 files changed, 30 insertions(+), 66 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..910b610 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,16 +43,16 @@ import org.codehaus.plexus.util.dag.CycleDetectedException;
  * @author Benjamin Bentmann
  */
 public class DefaultProjectDependencyGraph
-    implements ProjectDependencyGraph
+        implements ProjectDependencyGraph
 {
 
-    private final ProjectSorter sorter;
+    private ProjectSorter sorter;
 
-    private final List<MavenProject> allProjects;
+    private List<MavenProject> allProjects;
 
-    private final Map<MavenProject, Integer> order;
+    private Map<MavenProject, Integer> order;
 
-    private final Map<String, MavenProject> projects;
+    private Map<String, MavenProject> projects;
 
     /**
      * Creates a new project dependency graph based on the specified projects.
@@ -62,38 +62,30 @@ 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 );
-        }
+        init( 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
+            throws CycleDetectedException, DuplicateProjectException
+    {
+        init( allProjects, projects );
+    }
+
+    private void init( Collection<MavenProject> allProjects, final 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()