This is an automated email from the ASF dual-hosted git repository.

mbien 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 0cea1f9edc Move GraalVM job to JDK 11 (GraalVM 22.3.1).
     new e0842b782e Merge pull request #6369 from mbien/ci-graal-eleven
0cea1f9edc is described below

commit 0cea1f9edcdc77dd4d2938e62c66fc9d8fa614d4
Author: Michael Bien <mbie...@gmail.com>
AuthorDate: Tue Aug 22 17:23:10 2023 +0200

    Move GraalVM job to JDK 11 (GraalVM 22.3.1).
    
    Why not latest JDK 11 compatible release? Not all releases ship with all
    language components, tests need js, ruby, java, R and python
    at the same time, 22.3.1 provides this.
    
     - python launcher name change
     - assert that the launchers exist
     - assert current thread not null
     - add js component to graal setup
     - truffle API changes in unused code
    
    Explode DebugAllBaseTest into smaller units
    
     - simplifies debugging and CI log inspection
     - excludes side effects
     - more predictable timeouts, tests can now run without retry
       wrapper
    
    Disable PolyglotTest
    
     - test locks up once ruby is loaded, see comment
    
    Cleanup
    
     - cleanup after aa1f69f3fb which removed the SL tests
       but kept some dependencies
     - make FeedbackSurvey less noisy on GraalVM
---
 .github/workflows/main.yml                         |  13 +-
 .../external/antlr4-runtime-4.7.2-license.txt      |  35 --
 java/debugger.jpda.truffle/external/binaries-list  |  18 -
 .../external/truffle-1.0.0-license.txt             |  26 --
 .../nbproject/project.properties                   |   3 +-
 .../debugger/jpda/truffle/DebugAllBaseTest.java    | 434 +++++++++++++--------
 .../debugger/jpda/truffle/DebugPythonTest.java     |   3 +-
 .../modules/debugger/jpda/truffle/DebugRTest.java  |   1 -
 .../debugger/jpda/truffle/DebugRubyTest.java       |   1 -
 .../debugger/jpda/truffle/JPDATestCase.java        |   4 +-
 .../debugger/jpda/truffle/PolyglotTest.java        |   7 +-
 .../jpda/backend/truffle/JPDATruffleAccessor.java  |   4 +-
 .../debugger/jpda/backend/truffle/TruffleAST.java  |   6 +-
 .../netbeans/api/debugger/jpda/JPDASupport.java    |  20 +-
 .../netbeans/modules/welcome/FeedbackSurvey.java   |  18 +-
 15 files changed, 297 insertions(+), 296 deletions(-)

diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 8a8c94afca..0798d57b8c 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -2525,7 +2525,7 @@ jobs:
     timeout-minutes: 60
     strategy:
       matrix:
-        graal: [ '20.3.0', '21.1.0' ]
+        graal: [ '22.3.1' ]
       fail-fast: false
 
     steps:
@@ -2544,16 +2544,13 @@ jobs:
 
       - name: Setup GraalVM
         run: |
-          
URL=https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-${{ 
matrix.graal }}/graalvm-ce-java8-linux-amd64-${{ matrix.graal }}.tar.gz
+          
URL=https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-${{ 
matrix.graal }}/graalvm-ce-java11-linux-amd64-${{ matrix.graal }}.tar.gz
           curl -L $URL | tar -xz
-          GRAALVM=`pwd`/graalvm-ce-java8-${{ matrix.graal }}
+          GRAALVM=`pwd`/graalvm-ce-java11-${{ matrix.graal }}
           echo "JAVA_HOME=$GRAALVM" >> $GITHUB_ENV
 
       - name: Setup GraalVM Languages
-        run: |
-          $JAVA_HOME/bin/gu install python
-          $JAVA_HOME/bin/gu install R
-          $JAVA_HOME/bin/gu install ruby
+        run: $JAVA_HOME/bin/gu install --no-progress python R ruby js
 
       - name: platform/core.network
         run: ant $OPTS -f platform/core.network test
@@ -2574,7 +2571,7 @@ jobs:
         run: ant $OPTS -f java/nashorn.execution test
 
       - name: java/debugger.jpda.truffle
-        run: .github/retry.sh ant $OPTS -f java/debugger.jpda.truffle test
+        run: ant $OPTS -f java/debugger.jpda.truffle test
 
       - name: Create Test Summary
         uses: test-summary/action@v2
diff --git 
a/java/debugger.jpda.truffle/external/antlr4-runtime-4.7.2-license.txt 
b/java/debugger.jpda.truffle/external/antlr4-runtime-4.7.2-license.txt
deleted file mode 100644
index 4dbaf42c3c..0000000000
--- a/java/debugger.jpda.truffle/external/antlr4-runtime-4.7.2-license.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-Name: Antlr
-Description: ANother Tool for Language Recognition, is a language tool that 
provides a framework for constructing recognizers, interpreters, compilers, and 
translators from grammatical descriptions.
-Version: 4.7.2
-License: BSD-antlr-runtime4
-Origin: Antlr
-URL: https://www.antlr.org
-
-Use of Antlr version 4.7.2 is governed by the terms of the license below:
-
- [The "BSD license"]
-Copyright (c) 2015 Terence Parr, Sam Harwell
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-
- 1. Redistributions of source code must retain the above copyright
-    notice, this list of conditions and the following disclaimer.
- 2. Redistributions in binary form must reproduce the above copyright
-    notice, this list of conditions and the following disclaimer in the
-    documentation and/or other materials provided with the distribution.
- 3. The name of the author may not be used to endorse or promote products
-    derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/java/debugger.jpda.truffle/external/binaries-list 
b/java/debugger.jpda.truffle/external/binaries-list
deleted file mode 100644
index d294e1b6db..0000000000
--- a/java/debugger.jpda.truffle/external/binaries-list
+++ /dev/null
@@ -1,18 +0,0 @@
-# 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.
-93A352D21C1D95061BDFE5C86A91F946F3A3E605 
com.oracle.truffle:truffle-sl:1.0.0-rc6
-E27D8AB4F984F9D186F54DA984A6AB1CCCAC755E org.antlr:antlr4-runtime:4.7.2
diff --git a/java/debugger.jpda.truffle/external/truffle-1.0.0-license.txt 
b/java/debugger.jpda.truffle/external/truffle-1.0.0-license.txt
deleted file mode 100644
index cd6657c3b5..0000000000
--- a/java/debugger.jpda.truffle/external/truffle-1.0.0-license.txt
+++ /dev/null
@@ -1,26 +0,0 @@
-Name: Graal SDK and Truffle API
-Description: Graal SDK and Truffle API
-License: UPL
-Origin: https://github.com/oracle/graal
-Version: 1.0
-Files: truffle-sl-1.0.0-rc6.jar
-OSR: not needed
-
-Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
-
-The Universal Permissive License (UPL), Version 1.0
-
-Subject to the condition set forth below, permission is hereby granted to any 
person obtaining a copy of this software, associated documentation and/or data 
(collectively the "Software"), free of charge and under any and all copyright 
rights in the Software, and any and all patent rights owned or freely 
licensable by each licensor hereunder covering either (i) the unmodified 
Software as contributed to or provided by such licensor, or (ii) the Larger 
Works (as defined below), to deal in both
-
-(a) the Software, and
-
-(b) any piece of software and/or hardware listed in the lrgrwrks.txt file if 
one is included with the Software each a "Larger Work" to which the Software is 
contributed by such licensors),
-
-without restriction, including without limitation the rights to copy, create 
derivative works of, display, perform, and distribute the Software and make, 
use, sell, offer for sale, import, export, have made, and have sold the 
Software and the Larger Work(s), and to sublicense the foregoing rights on 
either these or other terms.
-
-This license is subject to the following condition:
-
-The above copyright notice and either this complete permission notice or at a 
minimum a reference to the UPL must be included in all copies or substantial 
portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
SOFTWARE.
-
diff --git a/java/debugger.jpda.truffle/nbproject/project.properties 
b/java/debugger.jpda.truffle/nbproject/project.properties
index 219cd5ea1f..06747ea9f8 100644
--- a/java/debugger.jpda.truffle/nbproject/project.properties
+++ b/java/debugger.jpda.truffle/nbproject/project.properties
@@ -20,8 +20,7 @@ javac.source=1.8
 javadoc.arch=${basedir}/arch.xml
 nbm.module.author=Martin Entlicher
 requires.nb.javac=true
-truffle.sl=external/antlr4-runtime-4.7.2.jar:external/truffle-sl-1.0.0-rc6.jar
-cp.extra=${tools.jar}:${truffle.sl}:${jpda.classes.dir}
+cp.extra=${tools.jar}:${jpda.classes.dir}
 jpda.classes.dir=${build.dir}/jpda/classes/
 test-unit-sys-prop.test.dir.src=${basedir}/test/unit/src/
 test-unit-sys-prop.test.dir.classes=${basedir}/build/test/unit/classes
diff --git 
a/java/debugger.jpda.truffle/test/unit/src/org/netbeans/modules/debugger/jpda/truffle/DebugAllBaseTest.java
 
b/java/debugger.jpda.truffle/test/unit/src/org/netbeans/modules/debugger/jpda/truffle/DebugAllBaseTest.java
index 8819f0b7bf..029aa1215e 100644
--- 
a/java/debugger.jpda.truffle/test/unit/src/org/netbeans/modules/debugger/jpda/truffle/DebugAllBaseTest.java
+++ 
b/java/debugger.jpda.truffle/test/unit/src/org/netbeans/modules/debugger/jpda/truffle/DebugAllBaseTest.java
@@ -34,8 +34,11 @@ import 
org.netbeans.modules.javascript2.debug.breakpoints.JSLineBreakpoint;
 public class DebugAllBaseTest extends JPDATestCase {
 
     private static final String SCRIPT_NAME = "DebuggerBase";
-    private static final String[] SCRIPT_EXTENSIONS = { "js", "py", "r", 
"ruby" };
-    private static final String[] LAUNCHERS = { "js", "graalpython", 
"Rscript", "ruby" };
+
+    private static final String JS_LAUNCHER = "js";
+    private static final String PYTHON_LAUNCHER = "python";
+    private static final String RSCRIPT_LAUNCHER = "Rscript";
+    private static final String RUBY_LAUNCHER = "ruby";
 
     public DebugAllBaseTest(String name) {
         super(name);
@@ -45,203 +48,292 @@ public class DebugAllBaseTest extends JPDATestCase {
         return createSuite(DebugAllBaseTest.class);
     }
 
-    private void forAllScripts(ThrowableBiConsumer<String, File> 
scriptConsumer) {
-        for (int i = 0; i < LAUNCHERS.length; i++) {
-            String launcher = LAUNCHERS[i];
-            File source = getScriptSourceFile(SCRIPT_NAME + "." + 
SCRIPT_EXTENSIONS[i]);
-            try {
-                scriptConsumer.accept(launcher, source);
-            } catch (Throwable t) {
-                throw new AssertionError(launcher + " " + source, t);
-            }
+    private File getScriptSourceFileForLauncher(String launcher) {
+        String ending;
+        switch (launcher) {
+            case "graalpython": // old name for 8
+            case PYTHON_LAUNCHER: ending = "py"; break;
+            case RSCRIPT_LAUNCHER: ending = "r"; break;
+            default: ending = launcher;
         }
+        return getScriptSourceFile(SCRIPT_NAME + "." + ending);
+    }
+
+    public void testBreakpoints_JS() throws Exception {
+        runBreakpointsTest(JS_LAUNCHER);
+    }
+
+    public void testBreakpoints_Python() throws Exception {
+        runBreakpointsTest(PYTHON_LAUNCHER);
+    }
+
+    public void testBreakpoints_R() throws Exception {
+        runBreakpointsTest(RSCRIPT_LAUNCHER);
+    }
+
+    public void testBreakpoints_Ruby() throws Exception {
+        runBreakpointsTest(RUBY_LAUNCHER);
     }
 
-    public void testBreakpoints() {
+    private void runBreakpointsTest(String launcher) throws Exception {
+        File source = getScriptSourceFileForLauncher(launcher);
         DebuggerManager dm = DebuggerManager.getDebuggerManager();
-        forAllScripts((launcher, source) -> {
-            URL url = source.toURI().toURL();
-            JSLineBreakpoint lb1 = new TruffleLineBreakpoint(url, 25);
-            dm.addBreakpoint(lb1);
-            JSLineBreakpoint lb2 = new TruffleLineBreakpoint(url, 29);
-            dm.addBreakpoint(lb2);
-            String sourcePath = source.getAbsolutePath();
-            runScriptUnderJPDA(launcher, source.getAbsolutePath(), support -> {
-                JPDADebugger debugger = support.getDebugger();
-                checkStoppedAtScript(debugger.getCurrentThread(), sourcePath, 
25);
-                support.doContinue();
-                support.waitState(JPDADebugger.STATE_STOPPED);
-                checkStoppedAtScript(debugger.getCurrentThread(), sourcePath, 
29);
-                dm.removeBreakpoint(lb2);
-                support.doContinue();
-            });
+        URL url = source.toURI().toURL();
+        JSLineBreakpoint lb1 = new TruffleLineBreakpoint(url, 25);
+        dm.addBreakpoint(lb1);
+        JSLineBreakpoint lb2 = new TruffleLineBreakpoint(url, 29);
+        dm.addBreakpoint(lb2);
+        String sourcePath = source.getAbsolutePath();
+        runScriptUnderJPDA(launcher, source.getAbsolutePath(), support -> {
+            JPDADebugger debugger = support.getDebugger();
+            checkStoppedAtScript(debugger.getCurrentThread(), sourcePath, 25);
+            support.doContinue();
+            support.waitState(JPDADebugger.STATE_STOPPED);
+            checkStoppedAtScript(debugger.getCurrentThread(), sourcePath, 29);
+            dm.removeBreakpoint(lb2);
+            support.doContinue();
         });
     }
 
-    public void testBreakpointsConditional() {
+    public void testBreakpointsConditional_JS() throws Exception {
+        runBreakpointsConditionalTest(JS_LAUNCHER);
+    }
+
+    public void testBreakpointsConditional_Python() throws Exception {
+        runBreakpointsConditionalTest(PYTHON_LAUNCHER);
+    }
+
+    public void testBreakpointsConditional_R() throws Exception {
+        runBreakpointsConditionalTest(RSCRIPT_LAUNCHER);
+    }
+
+    public void testBreakpointsConditional_Ruby() throws Exception {
+        runBreakpointsConditionalTest(RUBY_LAUNCHER);
+    }
+
+    public void runBreakpointsConditionalTest(String launcher) throws 
Exception {
+        File source = getScriptSourceFileForLauncher(launcher);
         DebuggerManager dm = DebuggerManager.getDebuggerManager();
-        forAllScripts((launcher, source) -> {
-            String and;
-            switch (launcher) {
-                case "js": and = "&&"; break;
-                case "Rscript": and = "&"; break;
-                default: and = "and";
-            }
-            String condition = "n == 2 " + and + " n1 == 3";
-            URL url = source.toURI().toURL();
-            JSLineBreakpoint lb = new TruffleLineBreakpoint(url, 35);
-            lb.setCondition(condition);
-            dm.addBreakpoint(lb);
-            String sourcePath = source.getAbsolutePath();
-            runScriptUnderJPDA(launcher, source.getAbsolutePath(), support -> {
-                JPDADebugger debugger = support.getDebugger();
-                // The conditional breakpoint is hit two times:
-                checkStoppedAtScript(debugger.getCurrentThread(), sourcePath, 
35);
-                support.doContinue();
-                support.waitState(JPDADebugger.STATE_STOPPED);
-                checkStoppedAtScript(debugger.getCurrentThread(), sourcePath, 
35);
-                support.doContinue();
-            });
+        String and;
+        switch (launcher) {
+            case JS_LAUNCHER: and = "&&"; break;
+            case RSCRIPT_LAUNCHER: and = "&"; break;
+            default: and = "and";
+        }
+        String condition = "n == 2 " + and + " n1 == 3";
+        URL url = source.toURI().toURL();
+        JSLineBreakpoint lb = new TruffleLineBreakpoint(url, 35);
+        lb.setCondition(condition);
+        dm.addBreakpoint(lb);
+        String sourcePath = source.getAbsolutePath();
+        runScriptUnderJPDA(launcher, source.getAbsolutePath(), support -> {
+            JPDADebugger debugger = support.getDebugger();
+            // The conditional breakpoint is hit two times:
+            checkStoppedAtScript(debugger.getCurrentThread(), sourcePath, 35);
+            support.doContinue();
+            support.waitState(JPDADebugger.STATE_STOPPED);
+            checkStoppedAtScript(debugger.getCurrentThread(), sourcePath, 35);
+            support.doContinue();
         });
     }
 
-    public void testSteps() {
+    public void testSteps_JS() throws Exception {
+        runStepsTest(JS_LAUNCHER);
+    }
+
+    public void testSteps_Python() throws Exception {
+        runStepsTest(PYTHON_LAUNCHER);
+    }
+
+    public void testSteps_R() throws Exception {
+        runStepsTest(RSCRIPT_LAUNCHER);
+    }
+
+    public void testSteps_Ruby() throws Exception {
+        runStepsTest(RUBY_LAUNCHER);
+    }
+
+    public void runStepsTest(String launcher) throws Exception {
+        File source = getScriptSourceFileForLauncher(launcher);
         DebuggerManager dm = DebuggerManager.getDebuggerManager();
-        forAllScripts((launcher, source) -> {
-            URL url = source.toURI().toURL();
-            String sourcePath = source.getAbsolutePath();
-            JSLineBreakpoint lb1 = new TruffleLineBreakpoint(url, 42);
-            dm.addBreakpoint(lb1);
-            runScriptUnderJPDA(launcher, source.getAbsolutePath(), support -> {
-                JPDADebugger debugger = support.getDebugger();
-                checkStoppedAtScript(debugger.getCurrentThread(), sourcePath, 
42);
-                support.stepOver();
-                checkStoppedAtScript(debugger.getCurrentThread(), sourcePath, 
43);
-                support.stepInto();
-                checkStoppedAtScript(debugger.getCurrentThread(), sourcePath, 
23);
-                support.stepOut();
-                checkStoppedAtScript(debugger.getCurrentThread(), sourcePath, 
43);
-                support.doContinue();
-            });
+        URL url = source.toURI().toURL();
+        String sourcePath = source.getAbsolutePath();
+        JSLineBreakpoint lb1 = new TruffleLineBreakpoint(url, 42);
+        dm.addBreakpoint(lb1);
+        runScriptUnderJPDA(launcher, source.getAbsolutePath(), support -> {
+            JPDADebugger debugger = support.getDebugger();
+            checkStoppedAtScript(debugger.getCurrentThread(), sourcePath, 42);
+            support.stepOver();
+            checkStoppedAtScript(debugger.getCurrentThread(), sourcePath, 43);
+            support.stepInto();
+            checkStoppedAtScript(debugger.getCurrentThread(), sourcePath, 23);
+            support.stepOut();
+            checkStoppedAtScript(debugger.getCurrentThread(), sourcePath, 43);
+            support.doContinue();
         });
     }
 
-    public void testEval() {
+    public void testEval_JS() throws Exception {
+        runEvalTest(JS_LAUNCHER);
+    }
+
+    public void testEval_Python() throws Exception {
+        runEvalTest(PYTHON_LAUNCHER);
+    }
+
+    public void testEval_R() throws Exception {
+        runEvalTest(RSCRIPT_LAUNCHER);
+    }
+
+    public void testEval_Ruby() throws Exception {
+        runEvalTest(RUBY_LAUNCHER);
+    }
+
+    public void runEvalTest(String launcher) throws Exception {
+        File source = getScriptSourceFileForLauncher(launcher);
         DebuggerManager dm = DebuggerManager.getDebuggerManager();
-        forAllScripts((launcher, source) -> {
-            URL url = source.toURI().toURL();
-            String sourcePath = source.getAbsolutePath();
-            JSLineBreakpoint lb1 = new TruffleLineBreakpoint(url, 29);
-            dm.addBreakpoint(lb1);
-            runScriptUnderJPDA(launcher, source.getAbsolutePath(), support -> {
-                JPDADebugger debugger = support.getDebugger();
-                checkStoppedAtScript(debugger.getCurrentThread(), sourcePath, 
29);
-                // a = 20
-                Variable v = debugger.evaluate("a");
-                TruffleVariable tv = TruffleVariable.get(v);
-                assertTrue(tv.getDisplayValue(), 
tv.getDisplayValue().contains("20"));
-                // o.ao = "AO"
-                String expr;
-                switch (launcher) {
-                    case "ruby": expr = "o.instance_variable_get :@ao"; break;
-                    case "Rscript": expr = "o[\"ao\"]"; break;
-                    default: expr = "o.ao";
-                }
-                v = debugger.evaluate(expr);
-                tv = TruffleVariable.get(v);
-                assertTrue(tv.getDisplayValue(), 
tv.getDisplayValue().contains("AO"));
-                // arr[1] + arr[2]
-                v = debugger.evaluate("arr[1] + arr[2]");
-                tv = TruffleVariable.get(v);
-                String result = launcher.equals("Rscript") ? "9" : "7"; // 
Arrays start at index 1 in R
-                assertTrue(tv.getDisplayValue(), 
tv.getDisplayValue().contains(result));
-                support.doContinue();
-            });
+        URL url = source.toURI().toURL();
+        String sourcePath = source.getAbsolutePath();
+        JSLineBreakpoint lb1 = new TruffleLineBreakpoint(url, 29);
+        dm.addBreakpoint(lb1);
+        runScriptUnderJPDA(launcher, source.getAbsolutePath(), support -> {
+            JPDADebugger debugger = support.getDebugger();
+            checkStoppedAtScript(debugger.getCurrentThread(), sourcePath, 29);
+            // a = 20
+            Variable v = debugger.evaluate("a");
+            TruffleVariable tv = TruffleVariable.get(v);
+            assertTrue(tv.getDisplayValue(), 
tv.getDisplayValue().contains("20"));
+            // o.ao = "AO"
+            String expr;
+            switch (launcher) {
+                case RUBY_LAUNCHER: expr = "o.instance_variable_get :@ao"; 
break;
+                case RSCRIPT_LAUNCHER: expr = "o[\"ao\"]"; break;
+                default: expr = "o.ao";
+            }
+            v = debugger.evaluate(expr);
+            tv = TruffleVariable.get(v);
+            assertTrue(tv.getDisplayValue(), 
tv.getDisplayValue().contains("AO"));
+            // arr[1] + arr[2]
+            v = debugger.evaluate("arr[1] + arr[2]");
+            tv = TruffleVariable.get(v);
+            String result = launcher.equals(RSCRIPT_LAUNCHER) ? "9" : "7"; // 
Arrays start at index 1 in R
+            assertTrue(tv.getDisplayValue(), 
tv.getDisplayValue().contains(result));
+            support.doContinue();
         });
     }
 
-    public void testLocalVariables() {
+    public void testLocalVariables_JS() throws Exception {
+        runLocalVariablesTest(JS_LAUNCHER);
+    }
+
+    public void testLocalVariables_Python() throws Exception {
+        runLocalVariablesTest(PYTHON_LAUNCHER);
+    }
+
+    public void testLocalVariables_R() throws Exception {
+        runLocalVariablesTest(RSCRIPT_LAUNCHER);
+    }
+
+    public void testLocalVariables_Ruby() throws Exception {
+        runLocalVariablesTest(RUBY_LAUNCHER);
+    }
+
+    public void runLocalVariablesTest(String launcher) throws Exception {
+        File source = getScriptSourceFileForLauncher(launcher);
         DebuggerManager dm = DebuggerManager.getDebuggerManager();
-        forAllScripts((launcher, source) -> {
-            URL url = source.toURI().toURL();
-            String sourcePath = source.getAbsolutePath();
-            JSLineBreakpoint lb1 = new TruffleLineBreakpoint(url, 23);
-            dm.addBreakpoint(lb1);
-            runScriptUnderJPDA(launcher, source.getAbsolutePath(), support -> {
-                JPDADebugger debugger = support.getDebugger();
-                TruffleStackFrame frame = 
checkStoppedAtScript(debugger.getCurrentThread(), sourcePath, 23);
-                if (launcher.equals("Rscript") && frame.getScopes().length == 
0) {
-                    support.doContinue();
-                    return;
-                }
-                TruffleScope scope = frame.getScopes()[0];
-                if (launcher.equals("js")) {
-                    assertNull("a is not visible yet", findVariable(scope, 
"a"));
-                    assertNull("o is not visible yet", findVariable(scope, 
"o"));
-                    assertNull("arr is not visible yet", findVariable(scope, 
"arr"));
-                }
-                support.stepOver();
-                scope = checkStoppedAtScript(debugger.getCurrentThread(), 
sourcePath, 24).getScopes()[0];
-                assertNotNull("a is visible", findVariable(scope, "a"));
-                if (launcher.equals("js")) {
-                    assertNull("o is not visible yet", findVariable(scope, 
"o"));
-                    assertNull("arr is not visible yet", findVariable(scope, 
"arr"));
-                }
-                support.stepOver();
-                scope = checkStoppedAtScript(debugger.getCurrentThread(), 
sourcePath, 25).getScopes()[0];
-                assertNotNull("a is visible", findVariable(scope, "a"));
-                assertNotNull("o is visible", findVariable(scope, "o"));
-                if (launcher.equals("js")) {
-                    assertNull("arr is not visible yet", findVariable(scope, 
"arr"));
-                }
-                support.stepOver();
-                support.stepOver();
-                scope = checkStoppedAtScript(debugger.getCurrentThread(), 
sourcePath, 27).getScopes()[0];
-                assertNotNull("a is visible", findVariable(scope, "a"));
-                assertNotNull("o is visible", findVariable(scope, "o"));
-                assertNotNull("arr is visible", findVariable(scope, "arr"));
+        URL url = source.toURI().toURL();
+        String sourcePath = source.getAbsolutePath();
+        JSLineBreakpoint lb1 = new TruffleLineBreakpoint(url, 23);
+        dm.addBreakpoint(lb1);
+        runScriptUnderJPDA(launcher, source.getAbsolutePath(), support -> {
+            JPDADebugger debugger = support.getDebugger();
+            TruffleStackFrame frame = 
checkStoppedAtScript(debugger.getCurrentThread(), sourcePath, 23);
+            if (launcher.equals(RSCRIPT_LAUNCHER) && frame.getScopes().length 
== 0) {
                 support.doContinue();
-            });
+                return;
+            }
+            TruffleScope scope = frame.getScopes()[0];
+            if (launcher.equals(JS_LAUNCHER)) {
+                assertNull("a is not visible yet", findVariable(scope, "a"));
+                assertNull("o is not visible yet", findVariable(scope, "o"));
+                assertNull("arr is not visible yet", findVariable(scope, 
"arr"));
+            }
+            support.stepOver();
+            scope = checkStoppedAtScript(debugger.getCurrentThread(), 
sourcePath, 24).getScopes()[0];
+            assertNotNull("a is visible", findVariable(scope, "a"));
+            if (launcher.equals(JS_LAUNCHER)) {
+                assertNull("o is not visible yet", findVariable(scope, "o"));
+                assertNull("arr is not visible yet", findVariable(scope, 
"arr"));
+            }
+            support.stepOver();
+            scope = checkStoppedAtScript(debugger.getCurrentThread(), 
sourcePath, 25).getScopes()[0];
+            assertNotNull("a is visible", findVariable(scope, "a"));
+            assertNotNull("o is visible", findVariable(scope, "o"));
+            if (launcher.equals(JS_LAUNCHER)) {
+                assertNull("arr is not visible yet", findVariable(scope, 
"arr"));
+            }
+            support.stepOver();
+            support.stepOver();
+            scope = checkStoppedAtScript(debugger.getCurrentThread(), 
sourcePath, 27).getScopes()[0];
+            assertNotNull("a is visible", findVariable(scope, "a"));
+            assertNotNull("o is visible", findVariable(scope, "o"));
+            assertNotNull("arr is visible", findVariable(scope, "arr"));
+            support.doContinue();
         });
     }
 
-    public void testObjectProperties() {
+    public void testObjectProperties_JS() throws Exception {
+        runObjectPropertiesTest(JS_LAUNCHER);
+    }
+
+    public void testObjectProperties_Python() throws Exception {
+        runObjectPropertiesTest(PYTHON_LAUNCHER);
+    }
+
+    public void testObjectProperties_R() throws Exception {
+        runObjectPropertiesTest(RSCRIPT_LAUNCHER);
+    }
+
+    public void testObjectProperties_Ruby() throws Exception {
+        runObjectPropertiesTest(RUBY_LAUNCHER);
+    }
+
+    public void runObjectPropertiesTest(String launcher) throws Exception {
+        File source = getScriptSourceFileForLauncher(launcher);
         DebuggerManager dm = DebuggerManager.getDebuggerManager();
-        forAllScripts((launcher, source) -> {
-            URL url = source.toURI().toURL();
-            String sourcePath = source.getAbsolutePath();
-            JSLineBreakpoint lb1 = new TruffleLineBreakpoint(url, 29);
-            dm.addBreakpoint(lb1);
-            runScriptUnderJPDA(launcher, source.getAbsolutePath(), support -> {
-                JPDADebugger debugger = support.getDebugger();
-                TruffleStackFrame frame = 
checkStoppedAtScript(debugger.getCurrentThread(), sourcePath, 29);
-                TruffleVariable o = findVariable(frame.getScopes()[0], "o");
-                assertNotNull("Variable o not found!", o);
-                Object[] children = o.getChildren();
-                String aoName = launcher.equals("ruby") ? "@ao" : "ao";
-                boolean hasAO = false;
-                for (Object ch : children) {
-                    if (ch instanceof TruffleVariable && ((TruffleVariable) 
ch).getName().equals(aoName)) {
-                        hasAO = true;
-                        break;
-                    }
+        URL url = source.toURI().toURL();
+        String sourcePath = source.getAbsolutePath();
+        JSLineBreakpoint lb1 = new TruffleLineBreakpoint(url, 29);
+        dm.addBreakpoint(lb1);
+        runScriptUnderJPDA(launcher, source.getAbsolutePath(), support -> {
+            JPDADebugger debugger = support.getDebugger();
+            TruffleStackFrame frame = 
checkStoppedAtScript(debugger.getCurrentThread(), sourcePath, 29);
+            TruffleVariable o = findVariable(frame.getScopes()[0], "o");
+            assertNotNull("Variable o not found!", o);
+            Object[] children = o.getChildren();
+            String aoName = launcher.equals(RUBY_LAUNCHER) ? "@ao" : "ao";
+            boolean hasAO = false;
+            for (Object ch : children) {
+                if (ch instanceof TruffleVariable && ((TruffleVariable) 
ch).getName().equals(aoName)) {
+                    hasAO = true;
+                    break;
                 }
-                StringBuilder chstr = new StringBuilder("(" + children.length 
+ ")");
-                if (!hasAO) {
-                    for (Object ch : children) {
-                        chstr.append(ch.getClass().getName());
-                        chstr.append('{');
-                        if (ch instanceof TruffleVariable) {
-                            chstr.append(((TruffleVariable) ch).getName());
-                            chstr.append(": ");
-                            chstr.append(((TruffleVariable) ch).getValue());
-                        }
-                        chstr.append('}');
+            }
+            StringBuilder chstr = new StringBuilder("(" + children.length + 
")");
+            if (!hasAO) {
+                for (Object ch : children) {
+                    chstr.append(ch.getClass().getName());
+                    chstr.append('{');
+                    if (ch instanceof TruffleVariable) {
+                        chstr.append(((TruffleVariable) ch).getName());
+                        chstr.append(": ");
+                        chstr.append(((TruffleVariable) ch).getValue());
                     }
+                    chstr.append('}');
                 }
-                assertTrue("AO child was not found, children = " + chstr, 
hasAO);
-                support.doContinue();
-            });
+            }
+            assertTrue("AO child was not found, children = " + chstr, hasAO);
+            support.doContinue();
         });
     }
 }
diff --git 
a/java/debugger.jpda.truffle/test/unit/src/org/netbeans/modules/debugger/jpda/truffle/DebugPythonTest.java
 
b/java/debugger.jpda.truffle/test/unit/src/org/netbeans/modules/debugger/jpda/truffle/DebugPythonTest.java
index 7f1b1a0b77..c67cffd477 100644
--- 
a/java/debugger.jpda.truffle/test/unit/src/org/netbeans/modules/debugger/jpda/truffle/DebugPythonTest.java
+++ 
b/java/debugger.jpda.truffle/test/unit/src/org/netbeans/modules/debugger/jpda/truffle/DebugPythonTest.java
@@ -21,7 +21,6 @@ package org.netbeans.modules.debugger.jpda.truffle;
 import java.io.File;
 import java.net.URL;
 import junit.framework.Test;
-import static junit.framework.TestCase.assertEquals;
 
 import org.netbeans.api.debugger.DebuggerManager;
 import org.netbeans.api.debugger.jpda.JPDADebugger;
@@ -50,7 +49,7 @@ public class DebugPythonTest extends JPDATestCase {
         String methodName = "typesTest";
         JSLineBreakpoint lb1 = new TruffleLineBreakpoint(url, debugLine);
         dm.addBreakpoint(lb1);
-        runScriptUnderJPDA("graalpython", source.getAbsolutePath(), support -> 
{
+        runScriptUnderJPDA("python", source.getAbsolutePath(), support -> {
             JPDADebugger debugger = support.getDebugger();
             TruffleStackFrame frame = 
checkStoppedAtScript(debugger.getCurrentThread(), sourcePath, debugLine);
             assertEquals("Bad method name", methodName, frame.getMethodName());
diff --git 
a/java/debugger.jpda.truffle/test/unit/src/org/netbeans/modules/debugger/jpda/truffle/DebugRTest.java
 
b/java/debugger.jpda.truffle/test/unit/src/org/netbeans/modules/debugger/jpda/truffle/DebugRTest.java
index c209c55cb3..89bb8f75e9 100644
--- 
a/java/debugger.jpda.truffle/test/unit/src/org/netbeans/modules/debugger/jpda/truffle/DebugRTest.java
+++ 
b/java/debugger.jpda.truffle/test/unit/src/org/netbeans/modules/debugger/jpda/truffle/DebugRTest.java
@@ -21,7 +21,6 @@ package org.netbeans.modules.debugger.jpda.truffle;
 import java.io.File;
 import java.net.URL;
 import junit.framework.Test;
-import static junit.framework.TestCase.assertEquals;
 
 import org.netbeans.api.debugger.DebuggerManager;
 import org.netbeans.api.debugger.jpda.JPDADebugger;
diff --git 
a/java/debugger.jpda.truffle/test/unit/src/org/netbeans/modules/debugger/jpda/truffle/DebugRubyTest.java
 
b/java/debugger.jpda.truffle/test/unit/src/org/netbeans/modules/debugger/jpda/truffle/DebugRubyTest.java
index 1f253c6a66..0897675c23 100644
--- 
a/java/debugger.jpda.truffle/test/unit/src/org/netbeans/modules/debugger/jpda/truffle/DebugRubyTest.java
+++ 
b/java/debugger.jpda.truffle/test/unit/src/org/netbeans/modules/debugger/jpda/truffle/DebugRubyTest.java
@@ -21,7 +21,6 @@ package org.netbeans.modules.debugger.jpda.truffle;
 import java.io.File;
 import java.net.URL;
 import junit.framework.Test;
-import static junit.framework.TestCase.assertEquals;
 
 import org.netbeans.api.debugger.DebuggerManager;
 import org.netbeans.api.debugger.jpda.JPDADebugger;
diff --git 
a/java/debugger.jpda.truffle/test/unit/src/org/netbeans/modules/debugger/jpda/truffle/JPDATestCase.java
 
b/java/debugger.jpda.truffle/test/unit/src/org/netbeans/modules/debugger/jpda/truffle/JPDATestCase.java
index b22939ab99..587c16d285 100644
--- 
a/java/debugger.jpda.truffle/test/unit/src/org/netbeans/modules/debugger/jpda/truffle/JPDATestCase.java
+++ 
b/java/debugger.jpda.truffle/test/unit/src/org/netbeans/modules/debugger/jpda/truffle/JPDATestCase.java
@@ -22,8 +22,6 @@ import java.io.File;
 import java.util.logging.Level;
 import junit.framework.Test;
 import junit.framework.TestCase;
-import static junit.framework.TestCase.assertEquals;
-import static junit.framework.TestCase.assertNotNull;
 import org.netbeans.api.debugger.jpda.JPDADebugger;
 import org.netbeans.api.debugger.jpda.JPDASupport;
 import org.netbeans.api.debugger.jpda.JPDAThread;
@@ -79,6 +77,7 @@ public abstract class JPDATestCase extends NbTestCase {
     }
 
     protected final void runScriptUnderJPDA(String launcher, String 
scriptPath, ThrowableConsumer<JPDASupport> supportConsumer) throws Exception {
+        assertTrue("'"+launcher+"' launcher not available", 
JPDASupport.isLauncherAvailable(launcher));
         // Translate script path from source dir to target dir:
         scriptPath = getBinariesPath(scriptPath);
         JPDASupport support = JPDASupport.attachScript(launcher, scriptPath);
@@ -109,6 +108,7 @@ public abstract class JPDATestCase extends NbTestCase {
     }
 
     protected TruffleStackFrame checkStoppedAtScript(JPDAThread thread, String 
sourcePath, int line) {
+        assertNotNull("JPDAThread was null while testing (JVM crash?): 
"+sourcePath, thread);
         CurrentPCInfo currentPCInfo = TruffleAccess.getCurrentPCInfo(thread);
         assertNotNull("Missing CurrentPCInfo, suspended at " + 
thread.getClassName() + "." + thread.getMethodName(), currentPCInfo);
         TruffleStackFrame topFrame = currentPCInfo.getTopFrame();
diff --git 
a/java/debugger.jpda.truffle/test/unit/src/org/netbeans/modules/debugger/jpda/truffle/PolyglotTest.java
 
b/java/debugger.jpda.truffle/test/unit/src/org/netbeans/modules/debugger/jpda/truffle/PolyglotTest.java
index 36e90b8125..ca4239e321 100644
--- 
a/java/debugger.jpda.truffle/test/unit/src/org/netbeans/modules/debugger/jpda/truffle/PolyglotTest.java
+++ 
b/java/debugger.jpda.truffle/test/unit/src/org/netbeans/modules/debugger/jpda/truffle/PolyglotTest.java
@@ -59,8 +59,11 @@ public class PolyglotTest extends JPDATestCase {
         }
         return new File(classesDir, relPath).getAbsolutePath();
     }
+    
+    public void testDisabled() {}
 
-    public void testWeatherApp() throws Exception {
+    // see spot marked with XXX
+    public void disabled_testWeatherApp() throws Exception {
         DebuggerManager dm = DebuggerManager.getDebuggerManager();
         String sourcePathJS = 
getScriptSourceFile("Weather.js").getAbsolutePath();
         String sourcePathPython = 
getScriptSourceFile("Weather.py").getAbsolutePath();
@@ -91,7 +94,7 @@ public class PolyglotTest extends JPDATestCase {
             assertEquals("JavaScript", tframe.getLanguage().getName());
             support.stepInto();
             checkStoppedAtScript(debugger.getCurrentThread(), sourcePathJS, 
23);
-            support.stepOver(); // loading Ruby
+            support.stepOver(); // loading Ruby // XXX locks core to 100% in 
app JVM till test timeout, GraalVM 11 v22.3.1
             support.stepOver();
             tframe = checkStoppedAtScript(debugger.getCurrentThread(), 
sourcePathJS, 26);
             TruffleVariable rubyWeather = findVariable(tframe.getScopes()[0], 
"Weather");
diff --git 
a/java/debugger.jpda.truffle/truffle-backend/org/netbeans/modules/debugger/jpda/backend/truffle/JPDATruffleAccessor.java
 
b/java/debugger.jpda.truffle/truffle-backend/org/netbeans/modules/debugger/jpda/backend/truffle/JPDATruffleAccessor.java
index 5a7d973e52..16a8dae814 100644
--- 
a/java/debugger.jpda.truffle/truffle-backend/org/netbeans/modules/debugger/jpda/backend/truffle/JPDATruffleAccessor.java
+++ 
b/java/debugger.jpda.truffle/truffle-backend/org/netbeans/modules/debugger/jpda/backend/truffle/JPDATruffleAccessor.java
@@ -317,12 +317,12 @@ public class JPDATruffleAccessor extends Object {
         str.append(position.sourceSection);
         return str.toString();
     }
-
+/*
     static Object[] getTruffleAST(int depth) {
         TruffleAST ast = TruffleAST.get(depth);
         return new Object[] { ast.getNodes(), ast.getRawArguments(), 
ast.getRawSlots() };
     }
-
+*/
     // Unwind the current thread to given depth
     static boolean setUnwind(int depth) {
         SuspendedEvent evt = getCurrentSuspendedEvent();
diff --git 
a/java/debugger.jpda.truffle/truffle-backend/org/netbeans/modules/debugger/jpda/backend/truffle/TruffleAST.java
 
b/java/debugger.jpda.truffle/truffle-backend/org/netbeans/modules/debugger/jpda/backend/truffle/TruffleAST.java
index 64131f93c2..64a871703b 100644
--- 
a/java/debugger.jpda.truffle/truffle-backend/org/netbeans/modules/debugger/jpda/backend/truffle/TruffleAST.java
+++ 
b/java/debugger.jpda.truffle/truffle-backend/org/netbeans/modules/debugger/jpda/backend/truffle/TruffleAST.java
@@ -22,10 +22,8 @@ package org.netbeans.modules.debugger.jpda.backend.truffle;
 import com.oracle.truffle.api.CallTarget;
 import com.oracle.truffle.api.RootCallTarget;
 import com.oracle.truffle.api.Truffle;
-import com.oracle.truffle.api.frame.Frame;
 import com.oracle.truffle.api.frame.FrameInstance;
 import com.oracle.truffle.api.frame.FrameInstanceVisitor;
-import com.oracle.truffle.api.frame.FrameSlot;
 import com.oracle.truffle.api.instrumentation.InstrumentableNode;
 import com.oracle.truffle.api.instrumentation.StandardTags;
 import com.oracle.truffle.api.instrumentation.Tag;
@@ -73,7 +71,7 @@ public class TruffleAST {
     public Object[] getRawArguments() {
         return 
frameInstance.getFrame(FrameInstance.FrameAccess.MATERIALIZE).getArguments();
     }
-
+/* TODO: deprecations removed since 22.0
     public Object[] getRawSlots() {
         Frame frame = 
frameInstance.getFrame(FrameInstance.FrameAccess.MATERIALIZE);
         List<? extends FrameSlot> slots = 
frame.getFrameDescriptor().getSlots();
@@ -86,7 +84,7 @@ public class TruffleAST {
         }
         return slotInfo;
     }
-
+*/
     /**
      * Get the nodes hierarchy. Every node is described by:
      * <ul>
diff --git 
a/java/debugger.jpda/test/unit/src/org/netbeans/api/debugger/jpda/JPDASupport.java
 
b/java/debugger.jpda/test/unit/src/org/netbeans/api/debugger/jpda/JPDASupport.java
index 9e16781899..28c45f5940 100644
--- 
a/java/debugger.jpda/test/unit/src/org/netbeans/api/debugger/jpda/JPDASupport.java
+++ 
b/java/debugger.jpda/test/unit/src/org/netbeans/api/debugger/jpda/JPDASupport.java
@@ -34,6 +34,8 @@ import java.lang.reflect.Method;
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.net.URLClassLoader;
+import java.nio.file.Files;
+import java.nio.file.Paths;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashMap;
@@ -64,14 +66,13 @@ import 
org.netbeans.spi.java.classpath.support.ClassPathSupport;
  */
 public final class JPDASupport implements DebuggerManagerListener {
 
-    private static final boolean    verbose = false;
-    private static DebuggerManager  dm = DebuggerManager.getDebuggerManager ();
+    private static final DebuggerManager dm = 
DebuggerManager.getDebuggerManager ();
 
     private JPDADebugger            jpdaDebugger;
     private DebuggerEngine          debuggerEngine;
     private final ProcessIO         processIO;
     
-    private Object                  STATE_LOCK = new Object ();
+    private final Object            STATE_LOCK = new Object ();
     
     private JPDASupport (JPDADebugger jpdaDebugger, ProcessIO pio) {
         this.jpdaDebugger = jpdaDebugger;
@@ -210,8 +211,7 @@ public final class JPDASupport implements 
DebuggerManagerListener {
 
     public static JPDASupport attachScript(String launcher, String path) 
throws IOException, DebuggerStartException {
         String [] cmdArray = new String [] {
-            System.getProperty ("java.home") + File.separatorChar +
-                "bin" + File.separatorChar + launcher,
+            launcherPath(launcher),
             "--jvm",
             "--vm.agentlib:jdwp=transport=dt_socket,suspend=y,server=y",
             path
@@ -245,6 +245,13 @@ public final class JPDASupport implements 
DebuggerManagerListener {
         return new JPDASupport(jpdaDebugger, pio);
     }
 
+    private static String launcherPath(String launcher) {
+        return System.getProperty("java.home") + File.separatorChar + "bin" + 
File.separatorChar + launcher;
+    }
+
+    public static boolean isLauncherAvailable(String launcher) {
+        return Files.exists(Paths.get(launcherPath(launcher)));
+    }
 
     // public interface 
........................................................
     
@@ -405,8 +412,7 @@ public final class JPDASupport implements 
DebuggerManagerListener {
 
         List<String> cmdArgs = new ArrayList<>();
 
-        cmdArgs.add(System.getProperty ("java.home") + File.separatorChar +
-                "bin" + File.separatorChar + "java");
+        cmdArgs.add(launcherPath("java"));
         cmdArgs.add("-agentlib:jdwp=transport=" + "dt_socket" + ",address=" +
                 connectorAddress + ",suspend=y,server=" + 
                 (server ? "y" : "n"));
diff --git a/nb/welcome/src/org/netbeans/modules/welcome/FeedbackSurvey.java 
b/nb/welcome/src/org/netbeans/modules/welcome/FeedbackSurvey.java
index a958d761e9..db228cc96d 100644
--- a/nb/welcome/src/org/netbeans/modules/welcome/FeedbackSurvey.java
+++ b/nb/welcome/src/org/netbeans/modules/welcome/FeedbackSurvey.java
@@ -27,10 +27,8 @@ import java.util.logging.Level;
 import java.util.logging.Logger;
 import java.util.prefs.Preferences;
 import javax.management.AttributeNotFoundException;
-import javax.management.InstanceNotFoundException;
-import javax.management.MBeanException;
+import javax.management.JMException;
 import javax.management.MBeanServer;
-import javax.management.ReflectionException;
 import javax.swing.JButton;
 import org.openide.DialogDisplayer;
 import org.openide.NotifyDescriptor;
@@ -60,20 +58,10 @@ final class FeedbackSurvey {
             // w/o dependency on Sun's JDK
             // long mem = 
((com.sun.management.OperatingSystemMXBean)osBean).getTotalPhysicalMemorySize();
             mem = (Long)mserver.getAttribute(osBean.getObjectName(), 
"TotalPhysicalMemorySize");   // NOI18N
-        } catch (IllegalArgumentException ex) {
-            Exceptions.printStackTrace(ex);
-        } catch (SecurityException ex) {
-            Exceptions.printStackTrace(ex);
-        } catch (NoSuchMethodError ex) {
-            Exceptions.printStackTrace(ex);
-        } catch (MBeanException ex) {
-            Exceptions.printStackTrace(ex);
         } catch (AttributeNotFoundException ex) {
             // Can be thrown on non-Sun JDKs:
-            Logger.getLogger(FeedbackSurvey.class.getName()).log(Level.INFO, 
null, ex);
-        } catch (InstanceNotFoundException ex) {
-            Exceptions.printStackTrace(ex);
-        } catch (ReflectionException ex) {
+            Logger.getLogger(FeedbackSurvey.class.getName()).log(Level.INFO, 
ex.getMessage());
+        } catch (IllegalArgumentException | SecurityException | 
NoSuchMethodError | JMException ex) {
             Exceptions.printStackTrace(ex);
         }
         String url = NbBundle.getMessage(FeedbackSurvey.class, 
"MSG_FeedbackSurvey_URL", id, mem);


---------------------------------------------------------------------
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


Reply via email to