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