# HG changeset patch # Parent 37a493c3f60b2015c37630807015b217b98106cf diff -r 37a493c3f60b -r bbf0648beb5c application/org.openjdk.jmc.flightrecorder.flameview/.classpath --- a/application/org.openjdk.jmc.flightrecorder.flameview/.classpath Tue Nov 12 16:25:24 2019 +0100 +++ b/application/org.openjdk.jmc.flightrecorder.flameview/.classpath Mon Nov 25 17:57:23 2019 -0500 @@ -1,7 +1,6 @@ - diff -r 37a493c3f60b -r bbf0648beb5c application/org.openjdk.jmc.flightrecorder.flameview/build.properties --- a/application/org.openjdk.jmc.flightrecorder.flameview/build.properties Tue Nov 12 16:25:24 2019 +0100 +++ b/application/org.openjdk.jmc.flightrecorder.flameview/build.properties Mon Nov 25 17:57:23 2019 -0500 @@ -1,5 +1,4 @@ -source.. = src/main/java/,\ - src/main/resources/ +source.. = src/main/java/ output.. = target/classes/ bin.includes = META-INF/,\ .,\ diff -r 37a493c3f60b -r bbf0648beb5c application/org.openjdk.jmc.flightrecorder.flameview/pom.xml --- a/application/org.openjdk.jmc.flightrecorder.flameview/pom.xml Tue Nov 12 16:25:24 2019 +0100 +++ b/application/org.openjdk.jmc.flightrecorder.flameview/pom.xml Mon Nov 25 17:57:23 2019 -0500 @@ -41,94 +41,4 @@ org.openjdk.jmc.flightrecorder.flameview eclipse-plugin - - - 1.4.2 - process-resources - ${project.basedir}/src/main/resources/jslibs - - - - - - com.googlecode.maven-download-plugin - download-maven-plugin - ${download.maven.plugin.version} - - - d3-flamegraph-css - ${download-maven-plugin.phase} - - wget - - - https://cdn.jsdelivr.net/gh/spiermar/d3-flame-graph@2.0.3/dist/d3-flamegraph.css - false - ${download-maven-plugin.output} - - - - ie-html5shiv-js - ${download-maven-plugin.phase} - - wget - - - https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js - false - ${download-maven-plugin.output} - - - - ie-respond-js - ${download-maven-plugin.phase} - - wget - - - https://oss.maxcdn.com/respond/1.4.2/respond.min.js - false - ${download-maven-plugin.output} - - - - d3-v4-js - ${download-maven-plugin.phase} - - wget - - - https://d3js.org/d3.v4.min.js - false - ${download-maven-plugin.output} - - - - d3-tip-js - ${download-maven-plugin.phase} - - wget - - - https://cdnjs.cloudflare.com/ajax/libs/d3-tip/0.9.1/d3-tip.min.js - false - ${download-maven-plugin.output} - - - - d3-flamegraph-js - ${download-maven-plugin.phase} - - wget - - - https://cdn.jsdelivr.net/gh/spiermar/d3-flame-graph@2.0.3/dist/d3-flamegraph.min.js - false - ${download-maven-plugin.output} - - - - - - diff -r 37a493c3f60b -r bbf0648beb5c application/org.openjdk.jmc.flightrecorder.flameview/src/main/java/org/openjdk/jmc/flightrecorder/flameview/views/FlameGraphView.java --- a/application/org.openjdk.jmc.flightrecorder.flameview/src/main/java/org/openjdk/jmc/flightrecorder/flameview/views/FlameGraphView.java Tue Nov 12 16:25:24 2019 +0100 +++ b/application/org.openjdk.jmc.flightrecorder.flameview/src/main/java/org/openjdk/jmc/flightrecorder/flameview/views/FlameGraphView.java Mon Nov 25 17:57:23 2019 -0500 @@ -34,14 +34,11 @@ package org.openjdk.jmc.flightrecorder.flameview.views; import java.io.IOException; - -import java.text.MessageFormat; import java.util.concurrent.CancellationException; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.logging.Level; -import java.util.stream.Collectors; import java.util.stream.Stream; import org.eclipse.jface.action.Action; @@ -77,32 +74,7 @@ import org.openjdk.jmc.ui.misc.DisplayToolkit; public class FlameGraphView extends ViewPart implements ISelectionListener { - private static final String HTML_PAGE; - static { - // from: https://cdn.jsdelivr.net/gh/spiermar/d3-flame-graph@2.0.3/dist/d3-flamegraph.css - String cssD3Flamegraph = "jslibs/d3-flamegraph.css"; - // from: https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js - String jsHtml5shiv = "jslibs/html5shiv.min.js"; - // from: https://oss.maxcdn.com/respond/1.4.2/respond.min.js - String jsRespond = "jslibs/respond.min.js"; - // from: https://d3js.org/d3.v4.min.js - String jsD3V4 = "jslibs/d3.v4.min.js"; - // from: https://cdnjs.cloudflare.com/ajax/libs/d3-tip/0.9.1/d3-tip.min.js - String jsD3Tip = "jslibs/d3-tip.min.js"; - // from: https://cdn.jsdelivr.net/gh/spiermar/d3-flame-graph@2.0.3/dist/d3-flamegraph.min.js - String jsD3FlameGraph = "jslibs/d3-flamegraph.min.js"; - - String jsIeLibraries = loadLibraries(jsHtml5shiv, jsRespond); - String jsD3Libraries = loadLibraries(jsD3V4, jsD3Tip, jsD3FlameGraph); - - // formatter arguments for the template: %1 - CSSs, %2 - IE9 specific scripts, %3 - 3rd party scripts - HTML_PAGE = String.format(fileContent("page.template"), - fileContent(cssD3Flamegraph), - jsIeLibraries, - jsD3Libraries); - } - - private static final ExecutorService MODEL_EXECUTOR = Executors.newFixedThreadPool(1); + private static ExecutorService MODEL_EXECUTOR = Executors.newFixedThreadPool(1); private FrameSeparator frameSeparator; private Browser browser; @@ -207,6 +179,13 @@ }, MODEL_EXECUTOR); } + private static Void handleModelBuildException(Throwable ex) { + if (!(ex.getCause() instanceof CancellationException)) { + FlightRecorderUI.getDefault().getLogger().log(Level.SEVERE, "Failed to build stacktrace view model", ex); //$NON-NLS-1$ + } + return null; + } + private void setModel(TraceNode root) { if (!browser.isDisposed() && !root.equals(currentRoot)) { currentRoot = root; @@ -215,21 +194,19 @@ } private void setViewerInput(TraceNode root) { - browser.setText(HTML_PAGE); - browser.addProgressListener(new ProgressAdapter() { - @Override - public void completed(ProgressEvent event) { - browser.removeProgressListener(this); - browser.execute(String.format("processGraph(%s);", toJSon(root))); - } - }); - } - - private static Void handleModelBuildException(Throwable ex) { - if (!(ex.getCause() instanceof CancellationException)) { - FlightRecorderUI.getDefault().getLogger().log(Level.SEVERE, "Failed to build stacktrace view model", ex); //$NON-NLS-1$ + try { + browser.setText(StringToolkit.readString(FlameGraphView.class.getResourceAsStream("page.html"))); + browser.addProgressListener(new ProgressAdapter() { + @Override + public void completed(ProgressEvent event) { + browser.removeProgressListener(this); + browser.execute(String.format("processGraph(%s);", toJSon(root))); + } + }); + } catch (IOException e) { + browser.setText(e.getMessage()); + e.printStackTrace(); } - return null; } private static String toJSon(TraceNode root) { @@ -261,23 +238,4 @@ private static String toJSonKeyValue(String key, String value) { return "\"" + key + "\": " + "\"" + value + "\""; } - - private static String loadLibraries(String... libs) { - if(libs == null || libs.length == 0) { - return ""; - } else { - return Stream.of(libs).map(FlameGraphView::fileContent).collect(Collectors.joining("\n")); - } - } - - private static String fileContent(String fileName){ - try { - return StringToolkit.readString(FlameGraphView.class.getClassLoader().getResourceAsStream(fileName)); - } catch (IOException e) { - FlightRecorderUI.getDefault().getLogger() - .log(Level.WARNING, MessageFormat - .format("Could not load script \"{0}\",\"{1}\"", fileName, e.getMessage())); //$NON-NLS-1$ - return ""; - } - } } diff -r 37a493c3f60b -r bbf0648beb5c application/org.openjdk.jmc.flightrecorder.flameview/src/main/java/org/openjdk/jmc/flightrecorder/flameview/views/page.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/application/org.openjdk.jmc.flightrecorder.flameview/src/main/java/org/openjdk/jmc/flightrecorder/flameview/views/page.html Mon Nov 25 17:57:23 2019 -0500 @@ -0,0 +1,54 @@ + + + + + + + + + + + +
+ + + + + + + + diff -r 37a493c3f60b -r bbf0648beb5c application/org.openjdk.jmc.flightrecorder.flameview/src/main/resources/page.template --- a/application/org.openjdk.jmc.flightrecorder.flameview/src/main/resources/page.template Tue Nov 12 16:25:24 2019 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,49 +0,0 @@ - - - - - - - - - - - -
- - - - \ No newline at end of file