MartinKanters commented on a change in pull request #373:
URL: https://github.com/apache/maven/pull/373#discussion_r487408369



##########
File path: 
maven-core/src/main/java/org/apache/maven/graph/DefaultGraphBuilder.java
##########
@@ -361,76 +406,35 @@ private File getReactorDirectory( MavenExecutionRequest 
request )
         throws ProjectBuildingException
     {
         MavenExecutionRequest request = session.getRequest();
-
         request.getProjectBuildingRequest().setRepositorySession( 
session.getRepositorySession() );
 
-        List<MavenProject> projects = new ArrayList<>();
+        List<ProjectCollectionStrategy> projectCollectionStrategies = 
Arrays.asList(
+                projectlessCollectionStrategy, // 1. Collect project for 
invocation without a POM.
+                multiModuleCollectionStrategy, // 2. Collect projects for all 
modules in the multi-module project.
+                requestPomCollectionStrategy   // 3. Collect projects for 
explicitly requested POM.
+        );
 
-        // We have no POM file.
-        //
-        if ( request.getPom() == null )
+        for ( ProjectCollectionStrategy strategy : projectCollectionStrategies 
)
         {
-            ModelSource modelSource = new UrlModelSource( 
DefaultMaven.class.getResource( "project/standalone.xml" ) );
-            MavenProject project = projectBuilder.build( modelSource, 
request.getProjectBuildingRequest() )
-                .getProject();
-            project.setExecutionRoot( true );
-            projects.add( project );
-            request.setProjectPresent( false );
-            return projects;
-        }
+            List<MavenProject> projects = strategy.collectProjects( request );
 
-        List<File> files = Arrays.asList( request.getPom().getAbsoluteFile() );
-        collectProjects( projects, files, request );
-        return projects;
-    }
-
-    private void collectProjects( List<MavenProject> projects, List<File> 
files, MavenExecutionRequest request )
-        throws ProjectBuildingException
-    {
-        ProjectBuildingRequest projectBuildingRequest = 
request.getProjectBuildingRequest();
-
-        List<ProjectBuildingResult> results = projectBuilder.build( files, 
request.isRecursive(),
-                                                                    
projectBuildingRequest );
-
-        boolean problems = false;
-
-        for ( ProjectBuildingResult result : results )
-        {
-            projects.add( result.getProject() );
-
-            if ( !result.getProblems().isEmpty() && logger.isWarnEnabled() )
+            if ( !projects.isEmpty() )
             {
-                logger.warn( "" );
-                logger.warn( "Some problems were encountered while building 
the effective model for "
-                    + result.getProject().getId() );
-
-                for ( ModelProblem problem : result.getProblems() )
-                {
-                    String loc = ModelProblemUtils.formatLocation( problem, 
result.getProjectId() );
-                    logger.warn( problem.getMessage() + ( 
StringUtils.isNotEmpty( loc ) ? " @ " + loc : "" ) );
-                }
-
-                problems = true;
+                logger.debug( "Successfully collected projects using the " + 
strategy.getClass().getSimpleName() );

Review comment:
       I think it does (although the diff looks terrible in GitHub..). This 
change introduces three strategies of collecting projects. This debug log would 
be the only way to find out which strategy was used in the end (without 
attaching a debugger). 

##########
File path: 
maven-core/src/main/java/org/apache/maven/graph/DefaultGraphBuilder.java
##########
@@ -361,76 +406,35 @@ private File getReactorDirectory( MavenExecutionRequest 
request )
         throws ProjectBuildingException
     {
         MavenExecutionRequest request = session.getRequest();
-
         request.getProjectBuildingRequest().setRepositorySession( 
session.getRepositorySession() );
 
-        List<MavenProject> projects = new ArrayList<>();
+        List<ProjectCollectionStrategy> projectCollectionStrategies = 
Arrays.asList(
+                projectlessCollectionStrategy, // 1. Collect project for 
invocation without a POM.
+                multiModuleCollectionStrategy, // 2. Collect projects for all 
modules in the multi-module project.
+                requestPomCollectionStrategy   // 3. Collect projects for 
explicitly requested POM.
+        );
 
-        // We have no POM file.
-        //
-        if ( request.getPom() == null )
+        for ( ProjectCollectionStrategy strategy : projectCollectionStrategies 
)
         {
-            ModelSource modelSource = new UrlModelSource( 
DefaultMaven.class.getResource( "project/standalone.xml" ) );
-            MavenProject project = projectBuilder.build( modelSource, 
request.getProjectBuildingRequest() )
-                .getProject();
-            project.setExecutionRoot( true );
-            projects.add( project );
-            request.setProjectPresent( false );
-            return projects;
-        }
+            List<MavenProject> projects = strategy.collectProjects( request );
 
-        List<File> files = Arrays.asList( request.getPom().getAbsoluteFile() );
-        collectProjects( projects, files, request );
-        return projects;
-    }
-
-    private void collectProjects( List<MavenProject> projects, List<File> 
files, MavenExecutionRequest request )
-        throws ProjectBuildingException
-    {
-        ProjectBuildingRequest projectBuildingRequest = 
request.getProjectBuildingRequest();
-
-        List<ProjectBuildingResult> results = projectBuilder.build( files, 
request.isRecursive(),
-                                                                    
projectBuildingRequest );
-
-        boolean problems = false;
-
-        for ( ProjectBuildingResult result : results )
-        {
-            projects.add( result.getProject() );
-
-            if ( !result.getProblems().isEmpty() && logger.isWarnEnabled() )
+            if ( !projects.isEmpty() )
             {
-                logger.warn( "" );
-                logger.warn( "Some problems were encountered while building 
the effective model for "
-                    + result.getProject().getId() );
-
-                for ( ModelProblem problem : result.getProblems() )
-                {
-                    String loc = ModelProblemUtils.formatLocation( problem, 
result.getProjectId() );
-                    logger.warn( problem.getMessage() + ( 
StringUtils.isNotEmpty( loc ) ? " @ " + loc : "" ) );
-                }
-
-                problems = true;
+                logger.debug( "Successfully collected projects using the " + 
strategy.getClass().getSimpleName() );

Review comment:
       I think it does (although the diff looks terrible in GitHub..). This 
change introduces three strategies of collecting projects. This debug log would 
be the only way to find out which strategy was used in the end (without 
attaching a debugger). 

##########
File path: 
maven-core/src/main/java/org/apache/maven/graph/DefaultGraphBuilder.java
##########
@@ -361,76 +406,35 @@ private File getReactorDirectory( MavenExecutionRequest 
request )
         throws ProjectBuildingException
     {
         MavenExecutionRequest request = session.getRequest();
-
         request.getProjectBuildingRequest().setRepositorySession( 
session.getRepositorySession() );
 
-        List<MavenProject> projects = new ArrayList<>();
+        List<ProjectCollectionStrategy> projectCollectionStrategies = 
Arrays.asList(
+                projectlessCollectionStrategy, // 1. Collect project for 
invocation without a POM.
+                multiModuleCollectionStrategy, // 2. Collect projects for all 
modules in the multi-module project.
+                requestPomCollectionStrategy   // 3. Collect projects for 
explicitly requested POM.
+        );
 
-        // We have no POM file.
-        //
-        if ( request.getPom() == null )
+        for ( ProjectCollectionStrategy strategy : projectCollectionStrategies 
)
         {
-            ModelSource modelSource = new UrlModelSource( 
DefaultMaven.class.getResource( "project/standalone.xml" ) );
-            MavenProject project = projectBuilder.build( modelSource, 
request.getProjectBuildingRequest() )
-                .getProject();
-            project.setExecutionRoot( true );
-            projects.add( project );
-            request.setProjectPresent( false );
-            return projects;
-        }
+            List<MavenProject> projects = strategy.collectProjects( request );
 
-        List<File> files = Arrays.asList( request.getPom().getAbsoluteFile() );
-        collectProjects( projects, files, request );
-        return projects;
-    }
-
-    private void collectProjects( List<MavenProject> projects, List<File> 
files, MavenExecutionRequest request )
-        throws ProjectBuildingException
-    {
-        ProjectBuildingRequest projectBuildingRequest = 
request.getProjectBuildingRequest();
-
-        List<ProjectBuildingResult> results = projectBuilder.build( files, 
request.isRecursive(),
-                                                                    
projectBuildingRequest );
-
-        boolean problems = false;
-
-        for ( ProjectBuildingResult result : results )
-        {
-            projects.add( result.getProject() );
-
-            if ( !result.getProblems().isEmpty() && logger.isWarnEnabled() )
+            if ( !projects.isEmpty() )
             {
-                logger.warn( "" );
-                logger.warn( "Some problems were encountered while building 
the effective model for "
-                    + result.getProject().getId() );
-
-                for ( ModelProblem problem : result.getProblems() )
-                {
-                    String loc = ModelProblemUtils.formatLocation( problem, 
result.getProjectId() );
-                    logger.warn( problem.getMessage() + ( 
StringUtils.isNotEmpty( loc ) ? " @ " + loc : "" ) );
-                }
-
-                problems = true;
+                logger.debug( "Successfully collected projects using the " + 
strategy.getClass().getSimpleName() );

Review comment:
       I think it does (although the diff looks terrible in GitHub..). This 
change introduces three strategies of collecting projects. This debug log would 
be the only way to find out which strategy was used in the end (without 
attaching a debugger). 

##########
File path: 
maven-core/src/main/java/org/apache/maven/graph/DefaultGraphBuilder.java
##########
@@ -361,76 +406,35 @@ private File getReactorDirectory( MavenExecutionRequest 
request )
         throws ProjectBuildingException
     {
         MavenExecutionRequest request = session.getRequest();
-
         request.getProjectBuildingRequest().setRepositorySession( 
session.getRepositorySession() );
 
-        List<MavenProject> projects = new ArrayList<>();
+        List<ProjectCollectionStrategy> projectCollectionStrategies = 
Arrays.asList(
+                projectlessCollectionStrategy, // 1. Collect project for 
invocation without a POM.
+                multiModuleCollectionStrategy, // 2. Collect projects for all 
modules in the multi-module project.
+                requestPomCollectionStrategy   // 3. Collect projects for 
explicitly requested POM.
+        );
 
-        // We have no POM file.
-        //
-        if ( request.getPom() == null )
+        for ( ProjectCollectionStrategy strategy : projectCollectionStrategies 
)
         {
-            ModelSource modelSource = new UrlModelSource( 
DefaultMaven.class.getResource( "project/standalone.xml" ) );
-            MavenProject project = projectBuilder.build( modelSource, 
request.getProjectBuildingRequest() )
-                .getProject();
-            project.setExecutionRoot( true );
-            projects.add( project );
-            request.setProjectPresent( false );
-            return projects;
-        }
+            List<MavenProject> projects = strategy.collectProjects( request );
 
-        List<File> files = Arrays.asList( request.getPom().getAbsoluteFile() );
-        collectProjects( projects, files, request );
-        return projects;
-    }
-
-    private void collectProjects( List<MavenProject> projects, List<File> 
files, MavenExecutionRequest request )
-        throws ProjectBuildingException
-    {
-        ProjectBuildingRequest projectBuildingRequest = 
request.getProjectBuildingRequest();
-
-        List<ProjectBuildingResult> results = projectBuilder.build( files, 
request.isRecursive(),
-                                                                    
projectBuildingRequest );
-
-        boolean problems = false;
-
-        for ( ProjectBuildingResult result : results )
-        {
-            projects.add( result.getProject() );
-
-            if ( !result.getProblems().isEmpty() && logger.isWarnEnabled() )
+            if ( !projects.isEmpty() )
             {
-                logger.warn( "" );
-                logger.warn( "Some problems were encountered while building 
the effective model for "
-                    + result.getProject().getId() );
-
-                for ( ModelProblem problem : result.getProblems() )
-                {
-                    String loc = ModelProblemUtils.formatLocation( problem, 
result.getProjectId() );
-                    logger.warn( problem.getMessage() + ( 
StringUtils.isNotEmpty( loc ) ? " @ " + loc : "" ) );
-                }
-
-                problems = true;
+                logger.debug( "Successfully collected projects using the " + 
strategy.getClass().getSimpleName() );

Review comment:
       I think it does (although the diff looks terrible in GitHub..). This 
change introduces three strategies of collecting projects. This debug log would 
be the only way to find out which strategy was used in the end (without 
attaching a debugger). 

##########
File path: 
maven-core/src/main/java/org/apache/maven/graph/DefaultGraphBuilder.java
##########
@@ -361,76 +406,35 @@ private File getReactorDirectory( MavenExecutionRequest 
request )
         throws ProjectBuildingException
     {
         MavenExecutionRequest request = session.getRequest();
-
         request.getProjectBuildingRequest().setRepositorySession( 
session.getRepositorySession() );
 
-        List<MavenProject> projects = new ArrayList<>();
+        List<ProjectCollectionStrategy> projectCollectionStrategies = 
Arrays.asList(
+                projectlessCollectionStrategy, // 1. Collect project for 
invocation without a POM.
+                multiModuleCollectionStrategy, // 2. Collect projects for all 
modules in the multi-module project.
+                requestPomCollectionStrategy   // 3. Collect projects for 
explicitly requested POM.
+        );
 
-        // We have no POM file.
-        //
-        if ( request.getPom() == null )
+        for ( ProjectCollectionStrategy strategy : projectCollectionStrategies 
)
         {
-            ModelSource modelSource = new UrlModelSource( 
DefaultMaven.class.getResource( "project/standalone.xml" ) );
-            MavenProject project = projectBuilder.build( modelSource, 
request.getProjectBuildingRequest() )
-                .getProject();
-            project.setExecutionRoot( true );
-            projects.add( project );
-            request.setProjectPresent( false );
-            return projects;
-        }
+            List<MavenProject> projects = strategy.collectProjects( request );
 
-        List<File> files = Arrays.asList( request.getPom().getAbsoluteFile() );
-        collectProjects( projects, files, request );
-        return projects;
-    }
-
-    private void collectProjects( List<MavenProject> projects, List<File> 
files, MavenExecutionRequest request )
-        throws ProjectBuildingException
-    {
-        ProjectBuildingRequest projectBuildingRequest = 
request.getProjectBuildingRequest();
-
-        List<ProjectBuildingResult> results = projectBuilder.build( files, 
request.isRecursive(),
-                                                                    
projectBuildingRequest );
-
-        boolean problems = false;
-
-        for ( ProjectBuildingResult result : results )
-        {
-            projects.add( result.getProject() );
-
-            if ( !result.getProblems().isEmpty() && logger.isWarnEnabled() )
+            if ( !projects.isEmpty() )
             {
-                logger.warn( "" );
-                logger.warn( "Some problems were encountered while building 
the effective model for "
-                    + result.getProject().getId() );
-
-                for ( ModelProblem problem : result.getProblems() )
-                {
-                    String loc = ModelProblemUtils.formatLocation( problem, 
result.getProjectId() );
-                    logger.warn( problem.getMessage() + ( 
StringUtils.isNotEmpty( loc ) ? " @ " + loc : "" ) );
-                }
-
-                problems = true;
+                logger.debug( "Successfully collected projects using the " + 
strategy.getClass().getSimpleName() );

Review comment:
       I think it does (although the diff looks terrible in GitHub..). This 
change introduces three strategies of collecting projects. This debug log would 
be the only way to find out which strategy was used in the end (without 
attaching a debugger). 

##########
File path: 
maven-core/src/main/java/org/apache/maven/graph/DefaultGraphBuilder.java
##########
@@ -361,76 +406,35 @@ private File getReactorDirectory( MavenExecutionRequest 
request )
         throws ProjectBuildingException
     {
         MavenExecutionRequest request = session.getRequest();
-
         request.getProjectBuildingRequest().setRepositorySession( 
session.getRepositorySession() );
 
-        List<MavenProject> projects = new ArrayList<>();
+        List<ProjectCollectionStrategy> projectCollectionStrategies = 
Arrays.asList(
+                projectlessCollectionStrategy, // 1. Collect project for 
invocation without a POM.
+                multiModuleCollectionStrategy, // 2. Collect projects for all 
modules in the multi-module project.
+                requestPomCollectionStrategy   // 3. Collect projects for 
explicitly requested POM.
+        );
 
-        // We have no POM file.
-        //
-        if ( request.getPom() == null )
+        for ( ProjectCollectionStrategy strategy : projectCollectionStrategies 
)
         {
-            ModelSource modelSource = new UrlModelSource( 
DefaultMaven.class.getResource( "project/standalone.xml" ) );
-            MavenProject project = projectBuilder.build( modelSource, 
request.getProjectBuildingRequest() )
-                .getProject();
-            project.setExecutionRoot( true );
-            projects.add( project );
-            request.setProjectPresent( false );
-            return projects;
-        }
+            List<MavenProject> projects = strategy.collectProjects( request );
 
-        List<File> files = Arrays.asList( request.getPom().getAbsoluteFile() );
-        collectProjects( projects, files, request );
-        return projects;
-    }
-
-    private void collectProjects( List<MavenProject> projects, List<File> 
files, MavenExecutionRequest request )
-        throws ProjectBuildingException
-    {
-        ProjectBuildingRequest projectBuildingRequest = 
request.getProjectBuildingRequest();
-
-        List<ProjectBuildingResult> results = projectBuilder.build( files, 
request.isRecursive(),
-                                                                    
projectBuildingRequest );
-
-        boolean problems = false;
-
-        for ( ProjectBuildingResult result : results )
-        {
-            projects.add( result.getProject() );
-
-            if ( !result.getProblems().isEmpty() && logger.isWarnEnabled() )
+            if ( !projects.isEmpty() )
             {
-                logger.warn( "" );
-                logger.warn( "Some problems were encountered while building 
the effective model for "
-                    + result.getProject().getId() );
-
-                for ( ModelProblem problem : result.getProblems() )
-                {
-                    String loc = ModelProblemUtils.formatLocation( problem, 
result.getProjectId() );
-                    logger.warn( problem.getMessage() + ( 
StringUtils.isNotEmpty( loc ) ? " @ " + loc : "" ) );
-                }
-
-                problems = true;
+                logger.debug( "Successfully collected projects using the " + 
strategy.getClass().getSimpleName() );

Review comment:
       I think it does (although the diff looks terrible in GitHub..). This 
change introduces three strategies of collecting projects. This debug log would 
be the only way to find out which strategy was used in the end (without 
attaching a debugger). 

##########
File path: 
maven-core/src/main/java/org/apache/maven/graph/DefaultGraphBuilder.java
##########
@@ -361,76 +406,35 @@ private File getReactorDirectory( MavenExecutionRequest 
request )
         throws ProjectBuildingException
     {
         MavenExecutionRequest request = session.getRequest();
-
         request.getProjectBuildingRequest().setRepositorySession( 
session.getRepositorySession() );
 
-        List<MavenProject> projects = new ArrayList<>();
+        List<ProjectCollectionStrategy> projectCollectionStrategies = 
Arrays.asList(
+                projectlessCollectionStrategy, // 1. Collect project for 
invocation without a POM.
+                multiModuleCollectionStrategy, // 2. Collect projects for all 
modules in the multi-module project.
+                requestPomCollectionStrategy   // 3. Collect projects for 
explicitly requested POM.
+        );
 
-        // We have no POM file.
-        //
-        if ( request.getPom() == null )
+        for ( ProjectCollectionStrategy strategy : projectCollectionStrategies 
)
         {
-            ModelSource modelSource = new UrlModelSource( 
DefaultMaven.class.getResource( "project/standalone.xml" ) );
-            MavenProject project = projectBuilder.build( modelSource, 
request.getProjectBuildingRequest() )
-                .getProject();
-            project.setExecutionRoot( true );
-            projects.add( project );
-            request.setProjectPresent( false );
-            return projects;
-        }
+            List<MavenProject> projects = strategy.collectProjects( request );
 
-        List<File> files = Arrays.asList( request.getPom().getAbsoluteFile() );
-        collectProjects( projects, files, request );
-        return projects;
-    }
-
-    private void collectProjects( List<MavenProject> projects, List<File> 
files, MavenExecutionRequest request )
-        throws ProjectBuildingException
-    {
-        ProjectBuildingRequest projectBuildingRequest = 
request.getProjectBuildingRequest();
-
-        List<ProjectBuildingResult> results = projectBuilder.build( files, 
request.isRecursive(),
-                                                                    
projectBuildingRequest );
-
-        boolean problems = false;
-
-        for ( ProjectBuildingResult result : results )
-        {
-            projects.add( result.getProject() );
-
-            if ( !result.getProblems().isEmpty() && logger.isWarnEnabled() )
+            if ( !projects.isEmpty() )
             {
-                logger.warn( "" );
-                logger.warn( "Some problems were encountered while building 
the effective model for "
-                    + result.getProject().getId() );
-
-                for ( ModelProblem problem : result.getProblems() )
-                {
-                    String loc = ModelProblemUtils.formatLocation( problem, 
result.getProjectId() );
-                    logger.warn( problem.getMessage() + ( 
StringUtils.isNotEmpty( loc ) ? " @ " + loc : "" ) );
-                }
-
-                problems = true;
+                logger.debug( "Successfully collected projects using the " + 
strategy.getClass().getSimpleName() );

Review comment:
       I think it does (although the diff looks terrible in GitHub..). This 
change introduces three strategies of collecting projects. This debug log would 
be the only way to find out which strategy was used in the end (without 
attaching a debugger). 

##########
File path: 
maven-core/src/main/java/org/apache/maven/graph/DefaultGraphBuilder.java
##########
@@ -361,76 +406,35 @@ private File getReactorDirectory( MavenExecutionRequest 
request )
         throws ProjectBuildingException
     {
         MavenExecutionRequest request = session.getRequest();
-
         request.getProjectBuildingRequest().setRepositorySession( 
session.getRepositorySession() );
 
-        List<MavenProject> projects = new ArrayList<>();
+        List<ProjectCollectionStrategy> projectCollectionStrategies = 
Arrays.asList(
+                projectlessCollectionStrategy, // 1. Collect project for 
invocation without a POM.
+                multiModuleCollectionStrategy, // 2. Collect projects for all 
modules in the multi-module project.
+                requestPomCollectionStrategy   // 3. Collect projects for 
explicitly requested POM.
+        );
 
-        // We have no POM file.
-        //
-        if ( request.getPom() == null )
+        for ( ProjectCollectionStrategy strategy : projectCollectionStrategies 
)
         {
-            ModelSource modelSource = new UrlModelSource( 
DefaultMaven.class.getResource( "project/standalone.xml" ) );
-            MavenProject project = projectBuilder.build( modelSource, 
request.getProjectBuildingRequest() )
-                .getProject();
-            project.setExecutionRoot( true );
-            projects.add( project );
-            request.setProjectPresent( false );
-            return projects;
-        }
+            List<MavenProject> projects = strategy.collectProjects( request );
 
-        List<File> files = Arrays.asList( request.getPom().getAbsoluteFile() );
-        collectProjects( projects, files, request );
-        return projects;
-    }
-
-    private void collectProjects( List<MavenProject> projects, List<File> 
files, MavenExecutionRequest request )
-        throws ProjectBuildingException
-    {
-        ProjectBuildingRequest projectBuildingRequest = 
request.getProjectBuildingRequest();
-
-        List<ProjectBuildingResult> results = projectBuilder.build( files, 
request.isRecursive(),
-                                                                    
projectBuildingRequest );
-
-        boolean problems = false;
-
-        for ( ProjectBuildingResult result : results )
-        {
-            projects.add( result.getProject() );
-
-            if ( !result.getProblems().isEmpty() && logger.isWarnEnabled() )
+            if ( !projects.isEmpty() )
             {
-                logger.warn( "" );
-                logger.warn( "Some problems were encountered while building 
the effective model for "
-                    + result.getProject().getId() );
-
-                for ( ModelProblem problem : result.getProblems() )
-                {
-                    String loc = ModelProblemUtils.formatLocation( problem, 
result.getProjectId() );
-                    logger.warn( problem.getMessage() + ( 
StringUtils.isNotEmpty( loc ) ? " @ " + loc : "" ) );
-                }
-
-                problems = true;
+                logger.debug( "Successfully collected projects using the " + 
strategy.getClass().getSimpleName() );

Review comment:
       I think it does (although the diff looks terrible in GitHub..). This 
change introduces three strategies of collecting projects. This debug log would 
be the only way to find out which strategy was used in the end (without 
attaching a debugger). 




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


Reply via email to