This is an automated email from the ASF dual-hosted git repository. geertjan 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 546bd6a Fixing source level detection for OpenJDK projects in 'open' directory. new fddc5d0 Merge pull request #2875 from jlahoda/fix-open-openjdk-source-level 546bd6a is described below commit 546bd6a7463e2138bc9e5ded9e705e635918bbf1 Author: Jan Lahoda <jlah...@netbeans.org> AuthorDate: Sat Apr 10 17:43:42 2021 +0200 Fixing source level detection for OpenJDK projects in 'open' directory. --- .../java/openjdk/project/SourceLevelQueryImpl.java | 26 +++++++++++++--------- .../openjdk/project/SourceLevelQueryImplTest.java | 15 +++++++++++++ 2 files changed, 30 insertions(+), 11 deletions(-) diff --git a/java/java.openjdk.project/src/org/netbeans/modules/java/openjdk/project/SourceLevelQueryImpl.java b/java/java.openjdk.project/src/org/netbeans/modules/java/openjdk/project/SourceLevelQueryImpl.java index b988da4..560280c 100644 --- a/java/java.openjdk.project/src/org/netbeans/modules/java/openjdk/project/SourceLevelQueryImpl.java +++ b/java/java.openjdk.project/src/org/netbeans/modules/java/openjdk/project/SourceLevelQueryImpl.java @@ -19,12 +19,10 @@ package org.netbeans.modules.java.openjdk.project; import java.io.IOException; -import java.io.InputStream; -import java.util.Properties; +import java.util.Arrays; +import java.util.Optional; import java.util.logging.Level; import java.util.logging.Logger; -import java.util.regex.Matcher; -import java.util.regex.Pattern; import org.netbeans.api.java.lexer.JavaTokenId; import org.netbeans.api.lexer.TokenHierarchy; import org.netbeans.api.lexer.TokenSequence; @@ -41,21 +39,27 @@ public class SourceLevelQueryImpl implements SourceLevelQueryImplementation { private static final Logger LOG = Logger.getLogger(SourceLevelQueryImpl.class.getName()); private static final int DEFAULT_SOURCE_LEVEL = 11; - private static final Pattern JDK_PATTERN = Pattern.compile("jdk([0-9]+)"); + private static final String[] SOURCE_VERSION_LOCATIONS = new String[] { + "src/java.compiler/share/classes/javax/lang/model/SourceVersion.java", + "open/src/java.compiler/share/classes/javax/lang/model/SourceVersion.java", + "langtools/src/java.compiler/share/classes/javax/lang/model/SourceVersion.java" + }; private final String sourceLevel; public SourceLevelQueryImpl(FileObject jdkRoot) { - FileObject sourceVersion = BuildUtils.getFileObject(jdkRoot, "src/java.compiler/share/classes/javax/lang/model/SourceVersion.java"); + Optional<FileObject> sourceVersionCandidate = + Arrays.stream(SOURCE_VERSION_LOCATIONS) + .map(location -> BuildUtils.getFileObject(jdkRoot, location)) + .filter(file -> file != null) + .findFirst(); + int sl = DEFAULT_SOURCE_LEVEL; - if (sourceVersion == null) { - sourceVersion = BuildUtils.getFileObject(jdkRoot, "langtools/src/java.compiler/share/classes/javax/lang/model/SourceVersion.java"); - } - if (sourceVersion != null) { + if (sourceVersionCandidate.isPresent()) { try { TokenHierarchy<String> th = - TokenHierarchy.create(sourceVersion.asText(), JavaTokenId.language()); + TokenHierarchy.create(sourceVersionCandidate.get().asText(), JavaTokenId.language()); TokenSequence<?> seq = th.tokenSequence(); while (seq.moveNext()) { diff --git a/java/java.openjdk.project/test/unit/src/org/netbeans/modules/java/openjdk/project/SourceLevelQueryImplTest.java b/java/java.openjdk.project/test/unit/src/org/netbeans/modules/java/openjdk/project/SourceLevelQueryImplTest.java index f94619a..d2f529e 100644 --- a/java/java.openjdk.project/test/unit/src/org/netbeans/modules/java/openjdk/project/SourceLevelQueryImplTest.java +++ b/java/java.openjdk.project/test/unit/src/org/netbeans/modules/java/openjdk/project/SourceLevelQueryImplTest.java @@ -124,6 +124,21 @@ public class SourceLevelQueryImplTest extends NbTestCase { assertEquals("11", SourceLevelQuery.getSourceLevel(jlObject)); } + public void testModuleInfoNewLayoutWithOpen() throws IOException { + FileObject javaBase = FileUtil.createFolder(root, "open/src/java.base"); + FileObject jlObject = FileUtil.createData(javaBase, "share/classes/java/lang/Object.java"); + copyString2File(jlObject, ""); + copyString2File(FileUtil.createData(javaBase, "share/classes/module-info.java"), "module java.base {}"); + copyString2File(FileUtil.createData(root, "open/src/java.compiler/share/classes/module-info.java"), "module java.compiler {}"); + copyString2File(FileUtil.createData(root, "open/src/java.compiler/share/classes/javax/lang/model/SourceVersion.java"), "RELEASE_3 RELEASE_12"); + + Project javaBaseProject = FileOwnerQuery.getOwner(javaBase); + + assertNotNull(javaBaseProject); + + assertEquals("12", SourceLevelQuery.getSourceLevel(jlObject)); + } + private void copyString2File(FileObject file, String content) throws IOException { try (OutputStream out = file.getOutputStream()) { out.write(content.getBytes("UTF-8")); --------------------------------------------------------------------- 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