This is an automated email from the ASF dual-hosted git repository. mbien pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/netbeans.git
The following commit(s) were added to refs/heads/master by this push: new 028e3fbeb7 UpdateDependencyHint should work on plugins with default maven group id new a867eb816b Merge pull request #6493 from mbien/dep-hint-default-maven-plugin 028e3fbeb7 is described below commit 028e3fbeb788c8679ce64490599f98a66615dd62 Author: Michael Bien <mbie...@gmail.com> AuthorDate: Tue Sep 26 00:31:18 2023 +0200 UpdateDependencyHint should work on plugins with default maven group id - default plugins can omit the group ID, the hint should still check their versions - made hint aware of the reporting plugin section (thanks Matthias Bläsing) - moved module to JDK 11 since it already has JDK 11 dependencies --- java/maven.hints/manifest.mf | 1 + java/maven.hints/nbproject/project.properties | 4 ++-- .../maven/hints/pom/UpdateDependencyHint.java | 25 +++++++++++++++++----- .../maven/hints/pom/UseReleaseOptionHint.java | 17 +++++++-------- .../maven/hints/pom/StatusProviderTest.java | 14 +++--------- .../maven/hints/pom/UseReleaseOptionHintTest.java | 10 +++++++++ 6 files changed, 44 insertions(+), 27 deletions(-) diff --git a/java/maven.hints/manifest.mf b/java/maven.hints/manifest.mf index ae8a98152a..a1c30c3e56 100644 --- a/java/maven.hints/manifest.mf +++ b/java/maven.hints/manifest.mf @@ -4,3 +4,4 @@ OpenIDE-Module-Specification-Version: 1.62 OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/maven/hints/Bundle.properties OpenIDE-Module-Layer: org/netbeans/modules/maven/hints/layer.xml AutoUpdate-Show-In-Client: false +OpenIDE-Module-Java-Dependencies: Java > 11 diff --git a/java/maven.hints/nbproject/project.properties b/java/maven.hints/nbproject/project.properties index b1ac481b42..3505a90895 100644 --- a/java/maven.hints/nbproject/project.properties +++ b/java/maven.hints/nbproject/project.properties @@ -16,10 +16,10 @@ # under the License. is.eager=true -javac.source=1.8 +javac.source=11 +javac.target=11 #javac.compilerargs=-Xlint -Xlint:-serial test.config.stableBTD.includes=**/*Test.class -requires.nb.javac=true test-unit-sys-prop.test.netbeans.dest.dir=${netbeans.dest.dir} diff --git a/java/maven.hints/src/org/netbeans/modules/maven/hints/pom/UpdateDependencyHint.java b/java/maven.hints/src/org/netbeans/modules/maven/hints/pom/UpdateDependencyHint.java index b42343f1e5..cba4ce60ea 100644 --- a/java/maven.hints/src/org/netbeans/modules/maven/hints/pom/UpdateDependencyHint.java +++ b/java/maven.hints/src/org/netbeans/modules/maven/hints/pom/UpdateDependencyHint.java @@ -19,7 +19,6 @@ package org.netbeans.modules.maven.hints.pom; import java.util.ArrayList; -import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -30,6 +29,7 @@ import javax.swing.text.Document; import org.apache.maven.artifact.versioning.ComparableVersion; import org.netbeans.api.project.Project; import org.netbeans.modules.editor.NbEditorUtilities; +import org.netbeans.modules.maven.api.Constants; import org.netbeans.modules.maven.hints.pom.spi.Configuration; import org.netbeans.modules.maven.hints.pom.spi.POMErrorFixProvider; import org.netbeans.modules.maven.indexer.api.NBVersionInfo; @@ -40,8 +40,11 @@ import org.netbeans.modules.maven.model.pom.DependencyManagement; import org.netbeans.modules.maven.model.pom.POMComponent; import org.netbeans.modules.maven.model.pom.POMExtensibilityElement; import org.netbeans.modules.maven.model.pom.POMModel; +import org.netbeans.modules.maven.model.pom.Plugin; import org.netbeans.modules.maven.model.pom.PluginManagement; import org.netbeans.modules.maven.model.pom.Properties; +import org.netbeans.modules.maven.model.pom.ReportPlugin; +import org.netbeans.modules.maven.model.pom.Reporting; import org.netbeans.modules.maven.model.pom.VersionablePOMComponent; import org.netbeans.spi.editor.hints.ChangeInfo; import org.netbeans.spi.editor.hints.ErrorDescription; @@ -102,6 +105,13 @@ public class UpdateDependencyHint implements POMErrorFixProvider { } } + Reporting reporting = model.getProject().getReporting(); + if (reporting != null) { + if (reporting.getReportPlugins() != null) { + addHintsTo(reporting.getReportPlugins(), hints); + } + } + return new ArrayList<>(hints.values()); } @@ -109,10 +119,15 @@ public class UpdateDependencyHint implements POMErrorFixProvider { for (VersionablePOMComponent comp : components) { - String groupId = comp.getGroupId(); - String artifactId = comp.getArtifactId(); + String groupId = comp.getGroupId() != null && !comp.getGroupId().isBlank() ? comp.getGroupId() : null; + String artifactId = comp.getArtifactId() != null && !comp.getArtifactId().isBlank() ? comp.getArtifactId() : null; + + // no group ID could indicate it is a default maven plugin + if (groupId == null && (comp instanceof Plugin || comp instanceof ReportPlugin)) { + groupId = Constants.GROUP_APACHE_PLUGINS; + } - if (groupId != null && artifactId != null && !groupId.isEmpty() && !artifactId.isEmpty()) { + if (artifactId != null && groupId != null) { boolean property = false; String version = comp.getVersion(); @@ -197,7 +212,7 @@ public class UpdateDependencyHint implements POMErrorFixProvider { private ErrorDescription createHintForComponent(POMExtensibilityElement comp, String version) { Document doc = comp.getModel().getBaseDocument(); int line = NbEditorUtilities.getLine(doc, comp.findPosition(), false).getLineNumber() + 1; - List<Fix> fix = Collections.singletonList(new UpdateVersionFix(comp, version)); + List<Fix> fix = List.of(new UpdateVersionFix(comp, version)); return ErrorDescriptionFactory.createErrorDescription(Severity.HINT, HINT_UpdateDependencyHint() + version, fix, doc, line); } 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 5835cd4ad6..a6b9a5f100 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 @@ -19,7 +19,6 @@ 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; @@ -78,7 +77,7 @@ public class UseReleaseOptionHint implements POMErrorFixProvider { public List<ErrorDescription> getErrorsForDocument(POMModel model, Project prj) { if (prj == null) { - return Collections.emptyList(); + return List.of(); } // no hints if plugin was downgraded @@ -87,7 +86,7 @@ public class UseReleaseOptionHint implements POMErrorFixProvider { // note: this is the embedded plugin version, only useful for downgrade checks String pluginVersion = PluginPropertyUtils.getPluginVersion(nbproject.getMavenProject(), Constants.GROUP_APACHE_PLUGINS, Constants.PLUGIN_COMPILER); if (pluginVersion != null && new ComparableVersion(pluginVersion).compareTo(COMPILER_PLUGIN_VERSION) <= 0) { - return Collections.emptyList(); + return List.of(); } } @@ -99,7 +98,7 @@ public class UseReleaseOptionHint implements POMErrorFixProvider { if (build != null && build.getPlugins() != null) { Optional<Plugin> compilerPlugin = build.getPlugins().stream() - .filter((p) -> "maven-compiler-plugin".equals(p.getArtifactId())) + .filter((p) -> Constants.PLUGIN_COMPILER.equals(p.getArtifactId())) .filter(this::isPluginCompatible) .findFirst(); @@ -118,7 +117,7 @@ public class UseReleaseOptionHint implements POMErrorFixProvider { if (!releaseSupportedByDeclaredPlugin) { ComparableVersion mavenVersion = PomModelUtils.getActiveMavenVersion(); if (mavenVersion == null || mavenVersion.compareTo(MAVEN_VERSION) <= 0) { - return Collections.emptyList(); + return List.of(); } } @@ -133,7 +132,7 @@ public class UseReleaseOptionHint implements POMErrorFixProvider { private List<ErrorDescription> createHintsForParent(String prefix, POMComponent parent) { if (parent == null) { - return Collections.emptyList(); + return List.of(); } int source; @@ -162,7 +161,7 @@ public class UseReleaseOptionHint implements POMErrorFixProvider { } } catch (NumberFormatException ignored) { // if source or target is invalid or missing - return Collections.emptyList(); + return List.of(); } if (source == target && source >= 9) { @@ -175,12 +174,12 @@ public class UseReleaseOptionHint implements POMErrorFixProvider { } return hints; } - return Collections.emptyList(); + return List.of(); } private ErrorDescription createHintForComponent(String prefix, POMComponent component, POMModel model, String release) { Line line = NbEditorUtilities.getLine(model.getBaseDocument(), component.findPosition(), false); - List<Fix> fix = Collections.singletonList(new ConvertToReleaseOptionFix(prefix, release, component)); + List<Fix> fix = List.of(new ConvertToReleaseOptionFix(prefix, release, component)); return ErrorDescriptionFactory.createErrorDescription(Severity.HINT, FIX_UseReleaseVersionHint(), fix, model.getBaseDocument(), line.getLineNumber()+1); } diff --git a/java/maven.hints/test/unit/src/org/netbeans/modules/maven/hints/pom/StatusProviderTest.java b/java/maven.hints/test/unit/src/org/netbeans/modules/maven/hints/pom/StatusProviderTest.java index 468b167d67..a5cabb82d9 100644 --- a/java/maven.hints/test/unit/src/org/netbeans/modules/maven/hints/pom/StatusProviderTest.java +++ b/java/maven.hints/test/unit/src/org/netbeans/modules/maven/hints/pom/StatusProviderTest.java @@ -23,7 +23,6 @@ import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import org.netbeans.junit.NbTestCase; -import org.openide.filesystems.FileUtil; import org.openide.modules.DummyInstalledFileLocator; import org.openide.util.test.MockLookup; @@ -52,16 +51,9 @@ public class StatusProviderTest extends NbTestCase { MockLookup.setLayersAndInstances(new InstalledFileLocator()); // new File(StatusProviderTest.class.getResource(...).toURI()) may not work in all environments, e.g. testdist File pom = new File(getWorkDir(), "pom.xml"); - InputStream is = StatusProviderTest.class.getResourceAsStream("pom-with-warnings.xml"); - try { - OutputStream os = new FileOutputStream(pom); - try { - FileUtil.copy(is, os); - } finally { - os.close(); - } - } finally { - is.close(); + try (InputStream is = StatusProviderTest.class.getResourceAsStream("pom-with-warnings.xml"); + OutputStream os = new FileOutputStream(pom)) { + is.transferTo(os); } String warnings = PomModelUtils.runMavenValidationImpl(pom, null).toString().replace(pom.getAbsolutePath(), "pom.xml"); assertEquals("[" 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 08d875dc47..6a938f8d31 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 @@ -141,6 +141,16 @@ public class UseReleaseOptionHintTest extends NbTestCase { assertEquals(6, hints.size()); } + public void testCompilerPluginWithNoGroupID() throws Exception { + FileObject pom = TestFileUtils.writeFile(work, "pom.xml", COMPILER_POM.replaceFirst("<groupId>org.apache.maven.plugins</groupId>", "")); + + POMModel model = POMModelFactory.getDefault().getModel(Utilities.createModelSource(pom)); + Project project = ProjectManager.getDefault().findProject(pom.getParent()); + + List<ErrorDescription> hints = new UseReleaseOptionHint().getErrorsForDocument(model, project); + assertEquals(6, hints.size()); + } + public void testOldCompilerPlugin() throws Exception { FileObject pom = TestFileUtils.writeFile(work, "pom.xml", COMPILER_POM.replaceFirst("3.10.1", "3.5")); --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@netbeans.apache.org For additional commands, e-mail: commits-h...@netbeans.apache.org For further information about the NetBeans mailing lists, visit: https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists