diff --git a/.gitignore b/.gitignore
index 097bf6c..5d1009f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1 @@
-SOURCES/e67446b5fc9d.tar.gz
+SOURCES/8ab40bfb565c1002e84bb238a620ab81bb64eceb.tar.gz
diff --git a/.jmc.metadata b/.jmc.metadata
index 6908e7e..6f8a31c 100644
--- a/.jmc.metadata
+++ b/.jmc.metadata
@@ -1 +1 @@
-676ac85e3a33296288129c09e1b898a9d460d36f SOURCES/e67446b5fc9d.tar.gz
+84a94e40c47c9b5ab5975bb4c97ad6f69ae0c68f SOURCES/8ab40bfb565c1002e84bb238a620ab81bb64eceb.tar.gz
diff --git a/SOURCES/0-remove-twitter.patch b/SOURCES/0-remove-twitter.patch
index f7c6839..fdefa07 100644
--- a/SOURCES/0-remove-twitter.patch
+++ b/SOURCES/0-remove-twitter.patch
@@ -1,7 +1,8 @@
diff --git a/application/org.openjdk.jmc.rjmx/META-INF/MANIFEST.MF b/application/org.openjdk.jmc.rjmx/META-INF/MANIFEST.MF
+index 775f1d8..979a323 100644
--- a/application/org.openjdk.jmc.rjmx/META-INF/MANIFEST.MF
+++ b/application/org.openjdk.jmc.rjmx/META-INF/MANIFEST.MF
-@@ -54,7 +54,6 @@
+@@ -57,7 +57,6 @@ Export-Package: org.openjdk.jmc.rjmx,
org.openjdk.jmc.rjmx.triggers;
x-friends:="org.openjdk.jmc.console.ui.notification,
org.openjdk.jmc.alert,
@@ -10,9 +11,10 @@ diff --git a/application/org.openjdk.jmc.rjmx/META-INF/MANIFEST.MF b/application
org.openjdk.jmc.rjmx.triggers.actions.internal;x-friends:="org.openjdk.jmc.console.ui.notification",
org.openjdk.jmc.rjmx.triggers.condition.internal;x-friends:="org.openjdk.jmc.console.ui.notification,org.openjdk.jmc.test.jemmy",
diff --git a/application/pom.xml b/application/pom.xml
+index 9f8783a..7aa8842 100644
--- a/application/pom.xml
+++ b/application/pom.xml
-@@ -50,7 +50,6 @@
+@@ -59,7 +59,6 @@
org.openjdk.jmc.console.jconsole
org.openjdk.jmc.console.pde
org.openjdk.jmc.console.persistence
@@ -20,7 +22,7 @@ diff --git a/application/pom.xml b/application/pom.xml
org.openjdk.jmc.console.ui
org.openjdk.jmc.console.ui.diagnostic
org.openjdk.jmc.console.ui.mbeanbrowser
-@@ -72,7 +71,6 @@
+@@ -81,7 +80,6 @@
org.openjdk.jmc.feature.pde
org.openjdk.jmc.feature.rcp
org.openjdk.jmc.feature.rcp.update
@@ -29,17 +31,18 @@ diff --git a/application/pom.xml b/application/pom.xml
org.openjdk.jmc.flightrecorder.controlpanel.ui
org.openjdk.jmc.flightrecorder.controlpanel.ui.configuration
diff --git a/license/THIRDPARTYREADME.txt b/license/THIRDPARTYREADME.txt
+index 596a8db..ba7bf83 100644
--- a/license/THIRDPARTYREADME.txt
+++ b/license/THIRDPARTYREADME.txt
-@@ -296,191 +296,6 @@
- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+@@ -297,187 +297,6 @@ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
OF THE POSSIBILITY OF SUCH DAMAGE.
--
--%% The following notice is provided with respect to Twitter4J 4.0.7,
+
+-%% The following notice is provided with respect to Twitter4J v4.0.7,
-which may be included with this product.
-
--
+- Copyright 2007 Yusuke Yamamoto
+-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
@@ -215,11 +218,7 @@ diff --git a/license/THIRDPARTYREADME.txt b/license/THIRDPARTYREADME.txt
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
--Twitter4J SUBCOMPONENTS:
-
--Twitter4J includes software from JSON.org to parse JSON response from the Twitter API. You can see the license term at http://www.JSON.org/license.html
--
--
- %% The following notice is provided with respect to JavaBeans Activation
- Framework (JAF) 1.2.1, which may be included with this product.
+ %% The following notice is provided with respect to D3 v6.1.3, which may
+ be included with this product.
diff --git a/SOURCES/3-remove-profiles.patch b/SOURCES/1-remove-profiles.patch
similarity index 52%
rename from SOURCES/3-remove-profiles.patch
rename to SOURCES/1-remove-profiles.patch
index 0a5622a..6e51aef 100644
--- a/SOURCES/3-remove-profiles.patch
+++ b/SOURCES/1-remove-profiles.patch
@@ -1,13 +1,35 @@
-diff -r c34e9deef71f pom.xml
---- a/pom.xml Fri Apr 17 15:53:00 2020 -0400
-+++ b/pom.xml Fri Apr 17 16:01:41 2020 -0400
-@@ -105,137 +105,6 @@
+diff --git a/pom.xml b/pom.xml
+index 587d175..1c7c1f1 100644
+--- a/pom.xml
++++ b/pom.xml
+@@ -109,95 +109,6 @@
${snapshot.repo}
-
-
-- 2019-09
+- 2020-12
+-
+-
+-
+- org.eclipse.tycho
+- target-platform-configuration
+- ${tycho.version}
+-
+-
+-
+- org.openjdk.jmc
+- platform-definition-2020-12
+- 8.0.0-SNAPSHOT
+-
+-
+-
+-
+-
+-
+-
+-
+- 2020-09
-
- true
-
@@ -21,8 +43,8 @@ diff -r c34e9deef71f pom.xml
-
-
- org.openjdk.jmc
-- platform-definition-2019-09
-- 7.1.1-SNAPSHOT
+- platform-definition-2020-09
+- 8.0.0-SNAPSHOT
-
-
-
@@ -31,7 +53,7 @@ diff -r c34e9deef71f pom.xml
-
-
-
-- 2019-06
+- 2020-06
-
-
-
@@ -42,8 +64,8 @@ diff -r c34e9deef71f pom.xml
-
-
- org.openjdk.jmc
-- platform-definition-2019-06
-- 7.1.1-SNAPSHOT
+- platform-definition-2020-06
+- 8.0.0-SNAPSHOT
-
-
-
@@ -52,7 +74,7 @@ diff -r c34e9deef71f pom.xml
-
-
-
-- 2019-03
+- 2020-03
-
-
-
@@ -63,71 +85,8 @@ diff -r c34e9deef71f pom.xml
-
-
- org.openjdk.jmc
-- platform-definition-2019-03
-- 7.1.1-SNAPSHOT
--
--
--
--
--
--
--
--
-- 2018-12
--
--
--
-- org.eclipse.tycho
-- target-platform-configuration
-- ${tycho.version}
--
--
--
-- org.openjdk.jmc
-- platform-definition-2018-12
-- 7.1.1-SNAPSHOT
--
--
--
--
--
--
--
--
-- 2018-09
--
--
--
-- org.eclipse.tycho
-- target-platform-configuration
-- ${tycho.version}
--
--
--
-- org.openjdk.jmc
-- platform-definition-2018-09
-- 7.1.1-SNAPSHOT
--
--
--
--
--
--
--
--
-- photon
--
--
--
-- org.eclipse.tycho
-- target-platform-configuration
-- ${tycho.version}
--
--
--
-- org.openjdk.jmc
-- platform-definition-photon
-- 7.1.1-SNAPSHOT
+- platform-definition-2020-03
+- 8.0.0-SNAPSHOT
-
-
-
diff --git a/SOURCES/10-revert-flameview.patch b/SOURCES/10-revert-flameview.patch
deleted file mode 100644
index a2d9c77..0000000
--- a/SOURCES/10-revert-flameview.patch
+++ /dev/null
@@ -1,358 +0,0 @@
-# HG changeset patch
-# Parent 37a493c3f60b2015c37630807015b217b98106cf
-
-diff -r 37a493c3f60b -r bbf0648beb5c application/org.openjdk.jmc.flightrecorder.flameview/.classpath
---- a/application/org.openjdk.jmc.flightrecorder.flameview/.classpath Tue Nov 12 16:25:24 2019 +0100
-+++ b/application/org.openjdk.jmc.flightrecorder.flameview/.classpath Mon Nov 25 17:57:23 2019 -0500
-@@ -1,7 +1,6 @@
-
-
-
--
-
-
-
-diff -r 37a493c3f60b -r bbf0648beb5c application/org.openjdk.jmc.flightrecorder.flameview/build.properties
---- a/application/org.openjdk.jmc.flightrecorder.flameview/build.properties Tue Nov 12 16:25:24 2019 +0100
-+++ b/application/org.openjdk.jmc.flightrecorder.flameview/build.properties Mon Nov 25 17:57:23 2019 -0500
-@@ -1,5 +1,4 @@
--source.. = src/main/java/,\
-- src/main/resources/
-+source.. = src/main/java/
- output.. = target/classes/
- bin.includes = META-INF/,\
- .,\
-diff -r 37a493c3f60b -r bbf0648beb5c application/org.openjdk.jmc.flightrecorder.flameview/pom.xml
---- a/application/org.openjdk.jmc.flightrecorder.flameview/pom.xml Tue Nov 12 16:25:24 2019 +0100
-+++ b/application/org.openjdk.jmc.flightrecorder.flameview/pom.xml Mon Nov 25 17:57:23 2019 -0500
-@@ -41,94 +41,4 @@
-
- org.openjdk.jmc.flightrecorder.flameview
- eclipse-plugin
--
--
-- 1.4.2
-- process-resources
-- ${project.basedir}/src/main/resources/jslibs
--
--
--
--
--
-- com.googlecode.maven-download-plugin
-- download-maven-plugin
-- ${download.maven.plugin.version}
--
--
-- d3-flamegraph-css
-- ${download-maven-plugin.phase}
--
-- wget
--
--
-- https://cdn.jsdelivr.net/gh/spiermar/d3-flame-graph@2.0.3/dist/d3-flamegraph.css
-- false
-- ${download-maven-plugin.output}
--
--
--
-- ie-html5shiv-js
-- ${download-maven-plugin.phase}
--
-- wget
--
--
-- https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js
-- false
-- ${download-maven-plugin.output}
--
--
--
-- ie-respond-js
-- ${download-maven-plugin.phase}
--
-- wget
--
--
-- https://oss.maxcdn.com/respond/1.4.2/respond.min.js
-- false
-- ${download-maven-plugin.output}
--
--
--
-- d3-v4-js
-- ${download-maven-plugin.phase}
--
-- wget
--
--
-- https://d3js.org/d3.v4.min.js
-- false
-- ${download-maven-plugin.output}
--
--
--
-- d3-tip-js
-- ${download-maven-plugin.phase}
--
-- wget
--
--
-- https://cdnjs.cloudflare.com/ajax/libs/d3-tip/0.9.1/d3-tip.min.js
-- false
-- ${download-maven-plugin.output}
--
--
--
-- d3-flamegraph-js
-- ${download-maven-plugin.phase}
--
-- wget
--
--
-- https://cdn.jsdelivr.net/gh/spiermar/d3-flame-graph@2.0.3/dist/d3-flamegraph.min.js
-- false
-- ${download-maven-plugin.output}
--
--
--
--
--
--
-
-diff -r 37a493c3f60b -r bbf0648beb5c application/org.openjdk.jmc.flightrecorder.flameview/src/main/java/org/openjdk/jmc/flightrecorder/flameview/views/FlameGraphView.java
---- a/application/org.openjdk.jmc.flightrecorder.flameview/src/main/java/org/openjdk/jmc/flightrecorder/flameview/views/FlameGraphView.java Tue Nov 12 16:25:24 2019 +0100
-+++ b/application/org.openjdk.jmc.flightrecorder.flameview/src/main/java/org/openjdk/jmc/flightrecorder/flameview/views/FlameGraphView.java Mon Nov 25 17:57:23 2019 -0500
-@@ -34,14 +34,11 @@
- package org.openjdk.jmc.flightrecorder.flameview.views;
-
- import java.io.IOException;
--
--import java.text.MessageFormat;
- import java.util.concurrent.CancellationException;
- import java.util.concurrent.CompletableFuture;
- import java.util.concurrent.ExecutorService;
- import java.util.concurrent.Executors;
- import java.util.logging.Level;
--import java.util.stream.Collectors;
- import java.util.stream.Stream;
-
- import org.eclipse.jface.action.Action;
-@@ -77,32 +74,7 @@
- import org.openjdk.jmc.ui.misc.DisplayToolkit;
-
- public class FlameGraphView extends ViewPart implements ISelectionListener {
-- private static final String HTML_PAGE;
-- static {
-- // from: https://cdn.jsdelivr.net/gh/spiermar/d3-flame-graph@2.0.3/dist/d3-flamegraph.css
-- String cssD3Flamegraph = "jslibs/d3-flamegraph.css";
-- // from: https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js
-- String jsHtml5shiv = "jslibs/html5shiv.min.js";
-- // from: https://oss.maxcdn.com/respond/1.4.2/respond.min.js
-- String jsRespond = "jslibs/respond.min.js";
-- // from: https://d3js.org/d3.v4.min.js
-- String jsD3V4 = "jslibs/d3.v4.min.js";
-- // from: https://cdnjs.cloudflare.com/ajax/libs/d3-tip/0.9.1/d3-tip.min.js
-- String jsD3Tip = "jslibs/d3-tip.min.js";
-- // from: https://cdn.jsdelivr.net/gh/spiermar/d3-flame-graph@2.0.3/dist/d3-flamegraph.min.js
-- String jsD3FlameGraph = "jslibs/d3-flamegraph.min.js";
--
-- String jsIeLibraries = loadLibraries(jsHtml5shiv, jsRespond);
-- String jsD3Libraries = loadLibraries(jsD3V4, jsD3Tip, jsD3FlameGraph);
--
-- // formatter arguments for the template: %1 - CSSs, %2 - IE9 specific scripts, %3 - 3rd party scripts
-- HTML_PAGE = String.format(fileContent("page.template"),
-- fileContent(cssD3Flamegraph),
-- jsIeLibraries,
-- jsD3Libraries);
-- }
--
-- private static final ExecutorService MODEL_EXECUTOR = Executors.newFixedThreadPool(1);
-+ private static ExecutorService MODEL_EXECUTOR = Executors.newFixedThreadPool(1);
- private FrameSeparator frameSeparator;
-
- private Browser browser;
-@@ -207,6 +179,13 @@
- }, MODEL_EXECUTOR);
- }
-
-+ private static Void handleModelBuildException(Throwable ex) {
-+ if (!(ex.getCause() instanceof CancellationException)) {
-+ FlightRecorderUI.getDefault().getLogger().log(Level.SEVERE, "Failed to build stacktrace view model", ex); //$NON-NLS-1$
-+ }
-+ return null;
-+ }
-+
- private void setModel(TraceNode root) {
- if (!browser.isDisposed() && !root.equals(currentRoot)) {
- currentRoot = root;
-@@ -215,21 +194,19 @@
- }
-
- private void setViewerInput(TraceNode root) {
-- browser.setText(HTML_PAGE);
-- browser.addProgressListener(new ProgressAdapter() {
-- @Override
-- public void completed(ProgressEvent event) {
-- browser.removeProgressListener(this);
-- browser.execute(String.format("processGraph(%s);", toJSon(root)));
-- }
-- });
-- }
--
-- private static Void handleModelBuildException(Throwable ex) {
-- if (!(ex.getCause() instanceof CancellationException)) {
-- FlightRecorderUI.getDefault().getLogger().log(Level.SEVERE, "Failed to build stacktrace view model", ex); //$NON-NLS-1$
-+ try {
-+ browser.setText(StringToolkit.readString(FlameGraphView.class.getResourceAsStream("page.html")));
-+ browser.addProgressListener(new ProgressAdapter() {
-+ @Override
-+ public void completed(ProgressEvent event) {
-+ browser.removeProgressListener(this);
-+ browser.execute(String.format("processGraph(%s);", toJSon(root)));
-+ }
-+ });
-+ } catch (IOException e) {
-+ browser.setText(e.getMessage());
-+ e.printStackTrace();
- }
-- return null;
- }
-
- private static String toJSon(TraceNode root) {
-@@ -261,23 +238,4 @@
- private static String toJSonKeyValue(String key, String value) {
- return "\"" + key + "\": " + "\"" + value + "\"";
- }
--
-- private static String loadLibraries(String... libs) {
-- if(libs == null || libs.length == 0) {
-- return "";
-- } else {
-- return Stream.of(libs).map(FlameGraphView::fileContent).collect(Collectors.joining("\n"));
-- }
-- }
--
-- private static String fileContent(String fileName){
-- try {
-- return StringToolkit.readString(FlameGraphView.class.getClassLoader().getResourceAsStream(fileName));
-- } catch (IOException e) {
-- FlightRecorderUI.getDefault().getLogger()
-- .log(Level.WARNING, MessageFormat
-- .format("Could not load script \"{0}\",\"{1}\"", fileName, e.getMessage())); //$NON-NLS-1$
-- return "";
-- }
-- }
- }
-diff -r 37a493c3f60b -r bbf0648beb5c application/org.openjdk.jmc.flightrecorder.flameview/src/main/java/org/openjdk/jmc/flightrecorder/flameview/views/page.html
---- /dev/null Thu Jan 01 00:00:00 1970 +0000
-+++ b/application/org.openjdk.jmc.flightrecorder.flameview/src/main/java/org/openjdk/jmc/flightrecorder/flameview/views/page.html Mon Nov 25 17:57:23 2019 -0500
-@@ -0,0 +1,54 @@
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-+
-diff -r 37a493c3f60b -r bbf0648beb5c application/org.openjdk.jmc.flightrecorder.flameview/src/main/resources/page.template
---- a/application/org.openjdk.jmc.flightrecorder.flameview/src/main/resources/page.template Tue Nov 12 16:25:24 2019 +0100
-+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
-@@ -1,49 +0,0 @@
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
--
-\ No newline at end of file
diff --git a/SOURCES/10-revert-lz4-java-name-override.patch b/SOURCES/10-revert-lz4-java-name-override.patch
new file mode 100644
index 0000000..4265ed3
--- /dev/null
+++ b/SOURCES/10-revert-lz4-java-name-override.patch
@@ -0,0 +1,42 @@
+diff --git a/application/org.openjdk.jmc.feature.core/feature.xml b/application/org.openjdk.jmc.feature.core/feature.xml
+index f42eed3..b53c5e5 100644
+--- a/application/org.openjdk.jmc.feature.core/feature.xml
++++ b/application/org.openjdk.jmc.feature.core/feature.xml
+@@ -95,7 +95,7 @@
+ unpack="false"/>
+
+
+
+
+
+ org.lz4:lz4-java:${lz4.version}
+- true
+-
+- org.lz4.lz4-java
+- org.lz4.lz4-java
+-
+
+
+ org.hdrhistogram:HdrHistogram:${hdrhistogram.version}
diff --git a/SOURCES/11-6554.patch b/SOURCES/11-6554.patch
deleted file mode 100644
index 6707d30..0000000
--- a/SOURCES/11-6554.patch
+++ /dev/null
@@ -1,697 +0,0 @@
-diff --git a/application/org.openjdk.jmc.browser.attach/src/main/java/org/openjdk/jmc/browser/attach/LocalJVMToolkit.java b/application/org.openjdk.jmc.browser.attach/src/main/java/org/openjdk/jmc/browser/attach/LocalJVMToolkit.java
---- a/application/org.openjdk.jmc.browser.attach/src/main/java/org/openjdk/jmc/browser/attach/LocalJVMToolkit.java
-+++ b/application/org.openjdk.jmc.browser.attach/src/main/java/org/openjdk/jmc/browser/attach/LocalJVMToolkit.java
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved.
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
-@@ -199,6 +199,8 @@
- String address = null;
- String version = null;
- String jvmArgs = null;
-+ String jvmVendor = null;
-+
- try {
- // This used to leak one \BaseNamedObjects\hsperfdata_* Section handle on Windows
- MonitoredVm mvm = host.getMonitoredVm(new VmIdentifier(name));
-@@ -235,6 +237,12 @@
- if (sm != null) {
- isDebug = isDebug(sm.stringValue());
- }
-+
-+ sm = (StringMonitor) mvm.findByName("java.property.java.vm.vendor"); //$NON-NLS-1$
-+ if (sm != null) {
-+ jvmVendor = sm.stringValue();
-+ }
-+
- // NOTE: isAttachable seems to return true even if a real attach is not possible.
- // attachable = MonitoredVmUtil.isAttachable(mvm);
-
-@@ -260,7 +268,7 @@
- } catch (Exception x) {
- // ignore
- }
-- connDesc = createDescriptor(name, jvmArgs, vmid, connectable, type, jvmArch, address, version, isDebug);
-+ connDesc = createDescriptor(name, jvmArgs, jvmVendor, vmid, connectable, type, jvmArch, address, version, isDebug);
- return connDesc;
- }
- });
-@@ -359,6 +367,7 @@
- String javaArgs = null;
- String jvmArgs = null;
- String jvmVersion = null;
-+ String jvmVendor = null;
- VirtualMachine vm = null;
- try {
- // Attach creates one process handle on Windows.
-@@ -379,6 +388,7 @@
- jvmType = getJVMType(vmName);
- version = props.getProperty("java.version"); //$NON-NLS-1$
- jvmVersion = props.getProperty("java.vm.version"); //$NON-NLS-1$
-+ jvmVendor = props.getProperty("java.vm.vendor");
- isDebug = isDebug(jvmVersion);
- jvmArch = JVMArch.getJVMArch(props);
- }
-@@ -396,7 +406,7 @@
- }
- }
- if (connectable.isAttachable()) {
-- connDesc = createDescriptor(javaArgs, jvmArgs, Integer.parseInt(vmd.id()), connectable, jvmType, jvmArch,
-+ connDesc = createDescriptor(javaArgs, jvmArgs, jvmVendor, Integer.parseInt(vmd.id()), connectable, jvmType, jvmArch,
- address, version, isDebug);
- }
- BrowserAttachPlugin.getPluginLogger().info("Done resolving PID " + vmd); //$NON-NLS-1$
-@@ -461,9 +471,10 @@
- }
-
- private static DiscoveryEntry createDescriptor(
-- String javaCommand, String jvmArgs, int pid, Connectable connectable, JVMType type, JVMArch arch,
-- String address, String version, boolean isDebug) {
-- JVMDescriptor jvmInfo = new JVMDescriptor(version, type, arch, javaCommand, jvmArgs, pid, isDebug, connectable);
-+ String javaCommand, String jvmArgs, String jvmVendor, int pid, Connectable connectable, JVMType type,
-+ JVMArch arch, String address, String version, boolean isDebug) {
-+ JVMDescriptor jvmInfo = new JVMDescriptor(version, type, arch, javaCommand, jvmArgs, jvmVendor, pid, isDebug,
-+ connectable);
- LocalConnectionDescriptor lcd = new LocalConnectionDescriptor(pid, address, connectable == ATTACHABLE);
- String guid = "Local-[PID:" + pid + ", seq:" + (SEQ_NUMBER++) + "]"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- IServerDescriptor sd = IServerDescriptor.create(guid, null, jvmInfo);
-diff --git a/application/org.openjdk.jmc.browser.jdp/src/main/java/org/openjdk/jmc/browser/jdp/JDPDescriptorProvider.java b/application/org.openjdk.jmc.browser.jdp/src/main/java/org/openjdk/jmc/browser/jdp/JDPDescriptorProvider.java
---- a/application/org.openjdk.jmc.browser.jdp/src/main/java/org/openjdk/jmc/browser/jdp/JDPDescriptorProvider.java
-+++ b/application/org.openjdk.jmc.browser.jdp/src/main/java/org/openjdk/jmc/browser/jdp/JDPDescriptorProvider.java
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved.
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
-@@ -89,9 +89,9 @@
- String url = map.get(JMXDataKeys.KEY_JMX_SERVICE_URL);
- String commandLine = map.get(JMXDataKeys.KEY_JAVA_COMMAND);
- String pid = map.get(JMXDataKeys.KEY_PID);
-- // NOTE: We would like to have the JVM type and architecture included in the JDP payload. We should probably file an enhancement request on JDK for this.
-+ // NOTE: We would like to have the JVM type, architecture and vendor included in the JDP payload. We should probably file an enhancement request on JDK for this.
- JVMDescriptor jvmInfo = new JVMDescriptor(null, JVMType.UNKNOWN, JVMArch.UNKNOWN, commandLine, null,
-- pid == null ? null : Integer.parseInt(pid), false, Connectable.MGMNT_AGENT_STARTED);
-+ null, pid == null ? null : Integer.parseInt(pid), false, Connectable.MGMNT_AGENT_STARTED);
- String path = null;
- if (name == null) {
- } else if (name.endsWith(PATH_SEPARATOR)) {
-diff --git a/application/org.openjdk.jmc.rjmx.services.jfr/src/main/java/org/openjdk/jmc/rjmx/services/jfr/internal/FlightRecorderServiceV2.java b/application/org.openjdk.jmc.rjmx.services.jfr/src/main/java/org/openjdk/jmc/rjmx/services/jfr/internal/FlightRecorderServiceV2.java
---- a/application/org.openjdk.jmc.rjmx.services.jfr/src/main/java/org/openjdk/jmc/rjmx/services/jfr/internal/FlightRecorderServiceV2.java
-+++ b/application/org.openjdk.jmc.rjmx.services.jfr/src/main/java/org/openjdk/jmc/rjmx/services/jfr/internal/FlightRecorderServiceV2.java
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved.
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
-@@ -104,17 +104,14 @@
- }
-
- private boolean isDynamicFlightRecorderSupported(IConnectionHandle handle) {
-- return ConnectionToolkit.isHotSpot(handle)
-- && ConnectionToolkit.isJavaVersionAboveOrEqual(handle, JavaVersionSupport.DYNAMIC_JFR_SUPPORTED);
-- }
--
-- private boolean isFlightRecorderCommercial() {
-- return ConnectionToolkit.isHotSpot(connection)
-- && !ConnectionToolkit.isJavaVersionAboveOrEqual(connection, JavaVersionSupport.JFR_NOT_COMMERCIAL);
-+ // All OpenJDK versions of JFR support dynamic enablement of JFR, so if there are no commercial features in play
-+ // all is A-OK.
-+ return !cfs.hasCommercialFeatures() || (ConnectionToolkit.isHotSpot(handle)
-+ && ConnectionToolkit.isJavaVersionAboveOrEqual(handle, JavaVersionSupport.DYNAMIC_JFR_SUPPORTED));
- }
-
- private boolean isFlightRecorderDisabled(IConnectionHandle handle) {
-- if (cfs != null && isFlightRecorderCommercial()) {
-+ if (cfs != null && cfs.hasCommercialFeatures()) {
- return !cfs.isCommercialFeaturesEnabled() || JVMSupportToolkit.isFlightRecorderDisabled(handle, false);
- } else {
- return JVMSupportToolkit.isFlightRecorderDisabled(handle, false);
-@@ -127,6 +124,7 @@
-
- public FlightRecorderServiceV2(IConnectionHandle handle) throws ConnectionException, ServiceNotAvailableException {
- cfs = handle.getServiceOrThrow(ICommercialFeaturesService.class);
-+
- if (!isDynamicFlightRecorderSupported(handle) && isFlightRecorderDisabled(handle)) {
- throw new ServiceNotAvailableException(""); //$NON-NLS-1$
- }
-@@ -481,7 +479,7 @@
- @Override
- public boolean isEnabled() {
- if (!wasEnabled) {
-- boolean isEnabled = isFlightRecorderCommercial() ? cfs.isCommercialFeaturesEnabled()
-+ boolean isEnabled = cfs.hasCommercialFeatures() ? cfs.isCommercialFeaturesEnabled()
- : isAvailable(connection);
- if (isEnabled) {
- wasEnabled = true;
-diff --git a/application/org.openjdk.jmc.rjmx/src/main/java/org/openjdk/jmc/rjmx/ConnectionToolkit.java b/application/org.openjdk.jmc.rjmx/src/main/java/org/openjdk/jmc/rjmx/ConnectionToolkit.java
---- a/application/org.openjdk.jmc.rjmx/src/main/java/org/openjdk/jmc/rjmx/ConnectionToolkit.java
-+++ b/application/org.openjdk.jmc.rjmx/src/main/java/org/openjdk/jmc/rjmx/ConnectionToolkit.java
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved.
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
-@@ -56,6 +56,7 @@
- import org.openjdk.jmc.common.version.JavaVMVersionToolkit;
- import org.openjdk.jmc.common.version.JavaVersion;
- import org.openjdk.jmc.rjmx.internal.RJMXConnection;
-+import org.openjdk.jmc.ui.common.jvm.JVMDescriptor;
-
- /**
- * Toolkit providing utility methods to retrieve MBean proxy objects, invoke JMX operations and
-@@ -346,7 +347,6 @@
- * otherwise.
- */
- public static boolean isJRockit(IConnectionHandle connectionHandle) {
--
- String vmName = getVMName(connectionHandle);
- return JavaVMVersionToolkit.isJRockitJVMName(vmName);
- }
-@@ -366,6 +366,38 @@
- }
-
- /**
-+ * Returns {@code true} if the connection handle is associated with an Oracle built JVM,
-+ * {@code false} otherwise. If the information is already present in the {@link JVMDescriptor},
-+ * this method will not cause any JMXRMI calls. If the information is lacking, an attempt will
-+ * be made to look it up in the connected JVM. If the attempt fails, false will be returned.
-+ *
-+ * @return {@code true} if the connection handle describes an Oracle JVM, or {@code false}
-+ * otherwise or if it could not be determined.
-+ */
-+ public static boolean isOracle(IConnectionHandle handle) {
-+ JVMDescriptor descriptor = handle.getServerDescriptor().getJvmInfo();
-+ // This should normally not happen for discovered JVMs, but users can create custom connections
-+ String vendor = null;
-+ if (descriptor != null) {
-+ vendor = descriptor.getJvmVendor();
-+ } else {
-+ // We try checking if connected
-+ if (handle.isConnected()) {
-+ MBeanServerConnection connection = handle.getServiceOrNull(MBeanServerConnection.class);
-+ if (connection != null) {
-+ try {
-+ vendor = getRuntimeBean(connection).getVmVendor();
-+ } catch (IOException e) {
-+ // Worst case we classify JVM vendor wrong
-+ RJMXPlugin.getDefault().getLogger().log(Level.WARNING, "Could not check if Oracle JVM", e);
-+ }
-+ }
-+ }
-+ }
-+ return vendor != null && vendor.contains("Oracle");
-+ }
-+
-+ /**
- * This will return true if the java version is above or equal the supplied value. (For example
- * 1.7.0_40).
- *
-@@ -411,5 +443,4 @@
- }
- return null;
- }
--
- }
-diff --git a/application/org.openjdk.jmc.rjmx/src/main/java/org/openjdk/jmc/rjmx/JVMSupportToolkit.java b/application/org.openjdk.jmc.rjmx/src/main/java/org/openjdk/jmc/rjmx/JVMSupportToolkit.java
---- a/application/org.openjdk.jmc.rjmx/src/main/java/org/openjdk/jmc/rjmx/JVMSupportToolkit.java
-+++ b/application/org.openjdk.jmc.rjmx/src/main/java/org/openjdk/jmc/rjmx/JVMSupportToolkit.java
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved.
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
-@@ -137,7 +137,7 @@
- }
-
- /**
-- * Returns information about whether to server denoted by the handle supports Flight Recorder
-+ * Returns information about whether the server supports Flight Recorder.
- *
- * @param handle
- * the server to check
-diff --git a/application/org.openjdk.jmc.rjmx/src/main/java/org/openjdk/jmc/rjmx/services/ICommercialFeaturesService.java b/application/org.openjdk.jmc.rjmx/src/main/java/org/openjdk/jmc/rjmx/services/ICommercialFeaturesService.java
---- a/application/org.openjdk.jmc.rjmx/src/main/java/org/openjdk/jmc/rjmx/services/ICommercialFeaturesService.java
-+++ b/application/org.openjdk.jmc.rjmx/src/main/java/org/openjdk/jmc/rjmx/services/ICommercialFeaturesService.java
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved.
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
-@@ -52,4 +52,9 @@
- */
- void enableCommercialFeatures() throws Exception;
-
-+ /**
-+ * @return true if there are commercial features available, or false if this JVM doesn't have
-+ * commercial features.
-+ */
-+ boolean hasCommercialFeatures();
- }
-diff --git a/application/org.openjdk.jmc.rjmx/src/main/java/org/openjdk/jmc/rjmx/services/internal/CommercialFeaturesServiceFactory.java b/application/org.openjdk.jmc.rjmx/src/main/java/org/openjdk/jmc/rjmx/services/internal/CommercialFeaturesServiceFactory.java
---- a/application/org.openjdk.jmc.rjmx/src/main/java/org/openjdk/jmc/rjmx/services/internal/CommercialFeaturesServiceFactory.java
-+++ b/application/org.openjdk.jmc.rjmx/src/main/java/org/openjdk/jmc/rjmx/services/internal/CommercialFeaturesServiceFactory.java
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved.
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
-@@ -34,6 +34,7 @@
-
- import org.openjdk.jmc.common.version.JavaVersion;
- import org.openjdk.jmc.rjmx.ConnectionException;
-+import org.openjdk.jmc.rjmx.ConnectionToolkit;
- import org.openjdk.jmc.rjmx.IConnectionHandle;
- import org.openjdk.jmc.rjmx.ServiceNotAvailableException;
- import org.openjdk.jmc.rjmx.services.ICommercialFeaturesService;
-@@ -52,10 +53,16 @@
- if (descriptor != null) {
- JavaVersion version = new JavaVersion(descriptor.getJavaVersion());
- if (version.getMajorVersion() >= 11) {
-- return new Jdk11CommercialFeaturesService();
-+ return new NoCommercialFeaturesService();
- }
- }
-- return new HotSpot23CommercialFeaturesService(handle);
-+
-+ // Funnily enough, OpenJDK built JVMs for unknown reasons also have the unlock commercial features flag,
-+ // so we'll just check if Oracle is the JVM vendor. Any other vendor will not have JFR protected by commercial flags.
-+ if (ConnectionToolkit.isOracle(handle)) {
-+ return new HotSpot23CommercialFeaturesService(handle);
-+ }
-+ return new NoCommercialFeaturesService();
- }
-
- @Override
-diff --git a/application/org.openjdk.jmc.rjmx/src/main/java/org/openjdk/jmc/rjmx/services/internal/HotSpot23CommercialFeaturesService.java b/application/org.openjdk.jmc.rjmx/src/main/java/org/openjdk/jmc/rjmx/services/internal/HotSpot23CommercialFeaturesService.java
---- a/application/org.openjdk.jmc.rjmx/src/main/java/org/openjdk/jmc/rjmx/services/internal/HotSpot23CommercialFeaturesService.java
-+++ b/application/org.openjdk.jmc.rjmx/src/main/java/org/openjdk/jmc/rjmx/services/internal/HotSpot23CommercialFeaturesService.java
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved.
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
-@@ -43,7 +43,7 @@
- import javax.management.ObjectName;
-
- public class HotSpot23CommercialFeaturesService implements ICommercialFeaturesService {
-- private final static String VM_FLAG = "UnlockCommercialFeatures"; //$NON-NLS-1$
-+ private final static String UNLOCK_COMMERCIAL_FEATURES_FLAG = "UnlockCommercialFeatures"; //$NON-NLS-1$
- private final static String UNLOCK_COMMAND = "VM.unlock_commercial_features"; //$NON-NLS-1$
- private final MBeanServerConnection server;
- private final IDiagnosticCommandService dcs;
-@@ -54,7 +54,7 @@
- server = handle.getServiceOrThrow(MBeanServerConnection.class);
- dcs = handle.getServiceOrNull(IDiagnosticCommandService.class);
- try {
-- HotspotManagementToolkit.getVMOption(server, VM_FLAG); // Will fail if option is not available
-+ HotspotManagementToolkit.getVMOption(server, UNLOCK_COMMERCIAL_FEATURES_FLAG); // Will fail if option is not available
- } catch (Exception e) {
- // Commercial Feature option is not available but Flight Recorder is.
- if (!isJfrMBeanAvailable()) {
-@@ -66,7 +66,8 @@
- @Override
- public boolean isCommercialFeaturesEnabled() {
- try {
-- return ((String) HotspotManagementToolkit.getVMOption(server, VM_FLAG)).contains("true"); //$NON-NLS-1$
-+ return ((String) HotspotManagementToolkit.getVMOption(server, UNLOCK_COMMERCIAL_FEATURES_FLAG))
-+ .contains("true"); //$NON-NLS-1$
- } catch (Exception e) {
- return false;
- }
-@@ -78,7 +79,7 @@
- dcs.runCtrlBreakHandlerWithResult(UNLOCK_COMMAND);
- }
- if (!isCommercialFeaturesEnabled()) {
-- HotspotManagementToolkit.setVMOption(server, VM_FLAG, "true"); //$NON-NLS-1$
-+ HotspotManagementToolkit.setVMOption(server, UNLOCK_COMMERCIAL_FEATURES_FLAG, "true"); //$NON-NLS-1$
- }
- }
-
-@@ -96,4 +97,9 @@
- server.getMBeanInfo(candidateObjectName);
- return candidateObjectName;
- }
-+
-+ @Override
-+ public boolean hasCommercialFeatures() {
-+ return true;
-+ }
- }
-diff --git a/application/org.openjdk.jmc.rjmx/src/main/java/org/openjdk/jmc/rjmx/services/internal/Jdk11CommercialFeaturesService.java b/application/org.openjdk.jmc.rjmx/src/main/java/org/openjdk/jmc/rjmx/services/internal/Jdk11CommercialFeaturesService.java
-deleted file mode 100644
---- a/application/org.openjdk.jmc.rjmx/src/main/java/org/openjdk/jmc/rjmx/services/internal/Jdk11CommercialFeaturesService.java
-+++ /dev/null
-@@ -1,48 +0,0 @@
--/*
-- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
-- *
-- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-- *
-- * The contents of this file are subject to the terms of either the Universal Permissive License
-- * v 1.0 as shown at http://oss.oracle.com/licenses/upl
-- *
-- * or the following license:
-- *
-- * 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. Neither the name of the copyright holder nor the names of its contributors may be used to
-- * endorse or promote products derived from this software without specific prior written permission.
-- *
-- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 COPYRIGHT HOLDER OR
-- * CONTRIBUTORS 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.
-- */
--package org.openjdk.jmc.rjmx.services.internal;
--
--import org.openjdk.jmc.rjmx.services.ICommercialFeaturesService;
--
--public class Jdk11CommercialFeaturesService implements ICommercialFeaturesService {
--
-- @Override
-- public boolean isCommercialFeaturesEnabled() {
-- return true;
-- }
--
-- @Override
-- public void enableCommercialFeatures() throws Exception {
-- // Noop
-- }
--}
-diff --git a/application/org.openjdk.jmc.rjmx/src/main/java/org/openjdk/jmc/rjmx/services/internal/NoCommercialFeaturesService.java b/application/org.openjdk.jmc.rjmx/src/main/java/org/openjdk/jmc/rjmx/services/internal/NoCommercialFeaturesService.java
-new file mode 100644
---- /dev/null
-+++ b/application/org.openjdk.jmc.rjmx/src/main/java/org/openjdk/jmc/rjmx/services/internal/NoCommercialFeaturesService.java
-@@ -0,0 +1,56 @@
-+/*
-+ * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved.
-+ *
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * The contents of this file are subject to the terms of either the Universal Permissive License
-+ * v 1.0 as shown at http://oss.oracle.com/licenses/upl
-+ *
-+ * or the following license:
-+ *
-+ * 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. Neither the name of the copyright holder nor the names of its contributors may be used to
-+ * endorse or promote products derived from this software without specific prior written permission.
-+ *
-+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 COPYRIGHT HOLDER OR
-+ * CONTRIBUTORS 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.
-+ */
-+package org.openjdk.jmc.rjmx.services.internal;
-+
-+import org.openjdk.jmc.rjmx.services.ICommercialFeaturesService;
-+
-+/**
-+ * Used by JVMs with no commercial features, e.g. OpenJDK 8 and JDK 11+ JVMs.
-+ */
-+public class NoCommercialFeaturesService implements ICommercialFeaturesService {
-+
-+ @Override
-+ public boolean isCommercialFeaturesEnabled() {
-+ return true;
-+ }
-+
-+ @Override
-+ public void enableCommercialFeatures() throws Exception {
-+ // Noop
-+ }
-+
-+ @Override
-+ public boolean hasCommercialFeatures() {
-+ return false;
-+ }
-+}
-diff --git a/application/org.openjdk.jmc.ui.common/src/main/java/org/openjdk/jmc/ui/common/jvm/JVMDescriptor.java b/application/org.openjdk.jmc.ui.common/src/main/java/org/openjdk/jmc/ui/common/jvm/JVMDescriptor.java
---- a/application/org.openjdk.jmc.ui.common/src/main/java/org/openjdk/jmc/ui/common/jvm/JVMDescriptor.java
-+++ b/application/org.openjdk.jmc.ui.common/src/main/java/org/openjdk/jmc/ui/common/jvm/JVMDescriptor.java
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved.
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
-@@ -38,6 +38,7 @@
- public class JVMDescriptor {
- private final String javaVersion;
- private final JVMType jvmType;
-+ private final String jvmVendor;
- private final JVMArch jvmArch;
- private final String javaCommand;
- private final String jvmArguments;
-@@ -46,13 +47,14 @@
- private final Connectable connectable;
-
- public JVMDescriptor(String javaVersion, JVMType jvmType, JVMArch jvmArch, String javaCommand, String jvmArguments,
-- Integer pid, boolean debug, Connectable attachable) {
-+ String jvmVendor, Integer pid, boolean debug, Connectable attachable) {
- super();
- this.javaVersion = javaVersion;
- this.jvmType = jvmType;
- this.jvmArch = jvmArch;
- this.javaCommand = javaCommand;
- this.jvmArguments = jvmArguments;
-+ this.jvmVendor = jvmVendor;
- this.pid = pid;
- this.debug = debug;
- connectable = attachable;
-@@ -78,6 +80,10 @@
- return jvmArguments;
- }
-
-+ public String getJvmVendor() {
-+ return jvmVendor;
-+ }
-+
- public Integer getPid() {
- return pid;
- }
-diff --git a/application/tests/org.openjdk.jmc.rjmx.test/src/test/java/org/openjdk/jmc/rjmx/test/JVMSupportToolkitTest.java b/application/tests/org.openjdk.jmc.rjmx.test/src/test/java/org/openjdk/jmc/rjmx/test/JVMSupportToolkitTest.java
---- a/application/tests/org.openjdk.jmc.rjmx.test/src/test/java/org/openjdk/jmc/rjmx/test/JVMSupportToolkitTest.java
-+++ b/application/tests/org.openjdk.jmc.rjmx.test/src/test/java/org/openjdk/jmc/rjmx/test/JVMSupportToolkitTest.java
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved.
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
-@@ -33,6 +33,7 @@
- package org.openjdk.jmc.rjmx.test;
-
- import static org.junit.Assert.assertEquals;
-+import static org.junit.Assert.assertNotNull;
-
- import org.junit.Test;
- import org.openjdk.jmc.rjmx.ConnectionDescriptorBuilder;
-@@ -46,7 +47,8 @@
-
- @SuppressWarnings("nls")
- public class JVMSupportToolkitTest {
--
-+ private static final String VENDOR_OPEN_JDK = "OpenJDK";
-+ private static final String VENDOR_ORACLE = "Oracle";
- // FIXME: Add tests for the methods that take IConnectionHandle as a parameter.
-
- private static final String SUPPORTED_MESSAGE = null;
-@@ -63,7 +65,8 @@
- public void testJfr17U40HotSpotSupported() {
- ServerHandle server = new ServerHandle(
- new ServerDescriptor(null, null,
-- new JVMDescriptor("1.7.0_40", JVMType.HOTSPOT, JVMArch.UNKNOWN, null, null, null, false, null)),
-+ new JVMDescriptor("1.7.0_40", JVMType.HOTSPOT, JVMArch.UNKNOWN, VENDOR_ORACLE, null, null, null,
-+ false, null)),
- new ConnectionDescriptorBuilder().hostName("localhost").port(0).build(), null);
- String errorMessage = JVMSupportToolkit.checkFlightRecorderSupport(server, false);
- assertEquals(SUPPORTED_MESSAGE, errorMessage);
-@@ -73,7 +76,8 @@
- public void testJfr17U4HotSpotNotFullySupported() {
- ServerHandle server = new ServerHandle(
- new ServerDescriptor(null, null,
-- new JVMDescriptor("1.7.0_04", JVMType.HOTSPOT, JVMArch.UNKNOWN, null, null, null, false, null)),
-+ new JVMDescriptor("1.7.0_04", JVMType.HOTSPOT, JVMArch.UNKNOWN, VENDOR_ORACLE, null, null, null,
-+ false, null)),
- new ConnectionDescriptorBuilder().hostName("localhost").port(0).build(), null);
- String errorMessage = JVMSupportToolkit.checkFlightRecorderSupport(server, false);
- assertEquals(Messages.JVMSupport_FLIGHT_RECORDER_NOT_FULLY_SUPPORTED_OLD_HOTSPOT, errorMessage);
-@@ -83,7 +87,8 @@
- public void testJfr17HotSpotNotSupported() {
- ServerHandle server = new ServerHandle(
- new ServerDescriptor(null, null,
-- new JVMDescriptor("1.7.0", JVMType.HOTSPOT, JVMArch.UNKNOWN, null, null, null, false, null)),
-+ new JVMDescriptor("1.7.0", JVMType.HOTSPOT, JVMArch.UNKNOWN, VENDOR_ORACLE, null, null, null,
-+ false, null)),
- new ConnectionDescriptorBuilder().hostName("localhost").port(0).build(), null);
- String errorMessage = JVMSupportToolkit.checkFlightRecorderSupport(server, false);
- assertEquals(Messages.JVMSupport_FLIGHT_RECORDER_NOT_SUPPORTED_OLD_HOTSPOT, errorMessage);
-@@ -93,7 +98,8 @@
- public void testJfrJRockitNotSupported() {
- ServerHandle server = new ServerHandle(
- new ServerDescriptor(null, null,
-- new JVMDescriptor("1.6", JVMType.JROCKIT, JVMArch.UNKNOWN, null, null, null, false, null)),
-+ new JVMDescriptor("1.6", JVMType.JROCKIT, JVMArch.UNKNOWN, VENDOR_ORACLE, null, null, null,
-+ false, null)),
- new ConnectionDescriptorBuilder().hostName("localhost").port(0).build(), null);
- String errorMessage = JVMSupportToolkit.checkFlightRecorderSupport(server, false);
- assertEquals(Messages.JVMSupport_JROCKIT_NO_LONGER_SUPPORTED, errorMessage);
-@@ -103,7 +109,8 @@
- public void testJfrOldHotSpotNotSupported() {
- ServerHandle server = new ServerHandle(
- new ServerDescriptor(null, null,
-- new JVMDescriptor("1.6", JVMType.HOTSPOT, JVMArch.UNKNOWN, null, null, null, false, null)),
-+ new JVMDescriptor("1.6", JVMType.HOTSPOT, JVMArch.UNKNOWN, VENDOR_ORACLE, null, null, null,
-+ false, null)),
- new ConnectionDescriptorBuilder().hostName("localhost").port(0).build(), null);
- String errorMessage = JVMSupportToolkit.checkFlightRecorderSupport(server, false);
- assertEquals(Messages.JVMSupport_FLIGHT_RECORDER_NOT_SUPPORTED_OLD_HOTSPOT, errorMessage);
-@@ -112,8 +119,8 @@
- @Test
- public void testJfrNonHotSpotNotSupported() {
- ServerHandle server = new ServerHandle(
-- new ServerDescriptor(null, null,
-- new JVMDescriptor("1.7", JVMType.OTHER, JVMArch.UNKNOWN, null, null, null, false, null)),
-+ new ServerDescriptor(null, null, new JVMDescriptor("1.7", JVMType.OTHER, JVMArch.UNKNOWN, VENDOR_ORACLE,
-+ null, null, null, false, null)),
- new ConnectionDescriptorBuilder().hostName("localhost").port(0).build(), null);
- String errorMessage = JVMSupportToolkit.checkFlightRecorderSupport(server, false);
- assertEquals(Messages.JVMSupport_FLIGHT_RECORDER_NOT_SUPPORTED_NOT_HOTSPOT, errorMessage);
-@@ -123,10 +130,32 @@
- public void testJfrUnknownNoWarning() {
- ServerHandle server = new ServerHandle(
- new ServerDescriptor(null, null,
-- new JVMDescriptor("1.7", JVMType.UNKNOWN, JVMArch.UNKNOWN, null, null, null, false, null)),
-+ new JVMDescriptor("1.7", JVMType.UNKNOWN, JVMArch.UNKNOWN, VENDOR_ORACLE, null, null, null,
-+ false, null)),
- new ConnectionDescriptorBuilder().hostName("localhost").port(0).build(), null);
- String errorMessage = JVMSupportToolkit.checkFlightRecorderSupport(server, false);
- assertEquals(SUPPORTED_MESSAGE, errorMessage);
- }
-
-+ @Test
-+ public void testJfr8HotSpotOpenJDKSupported() {
-+ ServerHandle server = new ServerHandle(
-+ new ServerDescriptor(null, null,
-+ new JVMDescriptor("1.8.0", JVMType.HOTSPOT, JVMArch.UNKNOWN, VENDOR_OPEN_JDK, null, null, null,
-+ false, null)),
-+ new ConnectionDescriptorBuilder().hostName("localhost").port(0).build(), null);
-+ String errorMessage = JVMSupportToolkit.checkFlightRecorderSupport(server, false);
-+ assertEquals(SUPPORTED_MESSAGE, errorMessage);
-+ }
-+
-+ @Test
-+ public void testJdk7HotSpotOpenJDKNotSupported() {
-+ ServerHandle server = new ServerHandle(
-+ new ServerDescriptor(null, null,
-+ new JVMDescriptor("1.7.0", JVMType.HOTSPOT, JVMArch.UNKNOWN, VENDOR_OPEN_JDK, null, null, null,
-+ false, null)),
-+ new ConnectionDescriptorBuilder().hostName("localhost").port(0).build(), null);
-+ String errorMessage = JVMSupportToolkit.checkFlightRecorderSupport(server, false);
-+ assertNotNull(errorMessage);
-+ }
- }
-diff --git a/application/tests/org.openjdk.jmc.rjmx.test/src/test/java/org/openjdk/jmc/rjmx/test/services/CommercialFeaturesServiceTest.java b/application/tests/org.openjdk.jmc.rjmx.test/src/test/java/org/openjdk/jmc/rjmx/test/services/CommercialFeaturesServiceTest.java
---- a/application/tests/org.openjdk.jmc.rjmx.test/src/test/java/org/openjdk/jmc/rjmx/test/services/CommercialFeaturesServiceTest.java
-+++ b/application/tests/org.openjdk.jmc.rjmx.test/src/test/java/org/openjdk/jmc/rjmx/test/services/CommercialFeaturesServiceTest.java
-@@ -1,5 +1,5 @@
- /*
-- * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
-+ * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved.
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
-@@ -36,7 +36,6 @@
- import static org.junit.Assert.assertTrue;
-
- import org.junit.Test;
--
- import org.openjdk.jmc.rjmx.ConnectionException;
- import org.openjdk.jmc.rjmx.IConnectionHandle;
- import org.openjdk.jmc.rjmx.services.ICommercialFeaturesService;
-@@ -63,18 +62,17 @@
- public void testSetCommercialFeaturesState() throws Exception {
- ICommercialFeaturesService service = getCommercialFeaturesService();
- // Check state. Any state is okay, but we want to catch exceptions.
-- if (!service.isCommercialFeaturesEnabled()) {
-+ if (service.hasCommercialFeatures() && !service.isCommercialFeaturesEnabled()) {
- service.enableCommercialFeatures();
- }
-- assertTrue("Commercial features should now be enabled!", service.isCommercialFeaturesEnabled());
-+ if (service.hasCommercialFeatures()) {
-+ assertTrue("Commercial features should now be enabled!", service.isCommercialFeaturesEnabled());
-+ }
- }
-
- private ICommercialFeaturesService getCommercialFeaturesService() throws ConnectionException {
-- IConnectionHandle handle = getConnectionHandle();
--
-- // LocalRJMXTestToolkit.createDefaultConnectionHandle(getConnectionManager());
-+ IConnectionHandle handle = getDefaultServer().connect("Connection handle for test");
- assumeHotSpot7u4OrLater(handle);
--
- ICommercialFeaturesService service = handle.getServiceOrNull(ICommercialFeaturesService.class);
-
- assertNotNull(
-diff --git a/configuration/spotbugs/spotbugs-exclude.xml b/configuration/spotbugs/spotbugs-exclude.xml
---- a/configuration/spotbugs/spotbugs-exclude.xml
-+++ b/configuration/spotbugs/spotbugs-exclude.xml
-@@ -566,6 +566,13 @@
-
-
-
-+
-+
-+
-+
-+
-+
-
-
diff --git a/SOURCES/11-tycho.patch b/SOURCES/11-tycho.patch
new file mode 100644
index 0000000..32c8abc
--- /dev/null
+++ b/SOURCES/11-tycho.patch
@@ -0,0 +1,23 @@
+diff --git a/pom.xml b/pom.xml
+index 329f840..c5f06c9 100644
+--- a/pom.xml
++++ b/pom.xml
+@@ -77,7 +77,7 @@
+
+ UTF-8
+ UTF-8
+- 2.0.0
++ 2.1.0
+ 1.4
+ 2.8.2
+ 0.3.1
+@@ -144,7 +144,8 @@
+ tycho-compiler-plugin
+ ${tycho.version}
+
+- false
++ false
++ false
+
+
+
diff --git a/SOURCES/12-6692.patch b/SOURCES/12-6692.patch
deleted file mode 100644
index 0abab10..0000000
--- a/SOURCES/12-6692.patch
+++ /dev/null
@@ -1,326 +0,0 @@
-diff --git a/application/org.openjdk.jmc.browser.attach/src/main/java/org/openjdk/jmc/browser/attach/LocalJVMToolkit.java b/application/org.openjdk.jmc.browser.attach/src/main/java/org/openjdk/jmc/browser/attach/LocalJVMToolkit.java
---- a/application/org.openjdk.jmc.browser.attach/src/main/java/org/openjdk/jmc/browser/attach/LocalJVMToolkit.java
-+++ b/application/org.openjdk.jmc.browser.attach/src/main/java/org/openjdk/jmc/browser/attach/LocalJVMToolkit.java
-@@ -199,6 +199,7 @@
- String address = null;
- String version = null;
- String jvmArgs = null;
-+ String jvmName = null;
- String jvmVendor = null;
-
- try {
-@@ -210,6 +211,7 @@
- jvmArgs = MonitoredVmUtil.jvmArgs(mvm);
- StringMonitor sm = (StringMonitor) mvm.findByName("java.property.java.vm.name"); //$NON-NLS-1$
- if (sm != null) {
-+ jvmName = sm.stringValue();
- type = getJVMType(sm.stringValue());
- }
-
-@@ -268,7 +270,7 @@
- } catch (Exception x) {
- // ignore
- }
-- connDesc = createDescriptor(name, jvmArgs, jvmVendor, vmid, connectable, type, jvmArch, address, version, isDebug);
-+ connDesc = createDescriptor(name, jvmArgs, jvmName, jvmVendor, vmid, connectable, type, jvmArch, address, version, isDebug);
- return connDesc;
- }
- });
-@@ -367,6 +369,7 @@
- String javaArgs = null;
- String jvmArgs = null;
- String jvmVersion = null;
-+ String jvmName = null;
- String jvmVendor = null;
- VirtualMachine vm = null;
- try {
-@@ -384,8 +387,8 @@
- + vmd + ": " + e.getMessage()); //$NON-NLS-1$
- }
- if (props != null) {
-- String vmName = props.getProperty("java.vm.name"); //$NON-NLS-1$
-- jvmType = getJVMType(vmName);
-+ jvmName = props.getProperty("java.vm.name"); //$NON-NLS-1$
-+ jvmType = getJVMType(jvmName);
- version = props.getProperty("java.version"); //$NON-NLS-1$
- jvmVersion = props.getProperty("java.vm.version"); //$NON-NLS-1$
- jvmVendor = props.getProperty("java.vm.vendor");
-@@ -406,7 +409,7 @@
- }
- }
- if (connectable.isAttachable()) {
-- connDesc = createDescriptor(javaArgs, jvmArgs, jvmVendor, Integer.parseInt(vmd.id()), connectable, jvmType, jvmArch,
-+ connDesc = createDescriptor(javaArgs, jvmArgs, jvmName, jvmVendor, Integer.parseInt(vmd.id()), connectable, jvmType, jvmArch,
- address, version, isDebug);
- }
- BrowserAttachPlugin.getPluginLogger().info("Done resolving PID " + vmd); //$NON-NLS-1$
-@@ -471,10 +474,10 @@
- }
-
- private static DiscoveryEntry createDescriptor(
-- String javaCommand, String jvmArgs, String jvmVendor, int pid, Connectable connectable, JVMType type,
-- JVMArch arch, String address, String version, boolean isDebug) {
-- JVMDescriptor jvmInfo = new JVMDescriptor(version, type, arch, javaCommand, jvmArgs, jvmVendor, pid, isDebug,
-- connectable);
-+ String javaCommand, String jvmArgs, String jvmName, String jvmVendor, int pid, Connectable connectable,
-+ JVMType type, JVMArch arch, String address, String version, boolean isDebug) {
-+ JVMDescriptor jvmInfo = new JVMDescriptor(version, type, arch, javaCommand, jvmArgs, jvmName, jvmVendor, pid,
-+ isDebug, connectable);
- LocalConnectionDescriptor lcd = new LocalConnectionDescriptor(pid, address, connectable == ATTACHABLE);
- String guid = "Local-[PID:" + pid + ", seq:" + (SEQ_NUMBER++) + "]"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- IServerDescriptor sd = IServerDescriptor.create(guid, null, jvmInfo);
-diff --git a/application/org.openjdk.jmc.browser.jdp/src/main/java/org/openjdk/jmc/browser/jdp/JDPDescriptorProvider.java b/application/org.openjdk.jmc.browser.jdp/src/main/java/org/openjdk/jmc/browser/jdp/JDPDescriptorProvider.java
---- a/application/org.openjdk.jmc.browser.jdp/src/main/java/org/openjdk/jmc/browser/jdp/JDPDescriptorProvider.java
-+++ b/application/org.openjdk.jmc.browser.jdp/src/main/java/org/openjdk/jmc/browser/jdp/JDPDescriptorProvider.java
-@@ -91,7 +91,7 @@
- String pid = map.get(JMXDataKeys.KEY_PID);
- // NOTE: We would like to have the JVM type, architecture and vendor included in the JDP payload. We should probably file an enhancement request on JDK for this.
- JVMDescriptor jvmInfo = new JVMDescriptor(null, JVMType.UNKNOWN, JVMArch.UNKNOWN, commandLine, null,
-- null, pid == null ? null : Integer.parseInt(pid), false, Connectable.MGMNT_AGENT_STARTED);
-+ null, null, pid == null ? null : Integer.parseInt(pid), false, Connectable.MGMNT_AGENT_STARTED);
- String path = null;
- if (name == null) {
- } else if (name.endsWith(PATH_SEPARATOR)) {
-diff --git a/application/org.openjdk.jmc.rjmx.services.jfr/src/main/java/org/openjdk/jmc/rjmx/services/jfr/internal/FlightRecorderServiceV1.java b/application/org.openjdk.jmc.rjmx.services.jfr/src/main/java/org/openjdk/jmc/rjmx/services/jfr/internal/FlightRecorderServiceV1.java
---- a/application/org.openjdk.jmc.rjmx.services.jfr/src/main/java/org/openjdk/jmc/rjmx/services/jfr/internal/FlightRecorderServiceV1.java
-+++ b/application/org.openjdk.jmc.rjmx.services.jfr/src/main/java/org/openjdk/jmc/rjmx/services/jfr/internal/FlightRecorderServiceV1.java
-@@ -131,6 +131,9 @@
-
- public FlightRecorderServiceV1(IConnectionHandle handle) throws ConnectionException, ServiceNotAvailableException {
- cfs = handle.getServiceOrThrow(ICommercialFeaturesService.class);
-+ if (!JVMSupportToolkit.hasFlightRecorder(handle)) {
-+ throw new ServiceNotAvailableException(""); //$NON-NLS-1$
-+ }
- if (!isDynamicFlightRecorderSupported(handle) && isFlightRecorderDisabled(handle)) {
- throw new ServiceNotAvailableException(""); //$NON-NLS-1$
- }
-diff --git a/application/org.openjdk.jmc.rjmx/src/main/java/org/openjdk/jmc/rjmx/ConnectionToolkit.java b/application/org.openjdk.jmc.rjmx/src/main/java/org/openjdk/jmc/rjmx/ConnectionToolkit.java
---- a/application/org.openjdk.jmc.rjmx/src/main/java/org/openjdk/jmc/rjmx/ConnectionToolkit.java
-+++ b/application/org.openjdk.jmc.rjmx/src/main/java/org/openjdk/jmc/rjmx/ConnectionToolkit.java
-@@ -377,24 +377,24 @@
- public static boolean isOracle(IConnectionHandle handle) {
- JVMDescriptor descriptor = handle.getServerDescriptor().getJvmInfo();
- // This should normally not happen for discovered JVMs, but users can create custom connections
-- String vendor = null;
-+ String name = null;
- if (descriptor != null) {
-- vendor = descriptor.getJvmVendor();
-+ name = descriptor.getJvmName();
- } else {
- // We try checking if connected
- if (handle.isConnected()) {
- MBeanServerConnection connection = handle.getServiceOrNull(MBeanServerConnection.class);
- if (connection != null) {
- try {
-- vendor = getRuntimeBean(connection).getVmVendor();
-+ name = getRuntimeBean(connection).getVmName();
- } catch (IOException e) {
-- // Worst case we classify JVM vendor wrong
-+ // Worst case we classify JVM name wrong
- RJMXPlugin.getDefault().getLogger().log(Level.WARNING, "Could not check if Oracle JVM", e);
- }
- }
- }
- }
-- return vendor != null && vendor.contains("Oracle");
-+ return name != null && (name.contains("Java HotSpot"));
- }
-
- /**
-diff --git a/application/org.openjdk.jmc.rjmx/src/main/java/org/openjdk/jmc/rjmx/JVMSupportToolkit.java b/application/org.openjdk.jmc.rjmx/src/main/java/org/openjdk/jmc/rjmx/JVMSupportToolkit.java
---- a/application/org.openjdk.jmc.rjmx/src/main/java/org/openjdk/jmc/rjmx/JVMSupportToolkit.java
-+++ b/application/org.openjdk.jmc.rjmx/src/main/java/org/openjdk/jmc/rjmx/JVMSupportToolkit.java
-@@ -85,6 +85,27 @@
- }
-
- /**
-+ * Checks if Flight Recorder is available for use
-+ *
-+ * @param connection
-+ * @return If it is an Oracle JVM or there is a FlightRecorder VM option, then return true.
-+ * Otherwise, return false. This is used for verifying JDK 8 JVMs that are not built
-+ * with JFR enabled, e.g., OpenJDK 8
-+ */
-+ public static boolean hasFlightRecorder(IConnectionHandle connection) {
-+ if (ConnectionToolkit.isOracle(connection)) {
-+ return true;
-+ }
-+ MBeanServerConnection server = connection.getServiceOrNull(MBeanServerConnection.class);
-+ try {
-+ HotspotManagementToolkit.getVMOption(server, "FlightRecorder");
-+ return true;
-+ } catch (Exception e) { // RuntimeMBeanException thrown if FlightRecorder is not present
-+ return false;
-+ }
-+ }
-+
-+ /**
- * Checks if Flight Recorder is disabled.
- *
- * @param connection
-diff --git a/application/org.openjdk.jmc.rjmx/src/main/resources/org/openjdk/jmc/rjmx/messages/internal/messages.properties b/application/org.openjdk.jmc.rjmx/src/main/resources/org/openjdk/jmc/rjmx/messages/internal/messages.properties
---- a/application/org.openjdk.jmc.rjmx/src/main/resources/org/openjdk/jmc/rjmx/messages/internal/messages.properties
-+++ b/application/org.openjdk.jmc.rjmx/src/main/resources/org/openjdk/jmc/rjmx/messages/internal/messages.properties
-@@ -54,7 +54,7 @@
- JVMSupport_FLIGHT_RECORDER_NOT_FULLY_SUPPORTED_OLD_HOTSPOT_SHORT=Flight Recorder is not fully supported for JVMs with Java versions below 7u40
- JVMSupport_FLIGHT_RECORDER_NOT_SUPPORTED_NOT_HOTSPOT=Flight Recorder is not supported for non HotSpot JVMs
- JVMSupport_FLIGHT_RECORDER_NOT_SUPPORTED_NOT_HOTSPOT_SHORT=Flight Recorder is not supported for non HotSpot JVMs
--JVMSupport_FLIGHT_RECORDER_NOT_ENABLED=Flight Recorder features are not enabled. To enable this you need to use an Oracle JDK 7u4 or later JVM started with -XX:+UnlockCommercialFeatures -XX:+FlightRecorder or an OpenJDK 11+ JVM.
-+JVMSupport_FLIGHT_RECORDER_NOT_ENABLED=Flight Recorder features are not enabled. To enable this you need to use an Oracle JDK 7u4 or later JVM started with -XX:+UnlockCommercialFeatures -XX:+FlightRecorder, an OpenJDK 8 JFR-enabled JVM, or an OpenJDK 11+ JVM.
- JVMSupport_FLIGHT_RECORDER_NOT_ENABLED_SHORT=Flight Recorder features are not enabled
- JVMSupport_FLIGHT_RECORDER_DISABLED=Flight Recorder is explicitly disabled. To enable the Flight Recorder, remove -XX:-FlightRecorder from the command line.
- JVMSupport_FLIGHT_RECORDER_DISABLED_SHORT=Flight Recorder is explicitly disabled
-diff --git a/application/org.openjdk.jmc.ui.common/src/main/java/org/openjdk/jmc/ui/common/jvm/JVMDescriptor.java b/application/org.openjdk.jmc.ui.common/src/main/java/org/openjdk/jmc/ui/common/jvm/JVMDescriptor.java
---- a/application/org.openjdk.jmc.ui.common/src/main/java/org/openjdk/jmc/ui/common/jvm/JVMDescriptor.java
-+++ b/application/org.openjdk.jmc.ui.common/src/main/java/org/openjdk/jmc/ui/common/jvm/JVMDescriptor.java
-@@ -38,6 +38,7 @@
- public class JVMDescriptor {
- private final String javaVersion;
- private final JVMType jvmType;
-+ private final String jvmName;
- private final String jvmVendor;
- private final JVMArch jvmArch;
- private final String javaCommand;
-@@ -47,13 +48,14 @@
- private final Connectable connectable;
-
- public JVMDescriptor(String javaVersion, JVMType jvmType, JVMArch jvmArch, String javaCommand, String jvmArguments,
-- String jvmVendor, Integer pid, boolean debug, Connectable attachable) {
-+ String jvmName, String jvmVendor, Integer pid, boolean debug, Connectable attachable) {
- super();
- this.javaVersion = javaVersion;
- this.jvmType = jvmType;
- this.jvmArch = jvmArch;
- this.javaCommand = javaCommand;
- this.jvmArguments = jvmArguments;
-+ this.jvmName = jvmName;
- this.jvmVendor = jvmVendor;
- this.pid = pid;
- this.debug = debug;
-@@ -80,6 +82,10 @@
- return jvmArguments;
- }
-
-+ public String getJvmName() {
-+ return jvmName;
-+ }
-+
- public String getJvmVendor() {
- return jvmVendor;
- }
-diff --git a/application/tests/org.openjdk.jmc.rjmx.test/src/test/java/org/openjdk/jmc/rjmx/test/JVMSupportToolkitTest.java b/application/tests/org.openjdk.jmc.rjmx.test/src/test/java/org/openjdk/jmc/rjmx/test/JVMSupportToolkitTest.java
---- a/application/tests/org.openjdk.jmc.rjmx.test/src/test/java/org/openjdk/jmc/rjmx/test/JVMSupportToolkitTest.java
-+++ b/application/tests/org.openjdk.jmc.rjmx.test/src/test/java/org/openjdk/jmc/rjmx/test/JVMSupportToolkitTest.java
-@@ -47,8 +47,10 @@
-
- @SuppressWarnings("nls")
- public class JVMSupportToolkitTest {
-- private static final String VENDOR_OPEN_JDK = "OpenJDK";
-- private static final String VENDOR_ORACLE = "Oracle";
-+ private static final String NAME_OPEN_JDK = "OpenJDK 64-Bit Server VM";
-+ private static final String NAME_ORACLE = "Java HotSpot(TM) 64-Bit Server VM";
-+ private static final String VENDOR_OPEN_JDK = "Oracle Corporation";
-+ private static final String VENDOR_ORACLE = "Oracle Corporation";
- // FIXME: Add tests for the methods that take IConnectionHandle as a parameter.
-
- private static final String SUPPORTED_MESSAGE = null;
-@@ -65,8 +67,8 @@
- public void testJfr17U40HotSpotSupported() {
- ServerHandle server = new ServerHandle(
- new ServerDescriptor(null, null,
-- new JVMDescriptor("1.7.0_40", JVMType.HOTSPOT, JVMArch.UNKNOWN, VENDOR_ORACLE, null, null, null,
-- false, null)),
-+ new JVMDescriptor("1.7.0_40", JVMType.HOTSPOT, JVMArch.UNKNOWN, null, null, NAME_ORACLE,
-+ VENDOR_ORACLE, null, false, null)),
- new ConnectionDescriptorBuilder().hostName("localhost").port(0).build(), null);
- String errorMessage = JVMSupportToolkit.checkFlightRecorderSupport(server, false);
- assertEquals(SUPPORTED_MESSAGE, errorMessage);
-@@ -76,8 +78,8 @@
- public void testJfr17U4HotSpotNotFullySupported() {
- ServerHandle server = new ServerHandle(
- new ServerDescriptor(null, null,
-- new JVMDescriptor("1.7.0_04", JVMType.HOTSPOT, JVMArch.UNKNOWN, VENDOR_ORACLE, null, null, null,
-- false, null)),
-+ new JVMDescriptor("1.7.0_04", JVMType.HOTSPOT, JVMArch.UNKNOWN, null, null, NAME_ORACLE,
-+ VENDOR_ORACLE, null, false, null)),
- new ConnectionDescriptorBuilder().hostName("localhost").port(0).build(), null);
- String errorMessage = JVMSupportToolkit.checkFlightRecorderSupport(server, false);
- assertEquals(Messages.JVMSupport_FLIGHT_RECORDER_NOT_FULLY_SUPPORTED_OLD_HOTSPOT, errorMessage);
-@@ -87,8 +89,8 @@
- public void testJfr17HotSpotNotSupported() {
- ServerHandle server = new ServerHandle(
- new ServerDescriptor(null, null,
-- new JVMDescriptor("1.7.0", JVMType.HOTSPOT, JVMArch.UNKNOWN, VENDOR_ORACLE, null, null, null,
-- false, null)),
-+ new JVMDescriptor("1.7.0", JVMType.HOTSPOT, JVMArch.UNKNOWN, null, null, NAME_ORACLE,
-+ VENDOR_ORACLE, null, false, null)),
- new ConnectionDescriptorBuilder().hostName("localhost").port(0).build(), null);
- String errorMessage = JVMSupportToolkit.checkFlightRecorderSupport(server, false);
- assertEquals(Messages.JVMSupport_FLIGHT_RECORDER_NOT_SUPPORTED_OLD_HOTSPOT, errorMessage);
-@@ -98,8 +100,8 @@
- public void testJfrJRockitNotSupported() {
- ServerHandle server = new ServerHandle(
- new ServerDescriptor(null, null,
-- new JVMDescriptor("1.6", JVMType.JROCKIT, JVMArch.UNKNOWN, VENDOR_ORACLE, null, null, null,
-- false, null)),
-+ new JVMDescriptor("1.6", JVMType.JROCKIT, JVMArch.UNKNOWN, null, null, NAME_ORACLE,
-+ VENDOR_ORACLE, null, false, null)),
- new ConnectionDescriptorBuilder().hostName("localhost").port(0).build(), null);
- String errorMessage = JVMSupportToolkit.checkFlightRecorderSupport(server, false);
- assertEquals(Messages.JVMSupport_JROCKIT_NO_LONGER_SUPPORTED, errorMessage);
-@@ -109,8 +111,8 @@
- public void testJfrOldHotSpotNotSupported() {
- ServerHandle server = new ServerHandle(
- new ServerDescriptor(null, null,
-- new JVMDescriptor("1.6", JVMType.HOTSPOT, JVMArch.UNKNOWN, VENDOR_ORACLE, null, null, null,
-- false, null)),
-+ new JVMDescriptor("1.6", JVMType.HOTSPOT, JVMArch.UNKNOWN, null, null, NAME_ORACLE,
-+ VENDOR_ORACLE, null, false, null)),
- new ConnectionDescriptorBuilder().hostName("localhost").port(0).build(), null);
- String errorMessage = JVMSupportToolkit.checkFlightRecorderSupport(server, false);
- assertEquals(Messages.JVMSupport_FLIGHT_RECORDER_NOT_SUPPORTED_OLD_HOTSPOT, errorMessage);
-@@ -119,8 +121,9 @@
- @Test
- public void testJfrNonHotSpotNotSupported() {
- ServerHandle server = new ServerHandle(
-- new ServerDescriptor(null, null, new JVMDescriptor("1.7", JVMType.OTHER, JVMArch.UNKNOWN, VENDOR_ORACLE,
-- null, null, null, false, null)),
-+ new ServerDescriptor(null, null,
-+ new JVMDescriptor("1.7", JVMType.OTHER, JVMArch.UNKNOWN, null, null, NAME_ORACLE, VENDOR_ORACLE,
-+ null, false, null)),
- new ConnectionDescriptorBuilder().hostName("localhost").port(0).build(), null);
- String errorMessage = JVMSupportToolkit.checkFlightRecorderSupport(server, false);
- assertEquals(Messages.JVMSupport_FLIGHT_RECORDER_NOT_SUPPORTED_NOT_HOTSPOT, errorMessage);
-@@ -130,8 +133,8 @@
- public void testJfrUnknownNoWarning() {
- ServerHandle server = new ServerHandle(
- new ServerDescriptor(null, null,
-- new JVMDescriptor("1.7", JVMType.UNKNOWN, JVMArch.UNKNOWN, VENDOR_ORACLE, null, null, null,
-- false, null)),
-+ new JVMDescriptor("1.7", JVMType.UNKNOWN, JVMArch.UNKNOWN, null, null, NAME_ORACLE,
-+ VENDOR_ORACLE, null, false, null)),
- new ConnectionDescriptorBuilder().hostName("localhost").port(0).build(), null);
- String errorMessage = JVMSupportToolkit.checkFlightRecorderSupport(server, false);
- assertEquals(SUPPORTED_MESSAGE, errorMessage);
-@@ -141,8 +144,8 @@
- public void testJfr8HotSpotOpenJDKSupported() {
- ServerHandle server = new ServerHandle(
- new ServerDescriptor(null, null,
-- new JVMDescriptor("1.8.0", JVMType.HOTSPOT, JVMArch.UNKNOWN, VENDOR_OPEN_JDK, null, null, null,
-- false, null)),
-+ new JVMDescriptor("1.8.0", JVMType.HOTSPOT, JVMArch.UNKNOWN, null, null, NAME_OPEN_JDK,
-+ VENDOR_OPEN_JDK, null, false, null)),
- new ConnectionDescriptorBuilder().hostName("localhost").port(0).build(), null);
- String errorMessage = JVMSupportToolkit.checkFlightRecorderSupport(server, false);
- assertEquals(SUPPORTED_MESSAGE, errorMessage);
-@@ -152,8 +155,8 @@
- public void testJdk7HotSpotOpenJDKNotSupported() {
- ServerHandle server = new ServerHandle(
- new ServerDescriptor(null, null,
-- new JVMDescriptor("1.7.0", JVMType.HOTSPOT, JVMArch.UNKNOWN, VENDOR_OPEN_JDK, null, null, null,
-- false, null)),
-+ new JVMDescriptor("1.7.0", JVMType.HOTSPOT, JVMArch.UNKNOWN, null, null, NAME_OPEN_JDK,
-+ VENDOR_OPEN_JDK, null, false, null)),
- new ConnectionDescriptorBuilder().hostName("localhost").port(0).build(), null);
- String errorMessage = JVMSupportToolkit.checkFlightRecorderSupport(server, false);
- assertNotNull(errorMessage);
diff --git a/SOURCES/12-remove-chromium.patch b/SOURCES/12-remove-chromium.patch
new file mode 100644
index 0000000..ac30732
--- /dev/null
+++ b/SOURCES/12-remove-chromium.patch
@@ -0,0 +1,22 @@
+diff --git a/application/org.openjdk.jmc.feature.core/feature.xml b/application/org.openjdk.jmc.feature.core/feature.xml
+index b53c5e5..1eb682d 100644
+--- a/application/org.openjdk.jmc.feature.core/feature.xml
++++ b/application/org.openjdk.jmc.feature.core/feature.xml
+@@ -62,17 +62,6 @@
+
+
+
+-
+-
+
+ org.openjdk.jmc.flightrecorder.graphview
+ eclipse-plugin
+-
+-
+- 1.4.2
+- process-resources
+- ${project.basedir}/src/main/resources/jslibs
+- ${basedir}/../../configuration/ide/eclipse/formatting/formatting.xml
+- ${basedir}/../../configuration/ide/eclipse/formatting/formattingjs.xml
+-
+-
+-
+-
+-
+- com.googlecode.maven-download-plugin
+- download-maven-plugin
+- ${download.maven.plugin.version}
+-
+-
+- d3-v5-js
+- ${download-maven-plugin.phase}
+-
+- wget
+-
+-
+- https://d3js.org/d3.v5.min.js
+- false
+- ${download-maven-plugin.output}
+- true
+- true
+-
+-
+-
+- wasm
+- ${download-maven-plugin.phase}
+-
+- wget
+-
+-
+- https://unpkg.com/@hpcc-js/wasm@0.3.14/dist/index.js
+- false
+- ${download-maven-plugin.output}
+- true
+- true
+-
+-
+-
+- d3-graphviz-js
+- ${download-maven-plugin.phase}
+-
+- wget
+-
+-
+- https://unpkg.com/d3-graphviz@3.1.0/build/d3-graphviz.js
+- false
+- ${download-maven-plugin.output}
+- true
+- true
+-
+-
+-
+- graphvizlib-wasm
+- ${download-maven-plugin.phase}
+-
+- wget
+-
+-
+- https://unpkg.com/@hpcc-js/wasm@0.3.14/dist/graphvizlib.wasm
+- false
+- ${download-maven-plugin.output}
+- true
+- true
+-
+-
+-
+-
+-
+-
+
+diff --git a/application/org.openjdk.jmc.flightrecorder.graphview/src/main/java/org/openjdk/jmc/flightrecorder/graphview/views/GraphView.java b/application/org.openjdk.jmc.flightrecorder.graphview/src/main/java/org/openjdk/jmc/flightrecorder/graphview/views/GraphView.java
+index 1389545..d356c2e 100644
+--- a/application/org.openjdk.jmc.flightrecorder.graphview/src/main/java/org/openjdk/jmc/flightrecorder/graphview/views/GraphView.java
++++ b/application/org.openjdk.jmc.flightrecorder.graphview/src/main/java/org/openjdk/jmc/flightrecorder/graphview/views/GraphView.java
+@@ -85,18 +85,7 @@ import org.openjdk.jmc.ui.misc.DisplayToolkit;
+ public class GraphView extends ViewPart implements ISelectionListener {
+ private static final String HTML_PAGE;
+ static {
+- String jsD3V5 = "jslibs/d3.v5.min.js";
+- String jsGraphviz = "jslibs/index.js";
+- String wasmGraphviz = "jslibs/graphvizlib.wasm";
+- String jsGraphizD3 = "jslibs/d3-graphviz.js";
+-
+- String wasmBase64 = loadBase64FromFile(wasmGraphviz);
+-
+- HTML_PAGE = String.format(loadStringFromFile("page.template"), loadLibraries(jsD3V5),
+- // we inline base64 wasm in the library code to avoid fetching it at runtime
+- loadStringFromFile(jsGraphviz, "wasmBinaryFile=\"graphvizlib.wasm\";",
+- "wasmBinaryFile=dataURIPrefix + '" + wasmBase64 + "';"),
+- loadLibraries(jsGraphizD3));
++ HTML_PAGE = String.format(loadStringFromFile("page.template"));
+ }
+
+ private enum ModelState {
+diff --git a/application/org.openjdk.jmc.flightrecorder.graphview/src/main/resources/page.template b/application/org.openjdk.jmc.flightrecorder.graphview/src/main/resources/page.template
+index eb7423a..e424576 100644
+--- a/application/org.openjdk.jmc.flightrecorder.graphview/src/main/resources/page.template
++++ b/application/org.openjdk.jmc.flightrecorder.graphview/src/main/resources/page.template
+@@ -3,12 +3,13 @@
+
+
+
+-
+-
+-
+
+
+
++
++
++
++
+
+
++
++
+
+-
+