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

neilcsmith pushed a commit to branch delivery
in repository https://gitbox.apache.org/repos/asf/netbeans.git


The following commit(s) were added to refs/heads/delivery by this push:
     new b068b4af1f Maven UseReleaseOptionHint fixes
     new 61aafaaf2a Merge pull request #4835 from 
mbien/maven-release-flag-hint-fixes
b068b4af1f is described below

commit b068b4af1fdab63be658933e9cb425a7fb5bc00a
Author: Michael Bien <[email protected]>
AuthorDate: Fri Oct 21 14:40:03 2022 +0200

    Maven UseReleaseOptionHint fixes
    
     - NPE fix when build tag is empty
     - don't show hint if there is no compiler plugin in the pom
     - simplified code, added more tests
---
 .../maven/hints/pom/UseReleaseOptionHint.java      | 43 +++++++++--------
 .../maven/hints/pom/UseReleaseOptionHintTest.java  | 54 +++++++++++-----------
 2 files changed, 50 insertions(+), 47 deletions(-)

diff --git 
a/java/maven.hints/src/org/netbeans/modules/maven/hints/pom/UseReleaseOptionHint.java
 
b/java/maven.hints/src/org/netbeans/modules/maven/hints/pom/UseReleaseOptionHint.java
index f99f82f9b6..737b5bb39b 100644
--- 
a/java/maven.hints/src/org/netbeans/modules/maven/hints/pom/UseReleaseOptionHint.java
+++ 
b/java/maven.hints/src/org/netbeans/modules/maven/hints/pom/UseReleaseOptionHint.java
@@ -21,6 +21,7 @@ package org.netbeans.modules.maven.hints.pom;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
+import java.util.Optional;
 import java.util.prefs.Preferences;
 import javax.swing.JComponent;
 import javax.xml.namespace.QName;
@@ -66,32 +67,36 @@ public class UseReleaseOptionHint implements 
POMErrorFixProvider {
     @Override
     public List<ErrorDescription> getErrorsForDocument(POMModel model, Project 
prj) {
 
-        List<ErrorDescription> hints = new ArrayList<>();
-
         Build build = model.getProject().getBuild();
-        if (build != null) {
-            for (Plugin plugin : build.getPlugins()) {
-                if ("maven-compiler-plugin".equals(plugin.getArtifactId())) {
-                    if (!isPluginCompatible(plugin)) {
-                        return Collections.emptyList();
-                    }
-                    hints.addAll(createHintsForParent("", 
plugin.getConfiguration()));
-                    if (plugin.getExecutions() != null) {
-                        for (PluginExecution exec : plugin.getExecutions()) {
-                            hints.addAll(createHintsForParent("", 
exec.getConfiguration()));
-                        }
+
+        if (build != null && build.getPlugins() != null) {
+
+            List<ErrorDescription> hints = new ArrayList<>();
+            Optional<Plugin> compilerPlugin = build.getPlugins().stream()
+                    .filter((p) -> 
"maven-compiler-plugin".equals(p.getArtifactId()))
+                    .filter(this::isPluginCompatible)
+                    .findFirst();
+
+            if (compilerPlugin.isPresent()) {
+                hints.addAll(createHintsForParent("", 
compilerPlugin.get().getConfiguration()));
+                if (compilerPlugin.get().getExecutions() != null) {
+                    for (PluginExecution exec : 
compilerPlugin.get().getExecutions()) {
+                        hints.addAll(createHintsForParent("", 
exec.getConfiguration()));
                     }
-                    break;
                 }
+            } else {
+                return Collections.emptyList();
             }
-        }
 
-        Properties properties = model.getProject().getProperties();
-        if (properties != null) {
-            hints.addAll(createHintsForParent("maven.compiler.", properties));
+            Properties properties = model.getProject().getProperties();
+            if (properties != null) {
+                hints.addAll(createHintsForParent("maven.compiler.", 
properties));
+            }
+
+            return hints;
         }
 
-        return hints;
+        return Collections.emptyList();
     }
 
     private List<ErrorDescription> createHintsForParent(String prefix, 
POMComponent parent) {
diff --git 
a/java/maven.hints/test/unit/src/org/netbeans/modules/maven/hints/pom/UseReleaseOptionHintTest.java
 
b/java/maven.hints/test/unit/src/org/netbeans/modules/maven/hints/pom/UseReleaseOptionHintTest.java
index 58aefb06cc..40ac031648 100644
--- 
a/java/maven.hints/test/unit/src/org/netbeans/modules/maven/hints/pom/UseReleaseOptionHintTest.java
+++ 
b/java/maven.hints/test/unit/src/org/netbeans/modules/maven/hints/pom/UseReleaseOptionHintTest.java
@@ -50,7 +50,7 @@ public class UseReleaseOptionHintTest extends NbTestCase {
         work = FileUtil.toFileObject(getWorkDir());
     }
 
-    public void testProperties() throws Exception {
+    public void testNoPluginNegative() throws Exception {
         FileObject pom = TestFileUtils.writeFile(work, "pom.xml",
             "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
             "<project xmlns=\"http://maven.apache.org/POM/4.0.0\"; 
xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"; 
xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd\";>\n" +
@@ -70,36 +70,11 @@ public class UseReleaseOptionHintTest extends NbTestCase {
         POMModel model = 
POMModelFactory.getDefault().getModel(Utilities.createModelSource(pom));
         Project project = 
ProjectManager.getDefault().findProject(pom.getParent());
 
-        List<ErrorDescription> hints = new 
UseReleaseOptionHint().getErrorsForDocument(model, project);
-        assertEquals(2, hints.size());
-    }
-
-    public void testPropertiesNegative() throws Exception {
-        FileObject pom = TestFileUtils.writeFile(work, "pom.xml",
-            "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
-            "<project xmlns=\"http://maven.apache.org/POM/4.0.0\"; 
xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"; 
xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd\";>\n" +
-            "    <modelVersion>4.0.0</modelVersion>\n" +
-            "    <groupId>test</groupId>\n" +
-            "    <artifactId>mavenproject1</artifactId>\n" +
-            "    <version>1.0-SNAPSHOT</version>\n" +
-            "    <packaging>jar</packaging>\n" +
-            "    <properties>\n" +
-            "        
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n" +
-            "        
<exec.mainClass>test.mavenproject1.Mavenproject1</exec.mainClass>\n" +
-            "        <maven.compiler.source>8</maven.compiler.source>\n" +
-            "        <maven.compiler.target>8</maven.compiler.target>\n" +
-            "    </properties>\n" +
-            "</project>");
-
-        POMModel model = 
POMModelFactory.getDefault().getModel(Utilities.createModelSource(pom));
-        Project project = 
ProjectManager.getDefault().findProject(pom.getParent());
-
         List<ErrorDescription> hints = new 
UseReleaseOptionHint().getErrorsForDocument(model, project);
         assertEquals(0, hints.size());
     }
 
-    public void testCompilerPlugin() throws Exception {
-        FileObject pom = TestFileUtils.writeFile(work, "pom.xml",
+    private static final String COMPILER_POM =
             "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
             "<project xmlns=\"http://maven.apache.org/POM/4.0.0\"; 
xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"; 
xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd\";>\n" +
             "    <modelVersion>4.0.0</modelVersion>\n" +
@@ -141,7 +116,10 @@ public class UseReleaseOptionHintTest extends NbTestCase {
             "            </plugin>\n" +
             "        </plugins>\n" +
             "    </build>\n" +
-            "</project>");
+            "</project>";
+
+    public void testCompilerPlugin() throws Exception {
+        FileObject pom = TestFileUtils.writeFile(work, "pom.xml", 
COMPILER_POM);
 
         POMModel model = 
POMModelFactory.getDefault().getModel(Utilities.createModelSource(pom));
         Project project = 
ProjectManager.getDefault().findProject(pom.getParent());
@@ -150,4 +128,24 @@ public class UseReleaseOptionHintTest extends NbTestCase {
         assertEquals(6, hints.size());
     }
 
+    public void testOldCompilerPluginNegative() throws Exception {
+        FileObject pom = TestFileUtils.writeFile(work, "pom.xml", 
COMPILER_POM.replaceFirst("3.10.1", "3.5"));
+
+        POMModel model = 
POMModelFactory.getDefault().getModel(Utilities.createModelSource(pom));
+        Project project = 
ProjectManager.getDefault().findProject(pom.getParent());
+
+        List<ErrorDescription> hints = new 
UseReleaseOptionHint().getErrorsForDocument(model, project);
+        assertEquals(0, hints.size());
+    }
+
+    public void testCompilerPluginButOldTargetNegative() throws Exception {
+        FileObject pom = TestFileUtils.writeFile(work, "pom.xml", 
COMPILER_POM.replace("11", "5").replace("17", "1.4"));
+
+        POMModel model = 
POMModelFactory.getDefault().getModel(Utilities.createModelSource(pom));
+        Project project = 
ProjectManager.getDefault().findProject(pom.getParent());
+
+        List<ErrorDescription> hints = new 
UseReleaseOptionHint().getErrorsForDocument(model, project);
+        assertEquals(0, hints.size());
+    }
+
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists

Reply via email to