You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@netbeans.apache.org by db...@apache.org on 2023/10/03 12:17:10 UTC
[netbeans] branch master updated: Micronaut: Add missing path variable parameter fix.
This is an automated email from the ASF dual-hosted git repository.
dbalek 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 985e4b69aa Micronaut: Add missing path variable parameter fix.
new ed2d7bc3c8 Merge pull request #6498 from dbalek/dbalek/micronaut-add-missing-path-var-param
985e4b69aa is described below
commit 985e4b69aa0f41e394e8d31014bf9ef96e1f7289
Author: Dusan Balek <du...@oracle.com>
AuthorDate: Thu Sep 28 16:53:11 2023 +0200
Micronaut: Add missing path variable parameter fix.
---
.github/workflows/main.yml | 14 ++-
enterprise/micronaut/nbproject/project.xml | 26 +++++
.../modules/micronaut/hints/AddArgForRouteVar.java | 114 +++++++++++++++++++++
.../netbeans/modules/micronaut/resources/layer.xml | 7 ++
.../nbproject/project.properties | 2 +-
java/java.hints.legacy.spi/nbproject/project.xml | 3 +-
.../infrastructure/CreatorBasedLazyFixList.java | 9 +-
.../hints/infrastructure/ErrorHintsProvider.java | 2 +-
.../CreatorBasedLazyFixListTest.java | 2 +-
.../infrastructure/LazyHintComputationTest.java | 2 +-
.../server/protocol/TextDocumentServiceImpl.java | 2 +-
11 files changed, 171 insertions(+), 12 deletions(-)
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 0798d57b8c..ebd792bc30 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -1957,7 +1957,7 @@ jobs:
enterprise-test:
- name: Enterprise on Linux/JDK ${{ matrix.java }} (some on 8)
+ name: Enterprise on Linux/JDK ${{ matrix.java }} (some on 8 and 17)
needs: base-build
runs-on: ubuntu-latest
timeout-minutes: 60
@@ -2066,9 +2066,6 @@ jobs:
- name: maven.j2ee
run: ant $OPTS -f enterprise/maven.j2ee test
- - name: micronaut
- run: .github/retry.sh ant $OPTS -f enterprise/micronaut test
-
# Fails
# - name: enterpirse/payara.common
# run: ant $OPTS -f enterprise/payara.common test
@@ -2198,6 +2195,15 @@ jobs:
- name: j2ee.dd.webservice
run: ant $OPTS -f enterprise/j2ee.dd.webservice test
+ - name: Set up JDK 17 for tests that are not compatible with JDK 11
+ uses: actions/setup-java@v3
+ with:
+ java-version: 17
+ distribution: ${{ env.default_java_distribution }}
+
+ - name: micronaut
+ run: .github/retry.sh ant $OPTS -f enterprise/micronaut test
+
- name: Create Test Summary
uses: test-summary/action@v2
if: failure()
diff --git a/enterprise/micronaut/nbproject/project.xml b/enterprise/micronaut/nbproject/project.xml
index aacce0f89a..7e1f44acab 100644
--- a/enterprise/micronaut/nbproject/project.xml
+++ b/enterprise/micronaut/nbproject/project.xml
@@ -214,6 +214,15 @@
<specification-version>1.71</specification-version>
</run-dependency>
</dependency>
+ <dependency>
+ <code-name-base>org.netbeans.modules.java.hints.legacy.spi</code-name-base>
+ <build-prerequisite/>
+ <compile-dependency/>
+ <run-dependency>
+ <release-version>1</release-version>
+ <specification-version>1.39</specification-version>
+ </run-dependency>
+ </dependency>
<dependency>
<code-name-base>org.netbeans.modules.java.lexer</code-name-base>
<build-prerequisite/>
@@ -336,6 +345,23 @@
<specification-version>1.58</specification-version>
</run-dependency>
</dependency>
+ <dependency>
+ <code-name-base>org.netbeans.spi.editor.hints</code-name-base>
+ <build-prerequisite/>
+ <compile-dependency/>
+ <run-dependency>
+ <release-version>0-1</release-version>
+ <specification-version>1.64</specification-version>
+ </run-dependency>
+ </dependency>
+ <dependency>
+ <code-name-base>org.netbeans.spi.java.hints</code-name-base>
+ <build-prerequisite/>
+ <compile-dependency/>
+ <run-dependency>
+ <specification-version>1.56</specification-version>
+ </run-dependency>
+ </dependency>
<dependency>
<code-name-base>org.netbeans.swing.plaf</code-name-base>
<build-prerequisite/>
diff --git a/enterprise/micronaut/src/org/netbeans/modules/micronaut/hints/AddArgForRouteVar.java b/enterprise/micronaut/src/org/netbeans/modules/micronaut/hints/AddArgForRouteVar.java
new file mode 100644
index 0000000000..7dcb35e0b2
--- /dev/null
+++ b/enterprise/micronaut/src/org/netbeans/modules/micronaut/hints/AddArgForRouteVar.java
@@ -0,0 +1,114 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.netbeans.modules.micronaut.hints;
+
+import com.sun.source.tree.MethodTree;
+import com.sun.source.tree.Tree;
+import com.sun.source.util.TreePath;
+import java.util.Collections;
+import java.util.EnumSet;
+import java.util.List;
+import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import javax.lang.model.element.Element;
+import javax.lang.model.element.ElementKind;
+import javax.lang.model.element.ExecutableElement;
+import javax.lang.model.element.Modifier;
+import org.netbeans.api.java.source.CompilationInfo;
+import org.netbeans.api.java.source.TreeMaker;
+import org.netbeans.api.java.source.WorkingCopy;
+import org.netbeans.modules.java.hints.spi.ErrorRule;
+import org.netbeans.spi.editor.hints.Fix;
+import org.netbeans.spi.java.hints.JavaFix;
+import org.openide.util.NbBundle;
+
+/**
+ *
+ * @author Dusan Balek
+ */
+public class AddArgForRouteVar implements ErrorRule<String> {
+
+ private static Pattern PATTERN = Pattern.compile("The route declares a uri variable named \\[(\\S*)\\]");
+
+ @Override
+ public Set<String> getCodes() {
+ return Collections.singleton("compiler.err.proc.messager");
+ }
+
+ @Override
+ public List<Fix> run(CompilationInfo compilationInfo, String diagnosticKey, int offset, TreePath treePath, Data<String> data) {
+ Matcher matcher = PATTERN.matcher(data.getData());
+ if (matcher.find() && matcher.groupCount() == 1) {
+ return Collections.singletonList(new AddArgForRouteVarFix(compilationInfo, offset, matcher.group(1)).toEditorFix());
+ }
+ return Collections.emptyList();
+ }
+
+ @Override
+ public String getId() {
+ return AddArgForRouteVar.class.getName();
+ }
+
+ @NbBundle.Messages("LBL_AddPathVarParam=Add Path Variable Parameter Fix")
+ @Override
+ public String getDisplayName() {
+ return Bundle.LBL_AddPathVarParam();
+ }
+
+ @Override
+ public void cancel() {
+ }
+
+ private static class AddArgForRouteVarFix extends JavaFix {
+
+ private final String name;
+
+ private AddArgForRouteVarFix(CompilationInfo info, int offset, String name) {
+ super(info, info.getTreeUtilities().pathFor(offset));
+ this.name = name;
+ }
+
+ @NbBundle.Messages("LBL_FIX_AddPathVarParam=Add path variable parameter \"{0}\"")
+ @Override
+ protected String getText() {
+ return Bundle.LBL_FIX_AddPathVarParam(name);
+ }
+
+ @Override
+ protected void performRewrite(TransformationContext ctx) throws Exception {
+ WorkingCopy working = ctx.getWorkingCopy();
+ TreeMaker make = working.getTreeMaker();
+ TreePath tp = ctx.getPath();
+ if (tp.getLeaf().getKind() == Tree.Kind.METHOD) {
+ MethodTree targetTree = (MethodTree) tp.getLeaf();
+ int index = targetTree.getParameters().size();
+ Element el = working.getTrees().getElement(tp);
+ if (el != null && el.getKind() == ElementKind.METHOD) {
+ ExecutableElement ee = (ExecutableElement) el;
+ if (ee.isVarArgs()) {
+ index = ee.getParameters().size() - 1;
+ }
+ MethodTree result = make.insertMethodParameter(targetTree, index, make.Variable(make.Modifiers(EnumSet.noneOf(Modifier.class)), name, make.QualIdent("java.lang.String"), null));
+ working.rewrite(targetTree, result);
+ }
+ }
+ }
+ }
+}
diff --git a/enterprise/micronaut/src/org/netbeans/modules/micronaut/resources/layer.xml b/enterprise/micronaut/src/org/netbeans/modules/micronaut/resources/layer.xml
index e9dc1d6d89..8b93c30fb4 100644
--- a/enterprise/micronaut/src/org/netbeans/modules/micronaut/resources/layer.xml
+++ b/enterprise/micronaut/src/org/netbeans/modules/micronaut/resources/layer.xml
@@ -159,4 +159,11 @@
</file>
</folder>
</folder>
+ <folder name="org-netbeans-modules-java-hints">
+ <folder name="rules">
+ <folder name="errors">
+ <file name="org-netbeans-modules-micronaut-hints-AddArgForRouteVar.instance"/>
+ </folder>
+ </folder>
+ </folder>
</filesystem>
diff --git a/java/java.hints.legacy.spi/nbproject/project.properties b/java/java.hints.legacy.spi/nbproject/project.properties
index 916ce8a291..d5024f8cc9 100644
--- a/java/java.hints.legacy.spi/nbproject/project.properties
+++ b/java/java.hints.legacy.spi/nbproject/project.properties
@@ -17,6 +17,6 @@
is.autoload=true
javac.source=1.8
javac.compilerargs=-Xlint -Xlint:-serial
-spec.version.base=1.38.0
+spec.version.base=1.39.0
javadoc.arch=${basedir}/arch.xml
requires.nb.javac=true
diff --git a/java/java.hints.legacy.spi/nbproject/project.xml b/java/java.hints.legacy.spi/nbproject/project.xml
index aad67103ca..591216454b 100644
--- a/java/java.hints.legacy.spi/nbproject/project.xml
+++ b/java/java.hints.legacy.spi/nbproject/project.xml
@@ -127,13 +127,14 @@
<friend-packages>
<friend>org.netbeans.modules.ant.hints</friend>
<friend>org.netbeans.modules.apisupport.ant</friend>
- <friend>org.netbeans.modules.java.lsp.server</friend>
<friend>org.netbeans.modules.jakarta.web.beans</friend>
+ <friend>org.netbeans.modules.java.lsp.server</friend>
<friend>org.netbeans.modules.javadoc</friend>
<friend>org.netbeans.modules.javahints</friend>
<friend>org.netbeans.modules.jshell.support</friend>
<friend>org.netbeans.modules.maven.hints</friend>
<friend>org.netbeans.modules.maven.j2ee</friend>
+ <friend>org.netbeans.modules.micronaut</friend>
<friend>org.netbeans.modules.web.beans</friend>
<package>org.netbeans.modules.java.hints.spi</package>
<package>org.netbeans.modules.java.hints.spi.preview</package>
diff --git a/java/java.hints/src/org/netbeans/modules/java/hints/infrastructure/CreatorBasedLazyFixList.java b/java/java.hints/src/org/netbeans/modules/java/hints/infrastructure/CreatorBasedLazyFixList.java
index 48f5908ff3..323c154da5 100644
--- a/java/java.hints/src/org/netbeans/modules/java/hints/infrastructure/CreatorBasedLazyFixList.java
+++ b/java/java.hints/src/org/netbeans/modules/java/hints/infrastructure/CreatorBasedLazyFixList.java
@@ -28,7 +28,6 @@ import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.atomic.AtomicBoolean;
-import java.util.logging.Logger;
import org.netbeans.api.java.source.CompilationInfo;
import org.netbeans.modules.java.hints.spi.ErrorRule;
import org.netbeans.modules.java.hints.spi.ErrorRule.Data;
@@ -49,15 +48,17 @@ public class CreatorBasedLazyFixList implements LazyFixList {
private FileObject file;
private String diagnosticKey;
+ private String diagnosticMessage;
private int offset;
private final Collection<ErrorRule> c;
private final Map<Class, Data> class2Data;
/** Creates a new instance of CreatorBasedLazyFixList */
- public CreatorBasedLazyFixList(FileObject file, String diagnosticKey, int offset, Collection<ErrorRule> c, Map<Class, Data> class2Data) {
+ public CreatorBasedLazyFixList(FileObject file, String diagnosticKey, String diagnosticMessage, int offset, Collection<ErrorRule> c, Map<Class, Data> class2Data) {
this.pcs = new PropertyChangeSupport(this);
this.file = file;
this.diagnosticKey = diagnosticKey;
+ this.diagnosticMessage = diagnosticMessage;
this.offset = offset;
this.c = c;
this.class2Data = class2Data;
@@ -119,6 +120,10 @@ public class CreatorBasedLazyFixList implements LazyFixList {
if (data == null) {
class2Data.put(rule.getClass(), data = new Data());
}
+
+ if ("compiler.err.proc.messager".equals(diagnosticKey)) { //NOI18N
+ data.setData(diagnosticMessage);
+ }
List<Fix> currentRuleFixes = rule.run(info, diagnosticKey, offset, path, data);
diff --git a/java/java.hints/src/org/netbeans/modules/java/hints/infrastructure/ErrorHintsProvider.java b/java/java.hints/src/org/netbeans/modules/java/hints/infrastructure/ErrorHintsProvider.java
index 983d7bb263..b954a376b1 100644
--- a/java/java.hints/src/org/netbeans/modules/java/hints/infrastructure/ErrorHintsProvider.java
+++ b/java/java.hints/src/org/netbeans/modules/java/hints/infrastructure/ErrorHintsProvider.java
@@ -165,7 +165,7 @@ public final class ErrorHintsProvider extends JavaParserResultTask {
}
}
if (messageRuleCount < allRules.size()) {
- ehm = new CreatorBasedLazyFixList(info.getFileObject(), code, pos, allRules, data);
+ ehm = new CreatorBasedLazyFixList(info.getFileObject(), code, desc, pos, allRules, data);
} else if (processDefault) {
ehm = ErrorDescriptionFactory.lazyListForFixes(Collections.<Fix>emptyList());
} else {
diff --git a/java/java.hints/test/unit/src/org/netbeans/modules/java/hints/infrastructure/CreatorBasedLazyFixListTest.java b/java/java.hints/test/unit/src/org/netbeans/modules/java/hints/infrastructure/CreatorBasedLazyFixListTest.java
index c89f508a02..866e365fb9 100644
--- a/java/java.hints/test/unit/src/org/netbeans/modules/java/hints/infrastructure/CreatorBasedLazyFixListTest.java
+++ b/java/java.hints/test/unit/src/org/netbeans/modules/java/hints/infrastructure/CreatorBasedLazyFixListTest.java
@@ -54,7 +54,7 @@ public class CreatorBasedLazyFixListTest extends HintsTestBase {
final AtomicBoolean[] cancel = new AtomicBoolean[1];
final CreatorBasedLazyFixList[] list = new CreatorBasedLazyFixList[1];
- list[0] = new CreatorBasedLazyFixList(null, "", 0, Collections.singleton((ErrorRule) new ErrorRule() {
+ list[0] = new CreatorBasedLazyFixList(null, "", "", 0, Collections.singleton((ErrorRule) new ErrorRule() {
public Set getCodes() {
throw new UnsupportedOperationException("Not supported yet.");
}
diff --git a/java/java.hints/test/unit/src/org/netbeans/modules/java/hints/infrastructure/LazyHintComputationTest.java b/java/java.hints/test/unit/src/org/netbeans/modules/java/hints/infrastructure/LazyHintComputationTest.java
index 1b4249deea..470926b23e 100644
--- a/java/java.hints/test/unit/src/org/netbeans/modules/java/hints/infrastructure/LazyHintComputationTest.java
+++ b/java/java.hints/test/unit/src/org/netbeans/modules/java/hints/infrastructure/LazyHintComputationTest.java
@@ -128,7 +128,7 @@ public class LazyHintComputationTest extends NbTestCase {
private final Runnable cancelCallback;
public CreatorBasedLazyFixListImpl(FileObject file, boolean[] marker, Runnable callback, Runnable cancelCallback) {
- super(file, null, -1, null, null);
+ super(file, null, null, -1, null, null);
this.marker = marker;
this.callback = callback;
this.cancelCallback = cancelCallback;
diff --git a/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/protocol/TextDocumentServiceImpl.java b/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/protocol/TextDocumentServiceImpl.java
index feb70c7b13..d1691690fe 100644
--- a/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/protocol/TextDocumentServiceImpl.java
+++ b/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/protocol/TextDocumentServiceImpl.java
@@ -958,7 +958,7 @@ public class TextDocumentServiceImpl implements TextDocumentService, LanguageCli
Range range = params.getRange();
int startOffset = Utils.getOffset(doc, range.getStart());
int endOffset = Utils.getOffset(doc, range.getEnd());
- if (startOffset == endOffset) {
+ if (startOffset == endOffset || !params.getContext().getDiagnostics().isEmpty()) {
final javax.swing.text.Element elem = NbDocument.findLineRootElement(doc);
int lineStartOffset = elem.getStartOffset();
int lineEndOffset = elem.getEndOffset();
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@netbeans.apache.org
For additional commands, e-mail: commits-help@netbeans.apache.org
For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists