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

Reply via email to