Merge pull request #3309 from apache/delivery
Merge delivery into release126 for 12.6-rc3
diff --git a/enterprise/payara.tooling/src/org/netbeans/modules/payara/tooling/data/JDKVersion.java b/enterprise/payara.tooling/src/org/netbeans/modules/payara/tooling/data/JDKVersion.java
index 24c2c15..a6f96f8 100644
--- a/enterprise/payara.tooling/src/org/netbeans/modules/payara/tooling/data/JDKVersion.java
+++ b/enterprise/payara.tooling/src/org/netbeans/modules/payara/tooling/data/JDKVersion.java
@@ -47,6 +47,11 @@
*/
private final Optional<String> vendor;
+ /**
+ * JDK vm
+ */
+ private final Optional<String> vm;
+
private final static int MAJOR_INDEX = 0;
private final static int MINOR_INDEX = 1;
private final static int SUBMINOR_INDEX = 2;
@@ -58,21 +63,23 @@
private static final Short DEFAULT_VALUE = 0;
- private JDKVersion(String version, String vendor) {
+ private JDKVersion(String version, String vendor, String vm) {
short[] versions = parseVersions(version);
this.major = versions[MAJOR_INDEX];
this.minor = Optional.ofNullable(versions[MINOR_INDEX]);
this.subminor = Optional.ofNullable(versions[SUBMINOR_INDEX]);
this.update = Optional.ofNullable(versions[UPDATE_INDEX]);
this.vendor = Optional.ofNullable(vendor);
+ this.vm = Optional.ofNullable(vm);
}
- JDKVersion(Short major, Optional<Short> minor, Optional<Short> subminor, Optional<Short> update, Optional<String> vendor) {
+ JDKVersion(Short major, Optional<Short> minor, Optional<Short> subminor, Optional<Short> update, Optional<String> vendor, Optional<String> vm) {
this.major = major;
this.minor = minor;
this.subminor = subminor;
this.update = update;
this.vendor = vendor;
+ this.vm = vm;
}
/**
@@ -112,7 +119,7 @@
}
/**
- * Get JDK Vendor.
+ * Get JDK Vendor name.
*
* @return JDK vendor.
*/
@@ -120,6 +127,15 @@
return vendor;
}
+ /**
+ * Get JDK VM name.
+ *
+ * @return JDK vm.
+ */
+ public Optional<String> getVM() {
+ return vm;
+ }
+
public boolean gt(JDKVersion version) {
if (major > version.getMajor()) {
return true;
@@ -241,7 +257,7 @@
public static JDKVersion toValue(String version) {
if (version != null && version.matches(VERSION_MATCHER)) {
- return new JDKVersion(version, null);
+ return new JDKVersion(version, null, null);
} else {
return null;
}
@@ -249,7 +265,15 @@
public static JDKVersion toValue(String version, String vendor) {
if (version != null && version.matches(VERSION_MATCHER)) {
- return new JDKVersion(version, vendor);
+ return new JDKVersion(version, vendor, null);
+ } else {
+ return null;
+ }
+ }
+
+ public static JDKVersion toValue(String version, String vendor, String vm) {
+ if (version != null && version.matches(VERSION_MATCHER)) {
+ return new JDKVersion(version, vendor, vm);
} else {
return null;
}
@@ -259,15 +283,12 @@
return IDE_JDK_VERSION;
}
- public static boolean isCorrectJDK(JDKVersion jdkVersion, Optional<String> vendor, Optional<JDKVersion> minVersion, Optional<JDKVersion> maxVersion) {
+ public static boolean isCorrectJDK(JDKVersion jdkVersion, Optional<String> vendorOrVM, Optional<JDKVersion> minVersion, Optional<JDKVersion> maxVersion) {
boolean correctJDK = true;
- if (vendor.isPresent()) {
- if (jdkVersion.getVendor().isPresent()) {
- correctJDK = jdkVersion.getVendor().get().contains(vendor.get());
- } else {
- correctJDK = false;
- }
+ if (vendorOrVM.isPresent()) {
+ correctJDK = jdkVersion.getVendor().map(vendor -> vendor.contains(vendorOrVM.get())).orElse(false)
+ || jdkVersion.getVM().map(vm -> vm.contains(vendorOrVM.get())).orElse(false);
}
if (correctJDK && minVersion.isPresent()) {
correctJDK = jdkVersion.ge(minVersion.get());
@@ -288,6 +309,7 @@
private static void initialize() {
String vendor = System.getProperty("java.vendor"); // NOI18N
+ String vm = System.getProperty("java.vm.name"); // NOI18N
/*
In JEP 223 java.specification.version will be a single number versioning , not a dotted versioning .
For JDK 8:
@@ -308,7 +330,8 @@
Optional.of(versions[MINOR_INDEX]),
Optional.of(versions[SUBMINOR_INDEX]),
Optional.of(versions[UPDATE_INDEX]),
- Optional.of(vendor)
+ Optional.of(vendor),
+ Optional.of(vm)
);
}
diff --git a/enterprise/payara.tooling/src/org/netbeans/modules/payara/tooling/data/StartupArgsEntity.java b/enterprise/payara.tooling/src/org/netbeans/modules/payara/tooling/data/StartupArgsEntity.java
index 5c53d4f..f6ff41b 100644
--- a/enterprise/payara.tooling/src/org/netbeans/modules/payara/tooling/data/StartupArgsEntity.java
+++ b/enterprise/payara.tooling/src/org/netbeans/modules/payara/tooling/data/StartupArgsEntity.java
@@ -187,7 +187,8 @@
if (javaVersionLine != null) {
javaVersion = JDKVersion.toValue(
javaVersionLine.substring(javaVersionLine.indexOf("\"") + 1, javaVersionLine.lastIndexOf("\"")), // NOI18N
- implementorLine != null ? implementorLine.substring(implementorLine.indexOf("\"") + 1, implementorLine.lastIndexOf("\"")) : null // NOI18N
+ implementorLine != null ? implementorLine.substring(implementorLine.indexOf("\"") + 1, implementorLine.lastIndexOf("\"")) : null, // NOI18N
+ null
);
}
} catch (IOException ex) {
diff --git a/enterprise/payara.tooling/src/org/netbeans/modules/payara/tooling/server/ServerTasks.java b/enterprise/payara.tooling/src/org/netbeans/modules/payara/tooling/server/ServerTasks.java
index 935c3a6..6ceaefe 100644
--- a/enterprise/payara.tooling/src/org/netbeans/modules/payara/tooling/server/ServerTasks.java
+++ b/enterprise/payara.tooling/src/org/netbeans/modules/payara/tooling/server/ServerTasks.java
@@ -167,7 +167,7 @@
List<String> optList
= jvmConfigReader.getJvmOptions()
.stream()
- .filter(fullOption -> JDKVersion.isCorrectJDK(javaVersion, fullOption.vendor, fullOption.minVersion, fullOption.maxVersion))
+ .filter(fullOption -> JDKVersion.isCorrectJDK(javaVersion, fullOption.vendorOrVM, fullOption.minVersion, fullOption.maxVersion))
.map(fullOption -> fullOption.option)
.collect(toList());
diff --git a/enterprise/payara.tooling/src/org/netbeans/modules/payara/tooling/server/parser/JvmConfigReader.java b/enterprise/payara.tooling/src/org/netbeans/modules/payara/tooling/server/parser/JvmConfigReader.java
index d466ae9..f85717d 100644
--- a/enterprise/payara.tooling/src/org/netbeans/modules/payara/tooling/server/parser/JvmConfigReader.java
+++ b/enterprise/payara.tooling/src/org/netbeans/modules/payara/tooling/server/parser/JvmConfigReader.java
@@ -201,7 +201,9 @@
public static class JvmOption {
public final String option;
+ @Deprecated
public final Optional<String> vendor;
+ public final Optional<String> vendorOrVM;
public final Optional<JDKVersion> minVersion;
public final Optional<JDKVersion> maxVersion;
@@ -217,21 +219,22 @@
public JvmOption(String option) {
Matcher matcher = PATTERN.matcher(option);
+ this.vendor = Optional.empty();
if (matcher.matches()) {
if (matcher.group(1).contains("-") // NOI18N
&& Character.isLetter(matcher.group(1).charAt(0))) {
String[] parts = matcher.group(1).split("-"); // NOI18N
- this.vendor = Optional.ofNullable(parts[0]);
+ this.vendorOrVM = Optional.ofNullable(parts[0]);
this.minVersion = Optional.ofNullable(JDKVersion.toValue(parts[1]));
} else {
- this.vendor = Optional.empty();
+ this.vendorOrVM = Optional.empty();
this.minVersion = Optional.ofNullable(JDKVersion.toValue(matcher.group(1)));
}
this.maxVersion = Optional.ofNullable(JDKVersion.toValue(matcher.group(2)));
this.option = matcher.group(3);
} else {
this.option = option;
- this.vendor = Optional.empty();
+ this.vendorOrVM = Optional.empty();
this.minVersion = Optional.empty();
this.maxVersion = Optional.empty();
}
@@ -240,6 +243,7 @@
public JvmOption(String option, String minVersion, String maxVersion) {
this.option = option;
this.vendor = Optional.empty();
+ this.vendorOrVM = Optional.empty();
this.minVersion = Optional.ofNullable(JDKVersion.toValue(minVersion));
this.maxVersion = Optional.ofNullable(JDKVersion.toValue(maxVersion));
}
diff --git a/enterprise/payara.tooling/test/unit/src/org/netbeans/modules/payara/tooling/data/JDKVersionTest.java b/enterprise/payara.tooling/test/unit/src/org/netbeans/modules/payara/tooling/data/JDKVersionTest.java
index 8e3c1e2..8759aa5 100644
--- a/enterprise/payara.tooling/test/unit/src/org/netbeans/modules/payara/tooling/data/JDKVersionTest.java
+++ b/enterprise/payara.tooling/test/unit/src/org/netbeans/modules/payara/tooling/data/JDKVersionTest.java
@@ -40,23 +40,23 @@
public void parseJDKVersion() {
Map<String, JDKVersion> jdkVersions = new HashMap<>();
jdkVersions.put("1.8",
- new JDKVersion((short) 1, Optional.of((short) 8), Optional.of((short) 0), Optional.of((short) 0), Optional.empty()));
+ new JDKVersion((short) 1, Optional.of((short) 8), Optional.of((short) 0), Optional.of((short) 0), Optional.empty(), Optional.empty()));
jdkVersions.put("1.8.0",
- new JDKVersion((short) 1, Optional.of((short) 8), Optional.of((short) 0), Optional.of((short) 0), Optional.empty()));
+ new JDKVersion((short) 1, Optional.of((short) 8), Optional.of((short) 0), Optional.of((short) 0), Optional.empty(), Optional.empty()));
jdkVersions.put("1.8.0u121",
- new JDKVersion((short) 1, Optional.of((short) 8), Optional.of((short) 0), Optional.of((short) 121), Optional.empty()));
+ new JDKVersion((short) 1, Optional.of((short) 8), Optional.of((short) 0), Optional.of((short) 121), Optional.empty(), Optional.empty()));
jdkVersions.put("1.8.0_191",
- new JDKVersion((short) 1, Optional.of((short) 8), Optional.of((short) 0), Optional.of((short) 191), Optional.empty()));
+ new JDKVersion((short) 1, Optional.of((short) 8), Optional.of((short) 0), Optional.of((short) 191), Optional.empty(), Optional.empty()));
jdkVersions.put("1.8.0_232-ea-8u232-b09-0ubuntu1-b09",
- new JDKVersion((short) 1, Optional.of((short) 8), Optional.of((short) 0), Optional.of((short) 232), Optional.empty()));
+ new JDKVersion((short) 1, Optional.of((short) 8), Optional.of((short) 0), Optional.of((short) 232), Optional.empty(), Optional.empty()));
jdkVersions.put("9",
- new JDKVersion((short) 9, Optional.of((short) 0), Optional.of((short) 0), Optional.of((short) 0), Optional.empty()));
+ new JDKVersion((short) 9, Optional.of((short) 0), Optional.of((short) 0), Optional.of((short) 0), Optional.empty(), Optional.empty()));
jdkVersions.put("11.0.6",
- new JDKVersion((short) 11, Optional.of((short) 0), Optional.of((short) 6), Optional.of((short) 0), Optional.empty()));
+ new JDKVersion((short) 11, Optional.of((short) 0), Optional.of((short) 6), Optional.of((short) 0), Optional.empty(), Optional.empty()));
jdkVersions.put("11.0.6_234",
- new JDKVersion((short) 11, Optional.of((short) 0), Optional.of((short) 6), Optional.of((short) 234), Optional.empty()));
+ new JDKVersion((short) 11, Optional.of((short) 0), Optional.of((short) 6), Optional.of((short) 234), Optional.empty(), Optional.empty()));
jdkVersions.put("11.0.6u234",
- new JDKVersion((short) 11, Optional.of((short) 0), Optional.of((short) 6), Optional.of((short) 234), Optional.empty()));
+ new JDKVersion((short) 11, Optional.of((short) 0), Optional.of((short) 6), Optional.of((short) 234), Optional.empty(), Optional.empty()));
for (Entry<String, JDKVersion> version : jdkVersions.entrySet()) {
assertTrue(JDKVersion.toValue(version.getKey()).equals(version.getValue()), version.getKey());
diff --git a/extide/gradle/src/org/netbeans/modules/gradle/queries/Info.java b/extide/gradle/src/org/netbeans/modules/gradle/queries/Info.java
index 46e4e86..9789169 100644
--- a/extide/gradle/src/org/netbeans/modules/gradle/queries/Info.java
+++ b/extide/gradle/src/org/netbeans/modules/gradle/queries/Info.java
@@ -69,7 +69,11 @@
@Override
public String getName() {
+ final NbGradleProject nb = NbGradleProject.get(project);
GradleBaseProject prj = GradleBaseProject.get(project);
+ if (!nb.isGradleProjectLoaded() || prj == null || prj.getName() == null) {
+ return project.getProjectDirectory().getNameExt();
+ }
String ret = prj.isRoot() ? prj.getName() : prj.getRootDir().getName() + prj.getPath();
return ret;
diff --git a/extide/gradle/test/unit/src/org/netbeans/modules/gradle/AbstractGradleProjectTestCase.java b/extide/gradle/test/unit/src/org/netbeans/modules/gradle/AbstractGradleProjectTestCase.java
index 2a948a7..8a3bfa2 100644
--- a/extide/gradle/test/unit/src/org/netbeans/modules/gradle/AbstractGradleProjectTestCase.java
+++ b/extide/gradle/test/unit/src/org/netbeans/modules/gradle/AbstractGradleProjectTestCase.java
@@ -87,6 +87,11 @@
}).get();
}
+ protected void dumpProject(Project project){
+ NbGradleProjectImpl impl = (NbGradleProjectImpl) project;
+ impl.dumpProject();
+ }
+
protected FileObject createGradleProject(String path, String buildScript, String settingsScript) throws IOException {
FileObject ret = FileUtil.toFileObject(getWorkDir());
if (path != null) {
diff --git a/extide/libs.gradle/external/binaries-list b/extide/libs.gradle/external/binaries-list
index 121211d..6b1f130 100644
--- a/extide/libs.gradle/external/binaries-list
+++ b/extide/libs.gradle/external/binaries-list
@@ -14,4 +14,4 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
-B2123DF25C938DD072C7D07716629AABEF0ABD10 gradle-tooling-api-7.3-rc-1.jar
\ No newline at end of file
+526C85998C50C960237920A9D98580F35801525D gradle-tooling-api-7.3.jar
\ No newline at end of file
diff --git a/extide/libs.gradle/external/gradle-tooling-api-7.3-rc-1-license.txt b/extide/libs.gradle/external/gradle-tooling-api-7.3-license.txt
similarity index 99%
rename from extide/libs.gradle/external/gradle-tooling-api-7.3-rc-1-license.txt
rename to extide/libs.gradle/external/gradle-tooling-api-7.3-license.txt
index d6bae9d..d1d04e9 100644
--- a/extide/libs.gradle/external/gradle-tooling-api-7.3-rc-1-license.txt
+++ b/extide/libs.gradle/external/gradle-tooling-api-7.3-license.txt
@@ -1,7 +1,7 @@
Name: Gradle Wrapper
Description: Gradle Tooling API
-Version: 7.3-rc-1
-Files: gradle-tooling-api-7.3-rc-1.jar
+Version: 7.3
+Files: gradle-tooling-api-7.3.jar
License: Apache-2.0
Origin: Gradle Inc.
URL: https://gradle.org/
diff --git a/extide/libs.gradle/external/gradle-tooling-api-7.3-rc-1-notice.txt b/extide/libs.gradle/external/gradle-tooling-api-7.3-notice.txt
similarity index 100%
rename from extide/libs.gradle/external/gradle-tooling-api-7.3-rc-1-notice.txt
rename to extide/libs.gradle/external/gradle-tooling-api-7.3-notice.txt
diff --git a/extide/libs.gradle/nbproject/project.properties b/extide/libs.gradle/nbproject/project.properties
index 17922b1..87d66a4 100644
--- a/extide/libs.gradle/nbproject/project.properties
+++ b/extide/libs.gradle/nbproject/project.properties
@@ -22,4 +22,4 @@
# For more information, please see http://wiki.netbeans.org/SignatureTest
sigtest.gen.fail.on.error=false
-release.external/gradle-tooling-api-7.3-rc-1.jar=modules/gradle/gradle-tooling-api.jar
+release.external/gradle-tooling-api-7.3.jar=modules/gradle/gradle-tooling-api.jar
diff --git a/extide/libs.gradle/nbproject/project.xml b/extide/libs.gradle/nbproject/project.xml
index ec8671c..05c2c38 100644
--- a/extide/libs.gradle/nbproject/project.xml
+++ b/extide/libs.gradle/nbproject/project.xml
@@ -39,7 +39,7 @@
</public-packages>
<class-path-extension>
<runtime-relative-path>gradle/gradle-tooling-api.jar</runtime-relative-path>
- <binary-origin>external/gradle-tooling-api-7.3-rc-1.jar</binary-origin>
+ <binary-origin>external/gradle-tooling-api-7.3.jar</binary-origin>
</class-path-extension>
</data>
</configuration>
diff --git a/ide/git/src/org/netbeans/modules/git/ui/history/SearchHistoryAction.java b/ide/git/src/org/netbeans/modules/git/ui/history/SearchHistoryAction.java
index 0451477..8e1a08b 100644
--- a/ide/git/src/org/netbeans/modules/git/ui/history/SearchHistoryAction.java
+++ b/ide/git/src/org/netbeans/modules/git/ui/history/SearchHistoryAction.java
@@ -63,63 +63,54 @@
}
public static void openSearch (final File repository, final File[] roots, final String branchName, final String contextName) {
- openSearch(repository, roots, branchName, contextName, roots != null && (roots.length == 1 && roots[0].isFile() || roots.length > 1 && Utils.shareCommonDataObject(roots)));
+ openSearch(repository, roots, branchName, contextName, roots != null && (roots.length == 1 || roots.length > 1 && Utils.shareCommonDataObject(roots)));
}
public static void openSearch (final File repository, final File[] roots, final String branchName, final String contextName, final boolean invokeSearch) {
final String title = NbBundle.getMessage(SearchHistoryTopComponent.class, "LBL_SearchHistoryTopComponent.title", contextName);
final RepositoryInfo info = RepositoryInfo.getInstance(repository);
- EventQueue.invokeLater(new Runnable() {
- @Override
- public void run () {
- SearchHistoryTopComponent tc = new SearchHistoryTopComponent(repository, info, roots);
- tc.setBranch(branchName);
- tc.setDisplayName(title);
- tc.open();
- tc.requestActive();
- if (invokeSearch) {
- tc.search(false);
- }
+ EventQueue.invokeLater(() -> {
+ SearchHistoryTopComponent tc = new SearchHistoryTopComponent(repository, info, roots);
+ tc.setBranch(branchName);
+ tc.setDisplayName(title);
+ tc.open();
+ tc.requestActive();
+ if (invokeSearch) {
+ tc.search(false);
}
});
}
- public static void openSearch (final File repository, final File root, final String contextName,
- final String commitIdFrom, final String commitIdTo) {
+ public static void openSearch (final File repository, final File root, final String contextName, final String commitIdFrom, final String commitIdTo) {
final String title = NbBundle.getMessage(SearchHistoryTopComponent.class, "LBL_SearchHistoryTopComponent.title", contextName);
final RepositoryInfo info = RepositoryInfo.getInstance(repository);
- Mutex.EVENT.readAccess(new Runnable() {
- @Override
- public void run () {
- SearchHistoryTopComponent tc = new SearchHistoryTopComponent(repository, info, new File[] { root });
- tc.setDisplayName(title);
- tc.open();
- tc.requestActive();
- tc.setSearchCommitFrom(commitIdFrom);
- tc.setSearchCommitTo(commitIdTo);
- tc.search(true);
- }
+ Mutex.EVENT.readAccess(() -> {
+ SearchHistoryTopComponent tc = new SearchHistoryTopComponent(repository, info, new File[] { root });
+ tc.setDisplayName(title);
+ tc.open();
+ tc.requestActive();
+ tc.setSearchCommitFrom(commitIdFrom);
+ tc.setSearchCommitTo(commitIdTo);
+ tc.search(true);
});
}
public static void openSearch (final File repository, final File root, final String contextName, final int lineNumber) {
final String title = NbBundle.getMessage(SearchHistoryTopComponent.class, "LBL_SearchHistoryTopComponent.title", contextName);
final RepositoryInfo info = RepositoryInfo.getInstance(repository);
- EventQueue.invokeLater(new Runnable() {
- @Override
- public void run () {
- SearchHistoryTopComponent tc = new SearchHistoryTopComponent(repository, info, root, new SearchHistoryTopComponent.DiffResultsViewFactory() {
- @Override
- DiffResultsView createDiffResultsView(SearchHistoryPanel panel, List<RepositoryRevision> results) {
- return new DiffResultsViewForLine(panel, results, lineNumber);
- }
- });
- tc.setDisplayName(title);
- tc.open();
- tc.requestActive();
- tc.search(true);
- tc.activateDiffView(true);
- }
+ EventQueue.invokeLater(() -> {
+ SearchHistoryTopComponent tc = new SearchHistoryTopComponent(repository, info, root,
+ new SearchHistoryTopComponent.DiffResultsViewFactory() {
+ @Override
+ DiffResultsView createDiffResultsView(SearchHistoryPanel panel, List<RepositoryRevision> results) {
+ return new DiffResultsViewForLine(panel, results, lineNumber);
+ }
+ });
+ tc.setDisplayName(title);
+ tc.open();
+ tc.requestActive();
+ tc.search(true);
+ tc.activateDiffView(true);
});
}
diff --git a/ide/libs.graalsdk/src/org/netbeans/libs/graalsdk/impl/GraalEngine.java b/ide/libs.graalsdk/src/org/netbeans/libs/graalsdk/impl/GraalEngine.java
index 15d8d35..6adc9cc 100644
--- a/ide/libs.graalsdk/src/org/netbeans/libs/graalsdk/impl/GraalEngine.java
+++ b/ide/libs.graalsdk/src/org/netbeans/libs/graalsdk/impl/GraalEngine.java
@@ -173,13 +173,17 @@
@Override
public <T> T getInterface(Object thiz, Class<T> clasz) {
- if (thiz instanceof Value) {
- return ((Value) thiz).as(clasz);
- }
- Value v = factory.ctx.ctx().asValue(thiz);
- T ret = v.as(clasz);
- if (ret != null) {
- return ret;
+ try {
+ if (thiz instanceof Value) {
+ return ((Value) thiz).as(clasz);
+ }
+ Value v = factory.ctx.ctx().asValue(thiz);
+ T ret = v.as(clasz);
+ if (ret != null) {
+ return ret;
+ }
+ } catch (ClassCastException ex) {
+ // the interface is not supported on the value object; ignore.
}
if (clasz.isInstance(thiz)) {
return clasz.cast(thiz);
diff --git a/java/debugger.jpda.truffle/src/org/netbeans/modules/debugger/jpda/truffle/access/TruffleAccess.java b/java/debugger.jpda.truffle/src/org/netbeans/modules/debugger/jpda/truffle/access/TruffleAccess.java
index 7730a71..c45511e 100644
--- a/java/debugger.jpda.truffle/src/org/netbeans/modules/debugger/jpda/truffle/access/TruffleAccess.java
+++ b/java/debugger.jpda.truffle/src/org/netbeans/modules/debugger/jpda/truffle/access/TruffleAccess.java
@@ -457,10 +457,11 @@
private static HitBreakpointInfo[] getBreakpointInfos(ExecutionHaltedInfo haltedInfo, JPDAThread thread) {
ObjectVariable[] breakpointsHit = haltedInfo.breakpointsHit;
ObjectVariable[] breakpointConditionExceptions = haltedInfo.breakpointConditionExceptions;
- int n = breakpointsHit.length;
+ int n = (breakpointsHit != null) ? breakpointsHit.length : 0;
HitBreakpointInfo[] breakpointInfos = null;
for (int i = 0; i < n; i++) {
- HitBreakpointInfo breakpointInfo = HitBreakpointInfo.create(breakpointsHit[i], breakpointConditionExceptions[i]);
+ ObjectVariable exception = (breakpointConditionExceptions != null) ? breakpointConditionExceptions[i] : null;
+ HitBreakpointInfo breakpointInfo = HitBreakpointInfo.create(breakpointsHit[i], exception);
if (breakpointInfo != null) {
if (breakpointInfos == null) {
breakpointInfos = new HitBreakpointInfo[] { breakpointInfo };
diff --git a/java/java.hints/src/org/netbeans/modules/java/hints/jdk/mapreduce/ForLoopToFunctionalHint.java b/java/java.hints/src/org/netbeans/modules/java/hints/jdk/mapreduce/ForLoopToFunctionalHint.java
index 41a3b13..c22faae 100644
--- a/java/java.hints/src/org/netbeans/modules/java/hints/jdk/mapreduce/ForLoopToFunctionalHint.java
+++ b/java/java.hints/src/org/netbeans/modules/java/hints/jdk/mapreduce/ForLoopToFunctionalHint.java
@@ -26,10 +26,10 @@
import com.sun.source.tree.StatementTree;
import com.sun.source.tree.Tree;
import com.sun.source.util.TreePath;
-import javax.lang.model.SourceVersion;
import org.netbeans.api.java.source.CompilationInfo;
import org.netbeans.spi.editor.hints.ErrorDescription;
import org.netbeans.spi.editor.hints.Fix;
+import org.netbeans.spi.editor.hints.Severity;
import org.netbeans.spi.java.hints.ErrorDescriptionFactory;
import org.netbeans.spi.java.hints.Hint;
import org.netbeans.spi.java.hints.HintContext;
@@ -37,8 +37,7 @@
import org.netbeans.spi.java.hints.TriggerTreeKind;
import org.openide.util.NbBundle.Messages;
-@Hint(displayName = "#DN_ForLoopToFunctionalHint", description = "#DESC_ForLoopToFunctionalHint", category = "general",
- minSourceVersion = "8")
+@Hint(displayName = "#DN_ForLoopToFunctionalHint", description = "#DESC_ForLoopToFunctionalHint", category = "general", severity = Severity.HINT, minSourceVersion = "8")
@Messages({
"DN_ForLoopToFunctionalHint=Use Functional Operations",
"DESC_ForLoopToFunctionalHint=Use functional operations instead of imperative style loop."
diff --git a/java/java.hints/test/unit/src/org/netbeans/modules/java/hints/jdk/mapreduce/ForLoopToFunctionalHintTest.java b/java/java.hints/test/unit/src/org/netbeans/modules/java/hints/jdk/mapreduce/ForLoopToFunctionalHintTest.java
index 5cb20d2..093c376 100644
--- a/java/java.hints/test/unit/src/org/netbeans/modules/java/hints/jdk/mapreduce/ForLoopToFunctionalHintTest.java
+++ b/java/java.hints/test/unit/src/org/netbeans/modules/java/hints/jdk/mapreduce/ForLoopToFunctionalHintTest.java
@@ -56,7 +56,7 @@
+ "}")
.sourceLevel("1.8")
.run(ForLoopToFunctionalHint.class)
- .findWarning("12:8-12:11:verifier:" + Bundle.ERR_ForLoopToFunctionalHint())
+ .findWarning("12:8-12:11:hint:" + Bundle.ERR_ForLoopToFunctionalHint())
.applyFix()
.assertOutput("package testdemo;\n"
+ "\n"
@@ -126,7 +126,7 @@
+ "}")
.sourceLevel("1.8")
.run(ForLoopToFunctionalHint.class)
- .findWarning("12:8-12:11:verifier:" + Bundle.ERR_ForLoopToFunctionalHint())
+ .findWarning("12:8-12:11:hint:" + Bundle.ERR_ForLoopToFunctionalHint())
.applyFix()
.assertOutput("package testdemo;\n"
+ "\n"
@@ -180,7 +180,7 @@
+ "}")
.sourceLevel("1.8")
.run(ForLoopToFunctionalHint.class)
- .findWarning("22:8-22:11:verifier:" + Bundle.ERR_ForLoopToFunctionalHint())
+ .findWarning("22:8-22:11:hint:" + Bundle.ERR_ForLoopToFunctionalHint())
.applyFix()
.assertOutput("/*\n"
+ " * To change this template, choose Tools | Templates\n"
@@ -237,7 +237,7 @@
+ "}")
.sourceLevel("1.8")
.run(ForLoopToFunctionalHint.class)
- .findWarning("12:8-12:11:verifier:" + Bundle.ERR_ForLoopToFunctionalHint())
+ .findWarning("12:8-12:11:hint:" + Bundle.ERR_ForLoopToFunctionalHint())
.applyFix()
.assertOutput("package testdemo;\n"
+ "\n"
@@ -288,7 +288,7 @@
+ "}")
.sourceLevel("1.8")
.run(ForLoopToFunctionalHint.class)
- .findWarning("12:8-12:11:verifier:" + Bundle.ERR_ForLoopToFunctionalHint())
+ .findWarning("12:8-12:11:hint:" + Bundle.ERR_ForLoopToFunctionalHint())
.applyFix()
.assertOutput("package testdemo;\n"
+ "\n"
@@ -341,7 +341,7 @@
+ "}")
.sourceLevel("1.8")
.run(ForLoopToFunctionalHint.class)
- .findWarning("12:8-12:11:verifier:" + Bundle.ERR_ForLoopToFunctionalHint())
+ .findWarning("12:8-12:11:hint:" + Bundle.ERR_ForLoopToFunctionalHint())
.applyFix()
.assertOutput("package testdemo;\n"
+ "\n"
@@ -398,7 +398,7 @@
+ "}")
.sourceLevel("1.8")
.run(ForLoopToFunctionalHint.class)
- .findWarning("12:8-12:11:verifier:" + Bundle.ERR_ForLoopToFunctionalHint())
+ .findWarning("12:8-12:11:hint:" + Bundle.ERR_ForLoopToFunctionalHint())
.applyFix()
.assertOutput("package testdemo;\n"
+ "\n"
@@ -455,7 +455,7 @@
+ "}")
.sourceLevel("1.8")
.run(ForLoopToFunctionalHint.class)
- .findWarning("12:8-12:11:verifier:" + Bundle.ERR_ForLoopToFunctionalHint())
+ .findWarning("12:8-12:11:hint:" + Bundle.ERR_ForLoopToFunctionalHint())
.applyFix()
.assertOutput("package testdemo;\n"
+ "\n"
@@ -519,7 +519,7 @@
+ "}")
.sourceLevel("1.8")
.run(ForLoopToFunctionalHint.class)
- .findWarning("12:8-12:11:verifier:" + Bundle.ERR_ForLoopToFunctionalHint())
+ .findWarning("12:8-12:11:hint:" + Bundle.ERR_ForLoopToFunctionalHint())
.applyFix()
.assertOutput("package testdemo;\n"
+ "\n"
@@ -583,7 +583,7 @@
+ "}")
.sourceLevel("1.8")
.run(ForLoopToFunctionalHint.class)
- .findWarning("14:8-14:11:verifier:" + Bundle.ERR_ForLoopToFunctionalHint())
+ .findWarning("14:8-14:11:hint:" + Bundle.ERR_ForLoopToFunctionalHint())
.applyFix()
.assertOutput("package testdemo;\n"
+ "\n"
@@ -658,7 +658,7 @@
+ "}")
.sourceLevel("1.8")
.run(ForLoopToFunctionalHint.class)
- .findWarning("12:8-12:11:verifier:" + Bundle.ERR_ForLoopToFunctionalHint())
+ .findWarning("12:8-12:11:hint:" + Bundle.ERR_ForLoopToFunctionalHint())
.applyFix()
.assertOutput("package testdemo;\n"
+ "\n"
@@ -725,7 +725,7 @@
+ "}")
.sourceLevel("1.8")
.run(ForLoopToFunctionalHint.class)
- .findWarning("14:8-14:11:verifier:" + Bundle.ERR_ForLoopToFunctionalHint())
+ .findWarning("14:8-14:11:hint:" + Bundle.ERR_ForLoopToFunctionalHint())
.applyFix()
.assertOutput("package testdemo;\n"
+ "\n"
@@ -787,7 +787,7 @@
+ "}")
.sourceLevel("1.8")
.run(ForLoopToFunctionalHint.class)
- .findWarning("14:8-14:11:verifier:" + Bundle.ERR_ForLoopToFunctionalHint())
+ .findWarning("14:8-14:11:hint:" + Bundle.ERR_ForLoopToFunctionalHint())
.applyFix()
.assertOutput("package testdemo;\n"
+ "\n"
@@ -859,7 +859,7 @@
+ "}")
.sourceLevel("1.8")
.run(ForLoopToFunctionalHint.class)
- .findWarning("14:8-14:11:verifier:" + Bundle.ERR_ForLoopToFunctionalHint())
+ .findWarning("14:8-14:11:hint:" + Bundle.ERR_ForLoopToFunctionalHint())
.applyFix()
.assertOutput("package testdemo;\n"
+ "\n"
@@ -928,7 +928,7 @@
+ "")
.sourceLevel("1.8")
.run(ForLoopToFunctionalHint.class)
- .findWarning("17:8-17:11:verifier:" + Bundle.ERR_ForLoopToFunctionalHint())
+ .findWarning("17:8-17:11:hint:" + Bundle.ERR_ForLoopToFunctionalHint())
.applyFix()
.assertOutput("package javatargettempapp;\n"
+ "\n"
@@ -990,7 +990,7 @@
+ "")
.sourceLevel("1.8")
.run(ForLoopToFunctionalHint.class)
- .findWarning("17:8-17:11:verifier:" + Bundle.ERR_ForLoopToFunctionalHint())
+ .findWarning("17:8-17:11:hint:" + Bundle.ERR_ForLoopToFunctionalHint())
.applyFix()
.assertOutput("package javatargettempapp;\n"
+ "\n"
@@ -1052,7 +1052,7 @@
+ "")
.sourceLevel("1.8")
.run(ForLoopToFunctionalHint.class)
- .findWarning("17:8-17:11:verifier:" + Bundle.ERR_ForLoopToFunctionalHint())
+ .findWarning("17:8-17:11:hint:" + Bundle.ERR_ForLoopToFunctionalHint())
.applyFix()
.assertOutput("package javatargettempapp;\n"
+ "\n"
@@ -1124,7 +1124,7 @@
+ "}")
.sourceLevel("1.8")
.run(ForLoopToFunctionalHint.class)
- .findWarning("23:8-23:11:verifier:" + Bundle.ERR_ForLoopToFunctionalHint())
+ .findWarning("23:8-23:11:hint:" + Bundle.ERR_ForLoopToFunctionalHint())
.applyFix()
.assertOutput("/*\n"
+ " * To change this template, choose Tools | Templates\n"
@@ -1202,7 +1202,7 @@
+ "}")
.sourceLevel("1.8")
.run(ForLoopToFunctionalHint.class)
- .findWarning("23:8-23:11:verifier:" + Bundle.ERR_ForLoopToFunctionalHint())
+ .findWarning("23:8-23:11:hint:" + Bundle.ERR_ForLoopToFunctionalHint())
.applyFix()
.assertOutput("/*\n"
+ " * To change this template, choose Tools | Templates\n"
@@ -1274,7 +1274,7 @@
+ "}")
.sourceLevel("1.8")
.run(ForLoopToFunctionalHint.class)
- .findWarning("23:8-23:11:verifier:" + Bundle.ERR_ForLoopToFunctionalHint())
+ .findWarning("23:8-23:11:hint:" + Bundle.ERR_ForLoopToFunctionalHint())
.applyFix()
.assertOutput("/*\n"
+ " * To change this template, choose Tools | Templates\n"
@@ -1341,7 +1341,7 @@
+ "}")
.sourceLevel("1.8")
.run(ForLoopToFunctionalHint.class)
- .findWarning("23:8-23:11:verifier:" + Bundle.ERR_ForLoopToFunctionalHint())
+ .findWarning("23:8-23:11:hint:" + Bundle.ERR_ForLoopToFunctionalHint())
.applyFix()
.assertOutput("/*\n"
+ " * To change this template, choose Tools | Templates\n"
@@ -1406,7 +1406,7 @@
+ "}")
.sourceLevel("1.8")
.run(ForLoopToFunctionalHint.class)
- .assertNotContainsWarnings("23:8-23:11:verifier:" + Bundle.ERR_ForLoopToFunctionalHint());
+ .assertNotContainsWarnings("23:8-23:11:hint:" + Bundle.ERR_ForLoopToFunctionalHint());
}
public void testNoHintDueToNEF() throws Exception {
@@ -1651,7 +1651,7 @@
+ "}")
.sourceLevel("1.8")
.run(ForLoopToFunctionalHint.class)
- .assertWarnings("15:8-15:11:verifier:" + Bundle.ERR_ForLoopToFunctionalHint());
+ .assertWarnings("15:8-15:11:hint:" + Bundle.ERR_ForLoopToFunctionalHint());
}
public void testNoHintDueToMethodThrowingException() throws Exception {
@@ -1789,7 +1789,7 @@
+ "}")
.sourceLevel("1.8")
.run(ForLoopToFunctionalHint.class)
- .assertNotContainsWarnings("23:8-23:11:verifier:Can use functional operation");
+ .assertNotContainsWarnings("23:8-23:11:hint:Can use functional operation");
}
@@ -1832,7 +1832,7 @@
+ "}")
.sourceLevel("1.8")
.run(ForLoopToFunctionalHint.class)
- .assertNotContainsWarnings("23:8-23:11:verifier:Can use functional operation");
+ .assertNotContainsWarnings("23:8-23:11:hint:Can use functional operation");
}
@@ -1873,7 +1873,7 @@
+ "}")
.sourceLevel("1.8")
.run(ForLoopToFunctionalHint.class)
- .assertNotContainsWarnings("23:8-23:11:verifier:Can use functional operation");
+ .assertNotContainsWarnings("23:8-23:11:hint:Can use functional operation");
}
diff --git a/java/java.nativeimage.debugger/src/org/netbeans/modules/java/nativeimage/debugger/displayer/JavaVariablesDisplayer.java b/java/java.nativeimage.debugger/src/org/netbeans/modules/java/nativeimage/debugger/displayer/JavaVariablesDisplayer.java
index 191e2a9..5f7035e 100644
--- a/java/java.nativeimage.debugger/src/org/netbeans/modules/java/nativeimage/debugger/displayer/JavaVariablesDisplayer.java
+++ b/java/java.nativeimage.debugger/src/org/netbeans/modules/java/nativeimage/debugger/displayer/JavaVariablesDisplayer.java
@@ -47,6 +47,7 @@
private static final String COMPRESSED_REF_REFIX = "_z_.";
private static final String PUBLIC = "public";
private static final String STRING_VALUE = "value";
+ private static final String STRING_CODER = "coder";
private static final String HASH = "hash";
private static final String UNSET = "<optimized out>";
@@ -240,6 +241,16 @@
return null;
}
+ private String readArray(NIVariable lengthVariable, int offset, int itemSize) {
+ int length = Integer.parseInt(lengthVariable.getValue());
+ String expressionPath = lengthVariable.getExpressionPath();
+ if (expressionPath != null && !expressionPath.isEmpty()) {
+ String addressExpr = "&" + expressionPath;
+ return debugger.readMemory(addressExpr, 4 + offset, length * itemSize); // length has 4 bytes
+ }
+ return null;
+ }
+
private static NIVariable[] getObjectChildren(NIVariable[] children, int from, int to) {
for (int i = 0; i < children.length; i++) {
if (HUB.equals(children[i].getName())) {
@@ -290,16 +301,37 @@
@Override
public String getValue() {
NIVariable pub = getVarsByName(var.getChildren()).get(PUBLIC);
- Map<String, NIVariable> arrayInfo = getVarsByName(getVarsByName(pub.getChildren()).get(STRING_VALUE).getChildren());
+ Map<String, NIVariable> varChildren = getVarsByName(pub.getChildren());
+ Map<String, NIVariable> arrayInfo = getVarsByName(varChildren.get(STRING_VALUE).getChildren());
arrayInfo = getVarsByName(arrayInfo.get(PUBLIC).getChildren());
NIVariable arrayVariable = arrayInfo.get(ARRAY);
NIVariable lengthVariable = arrayInfo.get(ARRAY_LENGTH);
- String hexArray = readArray(lengthVariable, 2);
+ int length = Integer.parseInt(lengthVariable.getValue());
+ NIVariable coderVar = varChildren.get(STRING_CODER);
+ int coder = -1;
+ if (coderVar != null) {
+ String coderStr = coderVar.getValue();
+ int space = coderStr.indexOf(' ');
+ if (space > 0) {
+ coderStr = coderStr.substring(0, space);
+ }
+ try {
+ coder = Integer.parseInt(coderStr);
+ } catch (NumberFormatException ex) {
+ }
+ }
+ String hexArray = readArray(lengthVariable, coder == -1 ? 4 : 0, 2);
if (hexArray != null) {
- return parseUTF16(hexArray);
+ switch (coder) {
+ case 0: // Compressed String on JDK 9+
+ return parseLatin1(hexArray, length);
+ case 1: // UTF-16 String on JDK 9+
+ return parseUTF16(hexArray, length/2);
+ default: // UTF-16 String on JDK 8
+ return parseUTF16(hexArray, length);
+ }
} else { // legacy code
String arrayExpression = getArrayExpression(arrayVariable);
- int length = Integer.parseInt(lengthVariable.getValue());
char[] characters = new char[length];
try {
for (int i = 0; i < length; i++) {
@@ -313,10 +345,9 @@
}
}
- private String parseUTF16(String hexArray) {
- CharsetDecoder cd = Charset.forName("utf-16").newDecoder();
+ private String parseUTF16(String hexArray, int length) {
+ CharsetDecoder cd = Charset.forName("utf-16").newDecoder(); // NOI18N
ByteBuffer buffer = ByteBuffer.allocate(2);
- int length = hexArray.length() / 4;
char[] characters = new char[length];
int ih = 0;
for (int i = 0; i < length; i++) {
@@ -337,6 +368,26 @@
return new String(characters);
}
+ private String parseLatin1(String hexArray, int length) {
+ CharsetDecoder cd = Charset.forName("latin1").newDecoder(); // NOI18N
+ ByteBuffer buffer = ByteBuffer.allocate(1);
+ char[] characters = new char[length];
+ int ih = 0;
+ for (int i = 0; i < length; i++) {
+ byte b = parseByte(hexArray, ih);
+ ih += 2;
+ buffer.rewind();
+ buffer.put(b);
+ buffer.rewind();
+ try {
+ char c = cd.decode(buffer).get();
+ characters[i] = c;
+ } catch (CharacterCodingException ex) {
+ }
+ }
+ return new String(characters);
+ }
+
private byte parseByte(String hexArray, int offset) {
String hex = new String(new char[] {hexArray.charAt(offset), hexArray.charAt(offset + 1)});
return (byte) (Integer.parseInt(hex, 16) & 0xFF);
diff --git a/java/java.source.base/src/org/netbeans/api/java/source/TreeUtilities.java b/java/java.source.base/src/org/netbeans/api/java/source/TreeUtilities.java
index 3316ce9..b94657d 100644
--- a/java/java.source.base/src/org/netbeans/api/java/source/TreeUtilities.java
+++ b/java/java.source.base/src/org/netbeans/api/java/source/TreeUtilities.java
@@ -121,6 +121,8 @@
*/
public final class TreeUtilities {
+ private static final Logger LOG = Logger.getLogger(TreeUtilities.class.getName());
+
/**{@link Kind}s that are represented by {@link ClassTree}.
*
* @since 0.67
@@ -932,7 +934,7 @@
Method m = Enter.class.getDeclaredMethod("unenter", JCCompilationUnit.class, JCTree.class);
m.invoke(Enter.instance(ctx), cut, tree);
} catch (Throwable t) {
- t.printStackTrace();
+ LOG.log(Level.FINE, null, t);
}
}