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