From 1581d36c406483865679b11681aaa5722d168865 Mon Sep 17 00:00:00 2001 From: Tamas Cservenak Date: Fri, 23 Jun 2023 12:09:48 +0200 Subject: [PATCH 1/4] [MNG-7823] Improve plugin validation handling level parsing Changes: * always parse it at session start * (hence, will WARN if needed there as well) * do not re-parse and re-warn always, reuse parsed enum --- https://issues.apache.org/jira/browse/MNG-7823 --- .../internal/DefaultPluginValidationManager.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginValidationManager.java b/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginValidationManager.java index ce149a2f65e0..32bed435fffd 100644 --- a/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginValidationManager.java +++ b/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginValidationManager.java @@ -83,13 +83,23 @@ private enum ValidationReportLevel { public void onEvent(Object event) { if (event instanceof ExecutionEvent) { ExecutionEvent executionEvent = (ExecutionEvent) event; - if (executionEvent.getType() == ExecutionEvent.Type.SessionEnded) { + if (executionEvent.getType() == ExecutionEvent.Type.SessionStarted) { + RepositorySystemSession repositorySystemSession = + executionEvent.getSession().getRepositorySession(); + ValidationReportLevel level = parseValidationReportLevel(repositorySystemSession); + repositorySystemSession.getData().set(MAVEN_PLUGIN_VALIDATION_KEY, level); + } else if (executionEvent.getType() == ExecutionEvent.Type.SessionEnded) { reportSessionCollectedValidationIssues(executionEvent.getSession()); } } } private ValidationReportLevel validationReportLevel(RepositorySystemSession session) { + return (ValidationReportLevel) session.getData() + .computeIfAbsent(MAVEN_PLUGIN_VALIDATION_KEY, () -> parseValidationReportLevel(session)); + } + + private ValidationReportLevel parseValidationReportLevel(RepositorySystemSession session) { String level = ConfigUtils.getString(session, null, MAVEN_PLUGIN_VALIDATION_KEY); if (level == null || level.isEmpty()) { return DEFAULT_VALIDATION_LEVEL; From 0b8cf73f6f0bde006a88ecae5c671f53e26b567a Mon Sep 17 00:00:00 2001 From: Tamas Cservenak Date: Fri, 23 Jun 2023 12:17:46 +0200 Subject: [PATCH 2/4] Simplify --- .../maven/plugin/internal/DefaultPluginValidationManager.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginValidationManager.java b/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginValidationManager.java index 32bed435fffd..7ba7fade5314 100644 --- a/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginValidationManager.java +++ b/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginValidationManager.java @@ -86,8 +86,7 @@ public void onEvent(Object event) { if (executionEvent.getType() == ExecutionEvent.Type.SessionStarted) { RepositorySystemSession repositorySystemSession = executionEvent.getSession().getRepositorySession(); - ValidationReportLevel level = parseValidationReportLevel(repositorySystemSession); - repositorySystemSession.getData().set(MAVEN_PLUGIN_VALIDATION_KEY, level); + validationReportLevel(repositorySystemSession); // this will parse and store it in session } else if (executionEvent.getType() == ExecutionEvent.Type.SessionEnded) { reportSessionCollectedValidationIssues(executionEvent.getSession()); } From 33ef05e50c1d15683c91f67297be98a8ebda574a Mon Sep 17 00:00:00 2001 From: Tamas Cservenak Date: Fri, 23 Jun 2023 12:28:57 +0200 Subject: [PATCH 3/4] Do not reuse keys, may lead to mixup Still, this is session.data while we parse from session.configProperties --- .../maven/plugin/internal/DefaultPluginValidationManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginValidationManager.java b/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginValidationManager.java index 7ba7fade5314..714728a32f9b 100644 --- a/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginValidationManager.java +++ b/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginValidationManager.java @@ -95,7 +95,7 @@ public void onEvent(Object event) { private ValidationReportLevel validationReportLevel(RepositorySystemSession session) { return (ValidationReportLevel) session.getData() - .computeIfAbsent(MAVEN_PLUGIN_VALIDATION_KEY, () -> parseValidationReportLevel(session)); + .computeIfAbsent(ValidationReportLevel.class, () -> parseValidationReportLevel(session)); } private ValidationReportLevel parseValidationReportLevel(RepositorySystemSession session) { From 2958824ff2a7bffe164c9899f904fbe7cef5b2ce Mon Sep 17 00:00:00 2001 From: Tamas Cservenak Date: Fri, 23 Jun 2023 12:43:24 +0200 Subject: [PATCH 4/4] more precise comment --- .../maven/plugin/internal/DefaultPluginValidationManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginValidationManager.java b/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginValidationManager.java index 714728a32f9b..25f1bf9a5470 100644 --- a/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginValidationManager.java +++ b/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginValidationManager.java @@ -86,7 +86,7 @@ public void onEvent(Object event) { if (executionEvent.getType() == ExecutionEvent.Type.SessionStarted) { RepositorySystemSession repositorySystemSession = executionEvent.getSession().getRepositorySession(); - validationReportLevel(repositorySystemSession); // this will parse and store it in session + validationReportLevel(repositorySystemSession); // this will parse and store it in session.data } else if (executionEvent.getType() == ExecutionEvent.Type.SessionEnded) { reportSessionCollectedValidationIssues(executionEvent.getSession()); }