You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@netbeans.apache.org by jl...@apache.org on 2018/09/24 19:04:30 UTC
[incubator-netbeans] 07/07: Determine source level as the highest
RELEASE_ number in SourceVersion.
This is an automated email from the ASF dual-hosted git repository.
jlahoda pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-netbeans.git
commit cfdd1edcc924f499c97c725d880450861433b0fd
Author: Jan Lahoda <jl...@netbeans.org>
AuthorDate: Sun Sep 23 10:19:00 2018 +0200
Determine source level as the highest RELEASE_ number in SourceVersion.
---
.../java/openjdk/project/SourceLevelQueryImpl.java | 38 +++++++++++++------
.../openjdk/project/SourceLevelQueryImplTest.java | 44 +++++++++++++++++++---
2 files changed, 64 insertions(+), 18 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 42f7f77..b5f0592 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
@@ -25,6 +25,9 @@ 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;
import org.netbeans.spi.java.queries.SourceLevelQueryImplementation;
import org.openide.filesystems.FileObject;
@@ -36,32 +39,43 @@ import org.openide.filesystems.FileObject;
public class SourceLevelQueryImpl implements SourceLevelQueryImplementation {
private static final Logger LOG = Logger.getLogger(SourceLevelQueryImpl.class.getName());
- private static final String DEFAULT_SOURCE_LEVEL = "1.9";
+ private static final int DEFAULT_SOURCE_LEVEL = 11;
private static final Pattern JDK_PATTERN = Pattern.compile("jdk([0-9]+)");
private final String sourceLevel;
public SourceLevelQueryImpl(FileObject jdkRoot) {
- FileObject jcheckConf = jdkRoot.getFileObject(".jcheck/conf");
- String sl = DEFAULT_SOURCE_LEVEL;
+ FileObject sourceVersion = jdkRoot.getFileObject("src/java.compiler/share/classes/javax/lang/model/SourceVersion.java");
+ int sl = DEFAULT_SOURCE_LEVEL;
- if (jcheckConf != null) {
- Properties props = new Properties();
+ if (sourceVersion == null) {
+ sourceVersion = jdkRoot.getFileObject("langtools/src/java.compiler/share/classes/javax/lang/model/SourceVersion.java");
+ }
+ if (sourceVersion != null) {
+ try {
+ TokenHierarchy<String> th =
+ TokenHierarchy.create(sourceVersion.asText(), JavaTokenId.language());
+ TokenSequence<?> seq = th.tokenSequence();
- try (InputStream in = jcheckConf.getInputStream()) {
- props.load(in);
- String project = props.getProperty("project", "jdk9");
- Matcher m = JDK_PATTERN.matcher(project);
+ while (seq.moveNext()) {
+ if (seq.token().id() == JavaTokenId.IDENTIFIER) {
+ String ident = seq.token().text().toString();
- if (m.find()) {
- sl = m.group(1);
+ if (ident.startsWith("RELEASE_")) {
+ try {
+ sl = Math.max(sl, Integer.parseInt(ident.substring("RELEASE_".length())));
+ } catch (NumberFormatException ex) {
+ //ignore
+ }
+ }
+ }
}
} catch (IOException ex) {
LOG.log(Level.FINE, null, ex);
}
}
- this.sourceLevel = sl;
+ this.sourceLevel = "" + sl;
}
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 c8f3b40..40e5ead 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
@@ -64,31 +64,63 @@ public class SourceLevelQueryImplTest extends NbTestCase {
assertEquals("1.8", SourceLevelQuery.getSourceLevel(jlObject));
}
- public void testModuleInfoProject() throws IOException {
+ public void testModuleInfoOldLayout() throws IOException {
FileObject javaBase = FileUtil.createFolder(root, "jdk/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, ".jcheck/conf"), "project=jdk3\n");
+ copyString2File(FileUtil.createData(root, "langtools/src/java.compiler/share/classes/module-info.java"), "module java.compiler {}");
+ copyString2File(FileUtil.createData(root, "langtools/src/java.compiler/share/classes/javax/lang/model/SourceVersion.java"), "RELEASE_3 RELEASE_12");
Project javaBaseProject = FileOwnerQuery.getOwner(javaBase);
assertNotNull(javaBaseProject);
- assertEquals("1.3", SourceLevelQuery.getSourceLevel(jlObject));
+ assertEquals("12", SourceLevelQuery.getSourceLevel(jlObject));
}
- public void testNoJCheck() throws IOException {
- FileObject javaBase = FileUtil.createFolder(root, "jdk/src/java.base");
+ public void testModuleInfoNewLayout() throws IOException {
+ FileObject javaBase = FileUtil.createFolder(root, "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, "src/java.compiler/share/classes/module-info.java"), "module java.compiler {}");
+ copyString2File(FileUtil.createData(root, "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));
+ }
+
+ public void testNoSourceVersion() throws IOException {
+ FileObject javaBase = FileUtil.createFolder(root, "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, "src/java.compiler/share/classes/module-info.java"), "module java.compiler {}");
+
+ Project javaBaseProject = FileOwnerQuery.getOwner(javaBase);
+
+ assertNotNull(javaBaseProject);
+
+ assertEquals("11", SourceLevelQuery.getSourceLevel(jlObject));
+ }
+
+ public void testOldSourceVersion() throws IOException {
+ FileObject javaBase = FileUtil.createFolder(root, "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, "src/java.compiler/share/classes/module-info.java"), "module java.compiler {}");
+ copyString2File(FileUtil.createData(root, "src/java.compiler/share/classes/javax/lang/model/SourceVersion.java"), "RELEASE_3");
Project javaBaseProject = FileOwnerQuery.getOwner(javaBase);
assertNotNull(javaBaseProject);
- assertEquals("9", SourceLevelQuery.getSourceLevel(jlObject));
+ assertEquals("11", SourceLevelQuery.getSourceLevel(jlObject));
}
private void copyString2File(FileObject file, String content) throws IOException {
---------------------------------------------------------------------
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