import jmc-8.0.0-8.module+el8.4.0+10229+75da8244

This commit is contained in:
CentOS Sources 2021-05-18 03:03:15 -04:00 committed by Andrew Lukoshko
parent d0c91851d3
commit 2c0ae4151b
27 changed files with 817 additions and 1580 deletions

2
.gitignore vendored
View File

@ -1 +1 @@
SOURCES/e67446b5fc9d.tar.gz SOURCES/8ab40bfb565c1002e84bb238a620ab81bb64eceb.tar.gz

View File

@ -1 +1 @@
676ac85e3a33296288129c09e1b898a9d460d36f SOURCES/e67446b5fc9d.tar.gz 84a94e40c47c9b5ab5975bb4c97ad6f69ae0c68f SOURCES/8ab40bfb565c1002e84bb238a620ab81bb64eceb.tar.gz

View File

@ -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 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 --- a/application/org.openjdk.jmc.rjmx/META-INF/MANIFEST.MF
+++ b/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; org.openjdk.jmc.rjmx.triggers;
x-friends:="org.openjdk.jmc.console.ui.notification, x-friends:="org.openjdk.jmc.console.ui.notification,
org.openjdk.jmc.alert, 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.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", 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 diff --git a/application/pom.xml b/application/pom.xml
index 9f8783a..7aa8842 100644
--- a/application/pom.xml --- a/application/pom.xml
+++ b/application/pom.xml +++ b/application/pom.xml
@@ -50,7 +50,6 @@ @@ -59,7 +59,6 @@
<module>org.openjdk.jmc.console.jconsole</module> <module>org.openjdk.jmc.console.jconsole</module>
<module>org.openjdk.jmc.console.pde</module> <module>org.openjdk.jmc.console.pde</module>
<module>org.openjdk.jmc.console.persistence</module> <module>org.openjdk.jmc.console.persistence</module>
@ -20,7 +22,7 @@ diff --git a/application/pom.xml b/application/pom.xml
<module>org.openjdk.jmc.console.ui</module> <module>org.openjdk.jmc.console.ui</module>
<module>org.openjdk.jmc.console.ui.diagnostic</module> <module>org.openjdk.jmc.console.ui.diagnostic</module>
<module>org.openjdk.jmc.console.ui.mbeanbrowser</module> <module>org.openjdk.jmc.console.ui.mbeanbrowser</module>
@@ -72,7 +71,6 @@ @@ -81,7 +80,6 @@
<module>org.openjdk.jmc.feature.pde</module> <module>org.openjdk.jmc.feature.pde</module>
<module>org.openjdk.jmc.feature.rcp</module> <module>org.openjdk.jmc.feature.rcp</module>
<module>org.openjdk.jmc.feature.rcp.update</module> <module>org.openjdk.jmc.feature.rcp.update</module>
@ -29,17 +31,18 @@ diff --git a/application/pom.xml b/application/pom.xml
<module>org.openjdk.jmc.flightrecorder.controlpanel.ui</module> <module>org.openjdk.jmc.flightrecorder.controlpanel.ui</module>
<module>org.openjdk.jmc.flightrecorder.controlpanel.ui.configuration</module> <module>org.openjdk.jmc.flightrecorder.controlpanel.ui.configuration</module>
diff --git a/license/THIRDPARTYREADME.txt b/license/THIRDPARTYREADME.txt diff --git a/license/THIRDPARTYREADME.txt b/license/THIRDPARTYREADME.txt
index 596a8db..ba7bf83 100644
--- a/license/THIRDPARTYREADME.txt --- a/license/THIRDPARTYREADME.txt
+++ b/license/THIRDPARTYREADME.txt +++ b/license/THIRDPARTYREADME.txt
@@ -296,191 +296,6 @@ @@ -297,187 +297,6 @@ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
OF THE POSSIBILITY OF SUCH DAMAGE. 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. -which may be included with this product.
- -
- - Copyright 2007 Yusuke Yamamoto
-
- Apache License - Apache License
- Version 2.0, January 2004 - Version 2.0, January 2004
- http://www.apache.org/licenses/ - 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 - incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability. - 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 D3 v6.1.3, which may
- be included with this product.
-
%% The following notice is provided with respect to JavaBeans Activation
Framework (JAF) 1.2.1, which may be included with this product.

View File

@ -1,13 +1,35 @@
diff -r c34e9deef71f pom.xml diff --git a/pom.xml b/pom.xml
--- a/pom.xml Fri Apr 17 15:53:00 2020 -0400 index 587d175..1c7c1f1 100644
+++ b/pom.xml Fri Apr 17 16:01:41 2020 -0400 --- a/pom.xml
@@ -105,137 +105,6 @@ +++ b/pom.xml
@@ -109,95 +109,6 @@
<url>${snapshot.repo}</url> <url>${snapshot.repo}</url>
</snapshotRepository> </snapshotRepository>
</distributionManagement> </distributionManagement>
- <profiles> - <profiles>
- <profile> - <profile>
- <id>2019-09</id> - <id>2020-12</id>
- <build>
- <plugins>
- <plugin>
- <groupId>org.eclipse.tycho</groupId>
- <artifactId>target-platform-configuration</artifactId>
- <version>${tycho.version}</version>
- <configuration>
- <target>
- <artifact>
- <groupId>org.openjdk.jmc</groupId>
- <artifactId>platform-definition-2020-12</artifactId>
- <version>8.0.0-SNAPSHOT</version>
- </artifact>
- </target>
- </configuration>
- </plugin>
- </plugins>
- </build>
- </profile>
- <profile>
- <id>2020-09</id>
- <activation> - <activation>
- <activeByDefault>true</activeByDefault> - <activeByDefault>true</activeByDefault>
- </activation> - </activation>
@ -21,8 +43,8 @@ diff -r c34e9deef71f pom.xml
- <target> - <target>
- <artifact> - <artifact>
- <groupId>org.openjdk.jmc</groupId> - <groupId>org.openjdk.jmc</groupId>
- <artifactId>platform-definition-2019-09</artifactId> - <artifactId>platform-definition-2020-09</artifactId>
- <version>7.1.1-SNAPSHOT</version> - <version>8.0.0-SNAPSHOT</version>
- </artifact> - </artifact>
- </target> - </target>
- </configuration> - </configuration>
@ -31,7 +53,7 @@ diff -r c34e9deef71f pom.xml
- </build> - </build>
- </profile> - </profile>
- <profile> - <profile>
- <id>2019-06</id> - <id>2020-06</id>
- <build> - <build>
- <plugins> - <plugins>
- <plugin> - <plugin>
@ -42,8 +64,8 @@ diff -r c34e9deef71f pom.xml
- <target> - <target>
- <artifact> - <artifact>
- <groupId>org.openjdk.jmc</groupId> - <groupId>org.openjdk.jmc</groupId>
- <artifactId>platform-definition-2019-06</artifactId> - <artifactId>platform-definition-2020-06</artifactId>
- <version>7.1.1-SNAPSHOT</version> - <version>8.0.0-SNAPSHOT</version>
- </artifact> - </artifact>
- </target> - </target>
- </configuration> - </configuration>
@ -52,7 +74,7 @@ diff -r c34e9deef71f pom.xml
- </build> - </build>
- </profile> - </profile>
- <profile> - <profile>
- <id>2019-03</id> - <id>2020-03</id>
- <build> - <build>
- <plugins> - <plugins>
- <plugin> - <plugin>
@ -63,71 +85,8 @@ diff -r c34e9deef71f pom.xml
- <target> - <target>
- <artifact> - <artifact>
- <groupId>org.openjdk.jmc</groupId> - <groupId>org.openjdk.jmc</groupId>
- <artifactId>platform-definition-2019-03</artifactId> - <artifactId>platform-definition-2020-03</artifactId>
- <version>7.1.1-SNAPSHOT</version> - <version>8.0.0-SNAPSHOT</version>
- </artifact>
- </target>
- </configuration>
- </plugin>
- </plugins>
- </build>
- </profile>
- <profile>
- <id>2018-12</id>
- <build>
- <plugins>
- <plugin>
- <groupId>org.eclipse.tycho</groupId>
- <artifactId>target-platform-configuration</artifactId>
- <version>${tycho.version}</version>
- <configuration>
- <target>
- <artifact>
- <groupId>org.openjdk.jmc</groupId>
- <artifactId>platform-definition-2018-12</artifactId>
- <version>7.1.1-SNAPSHOT</version>
- </artifact>
- </target>
- </configuration>
- </plugin>
- </plugins>
- </build>
- </profile>
- <profile>
- <id>2018-09</id>
- <build>
- <plugins>
- <plugin>
- <groupId>org.eclipse.tycho</groupId>
- <artifactId>target-platform-configuration</artifactId>
- <version>${tycho.version}</version>
- <configuration>
- <target>
- <artifact>
- <groupId>org.openjdk.jmc</groupId>
- <artifactId>platform-definition-2018-09</artifactId>
- <version>7.1.1-SNAPSHOT</version>
- </artifact>
- </target>
- </configuration>
- </plugin>
- </plugins>
- </build>
- </profile>
- <profile>
- <id>photon</id>
- <build>
- <plugins>
- <plugin>
- <groupId>org.eclipse.tycho</groupId>
- <artifactId>target-platform-configuration</artifactId>
- <version>${tycho.version}</version>
- <configuration>
- <target>
- <artifact>
- <groupId>org.openjdk.jmc</groupId>
- <artifactId>platform-definition-photon</artifactId>
- <version>7.1.1-SNAPSHOT</version>
- </artifact> - </artifact>
- </target> - </target>
- </configuration> - </configuration>

View File

@ -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 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src/main/java"/>
- <classpathentry kind="src" path="src/main/resources"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
<attributes>
<attribute name="maven.pomderived" value="true"/>
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 @@
</parent>
<artifactId>org.openjdk.jmc.flightrecorder.flameview</artifactId>
<packaging>eclipse-plugin</packaging>
-
- <properties>
- <download.maven.plugin.version>1.4.2</download.maven.plugin.version>
- <download-maven-plugin.phase>process-resources</download-maven-plugin.phase>
- <download-maven-plugin.output>${project.basedir}/src/main/resources/jslibs</download-maven-plugin.output>
- </properties>
-
- <build>
- <plugins>
- <plugin>
- <groupId>com.googlecode.maven-download-plugin</groupId>
- <artifactId>download-maven-plugin</artifactId>
- <version>${download.maven.plugin.version}</version>
- <executions>
- <execution>
- <id>d3-flamegraph-css</id>
- <phase>${download-maven-plugin.phase}</phase>
- <goals>
- <goal>wget</goal>
- </goals>
- <configuration>
- <url>https://cdn.jsdelivr.net/gh/spiermar/d3-flame-graph@2.0.3/dist/d3-flamegraph.css</url>
- <unpack>false</unpack>
- <outputDirectory>${download-maven-plugin.output}</outputDirectory>
- </configuration>
- </execution>
- <execution>
- <id>ie-html5shiv-js</id>
- <phase>${download-maven-plugin.phase}</phase>
- <goals>
- <goal>wget</goal>
- </goals>
- <configuration>
- <url>https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js</url>
- <unpack>false</unpack>
- <outputDirectory>${download-maven-plugin.output}</outputDirectory>
- </configuration>
- </execution>
- <execution>
- <id>ie-respond-js</id>
- <phase>${download-maven-plugin.phase}</phase>
- <goals>
- <goal>wget</goal>
- </goals>
- <configuration>
- <url>https://oss.maxcdn.com/respond/1.4.2/respond.min.js</url>
- <unpack>false</unpack>
- <outputDirectory>${download-maven-plugin.output}</outputDirectory>
- </configuration>
- </execution>
- <execution>
- <id>d3-v4-js</id>
- <phase>${download-maven-plugin.phase}</phase>
- <goals>
- <goal>wget</goal>
- </goals>
- <configuration>
- <url>https://d3js.org/d3.v4.min.js</url>
- <unpack>false</unpack>
- <outputDirectory>${download-maven-plugin.output}</outputDirectory>
- </configuration>
- </execution>
- <execution>
- <id>d3-tip-js</id>
- <phase>${download-maven-plugin.phase}</phase>
- <goals>
- <goal>wget</goal>
- </goals>
- <configuration>
- <url>https://cdnjs.cloudflare.com/ajax/libs/d3-tip/0.9.1/d3-tip.min.js</url>
- <unpack>false</unpack>
- <outputDirectory>${download-maven-plugin.output}</outputDirectory>
- </configuration>
- </execution>
- <execution>
- <id>d3-flamegraph-js</id>
- <phase>${download-maven-plugin.phase}</phase>
- <goals>
- <goal>wget</goal>
- </goals>
- <configuration>
- <url>https://cdn.jsdelivr.net/gh/spiermar/d3-flame-graph@2.0.3/dist/d3-flamegraph.min.js</url>
- <unpack>false</unpack>
- <outputDirectory>${download-maven-plugin.output}</outputDirectory>
- </configuration>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
</project>
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 @@
+<!DOCTYPE html "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+
+<head>
+ <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+ <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/gh/spiermar/d3-flame-graph@2.0.3/dist/d3-flamegraph.css">
+ <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
+ <!--[if lt IE 9]>
+ <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
+ <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+ <![endif]-->
+</head>
+
+<body onresize="resizeFlameGraph()">
+ <div id="chart"></div>
+
+ <script type="text/javascript" src="https://d3js.org/d3.v4.min.js"></script>
+ <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/d3-tip/0.9.1/d3-tip.min.js"></script>
+ <script type="text/javascript" src="https://cdn.jsdelivr.net/gh/spiermar/d3-flame-graph@2.0.3/dist/d3-flamegraph.min.js"></script>
+ <script type="text/javascript">
+
+ var flameGraph;
+ var currentJson;
+
+ function processGraph(jsonObj) {
+ flameGraph = d3.flamegraph()
+ .width(windowSize() * 0.9)
+ .transitionDuration(500)
+ .transitionEase(d3.easeCubic)
+ .sort(true)
+ .title("");
+ currentJson = jsonObj;
+ d3.select("#chart")
+ .datum(currentJson)
+ .call(flameGraph);
+ }
+
+ function windowSize() {
+ return Math.max(document.documentElement.clientWidth, window.innerWidth || 0);
+ }
+
+ function resizeFlameGraph() {
+ if (flameGraph) {
+ flameGraph.width(windowSize() * 0.9);
+ d3.select("#chart")
+ .datum(currentJson)
+ .call(flameGraph);
+ }
+ }
+
+ </script>
+</body>
+
+</html>
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 @@
-<!DOCTYPE html "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-
-<head>
- <meta http-equiv="content-type" content="text/html; charset=utf-8" />
- <style type="text/css">%1$s</style>
- <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
- <!--[if lt IE 9]>
- <script>%2$s</script>
- <![endif]-->
-</head>
-
-<body onresize="resizeFlameGraph()">
- <div id="chart"></div>
- <script type="text/javascript">%3$s</script>
- <script type="text/javascript">
-
- var flameGraph;
- var currentJson;
-
- function processGraph(jsonObj) {
- flameGraph = d3.flamegraph()
- .width(windowSize() * 0.9)
- .transitionDuration(500)
- .transitionEase(d3.easeCubic)
- .sort(true)
- .title("");
- currentJson = jsonObj;
- d3.select("#chart")
- .datum(currentJson)
- .call(flameGraph);
- }
-
- function windowSize() {
- return Math.max(document.documentElement.clientWidth, window.innerWidth || 0);
- }
-
- function resizeFlameGraph() {
- if (flameGraph) {
- flameGraph.width(windowSize() * 0.9);
- d3.select("#chart")
- .datum(currentJson)
- .call(flameGraph);
- }
- }
-
- </script>
-</body>
-</html>
\ No newline at end of file

View File

@ -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"/>
<plugin
- id="org.lz4.lz4-java"
+ id="lz4-java"
download-size="0"
install-size="0"
version="0.0.0"
diff --git a/application/org.openjdk.jmc.feature.flightrecorder/feature.xml b/application/org.openjdk.jmc.feature.flightrecorder/feature.xml
index cd6d0f9..22638fe 100644
--- a/application/org.openjdk.jmc.feature.flightrecorder/feature.xml
+++ b/application/org.openjdk.jmc.feature.flightrecorder/feature.xml
@@ -130,7 +130,7 @@
unpack="false"/>
<plugin
- id="org.lz4.lz4-java"
+ id="lz4-java"
download-size="0"
install-size="0"
version="0.0.0"
diff --git a/releng/third-party/pom.xml b/releng/third-party/pom.xml
index 8e0dd86..aba63c8 100644
--- a/releng/third-party/pom.xml
+++ b/releng/third-party/pom.xml
@@ -88,11 +88,6 @@
</artifact>
<artifact>
<id>org.lz4:lz4-java:${lz4.version}</id>
- <override>true</override>
- <instructions>
- <Bundle-Name>org.lz4.lz4-java</Bundle-Name>
- <Bundle-SymbolicName>org.lz4.lz4-java</Bundle-SymbolicName>
- </instructions>
</artifact>
<artifact>
<id>org.hdrhistogram:HdrHistogram:${hdrhistogram.version}</id>

View File

@ -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 @@
<Bug pattern="ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD" />
</Match>
+ <!-- Spotbugs says exception can't be thrown, but many of the attach API calls
+ before are declaring exceptions. -->
+ <Match>
+ <Class name="org.openjdk.jmc.browser.attach.LocalJVMToolkit$2" />
+ <Bug pattern="REC_CATCH_EXCEPTION" />
+ </Match>
+
<!-- Spotbugs says vm is guaranteed to be null at L394. Perhaps it depends on
JDK version, but it should indeed be able to be non-null. -->
<Match>

23
SOURCES/11-tycho.patch Normal file
View File

@ -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 @@
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
- <tycho.version>2.0.0</tycho.version>
+ <tycho.version>2.1.0</tycho.version>
<maven.buildnumber.version>1.4</maven.buildnumber.version>
<maven.deploy.version>2.8.2</maven.deploy.version>
<maven.directory.version>0.3.1</maven.directory.version>
@@ -144,7 +144,8 @@
<artifactId>tycho-compiler-plugin</artifactId>
<version>${tycho.version}</version>
<configuration>
- <useProjectSettings>false</useProjectSettings>
+ <useProjectSettings>false</useProjectSettings>
+ <deriveReleaseCompilerArgumentFromTargetLevel>false</deriveReleaseCompilerArgumentFromTargetLevel>
</configuration>
</plugin>
<plugin>

View File

@ -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);

View File

@ -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 @@
<import plugin="org.eclipse.e4.core.contexts"/>
</requires>
- <plugin
- id="com.make.chromium.cef.win32.win32.x86_64"
- os="win32"
- ws="win32"
- arch="x86_64"
- download-size="0"
- install-size="0"
- version="0.0.0"
- fragment="true"
- unpack="false"/>
-
<plugin
id="org.openjdk.jmc.attach"
download-size="0"

View File

@ -0,0 +1,130 @@
diff --git a/application/org.openjdk.jmc.flightrecorder.graphview/pom.xml b/application/org.openjdk.jmc.flightrecorder.graphview/pom.xml
index 9e05408..733fcd4 100644
--- a/application/org.openjdk.jmc.flightrecorder.graphview/pom.xml
+++ b/application/org.openjdk.jmc.flightrecorder.graphview/pom.xml
@@ -42,80 +42,4 @@
</parent>
<artifactId>org.openjdk.jmc.flightrecorder.graphview</artifactId>
<packaging>eclipse-plugin</packaging>
-
- <properties>
- <download.maven.plugin.version>1.4.2</download.maven.plugin.version>
- <download-maven-plugin.phase>process-resources</download-maven-plugin.phase>
- <download-maven-plugin.output>${project.basedir}/src/main/resources/jslibs</download-maven-plugin.output>
- <spotless.config.path>${basedir}/../../configuration/ide/eclipse/formatting/formatting.xml</spotless.config.path>
- <spotless.config.path.js>${basedir}/../../configuration/ide/eclipse/formatting/formattingjs.xml</spotless.config.path.js>
- </properties>
-
- <build>
- <plugins>
- <plugin>
- <groupId>com.googlecode.maven-download-plugin</groupId>
- <artifactId>download-maven-plugin</artifactId>
- <version>${download.maven.plugin.version}</version>
- <executions>
- <execution>
- <id>d3-v5-js</id>
- <phase>${download-maven-plugin.phase}</phase>
- <goals>
- <goal>wget</goal>
- </goals>
- <configuration>
- <url>https://d3js.org/d3.v5.min.js</url>
- <unpack>false</unpack>
- <outputDirectory>${download-maven-plugin.output}</outputDirectory>
- <skipCache>true</skipCache>
- <overwrite>true</overwrite>
- </configuration>
- </execution>
- <execution>
- <id>wasm</id>
- <phase>${download-maven-plugin.phase}</phase>
- <goals>
- <goal>wget</goal>
- </goals>
- <configuration>
- <url>https://unpkg.com/@hpcc-js/wasm@0.3.14/dist/index.js</url>
- <unpack>false</unpack>
- <outputDirectory>${download-maven-plugin.output}</outputDirectory>
- <skipCache>true</skipCache>
- <overwrite>true</overwrite>
- </configuration>
- </execution>
- <execution>
- <id>d3-graphviz-js</id>
- <phase>${download-maven-plugin.phase}</phase>
- <goals>
- <goal>wget</goal>
- </goals>
- <configuration>
- <url>https://unpkg.com/d3-graphviz@3.1.0/build/d3-graphviz.js</url>
- <unpack>false</unpack>
- <outputDirectory>${download-maven-plugin.output}</outputDirectory>
- <skipCache>true</skipCache>
- <overwrite>true</overwrite>
- </configuration>
- </execution>
- <execution>
- <id>graphvizlib-wasm</id>
- <phase>${download-maven-plugin.phase}</phase>
- <goals>
- <goal>wget</goal>
- </goals>
- <configuration>
- <url>https://unpkg.com/@hpcc-js/wasm@0.3.14/dist/graphvizlib.wasm</url>
- <unpack>false</unpack>
- <outputDirectory>${download-maven-plugin.output}</outputDirectory>
- <skipCache>true</skipCache>
- <overwrite>true</overwrite>
- </configuration>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
</project>
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 @@
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
- <script>%1$s</script>
- <script>%2$s</script>
- <script>%3$s</script>
</head>
<body>
+ <script type="text/javascript" src="https://d3js.org/d3.v5.min.js"></script>
+ <script type="text/javascript" src="https://unpkg.com/@hpcc-js/wasm@0.3.14/dist/index.js"></script>
+ <script type="text/javascript" src="https://unpkg.com/d3-graphviz@3.1.0/build/d3-graphviz.js"></script>
+ <script type="text/javascript" src="https://unpkg.com/@hpcc-js/wasm@0.3.14/dist/graphvizlib.wasm"></script>
<div id="graph" style="text-align: center;"></div>
<script type="text/javascript">

View File

@ -0,0 +1,12 @@
diff --git a/application/org.openjdk.jmc.rcp.product/pom.xml b/application/org.openjdk.jmc.rcp.product/pom.xml
index 2ebccfb..1cc8aca 100644
--- a/application/org.openjdk.jmc.rcp.product/pom.xml
+++ b/application/org.openjdk.jmc.rcp.product/pom.xml
@@ -74,7 +74,6 @@
<rootFolders>
<win32>${productName}</win32>
<macosx>${productName}.app</macosx>
- <linux>${productName}</linux>
</rootFolders>
</product>
</products>

View File

@ -1,28 +1,12 @@
# HG changeset patch
# Parent 9696af3e434734700a8c37680ce3742ab940eccb
diff --git a/application/org.openjdk.jmc.feature.core/feature.xml b/application/org.openjdk.jmc.feature.core/feature.xml diff --git a/application/org.openjdk.jmc.feature.core/feature.xml b/application/org.openjdk.jmc.feature.core/feature.xml
index 1eb682d..569f7e2 100644
--- a/application/org.openjdk.jmc.feature.core/feature.xml --- a/application/org.openjdk.jmc.feature.core/feature.xml
+++ b/application/org.openjdk.jmc.feature.core/feature.xml +++ b/application/org.openjdk.jmc.feature.core/feature.xml
@@ -161,13 +161,6 @@ @@ -168,7 +168,7 @@
unpack="false"/> unpack="false"/>
<plugin <plugin
- id="com.sun.mail.jakarta.mail" - id="com.sun.mail.jakarta.mail"
- download-size="0"
- install-size="0"
- version="0.0.0"
- unpack="false"/>
-
- <plugin
id="com.sun.activation.jakarta.activation"
download-size="0"
install-size="0"
@@ -175,7 +168,7 @@
unpack="false"/>
<plugin
- id="javax.mail.dsn"
+ id="com.sun.mail.javax.mail" + id="com.sun.mail.javax.mail"
download-size="0" download-size="0"
install-size="0" install-size="0"

View File

@ -0,0 +1,208 @@
diff --git a/application/org.openjdk.jmc.console.ui/src/main/java/org/openjdk/jmc/console/ui/editor/internal/ConsoleFormPage.java b/application/org.openjdk.jmc.console.ui/src/main/java/org/openjdk/jmc/console/ui/editor/internal/ConsoleFormPage.java
index a6a2a7c..a252f9e 100644
--- a/application/org.openjdk.jmc.console.ui/src/main/java/org/openjdk/jmc/console/ui/editor/internal/ConsoleFormPage.java
+++ b/application/org.openjdk.jmc.console.ui/src/main/java/org/openjdk/jmc/console/ui/editor/internal/ConsoleFormPage.java
@@ -43,7 +43,6 @@ import org.eclipse.jface.action.IToolBarManager;
import org.eclipse.jface.dialogs.IMessageProvider;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.resource.JFaceResources;
-import org.eclipse.jface.resource.ResourceLocator;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
@@ -54,6 +53,7 @@ import org.eclipse.ui.forms.IManagedForm;
import org.eclipse.ui.forms.IMessageManager;
import org.eclipse.ui.forms.editor.FormPage;
import org.eclipse.ui.forms.widgets.Form;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.openjdk.jmc.console.ui.ConsolePlugin;
import org.openjdk.jmc.console.ui.editor.IConsolePageContainer;
import org.openjdk.jmc.console.ui.editor.IConsolePageStateHandler;
@@ -175,7 +175,7 @@ public class ConsoleFormPage extends FormPage implements IConsolePageContainer {
String iconName = config.getAttribute(ATTRIBUTE_ICON);
if (iconName != null) {
String pluginId = config.getDeclaringExtension().getContributor().getName();
- ImageDescriptor iconDesc = ResourceLocator.imageDescriptorFromBundle(pluginId, iconName).orElse(null);
+ ImageDescriptor iconDesc = AbstractUIPlugin.imageDescriptorFromPlugin(pluginId, iconName);
if (iconDesc != null) {
icon = (Image) JFaceResources.getResources().get(iconDesc);
} else {
diff --git a/application/org.openjdk.jmc.flightrecorder.ext.jfx/src/main/java/org/openjdk/jmc/flightrecorder/ext/jfx/JfxPage.java b/application/org.openjdk.jmc.flightrecorder.ext.jfx/src/main/java/org/openjdk/jmc/flightrecorder/ext/jfx/JfxPage.java
index d0be24a..e3f1000 100644
--- a/application/org.openjdk.jmc.flightrecorder.ext.jfx/src/main/java/org/openjdk/jmc/flightrecorder/ext/jfx/JfxPage.java
+++ b/application/org.openjdk.jmc.flightrecorder.ext.jfx/src/main/java/org/openjdk/jmc/flightrecorder/ext/jfx/JfxPage.java
@@ -38,7 +38,6 @@ import java.util.List;
import java.util.stream.Stream;
import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.resource.ResourceLocator;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.SashForm;
import org.eclipse.swt.graphics.Image;
@@ -46,6 +45,7 @@ import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.forms.widgets.Form;
import org.eclipse.ui.forms.widgets.FormToolkit;
import org.eclipse.ui.forms.widgets.Section;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.openjdk.jmc.common.IState;
import org.openjdk.jmc.common.IWritableState;
import org.openjdk.jmc.common.item.Aggregators;
@@ -98,8 +98,8 @@ public class JfxPage extends AbstractDataPage {
@Override
public ImageDescriptor getImageDescriptor(IState state) {
- return ResourceLocator.imageDescriptorFromBundle("org.openjdk.jmc.flightrecorder.ext.jfx", //$NON-NLS-1$
- "icons/pulse.png").orElse(null); //$NON-NLS-1$
+ return AbstractUIPlugin.imageDescriptorFromPlugin("org.openjdk.jmc.flightrecorder.ext.jfx", //$NON-NLS-1$
+ "icons/pulse.png"); //$NON-NLS-1$
}
@Override
diff --git a/application/org.openjdk.jmc.flightrecorder.flameview/src/main/java/org/openjdk/jmc/flightrecorder/flameview/views/FlameGraphView.java b/application/org.openjdk.jmc.flightrecorder.flameview/src/main/java/org/openjdk/jmc/flightrecorder/flameview/views/FlameGraphView.java
index a8b76b0..bb57f10 100644
--- a/application/org.openjdk.jmc.flightrecorder.flameview/src/main/java/org/openjdk/jmc/flightrecorder/flameview/views/FlameGraphView.java
+++ b/application/org.openjdk.jmc.flightrecorder.flameview/src/main/java/org/openjdk/jmc/flightrecorder/flameview/views/FlameGraphView.java
@@ -69,7 +69,6 @@ import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.IToolBarManager;
import org.eclipse.jface.action.Separator;
import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.resource.ResourceLocator;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.swt.SWT;
@@ -93,6 +92,7 @@ import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.part.ViewPart;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.openjdk.jmc.common.item.IItemCollection;
import org.openjdk.jmc.common.item.ItemCollectionToolkit;
import org.openjdk.jmc.common.util.StringToolkit;
@@ -490,7 +490,7 @@ public class FlameGraphView extends ViewPart implements ISelectionListener {
}
private static ImageDescriptor flameviewImageDescriptor(String iconName) {
- return ResourceLocator.imageDescriptorFromBundle(PLUGIN_ID, DIR_ICONS + iconName).orElse(null); //$NON-NLS-1$
+ return AbstractUIPlugin.imageDescriptorFromPlugin(PLUGIN_ID, DIR_ICONS + iconName); //$NON-NLS-1$
}
private static String getIconBase64(String iconName) {
diff --git a/application/org.openjdk.jmc.flightrecorder.metadata/src/main/java/org/openjdk/jmc/flightrecorder/metadata/MetadataPage.java b/application/org.openjdk.jmc.flightrecorder.metadata/src/main/java/org/openjdk/jmc/flightrecorder/metadata/MetadataPage.java
index 748cebc..019ce5e 100644
--- a/application/org.openjdk.jmc.flightrecorder.metadata/src/main/java/org/openjdk/jmc/flightrecorder/metadata/MetadataPage.java
+++ b/application/org.openjdk.jmc.flightrecorder.metadata/src/main/java/org/openjdk/jmc/flightrecorder/metadata/MetadataPage.java
@@ -39,7 +39,6 @@ import java.util.stream.Stream;
import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.jface.layout.GridLayoutFactory;
import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.resource.ResourceLocator;
import org.eclipse.jface.viewers.ColumnViewerToolTipSupport;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.TreePath;
@@ -51,6 +50,7 @@ import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.forms.widgets.Form;
import org.eclipse.ui.forms.widgets.FormToolkit;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.openjdk.jmc.common.IState;
import org.openjdk.jmc.common.IWritableState;
import org.openjdk.jmc.common.item.IItemIterable;
@@ -231,7 +231,7 @@ public class MetadataPage extends AbstractDataPage {
@Override
public ImageDescriptor getImageDescriptor(IState state) {
- return ResourceLocator.imageDescriptorFromBundle(PLUGIN_ID, ICON).orElse(null);
+ return AbstractUIPlugin.imageDescriptorFromPlugin(PLUGIN_ID, ICON);
}
@Override
diff --git a/application/org.openjdk.jmc.rcp.application/src/main/java/org/openjdk/jmc/rcp/application/ApplicationPlugin.java b/application/org.openjdk.jmc.rcp.application/src/main/java/org/openjdk/jmc/rcp/application/ApplicationPlugin.java
index bcdf8b9..fff9296 100644
--- a/application/org.openjdk.jmc.rcp.application/src/main/java/org/openjdk/jmc/rcp/application/ApplicationPlugin.java
+++ b/application/org.openjdk.jmc.rcp.application/src/main/java/org/openjdk/jmc/rcp/application/ApplicationPlugin.java
@@ -39,7 +39,6 @@ import java.util.logging.Logger;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.resource.ImageRegistry;
-import org.eclipse.jface.resource.ResourceLocator;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.openjdk.jmc.common.io.IOToolkit;
import org.openjdk.jmc.rcp.application.p2.AddRepositoriesJob;
@@ -144,6 +143,6 @@ public class ApplicationPlugin extends AbstractUIPlugin {
* @return the image descriptor
*/
public static ImageDescriptor getImageDescriptor(String path) {
- return ResourceLocator.imageDescriptorFromBundle(PLUGIN_ID, path).orElse(null);
+ return AbstractUIPlugin.imageDescriptorFromPlugin(PLUGIN_ID, path);
}
}
diff --git a/application/org.openjdk.jmc.rjmx.ui/src/main/java/org/openjdk/jmc/rjmx/ui/internal/RemoveAction.java b/application/org.openjdk.jmc.rjmx.ui/src/main/java/org/openjdk/jmc/rjmx/ui/internal/RemoveAction.java
index 6380709..4a66939 100644
--- a/application/org.openjdk.jmc.rjmx.ui/src/main/java/org/openjdk/jmc/rjmx/ui/internal/RemoveAction.java
+++ b/application/org.openjdk.jmc.rjmx.ui/src/main/java/org/openjdk/jmc/rjmx/ui/internal/RemoveAction.java
@@ -34,16 +34,16 @@ package org.openjdk.jmc.rjmx.ui.internal;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.resource.ResourceLocator;
import org.eclipse.ui.forms.SectionPart;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.openjdk.jmc.ui.misc.MCSectionPart;
/**
* Action for removing a {@link SectionPart} in a {@link SectionPartManager}
*/
public class RemoveAction extends Action {
- private final static ImageDescriptor ICON = ResourceLocator.imageDescriptorFromBundle("org.eclipse.ui", //$NON-NLS-1$
- "icons/full/elcl16/close_view.gif").orElse(null); //$NON-NLS-1$
+ private final static ImageDescriptor ICON = AbstractUIPlugin.imageDescriptorFromPlugin("org.eclipse.ui", //$NON-NLS-1$
+ "icons/full/elcl16/close_view.gif"); //$NON-NLS-1$
final private SectionPartManager m_sectionPartmanager;
final private MCSectionPart m_part;
diff --git a/application/org.openjdk.jmc.ui/src/main/java/org/openjdk/jmc/ui/CoreImages.java b/application/org.openjdk.jmc.ui/src/main/java/org/openjdk/jmc/ui/CoreImages.java
index 5cd717b..d6a19a9 100644
--- a/application/org.openjdk.jmc.ui/src/main/java/org/openjdk/jmc/ui/CoreImages.java
+++ b/application/org.openjdk.jmc.ui/src/main/java/org/openjdk/jmc/ui/CoreImages.java
@@ -35,7 +35,7 @@ package org.openjdk.jmc.ui;
import java.util.MissingResourceException;
import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.resource.ResourceLocator;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
/**
* Storage for common ImageDescriptors.
@@ -177,7 +177,7 @@ public class CoreImages {
}
private static ImageDescriptor createDescriptor(String relPath) {
- ImageDescriptor desc = ResourceLocator.imageDescriptorFromBundle(UIPlugin.PLUGIN_ID, relPath).orElse(null);
+ ImageDescriptor desc = AbstractUIPlugin.imageDescriptorFromPlugin(UIPlugin.PLUGIN_ID, relPath);
if (desc == null) {
// FIXME: Throwing an exception has the development time advantage of being very intrusive. For release time, logging might be better.
throw new MissingResourceException("Missing image '" + relPath + '\'', ImageDescriptor.class.getName(), //$NON-NLS-1$
diff --git a/application/org.openjdk.jmc.ui/src/main/java/org/openjdk/jmc/ui/misc/ImageDescriptorAdapterFactory.java b/application/org.openjdk.jmc.ui/src/main/java/org/openjdk/jmc/ui/misc/ImageDescriptorAdapterFactory.java
index de112b0..e04e796 100644
--- a/application/org.openjdk.jmc.ui/src/main/java/org/openjdk/jmc/ui/misc/ImageDescriptorAdapterFactory.java
+++ b/application/org.openjdk.jmc.ui/src/main/java/org/openjdk/jmc/ui/misc/ImageDescriptorAdapterFactory.java
@@ -34,7 +34,8 @@ package org.openjdk.jmc.ui.misc;
import org.eclipse.core.runtime.IAdapterFactory;
import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.jface.resource.ResourceLocator;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+
import org.openjdk.jmc.ui.common.resource.IImageResource;
import org.openjdk.jmc.ui.common.resource.Resource;
import org.openjdk.jmc.ui.common.util.AdapterUtil;
@@ -49,8 +50,7 @@ public class ImageDescriptorAdapterFactory implements IAdapterFactory {
if (imageResource != null) {
Resource r = imageResource.getImageResource();
if (r != null) {
- return adapterType.cast(ResourceLocator
- .imageDescriptorFromBundle(r.getPluginId(), r.getResourcePath()).orElse(null));
+ return adapterType.cast(AbstractUIPlugin.imageDescriptorFromPlugin(r.getPluginId(), r.getResourcePath()));
}
}
IGraphical g = AdapterUtil.getAdapter(adaptableObject, IGraphical.class);

View File

@ -0,0 +1,21 @@
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 d356c2e..41dff7a 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
@@ -38,6 +38,7 @@ import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.text.MessageFormat;
+import java.util.Arrays;
import java.util.Base64;
import java.util.List;
import java.util.concurrent.ExecutorService;
@@ -172,7 +173,7 @@ public class GraphView extends ViewPart implements ISelectionListener {
private class NodeThresholdSelection extends Action implements IMenuCreator {
private Menu menu;
- private final List<Pair<String, Integer>> items = List.of(new Pair<>("100", 100), new Pair<>("500", 500),
+ private final List<Pair<String, Integer>> items = Arrays.asList(new Pair<>("100", 100), new Pair<>("500", 500),
new Pair<>("1000", 1000));
NodeThresholdSelection() {

View File

@ -1,36 +0,0 @@
diff --git a/application/org.openjdk.jmc.console.ui/META-INF/MANIFEST.MF b/application/org.openjdk.jmc.console.ui/META-INF/MANIFEST.MF
index a0bd643..926c1b3 100644
--- a/application/org.openjdk.jmc.console.ui/META-INF/MANIFEST.MF
+++ b/application/org.openjdk.jmc.console.ui/META-INF/MANIFEST.MF
@@ -10,7 +10,7 @@ Bundle-Localization: plugin
Require-Bundle: org.openjdk.jmc.rjmx.ui;visibility:=reexport,
org.eclipse.e4.core.contexts;bundle-version="1.3.0",
org.eclipse.e4.core.di;bundle-version="1.3.0";visibility:=reexport,
- javax.annotation;bundle-version="1.0.0";visibility:=reexport,
+ javax.annotation-api;bundle-version="1.2.0";visibility:=reexport,
javax.inject;bundle-version="1.0.0";visibility:=reexport,
org.openjdk.jmc.commands
Bundle-ActivationPolicy: lazy
@@ -24,7 +24,7 @@ Export-Package: org.openjdk.jmc.console.ui.actions;
org.openjdk.jmc.console.ui.messages.internal;x-friends:="org.openjdk.jmc.console.uitest",
org.openjdk.jmc.console.ui.preferences;x-friends:="org.openjdk.jmc.console.uitest"
Bundle-ClassPath: .
-Import-Package: javax.annotation;version="1.0.0",
+Import-Package: javax.annotation;version="1.2.0",
javax.inject;version="1.0.0"
Automatic-Module-Name: org.openjdk.jmc.console.ui
diff --git a/application/org.openjdk.jmc.feature.rcp/feature.xml b/application/org.openjdk.jmc.feature.rcp/feature.xml
index 828c3f2..cf4b462 100644
--- a/application/org.openjdk.jmc.feature.rcp/feature.xml
+++ b/application/org.openjdk.jmc.feature.rcp/feature.xml
@@ -84,7 +84,8 @@
<import plugin="org.eclipse.ui.intro"/>
<import plugin="org.eclipse.ui.net"/>
<import plugin="org.eclipse.equinox.event"/>
- <import plugin="javax.el"/>
+ <import plugin="javax.el-api"/>
+ <import plugin="jakarta.activation-api"/>
<import plugin="org.eclipse.equinox.p2.director.app"/>
</requires>

View File

@ -1,8 +1,8 @@
diff --git a/application/org.openjdk.jmc.feature.ide/feature.xml b/application/org.openjdk.jmc.feature.ide/feature.xml diff --git a/application/org.openjdk.jmc.feature.ide/feature.xml b/application/org.openjdk.jmc.feature.ide/feature.xml
index cd3dc7e..128cd0b 100644 index 8e2f469a..3544694a 100644
--- a/application/org.openjdk.jmc.feature.ide/feature.xml --- a/application/org.openjdk.jmc.feature.ide/feature.xml
+++ b/application/org.openjdk.jmc.feature.ide/feature.xml +++ b/application/org.openjdk.jmc.feature.ide/feature.xml
@@ -65,11 +65,4 @@ @@ -69,11 +69,4 @@
install-size="0" install-size="0"
version="0.0.0" version="0.0.0"
unpack="false"/> unpack="false"/>
@ -16,14 +16,14 @@ index cd3dc7e..128cd0b 100644
</feature> </feature>
\ No newline at end of file \ No newline at end of file
diff --git a/application/pom.xml b/application/pom.xml diff --git a/application/pom.xml b/application/pom.xml
index d185d9d..89fd033 100644 index adefed26..87cb00c0 100644
--- a/application/pom.xml --- a/application/pom.xml
+++ b/application/pom.xml +++ b/application/pom.xml
@@ -77,7 +77,6 @@ @@ -94,7 +94,6 @@
<module>org.openjdk.jmc.flightrecorder.ui</module> <module>org.openjdk.jmc.flightrecorder.ui</module>
<module>org.openjdk.jmc.greychart</module> <module>org.openjdk.jmc.greychart</module>
<module>org.openjdk.jmc.greychart.ui</module> <module>org.openjdk.jmc.greychart.ui</module>
- <module>org.openjdk.jmc.ide.jdt</module> - <module>org.openjdk.jmc.ide.jdt</module>
<module>org.openjdk.jmc.ide.launch</module> <module>org.openjdk.jmc.ide.launch</module>
<module>org.openjdk.jmc.ide.ui</module> <module>org.openjdk.jmc.ide.ui</module>
<module>org.openjdk.jmc.jdp</module> <module>org.openjdk.jmc.joverflow</module>

View File

@ -0,0 +1,16 @@
diff --git a/application/pom.xml b/application/pom.xml
index 3f179d4..5a4add3 100644
--- a/application/pom.xml
+++ b/application/pom.xml
@@ -175,11 +175,6 @@
<artifactId>flightrecorder.test</artifactId>
<version>8.0.0-SNAPSHOT</version>
</dependency>
- <dependency>
- <groupId>org.jacoco</groupId>
- <artifactId>jacoco-maven-plugin</artifactId>
- <version>0.8.3</version>
- </dependency>
</dependencies>
<build>
<plugins>

View File

@ -0,0 +1,185 @@
diff --git a/application/org.openjdk.jmc.flightrecorder.flameview/pom.xml b/application/org.openjdk.jmc.flightrecorder.flameview/pom.xml
index 89cc5e9a..d61b28c6 100644
--- a/application/org.openjdk.jmc.flightrecorder.flameview/pom.xml
+++ b/application/org.openjdk.jmc.flightrecorder.flameview/pom.xml
@@ -42,94 +42,4 @@
</parent>
<artifactId>org.openjdk.jmc.flightrecorder.flameview</artifactId>
<packaging>eclipse-plugin</packaging>
-
- <properties>
- <download.maven.plugin.version>1.6.0</download.maven.plugin.version>
- <download-maven-plugin.phase>process-resources</download-maven-plugin.phase>
- <download-maven-plugin.output>${project.basedir}/src/main/resources/jslibs</download-maven-plugin.output>
- <spotless.config.path>${basedir}/../../configuration/ide/eclipse/formatting/formatting.xml</spotless.config.path>
- <spotless.config.path.js>${basedir}/../../configuration/ide/eclipse/formatting/formattingjs.xml</spotless.config.path.js>
- </properties>
-
- <build>
- <plugins>
- <plugin>
- <groupId>com.googlecode.maven-download-plugin</groupId>
- <artifactId>download-maven-plugin</artifactId>
- <version>${download.maven.plugin.version}</version>
- <executions>
- <execution>
- <id>d3-flamegraph-css</id>
- <phase>${download-maven-plugin.phase}</phase>
- <goals>
- <goal>wget</goal>
- </goals>
- <configuration>
- <url>https://cdn.jsdelivr.net/npm/d3-flame-graph@4.0.6/dist/d3-flamegraph.css</url>
- <unpack>false</unpack>
- <outputDirectory>${download-maven-plugin.output}</outputDirectory>
- </configuration>
- </execution>
- <execution>
- <id>d3-v6-js</id>
- <phase>${download-maven-plugin.phase}</phase>
- <goals>
- <goal>wget</goal>
- </goals>
- <configuration>
- <url>https://d3js.org/d3.v6.min.js</url>
- <unpack>false</unpack>
- <outputDirectory>${download-maven-plugin.output}</outputDirectory>
- </configuration>
- </execution>
- <execution>
- <id>d3-flamegraph-tooltip-js</id>
- <phase>${download-maven-plugin.phase}</phase>
- <goals>
- <goal>wget</goal>
- </goals>
- <configuration>
- <url>https://cdn.jsdelivr.net/npm/d3-flame-graph@4.0.6/dist/d3-flamegraph-tooltip.js</url>
- <unpack>false</unpack>
- <outputDirectory>${download-maven-plugin.output}</outputDirectory>
- </configuration>
- </execution>
- <execution>
- <id>d3-flamegraph-js</id>
- <phase>${download-maven-plugin.phase}</phase>
- <goals>
- <goal>wget</goal>
- </goals>
- <configuration>
- <url>https://cdn.jsdelivr.net/npm/d3-flame-graph@4.0.6/dist/d3-flamegraph.js</url>
- <unpack>false</unpack>
- <outputDirectory>${download-maven-plugin.output}</outputDirectory>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <!-- The formatter currently dislikes the javascript for some reason, but this is how to enable JavaScript formatting
- <plugin>
- <groupId>com.diffplug.spotless</groupId>
- <artifactId>spotless-maven-plugin</artifactId>
- <version>${spotless.version}</version>
- <configuration>
- <formats>
- <format>
- <includes>
- <include>src/main/js/*.js</include>
- </includes>
- <eclipseWtp>
- <type>JS</type>
- <files>
- <file>${spotless.config.path.js}</file>
- </files>
- </eclipseWtp>
- </format>
- </formats>
- </configuration>
- </plugin>
- -->
- </plugins>
- </build>
</project>
diff --git a/application/org.openjdk.jmc.flightrecorder.flameview/src/main/java/org/openjdk/jmc/flightrecorder/flameview/views/FlameGraphView.java b/application/org.openjdk.jmc.flightrecorder.flameview/src/main/java/org/openjdk/jmc/flightrecorder/flameview/views/FlameGraphView.java
index dc43ba8c..a8b76b0c 100644
--- a/application/org.openjdk.jmc.flightrecorder.flameview/src/main/java/org/openjdk/jmc/flightrecorder/flameview/views/FlameGraphView.java
+++ b/application/org.openjdk.jmc.flightrecorder.flameview/src/main/java/org/openjdk/jmc/flightrecorder/flameview/views/FlameGraphView.java
@@ -61,7 +61,6 @@ import java.util.concurrent.Executors;
import java.util.concurrent.ThreadFactory;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.logging.Level;
-import java.util.stream.Collectors;
import java.util.stream.Stream;
import org.eclipse.jface.action.Action;
@@ -120,27 +119,17 @@ public class FlameGraphView extends ViewPart implements ISelectionListener {
private static final String TOOLTIP_DESCRIPTION = getFlameviewMessage(FLAMEVIEW_SELECT_HTML_TOOLTIP_DESCRIPTION);
private static final String HTML_PAGE;
static {
- // from: https://cdn.jsdelivr.net/npm/d3-flame-graph@4.0.6/dist/d3-flamegraph.css
- String cssD3Flamegraph = "jslibs/d3-flamegraph.css";
- // from: https://d3js.org/d3.v6.min.js
- String jsD3V6 = "jslibs/d3.v6.min.js";
- // from: https://cdn.jsdelivr.net/npm/d3-flame-graph@4.0.6/dist/d3-flamegraph-tooltip.js
- String jsD3Tip = "jslibs/d3-flamegraph-tooltip.js";
- // from: https://cdn.jsdelivr.net/npm/d3-flame-graph@4.0.6/dist/d3-flamegraph.js
- String jsD3FlameGraph = "jslibs/d3-flamegraph.js";
- // jmc flameview coloring, tooltip and other functions
String jsFlameviewName = "flameview.js";
String cssFlameview = "flameview.css";
- String jsD3 = loadLibraries(jsD3V6, jsD3FlameGraph, jsD3Tip);
- String styleheets = loadLibraries(cssD3Flamegraph, cssFlameview);
+ String styleheets = fileContent(cssFlameview);
String jsFlameviewColoring = fileContent(jsFlameviewName);
String magnifierIcon = getIconBase64(ImageConstants.ICON_MAGNIFIER);
// formatter arguments for the template: %1 - CSSs stylesheets,
- // %2 - Search Icon Base64, %3 - 3rd party scripts, %4 - Flameview Coloring,
- HTML_PAGE = String.format(fileContent("page.template"), styleheets, magnifierIcon, jsD3, jsFlameviewColoring);
+ // %2 - Search Icon Base64, %3 - Flameview Coloring,
+ HTML_PAGE = String.format(fileContent("page.template"), styleheets, magnifierIcon, jsFlameviewColoring);
}
private static final int MODEL_EXECUTOR_THREADS_NUMBER = 3;
@@ -490,14 +479,6 @@ public class FlameGraphView extends ViewPart implements ISelectionListener {
}
}
- 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));
diff --git a/application/org.openjdk.jmc.flightrecorder.flameview/src/main/resources/page.template b/application/org.openjdk.jmc.flightrecorder.flameview/src/main/resources/page.template
index 67bc3c75..a01571d9 100644
--- a/application/org.openjdk.jmc.flightrecorder.flameview/src/main/resources/page.template
+++ b/application/org.openjdk.jmc.flightrecorder.flameview/src/main/resources/page.template
@@ -3,6 +3,7 @@
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+ <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/d3-flame-graph@4.0.6/dist/d3-flamegraph.css"></link>
<style type="text/css">%1$s</style>
<style type="text/css" media="print">
body {
@@ -21,12 +22,12 @@
<img src="data:image/png;base64, %2$s" width="12" height="12">
</div>
<div id="chart"></div>
+ <script type="text/javascript" src="https://d3js.org/d3.v6.min.js"></script>
+ <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/d3-flame-graph@4.0.6/dist/d3-flamegraph.js"></script>
+ <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/d3-flame-graph@4.0.6/dist/d3-flamegraph-tooltip.js"></script>
<script type="text/javascript">
%3$s
</script>
- <script type="text/javascript">
- %4$s
- </script>
<script type="text/javascript">
const minSearchTextSize = 3;

View File

@ -1,15 +0,0 @@
diff -r 07b99eac9056 application/pom.xml
--- a/application/pom.xml Fri Apr 17 17:57:23 2020 -0400
+++ b/application/pom.xml Fri Apr 17 17:58:31 2020 -0400
@@ -160,11 +160,6 @@
<artifactId>flightrecorder.rules.jdk</artifactId>
<version>7.1.1</version>
</dependency>
- <dependency>
- <groupId>org.jacoco</groupId>
- <artifactId>jacoco-maven-plugin</artifactId>
- <version>0.8.3</version>
- </dependency>
</dependencies>
<build>
<plugins>

View File

@ -0,0 +1,14 @@
diff --git a/application/org.openjdk.jmc.rcp.product/jmc.product b/application/org.openjdk.jmc.rcp.product/jmc.product
index 54b2590..ba10585 100644
--- a/application/org.openjdk.jmc.rcp.product/jmc.product
+++ b/application/org.openjdk.jmc.rcp.product/jmc.product
@@ -56,8 +56,7 @@
</programArgsMac>
<programArgsWin>
</programArgsWin>
- <vmArgs>-XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockDiagnosticVMOptions -XX:+DebugNonSafepoints -XX:FlightRecorderOptions=stackdepth=128 -XX:+FlightRecorder -XX:StartFlightRecording=name=JMC_Default,maxsize=100m -Djava.net.preferIPv4Stack=true -Djdk.attach.allowAttachSelf=true --add-exports=java.xml/com.sun.org.apache.xerces.internal.parsers=ALL-UNNAMED --add-exports=jdk.internal.jvmstat/sun.jvmstat.monitor=ALL-UNNAMED --add-exports=java.management/sun.management=ALL-UNNAMED --add-exports=java.management/sun.management.counter.perf=ALL-UNNAMED --add-exports=jdk.management.agent/jdk.internal.agent=ALL-UNNAMED --add-exports=jdk.attach/sun.tools.attach=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=jdk.attach/sun.tools.attach=ALL-UNNAMED
- -Dsun.java.command=JMC
+ <vmArgs>-XX:+IgnoreUnrecognizedVMOptions -XX:+UnlockDiagnosticVMOptions -XX:+DebugNonSafepoints -Djava.net.preferIPv4Stack=true -Djdk.attach.allowAttachSelf=true --add-exports=java.xml/com.sun.org.apache.xerces.internal.parsers=ALL-UNNAMED --add-exports=jdk.internal.jvmstat/sun.jvmstat.monitor=ALL-UNNAMED --add-exports=java.management/sun.management=ALL-UNNAMED --add-exports=java.management/sun.management.counter.perf=ALL-UNNAMED --add-exports=jdk.management.agent/jdk.internal.agent=ALL-UNNAMED --add-exports=jdk.attach/sun.tools.attach=ALL-UNNAMED --add-opens=java.base/java.net=ALL-UNNAMED --add-opens=jdk.attach/sun.tools.attach=ALL-UNNAMED
</vmArgs>
<vmArgsLin>--add-exports=java.desktop/sun.awt.X11=ALL-UNNAMED
</vmArgsLin>

View File

@ -46,12 +46,11 @@ function _symlink {
pushd $1 pushd $1
# owasp-java-encoder # owasp-java-encoder
_sym org.owasp.encoder_1.2.2.jar /usr/share/java/owasp-java-encoder/encoder.jar _sym org.owasp.encoder_1.2.2.jar /usr/share/java/owasp-java-encoder/encoder.jar
# jaf # jakarta-activation
_sym com.sun.activation.jakarta.activation_1.2.1.jar /usr/share/java/jaf/jakarta.activation.jar _sym com.sun.activation.jakarta.activation_1.2.1.jar /usr/share/java/jaf/jakarta.activation.jar
_sym jakarta.activation-api_1.2.1.jar /usr/share/java/jaf/jakarta.activation-api.jar
# HdrHistogram # HdrHistogram
_sym org.hdrhistogram.HdrHistogram_2.1.11.jar /usr/share/java/HdrHistogram.jar _sym org.hdrhistogram.HdrHistogram_2.1.11.jar /usr/share/java/HdrHistogram.jar
# jmc-core # jmc-core
_symlink org.openjdk.jmc.common_ common.jar _symlink org.openjdk.jmc.common_ common.jar
_symlink org.openjdk.jmc.flightrecorder_ flightrecorder.jar _symlink org.openjdk.jmc.flightrecorder_ flightrecorder.jar
_symlink org.openjdk.jmc.flightrecorder.rules_ flightrecorder.rules.jar _symlink org.openjdk.jmc.flightrecorder.rules_ flightrecorder.rules.jar

View File

@ -1,18 +1,18 @@
# Version # Version
%global major 7 %global major 8
%global minor 1 %global minor 0
%global patchlevel 1 %global patchlevel 0
# Revision # Revision
%global revnum 5 %global revnum 8
# set to 1 for hg snapshots, 0 for release # set to 1 for snapshots, 0 for release
%global usesnapshot 0 %global usesnapshot 0
# SNAPSHOT version # SNAPSHOT version
%global hgrevhash e67446b5fc9d %global revhash 8ab40bfb565c1002e84bb238a620ab81bb64eceb
%global hgrevdate 20200422 %global revdate 20210212
%global tarball_name jmc7-%{hgrevhash} %global tarball_name jmc-%{revhash}
# Install jmc in /usr/lib/jmc (arch-specific and multilib exempt) # Install jmc in /usr/lib/jmc (arch-specific and multilib exempt)
%global _jmcdir %{_prefix}/lib/%{name} %global _jmcdir %{_prefix}/lib/%{name}
@ -20,7 +20,7 @@
%global debug_package %{nil} %global debug_package %{nil}
%if %{usesnapshot} %if %{usesnapshot}
%global releasestr %{revnum}.%{hgrevdate}hg%{hgrevhash} %global releasestr %{revnum}.%{revdate}
%else %else
%global releasestr %{revnum} %global releasestr %{revnum}
%endif %endif
@ -50,57 +50,69 @@ Summary: JDK Mission Control is a profiling and diagnostics tool
License: UPL License: UPL
URL: http://openjdk.java.net/projects/jmc/ URL: http://openjdk.java.net/projects/jmc/
Source0: https://hg.openjdk.java.net/jmc/jmc7/archive/%{hgrevhash}.tar.gz Source0: https://github.com/openjdk/jmc/archive/%{revhash}.tar.gz
Source1: %{name}.desktop Source1: %{name}.desktop
Source2: %{name}.1 Source2: %{name}.1
Source3: symlink_libs.sh Source3: symlink_libs.sh
# Remove optional twitter related functionality # Remove optional twitter related functionality
Patch0: 0-remove-twitter.patch Patch0: 0-remove-twitter.patch
# Update javamail dependency names
Patch1: 1-fix-javamail.patch
# Update javax dependency names to match what is found in Fedora
Patch2: 2-javax.patch
# Remove maven build profiles that won't be used in local build # Remove maven build profiles that won't be used in local build
Patch3: 3-remove-profiles.patch Patch1: 1-remove-profiles.patch
# Remove localization files that currently cannot be supported # Remove localization files that currently cannot be supported
# due to a packaging issue for Eclipse language packs # due to a packaging issue for Eclipse language packs
# eclipse-nls-ja and eclipse-nls-zh # eclipse-nls-ja and eclipse-nls-zh
# They currently provide multiple archs within the same package # They currently provide multiple archs within the same package
# and the local build system cannot fulfill dependencies from them # and the local build system cannot fulfill dependencies from them
Patch4: 4-remove-localization.patch Patch2: 2-remove-localization.patch
# Remove unused module org.openjdk.jmc.ide.jdt # Remove unused module org.openjdk.jmc.ide.jdt
Patch5: 5-remove-ide-jdt.patch Patch3: 3-remove-ide-jdt.patch
# Remove unused remote repository definition # Remove unused remote repository definition
Patch6: 6-remove-buchen-repo.patch Patch4: 4-remove-buchen-repo.patch
# Add dependency on org. hamcrest-core to provide class used in unit tests # Add dependency on org. hamcrest-core to provide class used in unit tests
Patch7: 7-add-hamcrest.patch Patch5: 5-add-hamcrest.patch
# Remove windows and mac arches # Remove windows and mac arches
Patch8: 8-remove-arch.patch Patch6: 6-remove-arch.patch
# Remove unnecessary dependency # Remove unnecessary dependency
Patch9: 9-remove-jacoco-dep.patch Patch7: 7-remove-jacoco-dep.patch
# Revert downloading of flameview assets from the web # Revert downloading of flameview assets from the web
Patch10: 10-revert-flameview.patch Patch8: 8-revert-flameview.patch
# Backport of JMC-6554 to add jvm vendor information retrieval and commercial features checks # Drop JFR flags (temporary)
Patch11: 11-6554.patch Patch9: 9-update-flags.patch
# Backport of JMC-6692 to prevent JMC from prompting the user # Revert the adjusted lz4-java name as seen in jmc
# to enable commercial features when using a JDK8 JFR-enabled JVM Patch10: 10-revert-lz4-java-name-override.patch
Patch12: 12-6692.patch # Patch pom.xml Use to tycho version 2.1
Patch11: 11-tycho.patch
# Remove Chromium (currently Windows-only) from the plugin list
Patch12: 12-remove-chromium.patch
# Revert downloading of graphview assets from the web
Patch13: 13-revert-graphview.patch
# Simplify the path to the jmc product
Patch14: 14-revert-6852.patch
# Update javamail dependency names
Patch15: 15-fix-javamail.patch
# Revert usage of ResourceLocator as it isn't available in Eclipse 4.12
Patch16: 16-revert-resourcelocator.patch
# Revert usage of List.of in GraphView
Patch17: 17-revert-list-of.patch
ExclusiveArch: x86_64 ExclusiveArch: x86_64
BuildRequires: desktop-file-utils BuildRequires: desktop-file-utils
BuildRequires: java-11-openjdk
BuildRequires: libappstream-glib
BuildRequires: maven-local BuildRequires: maven-local
BuildRequires: osgi(javax.annotation-api)
BuildRequires: eclipse-pde BuildRequires: eclipse-pde
BuildRequires: tycho BuildRequires: tycho
BuildRequires: HdrHistogram >= 2.1.11
BuildRequires: javamail BuildRequires: javamail
BuildRequires: mvn(org.commonjava.maven.plugins:directory-maven-plugin) BuildRequires: mvn(org.commonjava.maven.plugins:directory-maven-plugin)
BuildRequires: mvn(com.sun.activation:jakarta.activation) BuildRequires: mvn(com.sun.activation:jakarta.activation)
BuildRequires: mvn(org.openjdk.jmc:common) BuildRequires: mvn(org.openjdk.jmc:common)
BuildRequires: HdrHistogram >= 2.1.11 BuildRequires: osgi(org.openjdk.jmc.flightrecorder.test)
BuildRequires: osgi(javax.annotation-api)
Requires: java-openjdk >= 1:1.8 Requires: java-openjdk >= 1:1.8
@ -139,12 +151,21 @@ applications running locally or deployed in production environments.
%patch10 -p1 %patch10 -p1
%patch11 -p1 %patch11 -p1
%patch12 -p1 %patch12 -p1
%patch13 -p1
%patch14 -p1
%patch15 -p1
%patch16 -p1
%patch17 -p1
%pom_disable_module releng %pom_disable_module releng
%pom_disable_module l10n application %pom_disable_module l10n application
%pom_disable_module org.openjdk.jmc.updatesite.ide application %pom_disable_module org.openjdk.jmc.updatesite.ide application
%pom_disable_module org.openjdk.jmc.updatesite.rcp application %pom_disable_module org.openjdk.jmc.updatesite.rcp application
# disable tests that require the use of jfr
%pom_disable_module org.openjdk.jmc.rjmx.services.jfr.test application/tests
%pom_disable_module org.openjdk.jmc.flightrecorder.controlpanel.ui.test application/tests
%pom_remove_plugin com.github.spotbugs:spotbugs-maven-plugin %pom_remove_plugin com.github.spotbugs:spotbugs-maven-plugin
%pom_remove_plugin :maven-enforcer-plugin %pom_remove_plugin :maven-enforcer-plugin
@ -162,9 +183,10 @@ TYCHO_ENV="<environment><os>linux</os><ws>gtk</ws><arch>%{eclipse_arch}</arch></
%pom_xpath_set "pom:configuration/pom:environments" "$TYCHO_ENV" %pom_xpath_set "pom:configuration/pom:environments" "$TYCHO_ENV"
%build %build
# some tests require large heap and fail with OOM # some tests require large heap and fail with OOM
# depending on the builder resources # depending on the builder resources
%mvn_build -j -- -Dmaven.test.failure.ignore=true %mvn_build -j -- -Dmaven.test.failure.ignore=true -DbuildId=rhel -DbuildNumber=%{revhash} -Dbuild.date=%{revdate}
%install %install
@ -222,21 +244,54 @@ sed -i "/.SH FILES/a .I %{_sysconfdir}/%{name}.ini" %{buildroot}%{_mandir}/man1/
%{_datadir}/applications/%{name}.desktop %{_datadir}/applications/%{name}.desktop
%changelog %changelog
* Wed Feb 24 2021 Alex Macdonald <almacdon@redhat.com> - 8.0.0-8
- Set the buildId, buildNumber, and build.date during maven build
* Fri Feb 19 2021 Alex Macdonald <almacdon@redhat.com> - 8.0.0-7
- Fix incorrect macro for name
* Fri Feb 19 2021 Alex Macdonald <almacdon@redhat.com> - 8.0.0-6
- Revert previous JAVA_HOME export
- Add patch to remove use of List.of in GraphView
* Fri Feb 19 2021 Alex Macdonald <almacdon@redhat.com> - 8.0.0-5
- Export JAVA_HOME to be openjdk 11
* Thu Feb 18 2021 Alex Macdonald <almacdon@redhat.com> - 8.0.0-4
- Revert usage of ResourceLocator to be eclipse 4.12 compliant
* Wed Feb 17 2021 Alex Macdonald <almacdon@redhat.com> - 8.0.0-3
- Revert removal of fix-javamail patch
* Wed Feb 17 2021 Alex Macdonald <almacdon@redhat.com> - 8.0.0-2
- Revert osgi reference from jakarta.annotation to javax.annotation
* Fri Feb 12 2021 Alex Macdonald <almacdon@redhat.com> - 8.0.0-1
- Update to jmc8 branch commit 8ab40bf
* Thu Apr 23 2020 Alex Macdonald <almacdon@redhat.com> - 7.1.1-5 * Thu Apr 23 2020 Alex Macdonald <almacdon@redhat.com> - 7.1.1-5
- Update jacoco removal patch - Update jacoco removal patch
* Thu Apr 23 2020 Alex Macdonald <almacdon@redhat.com> - 7.1.1-4 * Thu Apr 23 2020 Alex Macdonald <almacdon@redhat.com> - 7.1.1-4
- Update to latest commit e67446b5fc9d - Update to latest commit e67446b5fc9d
* Fri Apr 17 2020 Alex Macdonald <almacdon@redhat.com> - 7.1.1-3 * Fri Apr 17 2020 Alex Macdonald <almacdon@redhat.com> - 7.1.1-3
- include jmc-core in the directories to search in symlink_libs.sh - include jmc-core in the directories to search in symlink_libs.sh
* Fri Apr 17 2020 Alex Macdonald <almacdon@redhat.com> - 7.1.1-2 * Fri Apr 17 2020 Alex Macdonald <almacdon@redhat.com> - 7.1.1-2
- Remove jacoco from the pom and disable coverage - Remove jacoco from the pom and disable coverage
* Thu Apr 16 2020 Alex Macdonald <almacdon@redhat.com> - 7.1.1-1 * Thu Apr 16 2020 Alex Macdonald <almacdon@redhat.com> - 7.1.1-1
- Updated to version 7.1.1 - Updated to version 7.1.1
* Thu Nov 14 2019 Jie Kang <jkang@redhat.com> - 7.0.0-4 * Thu Nov 14 2019 Jie Kang <jkang@redhat.com> - 7.0.0-4
- Fix requires - Fix requires
* Wed Nov 13 2019 Jie Kang <jkang@redhat.com> - 7.0.0-3 * Wed Nov 13 2019 Jie Kang <jkang@redhat.com> - 7.0.0-3
- Fix exclusions - Fix exclusions
* Wed Nov 13 2019 Jie Kang <jkang@redhat.com> - 7.0.0-2 * Wed Nov 13 2019 Jie Kang <jkang@redhat.com> - 7.0.0-2
- Update require and provide exclusions - Update require and provide exclusions
* Tue Mar 12 2019 Jie Kang <jkang@redhat.com> - 7.0.0-1 * Tue Mar 12 2019 Jie Kang <jkang@redhat.com> - 7.0.0-1
- Initial package - Initial package