#7505: Let lsp.client display completions provided by CompletionCollector
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 5505f9a..8f40bbb 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -891,9 +891,9 @@
# run: ant $OPTS -f java/ant.grammar test
# TODO next are JDK 21+ incompatibe steps
-# - name: java/java.mx.project
-# if: ${{ matrix.java == '17' }}
-# run: .github/retry.sh ant $OPTS -f java/java.mx.project test
+ - name: java/java.mx.project
+ if: ${{ matrix.java == '17' }}
+ run: .github/retry.sh ant $OPTS -f java/java.mx.project test
- name: java/gradle.java
if: ${{ matrix.java == '17' }}
diff --git a/enterprise/micronaut/src/org/netbeans/modules/micronaut/db/MicronautEntity.java b/enterprise/micronaut/src/org/netbeans/modules/micronaut/db/MicronautEntity.java
index 977775b..9b677bd 100644
--- a/enterprise/micronaut/src/org/netbeans/modules/micronaut/db/MicronautEntity.java
+++ b/enterprise/micronaut/src/org/netbeans/modules/micronaut/db/MicronautEntity.java
@@ -104,7 +104,7 @@
@NbBundle.Messages({
"MSG_NoDbConn=No database connection found",
- "MSG_NoDdSupport=No database support libraries found for {0}",
+ "MSG_NoDdSupport=No Micronaut Data support libraries found for {0}",
"MSG_NoProject=No project found for {0}",
"MSG_NoSourceGroup=No source group found for {0}",
"MSG_SelectTables=Select Database Tables",
diff --git a/enterprise/micronaut/src/org/netbeans/modules/micronaut/symbol/MicronautSymbolFinder.java b/enterprise/micronaut/src/org/netbeans/modules/micronaut/symbol/MicronautSymbolFinder.java
index ba9a5a2..a7390b0 100644
--- a/enterprise/micronaut/src/org/netbeans/modules/micronaut/symbol/MicronautSymbolFinder.java
+++ b/enterprise/micronaut/src/org/netbeans/modules/micronaut/symbol/MicronautSymbolFinder.java
@@ -62,6 +62,7 @@
import javax.tools.JavaFileObject;
import org.netbeans.api.editor.mimelookup.MimeRegistration;
import org.netbeans.api.java.classpath.ClassPath;
+import org.netbeans.api.java.project.JavaProjectConstants;
import org.netbeans.api.java.source.ClassIndex;
import org.netbeans.api.java.source.ClasspathInfo;
import org.netbeans.api.java.source.CompilationController;
@@ -69,6 +70,8 @@
import org.netbeans.api.java.source.JavaSource;
import org.netbeans.api.project.FileOwnerQuery;
import org.netbeans.api.project.Project;
+import org.netbeans.api.project.ProjectUtils;
+import org.netbeans.api.project.SourceGroup;
import org.netbeans.modules.parsing.api.Snapshot;
import org.netbeans.modules.parsing.spi.Parser;
import org.netbeans.modules.parsing.spi.indexing.Context;
@@ -106,7 +109,7 @@
private static final String MANAGEMENT_DELETE_ANNOTATION = "io.micronaut.management.endpoint.annotation.Delete";
private static final String MANAGEMENT_SELECTOR_ANNOTATION = "io.micronaut.management.endpoint.annotation.Selector";
- private final Map<Project, Boolean> map = new WeakHashMap<>();
+ private final Map<FileObject, Boolean> map = new WeakHashMap<>();
private final Map<ClasspathInfo, List<ClassSymbolLocation>> cache = new WeakHashMap<>();
@Override
@@ -135,15 +138,21 @@
if (p == null) {
return false;
}
- Boolean ret = map.get(p);
- if (ret == null) {
- ClassPath cp = ClassPath.getClassPath(p.getProjectDirectory(), ClassPath.COMPILE);
- cp.addPropertyChangeListener(WeakListeners.propertyChange(this, cp));
- ret = cp.findResource("io/micronaut/http/annotation/HttpMethodMapping.class") != null
- || cp.findResource("io/micronaut/management/endpoint/annotation/Endpoint.class") != null;
- map.put(p, ret);
+ for (SourceGroup sg : ProjectUtils.getSources(p).getSourceGroups(JavaProjectConstants.SOURCES_TYPE_JAVA)) {
+ if (sg.contains(cc.getFileObject())) {
+ FileObject root = sg.getRootFolder();
+ Boolean ret = map.get(root);
+ if (ret == null) {
+ ClassPath cp = ClassPath.getClassPath(root, ClassPath.COMPILE);
+ cp.addPropertyChangeListener(WeakListeners.propertyChange(this, cp));
+ ret = cp.findResource("io/micronaut/http/annotation/HttpMethodMapping.class") != null
+ || cp.findResource("io/micronaut/management/endpoint/annotation/Endpoint.class") != null;
+ map.put(root, ret);
+ }
+ return ret;
+ }
}
- return ret;
+ return false;
}
public static List<SymbolLocation> scan(CompilationController cc, boolean selectEndpointAnnotation) {
@@ -588,8 +597,23 @@
for (AnnotationMirror ann : ee.getAnnotationMirrors()) {
String method = getEndpointMethod((TypeElement) ann.getAnnotationType().asElement());
if (method != null) {
- String name = '@' + path + getId(ee) + " -- " + method;
- ret.add(new ClassSymbolLocation(name, fo, mth.getKind().name(), getSignatures(mth)));
+ List<String> ids = new ArrayList<>();
+ for (Map.Entry<? extends ExecutableElement, ? extends AnnotationValue> entry : ann.getElementValues().entrySet()) {
+ if ("value".contentEquals(entry.getKey().getSimpleName()) || "uri".contentEquals(entry.getKey().getSimpleName())) {
+ ids.add((String) entry.getValue().getValue());
+ } else if ("uris".contentEquals(entry.getKey().getSimpleName())) {
+ for (AnnotationValue av : (List<AnnotationValue>) entry.getValue().getValue()) {
+ ids.add((String) av.getValue());
+ }
+ }
+ }
+ if (ids.isEmpty()) {
+ ids.add(getId(ee));
+ }
+ for (String id : ids) {
+ String name = '@' + path + id + " -- " + method;
+ ret.add(new ClassSymbolLocation(name, fo, mth.getKind().name(), getSignatures(mth)));
+ }
}
}
}
diff --git a/enterprise/micronaut/src/org/netbeans/modules/micronaut/symbol/MicronautSymbolSearcher.java b/enterprise/micronaut/src/org/netbeans/modules/micronaut/symbol/MicronautSymbolSearcher.java
index c3cb17f..5dfec78 100644
--- a/enterprise/micronaut/src/org/netbeans/modules/micronaut/symbol/MicronautSymbolSearcher.java
+++ b/enterprise/micronaut/src/org/netbeans/modules/micronaut/symbol/MicronautSymbolSearcher.java
@@ -34,7 +34,9 @@
import java.util.stream.Collectors;
import javax.swing.Icon;
import javax.swing.text.StyledDocument;
+import org.netbeans.api.java.classpath.ClassPath;
import org.netbeans.api.java.project.JavaProjectConstants;
+import org.netbeans.api.java.queries.UnitTestForSourceQuery;
import org.netbeans.api.java.source.ClasspathInfo;
import org.netbeans.api.java.source.JavaSource;
import org.netbeans.api.lsp.Diagnostic;
@@ -127,7 +129,8 @@
Set<SymbolDescriptor> symbols = new HashSet<>();
for (SourceGroup sg : ProjectUtils.getSources(project).getSourceGroups(JavaProjectConstants.SOURCES_TYPE_JAVA)) {
try {
- FileObject cacheRoot = getCacheRoot(sg.getRootFolder().toURL());
+ FileObject root = sg.getRootFolder();
+ FileObject cacheRoot = getCacheRoot(root.toURL());
if (cacheRoot != null) {
cacheRoot.refresh();
Enumeration<? extends FileObject> children = cacheRoot.getChildren(true);
@@ -138,13 +141,18 @@
}
}
}
+ if (UnitTestForSourceQuery.findUnitTests(root).length > 0) {
+ ClassPath bootCP = ClassPath.getClassPath(root, ClassPath.BOOT);
+ ClassPath execCP = ClassPath.getClassPath(root, ClassPath.EXECUTE);
+ ClasspathInfo cpInfo = ClasspathInfo.create(bootCP != null ? bootCP : ClassPath.EMPTY, execCP != null ? execCP : ClassPath.EMPTY, null);
+ for (MicronautSymbolFinder.ClassSymbolLocation loc : MicronautSymbolFinder.getSymbolsFromDependencies(cpInfo, textForQuery)) {
+ symbols.add(new SymbolDescriptor(loc.getName(), loc.getFile(), loc.getKind(), loc.getSignatures()));
+ }
+ }
} catch (IOException ex) {
Exceptions.printStackTrace(ex);
}
}
- for (MicronautSymbolFinder.ClassSymbolLocation loc : MicronautSymbolFinder.getSymbolsFromDependencies(ClasspathInfo.create(project.getProjectDirectory()), textForQuery)) {
- symbols.add(new SymbolDescriptor(loc.getName(), loc.getFile(), loc.getKind(), loc.getSignatures()));
- }
return symbols;
}
diff --git a/extide/gradle/src/org/netbeans/modules/gradle/execute/AbstractGradleExecutor.java b/extide/gradle/src/org/netbeans/modules/gradle/execute/AbstractGradleExecutor.java
index c1188eb..f682d53 100644
--- a/extide/gradle/src/org/netbeans/modules/gradle/execute/AbstractGradleExecutor.java
+++ b/extide/gradle/src/org/netbeans/modules/gradle/execute/AbstractGradleExecutor.java
@@ -284,7 +284,9 @@
@Override
public void repeatExecution() {
- //TODO: Implement
+ if (config.getExecFlags().contains(RunConfig.ExecFlag.REPEATABLE)) {
+ RunUtils.executeGradle(config, null);
+ }
}
@Override
diff --git a/java/java.file.launcher/src/org/netbeans/modules/java/file/launcher/queries/MultiSourceRootProvider.java b/java/java.file.launcher/src/org/netbeans/modules/java/file/launcher/queries/MultiSourceRootProvider.java
index 7793d06..0bfc6bf 100644
--- a/java/java.file.launcher/src/org/netbeans/modules/java/file/launcher/queries/MultiSourceRootProvider.java
+++ b/java/java.file.launcher/src/org/netbeans/modules/java/file/launcher/queries/MultiSourceRootProvider.java
@@ -94,8 +94,18 @@
private Map<FileObject, ClassPath> file2ClassPath = new WeakHashMap<>();
private Map<FileObject, ClassPath> file2ModulePath = new WeakHashMap<>();
+ static boolean isSupportedFile(FileObject file) {
+ return SingleSourceFileUtil.isSingleSourceFile(file)
+ // MultiSourceRootProvider assumes it can convert FileObject to
+ // java.io.File, so filter here
+ && Objects.equals("file", file.toURI().getScheme());
+ }
+
@Override
public ClassPath findClassPath(FileObject file, String type) {
+ if (! isSupportedFile(file)) {
+ return null;
+ }
switch (type) {
case ClassPath.SOURCE: return getSourcePath(file);
case ClassPath.COMPILE:
diff --git a/java/java.file.launcher/test/unit/src/org/netbeans/modules/java/file/launcher/SingleSourceFileUtilTest.java b/java/java.file.launcher/test/unit/src/org/netbeans/modules/java/file/launcher/SingleSourceFileUtilTest.java
index 5ad96c0..9bbd0d5 100644
--- a/java/java.file.launcher/test/unit/src/org/netbeans/modules/java/file/launcher/SingleSourceFileUtilTest.java
+++ b/java/java.file.launcher/test/unit/src/org/netbeans/modules/java/file/launcher/SingleSourceFileUtilTest.java
@@ -82,4 +82,38 @@
}
}
}
+
+ @Test
+ public void testSsSingleSourceFile() throws IOException {
+ File vcsDemoDir = null;
+ File supportedFile = null;
+ File unsupportedFile = null;
+ File unsupportedFile2 = null;
+ try {
+ vcsDemoDir = Files.createTempDirectory("vcs-dummy").toFile();
+ supportedFile = Files.createTempFile("dummy", ".java").toFile();
+ unsupportedFile = new File(vcsDemoDir, "dummy.java");
+ unsupportedFile2 = Files.createTempFile("dummy", ".non-java").toFile();;
+ FileUtil.createData(unsupportedFile);
+
+ assertTrue(SingleSourceFileUtil.isSingleSourceFile(FileUtil.createData(supportedFile)));
+ assertFalse(SingleSourceFileUtil.isSingleSourceFile(FileUtil.createData(unsupportedFile)));
+ assertFalse(SingleSourceFileUtil.isSingleSourceFile(FileUtil.createData(unsupportedFile2)));
+
+ } finally {
+ if(supportedFile != null && supportedFile.exists()) {
+ supportedFile.delete();
+ }
+ if(unsupportedFile != null && unsupportedFile.exists()) {
+ unsupportedFile.delete();
+ }
+ if(unsupportedFile2 != null && unsupportedFile2.exists()) {
+ unsupportedFile2.delete();
+ }
+ if(vcsDemoDir != null && vcsDemoDir.exists()) {
+ vcsDemoDir.delete();
+ }
+ }
+ }
+
}
diff --git a/java/java.file.launcher/test/unit/src/org/netbeans/modules/java/file/launcher/queries/MultiSourceRootProviderTest.java b/java/java.file.launcher/test/unit/src/org/netbeans/modules/java/file/launcher/queries/MultiSourceRootProviderTest.java
index 61694bb..ff7245d 100644
--- a/java/java.file.launcher/test/unit/src/org/netbeans/modules/java/file/launcher/queries/MultiSourceRootProviderTest.java
+++ b/java/java.file.launcher/test/unit/src/org/netbeans/modules/java/file/launcher/queries/MultiSourceRootProviderTest.java
@@ -18,7 +18,10 @@
*/
package org.netbeans.modules.java.file.launcher.queries;
+import java.io.File;
+import java.io.IOException;
import java.net.URI;
+import java.nio.file.Files;
import java.util.Arrays;
import java.util.HashSet;
import java.util.concurrent.atomic.AtomicInteger;
@@ -245,6 +248,22 @@
provider.findClassPath(test, JavaClassPathConstants.MODULE_COMPILE_PATH);
}
+ public void testMultiSourceRootProviderOnlySupportedForLocalFiles() throws IOException {
+ File supportedFile = null;
+ try {
+ supportedFile = Files.createTempFile("dummy", ".java").toFile();
+ FileObject realFileSource = FileUtil.createData(supportedFile);
+ FileObject inMemorySource = FileUtil.createMemoryFileSystem().getRoot().createData("Ahoj.java");
+
+ assertFalse(MultiSourceRootProvider.isSupportedFile(inMemorySource));
+ assertTrue(MultiSourceRootProvider.isSupportedFile(realFileSource));
+ } finally {
+ if(supportedFile != null && supportedFile.exists()) {
+ supportedFile.delete();
+ }
+ }
+ }
+
@Override
protected void setUp() throws Exception {
super.setUp();
diff --git a/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/protocol/WorkspaceServiceImpl.java b/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/protocol/WorkspaceServiceImpl.java
index 7a0c6be..d3027a2 100644
--- a/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/protocol/WorkspaceServiceImpl.java
+++ b/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/protocol/WorkspaceServiceImpl.java
@@ -1058,7 +1058,7 @@
js.runWhenScanFinished(cc -> {
WORKER.post(() -> {
try {
- List<WorkspaceSymbol> symbols = new ArrayList<>();
+ Set<WorkspaceSymbol> symbols = new HashSet<>();
SearchType searchType = getSearchType(queryFin, exactFin, false, null, null);
// CSL Part
@@ -1218,7 +1218,7 @@
symbols.add(symbol);
}
}
- result.complete(Either.forRight(symbols));
+ result.complete(Either.forRight(new ArrayList<>(symbols)));
} catch (Throwable t) {
result.completeExceptionally(t);
}
diff --git a/java/java.lsp.server/test/unit/src/org/netbeans/modules/java/lsp/server/protocol/ServerTest.java b/java/java.lsp.server/test/unit/src/org/netbeans/modules/java/lsp/server/protocol/ServerTest.java
index f12c947..4fce71a 100644
--- a/java/java.lsp.server/test/unit/src/org/netbeans/modules/java/lsp/server/protocol/ServerTest.java
+++ b/java/java.lsp.server/test/unit/src/org/netbeans/modules/java/lsp/server/protocol/ServerTest.java
@@ -1944,11 +1944,12 @@
}
return ws.getKind() + ":" + ws.getName() + ":" + ws.getContainerName() + ":" + (ws.getLocation().isLeft() ? toString(ws.getLocation().getLeft()) : toString(ws.getLocation().getRight()));
}).collect(Collectors.toList());
- assertEquals(Arrays.asList("Constructor:Test():Test:Test.java:0:7-0:7",
- "Method:testMethod():Test:Test.java:2:4-2:38",
+ Collections.sort(actual);
+ assertEquals(Arrays.asList("Class:Test:null:?CLASS#Test",
+ "Class:TestNested:Test:?CLASS#Test$TestNested",
+ "Constructor:Test():Test:Test.java:0:7-0:7",
"Constructor:TestNested():Test.TestNested:Test.java:1:18-1:18",
- "Class:Test:null:?CLASS#Test",
- "Class:TestNested:Test:?CLASS#Test$TestNested"),
+ "Method:testMethod():Test:Test.java:2:4-2:38"),
actual);
}
diff --git a/java/java.mx.project/build.xml b/java/java.mx.project/build.xml
index d3be443..bbd780a 100644
--- a/java/java.mx.project/build.xml
+++ b/java/java.mx.project/build.xml
@@ -47,14 +47,11 @@
</exec>
</target>
- <!--
- TODO the branches of https://github.com/graalvm/mx disappered
<target name="test-preinit" depends="-checkout-graalvm">
<exec dir="${graal.dir}/truffle" executable="${mx.dir}/mx" failonerror="true">
<arg value="build"/>
</exec>
</target>
- -->
<target name="test-unit-build-datajar"/>
<import file="../../nbbuild/templates/projectized.xml"/>
diff --git a/java/maven.indexer/external/binaries-list b/java/maven.indexer/external/binaries-list
index 0adb9f1..bfde38d 100644
--- a/java/maven.indexer/external/binaries-list
+++ b/java/maven.indexer/external/binaries-list
@@ -14,13 +14,13 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
-C867D9AA6A9AB14F62D35FB689A789A6CB5AF62E org.apache.maven.indexer:indexer-core:7.1.2
-219D09C157DDFBD741642FEDC28931D3561984B6 org.apache.maven.indexer:search-api:7.1.2
-2625D44190FDB8E7B85C8FCF1803637390A20ACC org.apache.maven.indexer:search-backend-smo:7.1.2
-64E5624754D59386BE5D9159C68F81FF96298704 org.apache.lucene:lucene-core:9.10.0
-6570EBF974D07025AD4CD9FFAA9927546B534704 org.apache.lucene:lucene-backward-codecs:9.10.0
-2F21ADE4B4896F1ECE2B3A823E1640C762C9D0CF org.apache.lucene:lucene-highlighter:9.10.0
-C50F82D244EA5ADAC2D2D9295DE85DDCCC2D45CB org.apache.lucene:lucene-queryparser:9.10.0
-92E559808A23F61C818EF90A9CCAB3669A25CAA0 org.apache.lucene:lucene-analysis-common:9.10.0
+6B6780786C8FBF64FE4C809BBAC2CE4FD5D996C4 org.apache.maven.indexer:indexer-core:7.1.3
+7AB214FA5A675719E011F514939E52C010F049F6 org.apache.maven.indexer:search-api:7.1.3
+58A364CECD56F04A55D2F0C932DF879C7168C4C3 org.apache.maven.indexer:search-backend-smo:7.1.3
+2E487755A6814B2A1BC770C26569DCBA86873DCF org.apache.lucene:lucene-core:9.11.0
+DB385446BC3FD70E7C6A744276C0A157BD60EE0A org.apache.lucene:lucene-backward-codecs:9.11.0
+44ACCDC03C5482E602718F7BF91E5940BA4E4870 org.apache.lucene:lucene-highlighter:9.11.0
+E97FE1C0D102EDB8D6E1C01454992FD2B8D80AE0 org.apache.lucene:lucene-queryparser:9.11.0
+75A0A333CF1E043102743066C929E65FE51CBCDA org.apache.lucene:lucene-analysis-common:9.11.0
934C04D3CFEF185A8008E7BF34331B79730A9D43 javax.annotation:javax.annotation-api:1.3.2
-B3ADD478D4382B78EA20B1671390A858002FEB6C com.google.code.gson:gson:2.10.1
+527175CA6D81050B53BDD4C457A6D6E017626B0E com.google.code.gson:gson:2.11.0
diff --git a/java/maven.indexer/external/gson-2.10.1-license.txt b/java/maven.indexer/external/gson-2.11.0-license.txt
similarity index 99%
rename from java/maven.indexer/external/gson-2.10.1-license.txt
rename to java/maven.indexer/external/gson-2.11.0-license.txt
index 58c1de7..cce6b58 100644
--- a/java/maven.indexer/external/gson-2.10.1-license.txt
+++ b/java/maven.indexer/external/gson-2.11.0-license.txt
@@ -1,7 +1,7 @@
Name: GSon
Description: JSon serialization/deserialization library
Origin: GitHub
-Version: 2.10.1
+Version: 2.11.0
License: Apache-2.0
Source: https://github.com/google/gson
diff --git a/java/maven.indexer/external/indexer-core-7.1.2-license.txt b/java/maven.indexer/external/indexer-core-7.1.3-license.txt
similarity index 98%
rename from java/maven.indexer/external/indexer-core-7.1.2-license.txt
rename to java/maven.indexer/external/indexer-core-7.1.3-license.txt
index 6900d64..fe17e6a 100644
--- a/java/maven.indexer/external/indexer-core-7.1.2-license.txt
+++ b/java/maven.indexer/external/indexer-core-7.1.3-license.txt
@@ -1,11 +1,11 @@
Name: Maven Indexer
Description: Maven remote repository indexing engine.
-Version: 7.1.2
+Version: 7.1.3
Origin: Apache Software Foundation
License: Apache-2.0
URL: https://repo.maven.apache.org/maven2/org/apache/maven/indexer/
Source: https://github.com/apache/maven-indexer
-Files: indexer-core-7.1.2.jar search-api-7.1.2.jar search-backend-smo-7.1.2.jar
+Files: indexer-core-7.1.3.jar search-api-7.1.3.jar search-backend-smo-7.1.3.jar
Apache License
Version 2.0, January 2004
diff --git a/java/maven.indexer/external/indexer-core-7.1.2-notice.txt b/java/maven.indexer/external/indexer-core-7.1.3-notice.txt
similarity index 100%
rename from java/maven.indexer/external/indexer-core-7.1.2-notice.txt
rename to java/maven.indexer/external/indexer-core-7.1.3-notice.txt
diff --git a/java/maven.indexer/external/lucene-9.10.0-license.txt b/java/maven.indexer/external/lucene-9.11.0-license.txt
similarity index 99%
rename from java/maven.indexer/external/lucene-9.10.0-license.txt
rename to java/maven.indexer/external/lucene-9.11.0-license.txt
index 11fcf84..6373bf4 100644
--- a/java/maven.indexer/external/lucene-9.10.0-license.txt
+++ b/java/maven.indexer/external/lucene-9.11.0-license.txt
@@ -1,11 +1,11 @@
Name: Apache Lucene
Description: Java-based indexing and search technology
-Version: 9.10.0
+Version: 9.11.0
Origin: Apache Software Foundation
License: Apache-2.0-lucene2
URL: https://lucene.apache.org/
Source: https://github.com/apache/lucene
-Files: lucene-analysis-common-9.10.0.jar lucene-backward-codecs-9.10.0.jar lucene-core-9.10.0.jar lucene-highlighter-9.10.0.jar lucene-queryparser-9.10.0.jar
+Files: lucene-analysis-common-9.11.0.jar lucene-backward-codecs-9.11.0.jar lucene-core-9.11.0.jar lucene-highlighter-9.11.0.jar lucene-queryparser-9.11.0.jar
Apache License
Version 2.0, January 2004
diff --git a/java/maven.indexer/external/lucene-9.10.0-notice.txt b/java/maven.indexer/external/lucene-9.11.0-notice.txt
similarity index 100%
rename from java/maven.indexer/external/lucene-9.10.0-notice.txt
rename to java/maven.indexer/external/lucene-9.11.0-notice.txt
diff --git a/java/maven.indexer/nbproject/project.properties b/java/maven.indexer/nbproject/project.properties
index abd8fbf..d84d52c 100644
--- a/java/maven.indexer/nbproject/project.properties
+++ b/java/maven.indexer/nbproject/project.properties
@@ -19,15 +19,15 @@
is.autoload=true
javac.release=11
javac.compilerargs=-Xlint -Xlint:-serial
-release.external/indexer-core-7.1.2.jar=modules/ext/maven/indexer-core-7.1.2.jar
-release.external/search-api-7.1.2.jar=modules/ext/maven/search-api-7.1.2.jar
-release.external/search-backend-smo-7.1.2.jar=modules/ext/maven/search-backend-smo-7.1.2.jar
-release.external/gson-2.10.1.jar=modules/ext/maven/gson-2.10.1.jar
-release.external/lucene-core-9.10.0.jar=modules/ext/maven/lucene-core-9.10.0.jar
-release.external/lucene-backward-codecs-9.10.0.jar=modules/ext/maven/lucene-backward-codecs-9.10.0.jar
-release.external/lucene-highlighter-9.10.0.jar=modules/ext/maven/lucene-highlighter-9.10.0.jar
-release.external/lucene-queryparser-9.10.0.jar=modules/ext/maven/lucene-queryparser-9.10.0.jar
-release.external/lucene-analysis-common-9.10.0.jar=modules/ext/maven/lucene-analysis-common-9.10.0.jar
+release.external/indexer-core-7.1.3.jar=modules/ext/maven/indexer-core-7.1.3.jar
+release.external/search-api-7.1.3.jar=modules/ext/maven/search-api-7.1.3.jar
+release.external/search-backend-smo-7.1.3.jar=modules/ext/maven/search-backend-smo-7.1.3.jar
+release.external/gson-2.11.0.jar=modules/ext/maven/gson-2.11.0.jar
+release.external/lucene-core-9.11.0.jar=modules/ext/maven/lucene-core-9.11.0.jar
+release.external/lucene-backward-codecs-9.11.0.jar=modules/ext/maven/lucene-backward-codecs-9.11.0.jar
+release.external/lucene-highlighter-9.11.0.jar=modules/ext/maven/lucene-highlighter-9.11.0.jar
+release.external/lucene-queryparser-9.11.0.jar=modules/ext/maven/lucene-queryparser-9.11.0.jar
+release.external/lucene-analysis-common-9.11.0.jar=modules/ext/maven/lucene-analysis-common-9.11.0.jar
release.external/javax.annotation-api-1.3.2.jar=modules/ext/maven/javax.annotation-api-1.3.2.jar
# XXX so long as Lucene is bundled here:
sigtest.gen.fail.on.error=false
diff --git a/java/maven.indexer/nbproject/project.xml b/java/maven.indexer/nbproject/project.xml
index 0d07fad..29b8f32 100644
--- a/java/maven.indexer/nbproject/project.xml
+++ b/java/maven.indexer/nbproject/project.xml
@@ -176,44 +176,44 @@
<package>org.netbeans.modules.maven.indexer.spi.impl</package>
</friend-packages>
<class-path-extension>
- <runtime-relative-path>ext/maven/indexer-core-7.1.2.jar</runtime-relative-path>
- <binary-origin>external/indexer-core-7.1.2.jar</binary-origin>
+ <runtime-relative-path>ext/maven/indexer-core-7.1.3.jar</runtime-relative-path>
+ <binary-origin>external/indexer-core-7.1.3.jar</binary-origin>
</class-path-extension>
<class-path-extension>
- <runtime-relative-path>ext/maven/search-api-7.1.2.jar</runtime-relative-path>
- <binary-origin>external/search-api-7.1.2.jar</binary-origin>
+ <runtime-relative-path>ext/maven/search-api-7.1.3.jar</runtime-relative-path>
+ <binary-origin>external/search-api-7.1.3.jar</binary-origin>
</class-path-extension>
<class-path-extension>
- <runtime-relative-path>ext/maven/search-backend-smo-7.1.2.jar</runtime-relative-path>
- <binary-origin>external/search-backend-smo-7.1.2.jar</binary-origin>
+ <runtime-relative-path>ext/maven/search-backend-smo-7.1.3.jar</runtime-relative-path>
+ <binary-origin>external/search-backend-smo-7.1.3.jar</binary-origin>
</class-path-extension>
<class-path-extension>
- <runtime-relative-path>ext/maven/lucene-core-9.10.0.jar</runtime-relative-path>
- <binary-origin>external/lucene-core-9.10.0.jar</binary-origin>
+ <runtime-relative-path>ext/maven/lucene-core-9.11.0.jar</runtime-relative-path>
+ <binary-origin>external/lucene-core-9.11.0.jar</binary-origin>
</class-path-extension>
<class-path-extension>
- <runtime-relative-path>ext/maven/lucene-backward-codecs-9.10.0.jar</runtime-relative-path>
- <binary-origin>external/lucene-backward-codecs-9.10.0.jar</binary-origin>
+ <runtime-relative-path>ext/maven/lucene-backward-codecs-9.11.0.jar</runtime-relative-path>
+ <binary-origin>external/lucene-backward-codecs-9.11.0.jar</binary-origin>
</class-path-extension>
<class-path-extension>
- <runtime-relative-path>ext/maven/lucene-highlighter-9.10.0.jar</runtime-relative-path>
- <binary-origin>external/lucene-highlighter-9.10.0.jar</binary-origin>
+ <runtime-relative-path>ext/maven/lucene-highlighter-9.11.0.jar</runtime-relative-path>
+ <binary-origin>external/lucene-highlighter-9.11.0.jar</binary-origin>
</class-path-extension>
<class-path-extension>
- <runtime-relative-path>ext/maven/lucene-queryparser-9.10.0.jar</runtime-relative-path>
- <binary-origin>external/lucene-queryparser-9.10.0.jar</binary-origin>
+ <runtime-relative-path>ext/maven/lucene-queryparser-9.11.0.jar</runtime-relative-path>
+ <binary-origin>external/lucene-queryparser-9.11.0.jar</binary-origin>
</class-path-extension>
<class-path-extension>
- <runtime-relative-path>ext/maven/lucene-analysis-common-9.10.0.jar</runtime-relative-path>
- <binary-origin>external/lucene-analysis-common-9.10.0.jar</binary-origin>
+ <runtime-relative-path>ext/maven/lucene-analysis-common-9.11.0.jar</runtime-relative-path>
+ <binary-origin>external/lucene-analysis-common-9.11.0.jar</binary-origin>
</class-path-extension>
<class-path-extension>
<runtime-relative-path>ext/maven/javax.annotation-api-1.3.2.jar</runtime-relative-path>
<binary-origin>external/javax.annotation-api-1.3.2.jar</binary-origin>
</class-path-extension>
<class-path-extension>
- <runtime-relative-path>ext/maven/gson-2.10.1.jar</runtime-relative-path>
- <binary-origin>external/gson-2.10.1.jar</binary-origin>
+ <runtime-relative-path>ext/maven/gson-2.11.0.jar</runtime-relative-path>
+ <binary-origin>external/gson-2.11.0.jar</binary-origin>
</class-path-extension>
</data>
</configuration>
diff --git a/java/maven/src/org/netbeans/modules/maven/queries/RepositoryMavenCPProvider.java b/java/maven/src/org/netbeans/modules/maven/queries/RepositoryMavenCPProvider.java
index f035054..c822c26 100644
--- a/java/maven/src/org/netbeans/modules/maven/queries/RepositoryMavenCPProvider.java
+++ b/java/maven/src/org/netbeans/modules/maven/queries/RepositoryMavenCPProvider.java
@@ -19,9 +19,11 @@
package org.netbeans.modules.maven.queries;
import java.io.File;
+import java.io.IOException;
import java.lang.ref.SoftReference;
import java.net.URI;
import java.net.URL;
+import java.nio.file.Files;
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedHashMap;
@@ -49,6 +51,7 @@
import org.netbeans.spi.java.classpath.support.ClassPathSupport;
import org.openide.filesystems.FileObject;
import org.openide.filesystems.FileUtil;
+import org.openide.util.Exceptions;
import org.openide.util.Utilities;
import org.openide.util.lookup.ServiceProvider;
@@ -111,11 +114,16 @@
return JavaPlatform.getDefault().getBootstrapLibraries();
}
if (ClassPath.COMPILE.equals(type)) {
- MavenProject mp = getMavenProject(archive, pom, groupId, artifact, version);
- return ClassPathFactory.createClassPath(createCompileCPI(mp, bin));
+ // Gradle generated POM files does not contain `compileOnly(...)` dependencies supported by gradle
+ // and therefore cannot be used to provide complete compile classpath for the given file.
+ // Better to fallback to DefaultClassPathProvider in such case.
+ if (!fromGradleMetadata(pom)) {
+ MavenProject mp = getMavenProject(archive, pom, groupId, artifact, version);
+ return ClassPathFactory.createClassPath(createCompileCPI(mp, bin));
+ }
}
if (ClassPath.EXECUTE.equals(type)) {
- MavenProject mp = getMavenProject(archive, pom, groupId, artifact, version);
+ MavenProject mp = getMavenProject(archive, pom, groupId, artifact, version);
return ClassPathFactory.createClassPath(createExecuteCPI(mp, bin));
}
} else {
@@ -133,6 +141,16 @@
return null;
}
+ private boolean fromGradleMetadata(File pom) {
+ try {
+ String content = Files.readString(pom.toPath());
+ return content.contains("<!-- do_not_remove: published-with-gradle-metadata -->"); //NOI18N
+ } catch (IOException ex) {
+ LOG.log(Level.FINER, "Failed to read POM file {0}", new Object[] {pom});
+ }
+ return false;
+ }
+
private MavenProject getMavenProject(FileObject archive, File pom, String groupId, String artifact, String version) {
SoftReference<MavenProject> ref = cache.get(archive);
MavenProject mp = ref != null ? ref.get() : null;
diff --git a/nbbuild/jms-config/base.flags b/nbbuild/jms-config/base.flags
index 4cb4185..b75c2f3 100644
--- a/nbbuild/jms-config/base.flags
+++ b/nbbuild/jms-config/base.flags
@@ -1,3 +1,4 @@
+--enable-native-access=ALL-UNNAMED
--add-opens=java.base/java.net=ALL-UNNAMED
--add-opens=java.base/java.lang.ref=ALL-UNNAMED
--add-opens=java.base/java.lang=ALL-UNNAMED