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

gnodet pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven.git


The following commit(s) were added to refs/heads/master by this push:
     new 898e4e4b3c Simplify code (#1156)
898e4e4b3c is described below

commit 898e4e4b3ca57d674759fe608bea2023ca550093
Author: Guillaume Nodet <[email protected]>
AuthorDate: Tue Jun 13 22:45:33 2023 +0200

    Simplify code (#1156)
---
 .../main/java/org/apache/maven/DefaultMaven.java   | 46 ++++++++--------------
 1 file changed, 17 insertions(+), 29 deletions(-)

diff --git a/maven-core/src/main/java/org/apache/maven/DefaultMaven.java 
b/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
index 1b32dfe048..d1312fe0d4 100644
--- a/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
+++ b/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
@@ -327,7 +327,7 @@ public class DefaultMaven implements Maven {
             }
         } finally {
             try {
-                afterSessionEnd(session.getProjects(), session);
+                afterSessionEnd(session);
             } catch (MavenExecutionException e) {
                 return addExceptionToResult(result, e);
             }
@@ -354,44 +354,29 @@ public class DefaultMaven implements Maven {
     }
 
     private void afterSessionStart(MavenSession session) throws 
MavenExecutionException {
-        // CHECKSTYLE_OFF: LineLength
-        for (AbstractMavenLifecycleParticipant listener :
-                getExtensionComponents(Collections.emptyList(), 
AbstractMavenLifecycleParticipant.class))
-        // CHECKSTYLE_ON: LineLength
-        {
-            listener.afterSessionStart(session);
-        }
+        callListeners(session, 
AbstractMavenLifecycleParticipant::afterSessionStart);
     }
 
     private void afterProjectsRead(MavenSession session) throws 
MavenExecutionException {
-        ClassLoader originalClassLoader = 
Thread.currentThread().getContextClassLoader();
-        try {
-            // CHECKSTYLE_OFF: LineLength
-            for (AbstractMavenLifecycleParticipant listener :
-                    getExtensionComponents(session.getProjects(), 
AbstractMavenLifecycleParticipant.class))
-            // CHECKSTYLE_ON: LineLength
-            {
-                
Thread.currentThread().setContextClassLoader(listener.getClass().getClassLoader());
+        callListeners(session, 
AbstractMavenLifecycleParticipant::afterProjectsRead);
+    }
 
-                listener.afterProjectsRead(session);
-            }
-        } finally {
-            Thread.currentThread().setContextClassLoader(originalClassLoader);
-        }
+    private void afterSessionEnd(MavenSession session) throws 
MavenExecutionException {
+        callListeners(session, 
AbstractMavenLifecycleParticipant::afterSessionEnd);
     }
 
-    private void afterSessionEnd(Collection<MavenProject> projects, 
MavenSession session)
-            throws MavenExecutionException {
+    @FunctionalInterface
+    interface ListenerMethod {
+        void run(AbstractMavenLifecycleParticipant listener, MavenSession 
session) throws MavenExecutionException;
+    }
+
+    private void callListeners(MavenSession session, ListenerMethod method) 
throws MavenExecutionException {
         ClassLoader originalClassLoader = 
Thread.currentThread().getContextClassLoader();
         try {
-            // CHECKSTYLE_OFF: LineLength
             for (AbstractMavenLifecycleParticipant listener :
-                    getExtensionComponents(projects, 
AbstractMavenLifecycleParticipant.class))
-            // CHECKSTYLE_ON: LineLength
-            {
+                    getExtensionComponents(session.getProjects(), 
AbstractMavenLifecycleParticipant.class)) {
                 
Thread.currentThread().setContextClassLoader(listener.getClass().getClassLoader());
-
-                listener.afterSessionEnd(session);
+                method.run(listener, session);
             }
         } finally {
             Thread.currentThread().setContextClassLoader(originalClassLoader);
@@ -451,6 +436,9 @@ public class DefaultMaven implements Maven {
     }
 
     protected <T> Collection<T> 
getProjectScopedExtensionComponents(Collection<MavenProject> projects, Class<T> 
role) {
+        if (projects == null) {
+            return Collections.emptyList();
+        }
 
         Collection<T> foundComponents = new LinkedHashSet<>();
         Collection<ClassLoader> scannedRealms = new HashSet<>();

Reply via email to