This is an automated email from the ASF dual-hosted git repository. yangzhg pushed a commit to branch bdbje in repository https://gitbox.apache.org/repos/asf/doris-thirdparty.git
The following commit(s) were added to refs/heads/bdbje by this push: new 145bf9f [fix](compile) Remove jconsole.jar dependency for bdbje (#1) 145bf9f is described below commit 145bf9f2c5d7b2bb381e8f52b8514a78e671309f Author: Lei Zhang <1091517...@qq.com> AuthorDate: Thu Aug 4 11:08:44 2022 +0800 [fix](compile) Remove jconsole.jar dependency for bdbje (#1) --- pom.xml | 7 - .../java/com/sleepycat/je/jmx/plugin/JEStats.java | 49 - .../com/sleepycat/je/jmx/plugin/JEStatsPlugin.java | 47 - .../java/com/sleepycat/je/jmx/plugin/Stats.java | 1366 -------------------- .../com/sleepycat/je/jmx/plugin/StatsPlugin.java | 91 -- .../sleepycat/je/jmx/plugin/StatsSwingWorker.java | 58 - .../com/sleepycat/je/jmx/plugin/package-info.java | 17 - .../services/com.sun.tools.jconsole.JConsolePlugin | 1 - .../sleepycat/je/rep/jmx/plugin/RepJEStats.java | 50 - .../je/rep/jmx/plugin/RepJEStatsPlugin.java | 56 - .../sleepycat/je/rep/jmx/plugin/package-info.java | 17 - .../services/com.sun.tools.jconsole.JConsolePlugin | 1 - 12 files changed, 1760 deletions(-) diff --git a/pom.xml b/pom.xml index c81cec9..5cc0e63 100644 --- a/pom.xml +++ b/pom.xml @@ -66,13 +66,6 @@ <artifactId>checker-qual</artifactId> <version>3.22.2</version> </dependency> - <dependency> - <groupId>sun.jdk</groupId> - <artifactId>jconsole</artifactId> - <version>jdk</version> - <scope>system</scope> - <systemPath>${java.home}/../lib/jconsole.jar</systemPath> - </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> diff --git a/src/main/java/com/sleepycat/je/jmx/plugin/JEStats.java b/src/main/java/com/sleepycat/je/jmx/plugin/JEStats.java deleted file mode 100644 index b940267..0000000 --- a/src/main/java/com/sleepycat/je/jmx/plugin/JEStats.java +++ /dev/null @@ -1,49 +0,0 @@ -/*- - * Copyright (C) 2002, 2018, Oracle and/or its affiliates. All rights reserved. - * - * This file was distributed by Oracle as part of a version of Oracle Berkeley - * DB Java Edition made available at: - * - * http://www.oracle.com/technetwork/database/database-technologies/berkeleydb/downloads/index.html - * - * Please see the LICENSE file included in the top-level directory of the - * appropriate version of Oracle Berkeley DB Java Edition for a copy of the - * license and additional information. - */ - -package com.sleepycat.je.jmx.plugin; - -import java.util.HashMap; - -import javax.management.MBeanServerConnection; - -import com.sleepycat.je.EnvironmentStats; -import com.sleepycat.je.jmx.JEMonitor; - -public class JEStats extends Stats { - private static final long serialVersionUID = 2327923744424679603L; - - public JEStats(MBeanServerConnection connection) { - super(connection); - } - - @Override - protected void initVariables() { - statsTitles = EnvironmentStats.getStatGroupTitles(); - opName = JEMonitor.OP_ENV_STAT; - mBeanNamePrefix = JEStatsPlugin.mBeanNamePrefix; - } - - @SuppressWarnings("unchecked") - @Override - protected void generateTips() { - try { - tips = (HashMap) connection.invoke - (objName, JEMonitor.OP_GET_TIPS, - new Object[] {}, new String[] {}); - updateTips(); - } catch (Exception e) { - e.printStackTrace(); - } - } -} diff --git a/src/main/java/com/sleepycat/je/jmx/plugin/JEStatsPlugin.java b/src/main/java/com/sleepycat/je/jmx/plugin/JEStatsPlugin.java deleted file mode 100644 index d371b10..0000000 --- a/src/main/java/com/sleepycat/je/jmx/plugin/JEStatsPlugin.java +++ /dev/null @@ -1,47 +0,0 @@ -/*- - * Copyright (C) 2002, 2018, Oracle and/or its affiliates. All rights reserved. - * - * This file was distributed by Oracle as part of a version of Oracle Berkeley - * DB Java Edition made available at: - * - * http://www.oracle.com/technetwork/database/database-technologies/berkeleydb/downloads/index.html - * - * Please see the LICENSE file included in the top-level directory of the - * appropriate version of Oracle Berkeley DB Java Edition for a copy of the - * license and additional information. - */ - -package com.sleepycat.je.jmx.plugin; - -import java.util.LinkedHashMap; - -import javax.management.ObjectName; -import javax.swing.JPanel; - -public class JEStatsPlugin extends StatsPlugin { - public static String mBeanNamePrefix = - "com.sleepycat.je.jmx:name=*JEMonitor(*"; - - @Override - protected void initTabs() { - if (tabs == null) { - tabs = new LinkedHashMap<String, JPanel>(); - try { - ObjectName name = new ObjectName(mBeanNamePrefix); - int count = getContext().getMBeanServerConnection(). - queryNames(name, null).size(); - - if (count > 0) { - Stats status = - new JEStats(getContext().getMBeanServerConnection()); - tabs.put("JE Statistics", status); - stats.add(status); - } else { - tabs.put("JE Statistics", new JPanel()); - } - } catch (Exception e) { - e.printStackTrace(); - } - } - } -} diff --git a/src/main/java/com/sleepycat/je/jmx/plugin/Stats.java b/src/main/java/com/sleepycat/je/jmx/plugin/Stats.java deleted file mode 100644 index 8a811fb..0000000 --- a/src/main/java/com/sleepycat/je/jmx/plugin/Stats.java +++ /dev/null @@ -1,1366 +0,0 @@ -/*- - * Copyright (C) 2002, 2018, Oracle and/or its affiliates. All rights reserved. - * - * This file was distributed by Oracle as part of a version of Oracle Berkeley - * DB Java Edition made available at: - * - * http://www.oracle.com/technetwork/database/database-technologies/berkeleydb/downloads/index.html - * - * Please see the LICENSE file included in the top-level directory of the - * appropriate version of Oracle Berkeley DB Java Edition for a copy of the - * license and additional information. - */ - -package com.sleepycat.je.jmx.plugin; - -import java.awt.BorderLayout; -import java.awt.Color; -import java.awt.Component; -import java.awt.Dimension; -import java.awt.FlowLayout; -import java.awt.GridLayout; -import java.awt.LayoutManager; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.KeyEvent; -import java.awt.event.KeyListener; -import java.awt.event.MouseEvent; -import java.awt.event.MouseListener; -import java.awt.event.MouseMotionListener; -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.StringTokenizer; -import java.util.Timer; -import java.util.TimerTask; -import java.util.TreeMap; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.CopyOnWriteArrayList; - -import javax.management.MBeanServerConnection; -import javax.management.ObjectName; -import javax.swing.BorderFactory; -import javax.swing.JButton; -import javax.swing.JCheckBox; -import javax.swing.JCheckBoxMenuItem; -import javax.swing.JComboBox; -import javax.swing.JComponent; -import javax.swing.JFileChooser; -import javax.swing.JFrame; -import javax.swing.JLabel; -import javax.swing.JMenuItem; -import javax.swing.JOptionPane; -import javax.swing.JPanel; -import javax.swing.JPopupMenu; -import javax.swing.JScrollPane; -import javax.swing.JSplitPane; -import javax.swing.JTable; -import javax.swing.JTextField; -import javax.swing.ListSelectionModel; -import javax.swing.SwingWorker; -import javax.swing.ToolTipManager; -import javax.swing.filechooser.FileFilter; -import javax.swing.filechooser.FileNameExtensionFilter; -import javax.swing.table.AbstractTableModel; -import javax.swing.table.DefaultTableCellRenderer; - -import sun.tools.jconsole.PlotterPanel; -import sun.tools.jconsole.TimeComboBox; -import sun.tools.jconsole.Plotter.Unit; - -public abstract class Stats extends JPanel { - - private static final long serialVersionUID = 6041540234044035106L; - private static final String STATS_COLLECTOR = "JEMonitor Stats Collector"; - - private boolean hideZeroValue = false; - private boolean doLog = false; - private int mBeansNum; - private int selectedRow = -1; - - private long statsIntervalMillis = 10000; - - /* Collection variables used in this file. */ - private Map<ObjectName, LogObject> logMap; - private Map<String, Boolean> shownStats; - private Map<ObjectName, Map<String, String>> valueStore; - private List<GraphFrame> frameList; - protected TreeMap<String, ObjectName> comboToObjects; - - /* - * Collections used to save Stats and ObjectNames for showing in tab. - * These values are set by the statsCollector Timer thread, and may - * be concurrently read by other threads, such as the JConsole refresh - * thread. - */ - private Map<ObjectName, Map<String, String>> savedStats; - private volatile List<ObjectName> savedObjectNames; - - /* Combo box for selecting a MBean. */ - private final int mBeanComboBoxLength = 50; - private JComboBox mBeansComboBox; - private ActionListener mBeanComboBoxListener; - - /* Stats table settings. */ - private JCheckBox hideZeroValueBox; - private JCheckBox cumulativeStatsBox; - private JTextField statsIntervalText; - - /* Stats logging settings. */ - private JButton saveLogButton; - private JButton startLogButton; - private JButton stopLogButton; - private SaveLogFileChooser fileChooser; - - /* Stats table components. */ - private JTable statsTable; - private StatsTableModel statsModel; - private JPopupMenu popup; - private JCheckBoxMenuItem logMenuItem; - private JMenuItem graphMenuItem; - - /* MBean related parameters, customized in subclasses. */ - private final Object[] envStatParams = - new Object[] {true /* setClear */, true /* setFast */ }; - private final String[] signature = - new String[] {"java.lang.boolean", "java.lang.boolean" }; - protected static MBeanServerConnection connection; - protected String[] statsTitles; - protected String opName; - protected String mBeanNamePrefix; - protected ObjectName objName; - protected Map<String, String> tips; - - private Timer statsCollector; - private final TimerTask drawNewStats = new StatsCollectionTask(false); - - public Stats(MBeanServerConnection connection) { - Stats.connection = connection; - - setLayout(new FlowLayout()); - ToolTipManager.sharedInstance().setDismissDelay(10000); - - initVariables(); - - /* Initiate those containers. */ - initContainers(); - - /* Create GUI components. */ - initGUIs(); - - /* Start collecting stats. */ - statsCollector = new Timer(STATS_COLLECTOR); - statsCollector.scheduleAtFixedRate(new StatsCollectionTask(), - 0, statsIntervalMillis); - - /* Draw the stats tab when the plugin is first started. */ - drawNewStats.run(); - } - - public StatsTableModel getTModel() { - return statsModel; - } - - protected abstract void initVariables(); - - protected abstract void generateTips(); - - private void initContainers() { - valueStore = new HashMap<ObjectName, Map<String, String>>(); - logMap = new HashMap<ObjectName, LogObject>(); - shownStats = new HashMap<String, Boolean>(); - comboToObjects = new TreeMap<String, ObjectName>(); - frameList = new ArrayList<GraphFrame>(); - - savedStats = new ConcurrentHashMap<ObjectName, Map<String, String>>(); - savedObjectNames = new ArrayList<ObjectName>(); - - for (ObjectName name : getBeansNames()) { - Map<String, String> storeMap = - new LinkedHashMap<String, String>(); - Map<String, String> map = generateStats(name); - for (Map.Entry<String, String> entry : map.entrySet()) { - String key = entry.getKey(); - if (key.contains(":")) { - storeMap.put(key.substring(0, key.indexOf(":")), "0"); - } else { - storeMap.put(key, "0"); - } - } - valueStore.put(name, storeMap); - logMap.put(name, new LogObject()); - comboToObjects.put(getMBeanComboBoxString(name), name); - } - - for (int i = 0; i < statsTitles.length; i++) { - shownStats.put(statsTitles[i], true); - } - - this.objName = getFirstObjectName(); - this.mBeansNum = logMap.size(); - - generateTips(); - } - - private ObjectName getFirstObjectName() { - return comboToObjects.firstEntry().getValue(); - } - - /* Update the tips to html format suitable. */ - protected void updateTips() { - for (Map.Entry<String, String> entry : tips.entrySet()) { - String value = entry.getValue(); - String formatStr = new String(); - boolean stop = false; - while (!stop) { - if (value.length() <= 80) { - stop = true; - formatStr += value; - } else { - int endIndex = 79; - String phrase = value.substring(0, endIndex); - if (!phrase.endsWith(" ")) { - endIndex = phrase.lastIndexOf(" "); - } - formatStr += value.substring(0, endIndex) + "<br>"; - value = value.substring(endIndex, value.length()); - } - } - formatStr = "<html>" + formatStr + "</html>"; - tips.put(entry.getKey(), formatStr); - } - } - - private void initGUIs() { - /* panel for selecting a specific environment. */ - JPanel mBeanPanel = createMBeanPanel(); - /* panel for stat settings. */ - JPanel setPanel = createSettingPanel(); - /* controls for logging stats to a file. */ - JPanel logPanel = createLogPanel(); - /* display of stats values. */ - JPanel statsPanel = createStatsPanel(); - - createMenu(); - - add(mBeanPanel); - add(setPanel); - add(logPanel); - add(statsPanel); - } - - /* Create the GUI Setting part. */ - private JPanel createMBeanPanel() { - mBeansComboBox = new JComboBox(); - mBeansComboBox.setPrototypeDisplayValue(generateString()); - mBeanComboBoxListener = new BeanComboBoxListener(); - initMBeanComboBox(getBeansNames()); - - return generatePanel(new JComponent[] { - new JLabel("Choose JE Environment:"), mBeansComboBox }, - new FlowLayout(), "Choose JE MBean"); - } - - /* Fill MBeanComboBox with blank spaces if MBean name is too short. */ - private String generateString() { - String length = new String(); - for (int i = 0; i < mBeanComboBoxLength; i++) { - length += "X"; - } - - return length; - } - - /* Initialize the contents of the mbean combobox. */ - private void initMBeanComboBox(List<ObjectName> names) { - /* If the number of MBeans changes, update the map also. */ - if (names.size() != comboToObjects.size()) { - comboToObjects = new TreeMap<String, ObjectName>(); - for (ObjectName name : names) { - comboToObjects.put(getMBeanComboBoxString(name), name); - } - } - - for (Map.Entry<String, ObjectName> entry : comboToObjects.entrySet()) { - mBeansComboBox.addItem(entry.getKey()); - } - mBeansComboBox.setSelectedIndex(0); - mBeansComboBox.addActionListener(mBeanComboBoxListener); - } - - /* Return the MBean name to display in the mBeanComboBox. */ - private String getMBeanComboBoxString(ObjectName name) { - String envHome = name.toString().substring - (name.toString().indexOf("(") + 1, name.toString().length() - 1); - if (envHome.length() > 40) { - envHome = envHome.substring(0, 19) + "..." + - envHome.substring(envHome.length() - 20, envHome.length()); - } - - return envHome; - } - - /* Create the stats setting panel. */ - private JPanel createSettingPanel() { - cumulativeStatsBox = new JCheckBox("Display cumulative stats", false); - cumulativeStatsBox.addActionListener(new ClearStatsBoxListener()); - - hideZeroValueBox = new JCheckBox("Hide zero values", false); - hideZeroValueBox.addActionListener(new HideZeroValueBoxListener()); - - statsIntervalText = new JTextField("10", 4); - statsIntervalText.addKeyListener(new StatsIntervalListener()); - - return generatePanel(new JComponent[] { - new JLabel("Collection interval (secs):"), - statsIntervalText, - cumulativeStatsBox, - hideZeroValueBox} , - new FlowLayout(), "Settings"); - } - - /* Create the log setting panel. */ - private JPanel createLogPanel() { - startLogButton = - createButton("Start Recording", new StartLogListener()); - startLogButton.setEnabled(false); - stopLogButton = createButton("Stop Recording", new StopLogListener()); - stopLogButton.setEnabled(false); - saveLogButton = createButton("Record Statistics To ...", - new SaveLogListener(this)); - - return generatePanel(new JComponent[] { - startLogButton, stopLogButton, saveLogButton }, - new FlowLayout(), "Record Statistics"); - } - - /* Create Table Panel. */ - private JPanel createStatsPanel() { - /* Create the stats type choosen panel. */ - JPanel leftPanel = new JPanel(); - leftPanel.setLayout(new GridLayout(15, 1)); - leftPanel.add(new JLabel(" Stats to Display")); - for (int i = 0; i < statsTitles.length; i++) { - createCheckBox(statsTitles[i], leftPanel); - } - JScrollPane left = new JScrollPane(leftPanel); - - /* Add JE stats table. */ - statsModel = new StatsTableModel(); - statsTable = new JTable(statsModel); - statsTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); - statsTable.setDefaultRenderer(String.class, new StringRenderer()); - statsTable.setIntercellSpacing(new Dimension(6, 3)); - statsTable.setRowHeight(statsTable.getRowHeight() + 4); - statsTable.addMouseListener(new TableMouseListener()); - statsTable.addMouseMotionListener(new TableMouseMotionListener()); - JScrollPane right = new JScrollPane(statsTable); - right.setAlignmentX(Component.CENTER_ALIGNMENT); - - JSplitPane splitPane = - new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, left, right); - splitPane.setOneTouchExpandable(true); - splitPane.setResizeWeight(0.3); - - /* Add table to a panel and set the layout. */ - return generatePanel(new JComponent[] { splitPane }, - new FlowLayout(), "JE Stats Table"); - } - - /* Create the pop up menu for the stats shown table. */ - private void createMenu() { - popup = new JPopupMenu(); - logMenuItem = new JCheckBoxMenuItem("Log This Stat"); - logMenuItem.addActionListener(new LogMenuListener()); - popup.add(logMenuItem); - graphMenuItem = new JMenuItem("Graph This Stat"); - graphMenuItem.addActionListener(new GraphMenuListener()); - popup.add(graphMenuItem); - } - - /* Create CheckBox for choosing shown stats. */ - private void createCheckBox(String title, JPanel container) { - JCheckBox checkBox = new JCheckBox(title, true); - checkBox.addActionListener(new StatsTypeListener()); - container.add(checkBox); - } - - private JButton createButton(String text, ActionListener listener) { - JButton button = new JButton(text); - button.addActionListener(listener); - - return button; - } - - /* - * Add provided components to a panel using assigned layout - * with a broder surrounded. - */ - private JPanel generatePanel(JComponent[] components, - LayoutManager layout, - String panelName) { - JPanel panel = new JPanel(layout); - for (JComponent component : components) { - panel.add(component); - } - - /* If the panelName is none, then no border would be added. */ - if (!"none".equals(panelName)) { - panel.setBorder - (BorderFactory.createCompoundBorder - (BorderFactory.createTitledBorder(panelName), - BorderFactory.createEmptyBorder(0, 0, 0, 0))); - } - - return panel; - } - - /* Set the connection for this plugin. */ - public void setConnection(MBeanServerConnection connection) { - Stats.connection = connection; - } - - /* Get the connection to the MBeanServer. */ - public static MBeanServerConnection getConnection() { - return connection; - } - - /* Remove a GraphFrame from the list and release the resouces. */ - public void removeGraphFrame(ObjectName beanName, - String graphStats) { - CopyOnWriteArrayList<GraphFrame> list = - new CopyOnWriteArrayList<GraphFrame>(frameList); - for (GraphFrame frame : list) { - if (frame.getBeanName().equals(beanName) && - frame.getStatsName().equals(graphStats)) { - frameList.remove(frame); - frame = null; - } - } - } - - /* Get results for table stats. */ - public synchronized List<Map.Entry<String, String>> getResultsList() { - - if (savedObjectNames == null || savedObjectNames.size() == 0) { - return null; - } - - /* Refresh the table if there is an MBean change. */ - repaintComboBox(savedObjectNames); - - Map<String, String> displayStats = savedStats.get(objName); - - if (displayStats == null || displayStats.size() == 0) { - return null; - } - - /* Remove the those stats we don't want to show on table. */ - removeUnShownTypeStats(displayStats); - - /* Hide zero values if we choose to hide them. */ - if (hideZeroValue) { - hideZeroValues(displayStats); - } - - /* If no stats are removed from shown, add a null stats on table. */ - if (displayStats.size() == 0) { - displayStats.put("No Stats", ""); - } - - List<Map.Entry<String, String>> list = - new ArrayList<Map.Entry<String, String>>(displayStats.entrySet()); - - return list; - } - - /* - * Go through the stats map to remove those stats which belongs to the - * unshown types chosen by users. - */ - private void removeUnShownTypeStats(Map<String, String> map) { - Object[] keys = map.keySet().toArray(); - for (Map.Entry<String, Boolean> stats : shownStats.entrySet()) { - - /* If the stats is not chosen, remove it from map. */ - if (!stats.getValue()) { - for (Object key : keys) { - if (key.toString().contains(stats.getKey())) { - map.remove(key.toString()); - } - } - } - } - emptyArray(keys); - keys = null; - } - - /* Empty the array to release the resources it requires. */ - private static void emptyArray(Object[] array) { - for (int i = 0; i < array.length; i++) { - array[i] = null; - } - } - - /* - * Hide zero values from the stats table, if all stats belongs to a type - * are all zero values, then the whole type would remove from table, - * including the stats title, like: Compression stats, etc. - */ - private void hideZeroValues(Map<String, String> map) { - Object[] keys = map.keySet().toArray(); - for (Map.Entry<String, Boolean> entry : shownStats.entrySet()) { - boolean deleteAll = true; - for (Object key : keys) { - String value = map.get(key.toString()); - /* Ensure we are operating on a non-deleted stat. */ - if (key.toString().contains(entry.getKey()) && value != null) { - if (!(value.equals(""))) { - if (value.equals("0")) { - map.remove(key.toString()); - } else { - deleteAll = false; - } - } - } - } - if (deleteAll) { - map.remove(entry.getKey()); - } - } - emptyArray(keys); - keys = null; - } - - /* Get results of the invoked MBean operation. */ - private synchronized Map<String, String> generateStats(ObjectName name) { - Map<String, String> map = new LinkedHashMap<String, String>(); - try { - if (connection != null && - connection.queryNames(name, null) != null) { - String status = (String) - connection.invoke(name, opName, envStatParams, signature); - StringTokenizer st1 = new StringTokenizer(status, "\n"); - String title = null; - while (st1.hasMoreTokens()) { - String expression = st1.nextToken(); - if (expression != null) { - if (expression.indexOf("=") < 0) { - StringTokenizer st2 = - new StringTokenizer(expression, ":"); - title = st2.nextToken(); - map.put(title, ""); - } else { - StringTokenizer st2 = - new StringTokenizer(expression, "="); - String stats = " " + st2.nextToken(); - String value = st2.nextToken().trim(); - map.put(stats + ":" + title, value); - } - } - } - } - } catch (javax.management.InstanceNotFoundException e) { - - /* - * If the connection is broken while it is trying to invoke, close - * and release all resources. - */ - forceClose(); - } catch (Exception e) { - e.printStackTrace(); - } - - return map; - } - - /* Stop and null the log and graph thread, close all the file writers. */ - private void forceClose() { - setConnection(null); - for (Map.Entry<ObjectName, LogObject> item : logMap.entrySet()) { - item.getValue().closeFileWriter(); - } - } - - /* Return the JEMonitor MBean names in this application. */ - private synchronized ArrayList<ObjectName> getBeansNames() { - if (connection == null) { - return null; - } - - ArrayList<ObjectName> names = null; - try { - ObjectName name = new ObjectName(mBeanNamePrefix); - - if (connection.queryNames(name, null).size() != 0) { - names = new ArrayList<ObjectName> - (connection.queryNames(name, null)); - } - } catch (java.rmi.RemoteException e) { - - /* - * Because the interval of plugin and the logging thread is not the - * same, sometimes logging thread would try to invoke a non-active - * connection and throws out RemoteException. We need to stop the - * thread and release the resources. - */ - forceClose(); - } catch (Exception e) { - e.printStackTrace(); - } - - return names; - } - - /* Repaint mbeans combobox if the number of MBeans changes. */ - private void repaintComboBox(List<ObjectName> names) { - if (names == null) { - return; - } - - try { - if (names.size() != mBeansNum && names.size() != 0) { - mBeansComboBox.removeActionListener(mBeanComboBoxListener); - mBeansComboBox.removeAllItems(); - initMBeanComboBox(names); - - /* - * Remove it from the logging map, release the resources - * acquired by this MBean. - */ - for (Map.Entry<ObjectName, LogObject> entry : - logMap.entrySet()) { - boolean find = false; - for (ObjectName name : names) { - if (name.equals(entry.getKey())) { - find = true; - break; - } - } - if (!find) { - logMap.get(entry.getKey()).closeFileWriter(); - logMap.remove(entry.getKey()); - valueStore.remove(entry.getKey()); - break; - } - } - objName = getFirstObjectName(); - mBeansNum = names.size(); - } - } catch (Exception e) { - e.printStackTrace(); - } - } - - /* Write chosen stats to the log. */ - private void writeToLog(Map<String, String> map, - ObjectName currentName) { - try { - if (map == null) - return; - - /* If the log name is not set, return. */ - LogObject item = logMap.get(currentName); - if (item.getLogName() == null) - return; - - StringBuilder buffer = new StringBuilder(); - getCSVOutput(buffer, map, false, currentName); - buffer.append("\n"); - item.writeLog(buffer.toString()); - } catch (Exception e) { - e.printStackTrace(); - } - } - - /* Make the stats output in CSV format. */ - private void getCSVOutput(StringBuilder buffer, - Map<String, String> map, - boolean init, - ObjectName name) { - LogObject item = logMap.get(name); - - if (map == null || map.size() == 0) { - return; - } - - /* Before write to log, remove those unlog stats. */ - if (item != null) { - Object[] keys = map.keySet().toArray(); - for (String title : item.getTurnOff()) { - for (Object key : keys) { - if (key.toString().contains(title)) { - map.remove(key.toString()); - } - } - } - emptyArray(keys); - keys = null; - } - item = null; - - if (!init) { - buffer.append(System.currentTimeMillis()); - } else { - buffer.append("TIME"); - } - for (int i = 0; i < statsTitles.length; i++) { - map.remove(statsTitles[i]); - } - if (map.size() > 0) { - buffer.append(","); - int count = 1; - for (Map.Entry<String, String> entry : map.entrySet()) { - String title = entry.getKey().substring - (0, entry.getKey().indexOf(":")).trim(); - if (!init) { - title = "\"" + entry.getValue() + "\""; - } - if (count < map.size()) - title = title + ","; - buffer.append(title); - count++; - } - } - } - - /* Return a new SwingWorker for UI update. */ - private SwingWorker<?,?> newSwingWorker() { - ArrayList<Stats> list = new ArrayList<Stats>(); - list.add(this); - - return new StatsSwingWorker(list); - } - - /* Writing and graphing stats according to the specified interval. */ - private void writeLogAndGraphing(ObjectName objectName, - Map<String, String> values) { - if ((values == null) || (values.size() == 0)) { - return; - } - - /* Graphing stats. */ - if (frameList.size() > 0) { - for (GraphFrame frame : frameList) { - if (frame.getBeanName().equals(objectName)) { - frame.writeData(values); - } - } - } - - /* Write stats to csv file. */ - if (doLog) { - writeToLog(values, objectName); - } - } - - /* A utility class for recording the environment-related information. */ - private class LogObject { - private String logName; - private FileWriter csvOutput = null; - private ArrayList<String> turnOffIndex = new ArrayList<String>(); - - public void setLogName(String logName) { - if (logName.contains(".csv")) { - this.logName = logName; - } else { - this.logName = logName + ".csv"; - } - } - - public String getLogName() { - return logName; - } - - public void addTurnOff(String title) { - turnOffIndex.add(title); - } - - public ArrayList<String> getTurnOff() { - return turnOffIndex; - } - - /* Paint the CSV file header. */ - public void initCSVOutput(ObjectName objectName) { - if (logName != null) { - try { - csvOutput = new FileWriter(new File(logName), true); - StringBuilder buffer = new StringBuilder(); - Map<String, String> map = generateStats(objectName); - getCSVOutput(buffer, map, true, objectName); - csvOutput.append(buffer.toString() + "\n"); - csvOutput.flush(); - } catch (IOException e) { - e.printStackTrace(); - } - } - } - - /* Write stats to log. */ - public void writeLog(String stats) { - try { - if (csvOutput != null) { - csvOutput.append(stats); - csvOutput.flush(); - } - } catch (Exception e) { - e.printStackTrace(); - } - } - - /* Close the file writer. */ - public void closeFileWriter() { - try { - if (csvOutput != null) - csvOutput.close(); - csvOutput = null; - } catch (Exception e) { - e.printStackTrace(); - } - } - } - - /* The table model for stats table. */ - public class StatsTableModel extends AbstractTableModel { - private static final long serialVersionUID = -2478788160419123718L; - - private String[] columnNames = { "Stat Name", "Value" }; - - private List<Map.Entry<String, String>> list = - new ArrayList<Map.Entry<String, String>>(); - - public int getColumnCount() { - return columnNames.length; - } - - public int getRowCount() { - return (list == null) ? 0 : list.size(); - } - - @Override - public String getColumnName(int col) { - return columnNames[col]; - } - - public Object getValueAt(int row, int col) { - Map.Entry<String, String> value = list.get(row); - switch (col) { - case 0 : - /* Column 0 shows the stats name.*/ - if (value.getKey().indexOf(":") < 0) { - return value.getKey().trim(); - } else { - return value.getKey(). - substring(0, value.getKey().indexOf(":")); - } - case 1 : - return value.getValue(); - default: - return null; - } - } - - @Override - @SuppressWarnings("unchecked") - public Class getColumnClass(int c) { - return getValueAt(0, c).getClass(); - } - - public void setList(List<Map.Entry<String, String>> list) { - this.list = list; - } - } - - /* - * If a stat's value has changed since last time, then marked it in red. - */ - private class StringRenderer extends DefaultTableCellRenderer { - private static final long serialVersionUID = 480362177240428265L; - - public StringRenderer() { - super(); - setHorizontalAlignment(JLabel.LEFT); - } - - @Override - public Component getTableCellRendererComponent(JTable table, - Object value, - boolean isSelected, - boolean hasFocus, - int row, - int column) { - Component cell = - super.getTableCellRendererComponent(table, value, isSelected, - hasFocus, row, column); - - /* - * If the value is the same, the font color is black, if the value - * is different, then change the color to red, and replace the - * value in the valueStore to the new one. - */ - if (column == 1) { - String newValue = - valueStore.get(objName).get(table.getValueAt(row, 0)); - if (newValue != null && - !newValue.equals(table.getValueAt(row, 1))) { - - valueStore.get(objName). - put(table.getValueAt(row, 0).toString(), - table.getValueAt(row, 1).toString().trim()); - cell.setForeground(Color.RED); - } - } else { - cell.setForeground(Color.BLACK); - } - - return cell; - } - } - - /* The file chooser for setting log file. */ - private class SaveLogFileChooser extends JFileChooser { - private static final long serialVersionUID = -3035086973026766211L; - - public SaveLogFileChooser() { - setFileFilter(new FileNameExtensionFilter("CSV files", "csv")); - } - - @Override - public void approveSelection() { - File file = getSelectedFile(); - if (file != null) { - FileFilter filter = getFileFilter(); - if (filter != null && - filter instanceof FileNameExtensionFilter) { - String[] extensions = - ((FileNameExtensionFilter) filter).getExtensions(); - - boolean goodExt = (extensions.length > 0) ? true: false; - - if (!goodExt) { - file = new File(file.getParent(), file.getName() + - "." + extensions[0]); - } - } - - if (file.exists()) { - String okStr = "ok"; - String cancelStr = "cancel"; - int ret = - JOptionPane.showOptionDialog(this, - "File " + file.getName() + " already exists!", - "Save File", - JOptionPane.OK_CANCEL_OPTION, - JOptionPane.WARNING_MESSAGE, - null, - new Object[] {okStr, cancelStr}, okStr); - if (ret != JOptionPane.OK_OPTION) { - return; - } - } - - setSelectedFile(file); - } - super.approveSelection(); - } - } - - /* Following classes are listeners for GUI events. */ - - /* Listener for clear stats button. */ - private class ClearStatsBoxListener implements ActionListener { - public void actionPerformed(ActionEvent e) { - envStatParams[0] = !(cumulativeStatsBox.isSelected()); - /* Repain the tab. */ - drawNewStats.run(); - } - } - - /* Listener for display non-zero checkbox. */ - private class HideZeroValueBoxListener implements ActionListener { - public void actionPerformed(ActionEvent e) { - hideZeroValue = hideZeroValueBox.isSelected(); - /* Repaint the tab. */ - drawNewStats.run(); - } - } - - /* Listener for start logging button. */ - private class StartLogListener implements ActionListener { - public void actionPerformed(ActionEvent e) { - /* Paint the CSV file header for each MBean. */ - for (Map.Entry<ObjectName, LogObject> entry : logMap.entrySet()) { - entry.getValue().initCSVOutput(entry.getKey()); - } - enableComponent(new JComponent[] { saveLogButton, - startLogButton, - logMenuItem }, - false); - doLog = true; - } - } - - /* Listener for stop logging button. */ - private class StopLogListener implements ActionListener { - public void actionPerformed(ActionEvent e) { - enableComponent - (new JComponent[] { saveLogButton, logMenuItem }, true); - doLog = false; - startLogButton.setEnabled(false); - stopLogButton.setEnabled(false); - saveLogButton.setEnabled(true); - } - } - - /* Set provided component enabled or not. */ - private void enableComponent(JComponent[] components, boolean enabled) { - for (JComponent component : components) { - component.setEnabled(enabled); - } - } - - /* Listener for save log files button. */ - private class SaveLogListener implements ActionListener { - JPanel shownPanel; - - public SaveLogListener(JPanel shownPanel) { - this.shownPanel = shownPanel; - } - - public void actionPerformed(ActionEvent e) { - if (fileChooser == null) { - fileChooser = new SaveLogFileChooser(); - } - int ret = fileChooser.showSaveDialog(shownPanel); - if (ret == JFileChooser.APPROVE_OPTION) { - logMap.get(objName).setLogName - (fileChooser.getSelectedFile().getAbsolutePath()); - startLogButton.setEnabled(true); - stopLogButton.setEnabled(true); - } - } - } - - /* Listener for choosing a MBean ComboBox. */ - private class BeanComboBoxListener implements ActionListener { - public void actionPerformed(ActionEvent e) { - /* If choose another environment, need to update the table. */ - objName = - comboToObjects.get(mBeansComboBox.getSelectedItem()); - /* Repaint the tab. */ - drawNewStats.run(); - } - } - - /* Listener for stats type checkbox. */ - private class StatsTypeListener implements ActionListener { - public void actionPerformed(ActionEvent e) { - shownStats.put(((JCheckBox) e.getSource()).getText(), - ((JCheckBox) e.getSource()).isSelected()); - /* Repaint the tab. */ - drawNewStats.run(); - } - } - - /* Listener for log menu item on JEStats table. */ - private class LogMenuListener implements ActionListener { - public void actionPerformed(ActionEvent e) { - LogObject currentBean = logMap.get(objName); - - if (selectedRow > -1) { - String title = - statsTable.getValueAt(selectedRow, 0).toString().trim(); - - if (!logMenuItem.getState() && - !currentBean.getTurnOff().contains(title)) { - currentBean.addTurnOff(title); - } - if (logMenuItem.getState() && - currentBean.getTurnOff().contains(title)) { - currentBean.getTurnOff().remove(title); - } - } - } - } - - /* Listener for graph menu item on JEStats table. */ - private class GraphMenuListener implements ActionListener { - public void actionPerformed(ActionEvent e) { - if (selectedRow > -1) { - String graphStats = - statsTable.getValueAt(selectedRow, 0).toString().trim(); - if (!isTitleEqual(graphStats)) { - boolean initialized = false; - for (GraphFrame frame : frameList) { - if (frame.getBeanName().equals(objName) && - frame.getStatsName().equals(graphStats)) { - initialized = true; - break; - } - } - if (!initialized) { - frameList.add(new GraphFrame(objName, graphStats)); - } - } - } - } - } - - /* If the string equals to one of those stats types. */ - private boolean isTitleEqual(String title) { - boolean equal = false; - for (int i = 0; i < statsTitles.length; i++) { - if (statsTitles[i].equals(title)) { - equal = true; - break; - } - } - - return equal; - } - - /* These two classes are listeners for mouse actions on the Stats table. */ - private class TableMouseListener implements MouseListener { - public void mouseClicked(MouseEvent e) { - if (e.getButton() == MouseEvent.BUTTON3) { - int row = statsTable.rowAtPoint(e.getPoint()); - if (row >= 0) { - statsTable.setRowSelectionInterval(row, row); - final String statName = - statsTable.getValueAt(row, 0).toString().trim(); - if (logMap.get(objName).getTurnOff().contains(statName)) { - logMenuItem.setState(false); - } else { - logMenuItem.setState(true); - } - - /* Check which stats shouldn't be graphed. */ - try { - String statValue = getParsedValue - (statsTable.getValueAt(row, 1).toString().trim()); - - /* - * If the stats value can't be converted to a number, - * disable graphing. - */ - Long.parseLong(statValue); - graphMenuItem.setEnabled(true); - } catch (NumberFormatException exception) { - - /* If the value can't be converted to long, disable the - * graphing menu. - */ - graphMenuItem.setEnabled(false); - } - selectedRow = row; - } - popup.show(e.getComponent(), e.getX(), e.getY()); - } - } - - public void mouseEntered(MouseEvent e) { - } - - public void mouseExited(MouseEvent e) { - } - - public void mousePressed(MouseEvent e) { - } - - public void mouseReleased(MouseEvent e) { - } - } - - /* - * Parse the number format ***,***,*** to *********. - */ - private String getParsedValue(String value) { - if (value.indexOf(",") > 0) { - StringTokenizer st = new StringTokenizer(value, ","); - value = new String(); - while (st.hasMoreTokens()) { - value = value + st.nextToken(); - } - } - - return value; - } - - /* The MouseMotionListener to the table. */ - private class TableMouseMotionListener implements MouseMotionListener { - public void mouseDragged(MouseEvent e) { - } - - public void mouseMoved(MouseEvent e) { - int row = statsTable.rowAtPoint(e.getPoint()); - if (row >= 0) { - String stats = ((String) statsTable.getValueAt(row, 0)).trim(); - statsTable.setToolTipText(tips.get(stats)); - } - } - } - - /* KeyListener for setting graph interval text field. */ - private class StatsIntervalListener implements KeyListener { - public void keyPressed(KeyEvent e) { - if (e.getKeyCode() == KeyEvent.VK_ENTER) { - String newIntervalText = statsIntervalText.getText(); - try { - long statsIntervalSeconds = new Long(newIntervalText); - statsIntervalMillis = statsIntervalSeconds * 1000; - } catch (Exception exception) { - System.err.println("\"" + newIntervalText + - "\" is not a valid interval. " + - exception); - } - - statsCollector.cancel(); - statsCollector = new Timer(STATS_COLLECTOR); - statsCollector.scheduleAtFixedRate(new StatsCollectionTask(), - 0, - statsIntervalMillis); - } - } - - public void keyReleased(KeyEvent e) { - } - - public void keyTyped(KeyEvent e) { - } - } - - /** - * Frame for showing stats. - * - * Note: stats whose type is float are not supported currently. - */ - private class GraphFrame extends JFrame { - private static final long serialVersionUID = 8921577524698094123L; - - /* Set the color of line in graphing. */ - private final Color statsColor = Color.blue.darker(); - /* The panel doing the graphing work. */ - private PlotterPanel plotterPanel; - - private final ObjectName bean; - private final String stats; - - public GraphFrame(ObjectName beanName, String statsName) { - super(statsName.trim() + " for " + beanName.toString()); - bean = beanName; - stats = statsName.trim(); - setLayout(new BorderLayout(0, 0)); - setSize(800, 400); - - /* Add TimeComboBox and PlotterPanel to the frame. */ - JPanel topPanel = new JPanel(new BorderLayout()); - JPanel controlPanel = - new JPanel(new FlowLayout(FlowLayout.CENTER, 20, 5)); - controlPanel.add(new JLabel("Time Range:")); - plotterPanel = new PlotterPanel(stats, Unit.NONE, false); - plotterPanel.getPlotter().createSequence - (stats, stats, statsColor, true); - TimeComboBox timeComboBox = - new TimeComboBox(plotterPanel.getPlotter()); - controlPanel.add(timeComboBox); - topPanel.add(controlPanel, BorderLayout.CENTER); - add(topPanel, BorderLayout.NORTH); - add(plotterPanel, BorderLayout.CENTER); - - /* - * When we click the close button, it would dispose the frame and - * if the connection is alive, remove the frame in the frame list. - */ - addWindowListener(new java.awt.event.WindowAdapter() { - @Override - public void windowClosing(java.awt.event.WindowEvent evt) { - setVisible(false); - dispose(); - if (JEStats.getConnection() != null) { - removeGraphFrame(bean, stats); - } - } - }); - setVisible(true); - } - - public ObjectName getBeanName() { - return bean; - } - - public String getStatsName() { - return stats; - } - - /* - * When use the PlotterPanel, we only need to write data into it. - */ - public void writeData(Map<String, String> map) { - for (Map.Entry<String, String> entry : map.entrySet()) { - if (entry.getKey().indexOf(":") > 0) { - String realKey = entry.getKey().substring - (0, entry.getKey().indexOf(":")).trim(); - - /* - * The following three stats can't convert to long, so - * ignore them. Also, some values have "," inside, need to - * remove it away. - */ - if (stats.equals(realKey)) { - String value = getParsedValue(entry.getValue()); - plotterPanel.getPlotter().addValues - (System.currentTimeMillis(), Long.valueOf(value)); - } - } - } - } - } - - private class StatsCollectionTask extends TimerTask { - private final boolean writeLogAndGraphing; - - public StatsCollectionTask() { - this(true); - } - - public StatsCollectionTask(boolean writeLogAndGraphing) { - this.writeLogAndGraphing = writeLogAndGraphing; - } - - @Override - public void run() { - List<ObjectName> objectNames = getBeansNames(); - - if (objectNames == null || objectNames.size() == 0) { - return; - } - - /* - * Reset the object names. Make sure to do ths assignment - * atomically, because other threads may read savedObjectNames. - */ - savedObjectNames = objectNames; - - for (ObjectName objectName : objectNames) { - Map<String, String> statValues = generateStats(objectName); - - /* Copy and save stats and ObjectNames for tab refreshing. */ - Map<String, String> copiedStats = - new LinkedHashMap<String, String>(); - copiedStats.putAll(statValues); - savedStats.put(objectName, copiedStats); - - /* Write log and update graphing for this MBean. */ - if (writeLogAndGraphing) { - writeLogAndGraphing(objectName, statValues); - } - } - newSwingWorker().execute(); - } - } -} diff --git a/src/main/java/com/sleepycat/je/jmx/plugin/StatsPlugin.java b/src/main/java/com/sleepycat/je/jmx/plugin/StatsPlugin.java deleted file mode 100644 index 1bb1840..0000000 --- a/src/main/java/com/sleepycat/je/jmx/plugin/StatsPlugin.java +++ /dev/null @@ -1,91 +0,0 @@ -/*- - * Copyright (C) 2002, 2018, Oracle and/or its affiliates. All rights reserved. - * - * This file was distributed by Oracle as part of a version of Oracle Berkeley - * DB Java Edition made available at: - * - * http://www.oracle.com/technetwork/database/database-technologies/berkeleydb/downloads/index.html - * - * Please see the LICENSE file included in the top-level directory of the - * appropriate version of Oracle Berkeley DB Java Edition for a copy of the - * license and additional information. - */ - -package com.sleepycat.je.jmx.plugin; - -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; -import java.util.ArrayList; -import java.util.Map; - -import javax.swing.JPanel; -import javax.swing.SwingWorker; - -import com.sun.tools.jconsole.JConsolePlugin; -import com.sun.tools.jconsole.JConsoleContext; -import com.sun.tools.jconsole.JConsoleContext.ConnectionState; - -public abstract class StatsPlugin extends JConsolePlugin - implements PropertyChangeListener { - - protected ArrayList<Stats> stats = new ArrayList<Stats>(); - protected StatsSwingWorker worker; - protected Map<String, JPanel> tabs = null; - protected int mBeanCount = 0; - - public StatsPlugin() { - /* Register as a listener. */ - addContextPropertyChangeListener(this); - } - - /* - * Returns JEStats tabs to be added in JConsole. - */ - @Override - public synchronized Map<String, JPanel> getTabs() { - initTabs(); - - return tabs; - } - - protected abstract void initTabs(); - - /* - * Returns a SwingWorker which is responsible for updating the JEStats tab. - */ - @Override - public SwingWorker<?,?> newSwingWorker() { - if (stats.size() > 0) { - return new StatsSwingWorker(stats); - } - return null; - } - - @Override - public void dispose() { - } - - /* - * Property listener to reset the MBeanServerConnection at reconnection - * time. - */ - public void propertyChange(PropertyChangeEvent ev) { - String prop = ev.getPropertyName(); - if (prop == JConsoleContext.CONNECTION_STATE_PROPERTY) { - ConnectionState newState = (ConnectionState) ev.getNewValue(); - if (newState == ConnectionState.CONNECTED && stats.size() != 0) { - for (Stats status : stats) { - status.setConnection( - getContext().getMBeanServerConnection()); - } - } else if (newState == ConnectionState.DISCONNECTED && - stats.size() != 0) { - for (int i = 0; i < stats.size(); i++) { - Stats status = stats.remove(i); - status.setConnection(null); - status = null; - } - } - } - } -} diff --git a/src/main/java/com/sleepycat/je/jmx/plugin/StatsSwingWorker.java b/src/main/java/com/sleepycat/je/jmx/plugin/StatsSwingWorker.java deleted file mode 100644 index 68782b0..0000000 --- a/src/main/java/com/sleepycat/je/jmx/plugin/StatsSwingWorker.java +++ /dev/null @@ -1,58 +0,0 @@ -/*- - * Copyright (C) 2002, 2018, Oracle and/or its affiliates. All rights reserved. - * - * This file was distributed by Oracle as part of a version of Oracle Berkeley - * DB Java Edition made available at: - * - * http://www.oracle.com/technetwork/database/database-technologies/berkeleydb/downloads/index.html - * - * Please see the LICENSE file included in the top-level directory of the - * appropriate version of Oracle Berkeley DB Java Edition for a copy of the - * license and additional information. - */ - -package com.sleepycat.je.jmx.plugin; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.concurrent.ExecutionException; -import javax.swing.SwingWorker; - -/* - * The class takes the responsibility for updating the tabs in JConsole plugin. - */ -public class StatsSwingWorker extends - SwingWorker<List<List<Map.Entry<String, String>>>, Object> { - - private final ArrayList<Stats> list; - - public StatsSwingWorker(ArrayList<Stats> list) { - this.list = list; - } - - @Override - public List<List<Map.Entry<String, String>>> doInBackground() { - ArrayList<List<Map.Entry<String, String>>> statsList= - new ArrayList<List<Map.Entry<String, String>>>(); - for (Stats status: list) { - statsList.add(status.getResultsList()); - } - - return statsList; - } - - @Override - protected void done() { - try { - if (get() != null) { - for (int i = 0; i < list.size(); i++) { - list.get(i).getTModel().setList(get().get(i)); - list.get(i).getTModel().fireTableDataChanged(); - } - } - } catch (InterruptedException e) { - } catch (ExecutionException e) { - } - } -} diff --git a/src/main/java/com/sleepycat/je/jmx/plugin/package-info.java b/src/main/java/com/sleepycat/je/jmx/plugin/package-info.java deleted file mode 100644 index c5601b7..0000000 --- a/src/main/java/com/sleepycat/je/jmx/plugin/package-info.java +++ /dev/null @@ -1,17 +0,0 @@ -/*- - * Copyright (C) 2002, 2018, Oracle and/or its affiliates. All rights reserved. - * - * This file was distributed by Oracle as part of a version of Oracle Berkeley - * DB Java Edition made available at: - * - * http://www.oracle.com/technetwork/database/database-technologies/berkeleydb/downloads/index.html - * - * Please see the LICENSE file included in the top-level directory of the - * appropriate version of Oracle Berkeley DB Java Edition for a copy of the - * license and additional information. - */ - -/** - * INTERNAL: JConsole plugin for viewing JE stats/config, rarely used. - */ -package com.sleepycat.je.jmx.plugin; \ No newline at end of file diff --git a/src/main/java/com/sleepycat/je/jmx/plugin/services/com.sun.tools.jconsole.JConsolePlugin b/src/main/java/com/sleepycat/je/jmx/plugin/services/com.sun.tools.jconsole.JConsolePlugin deleted file mode 100644 index bc26a88..0000000 --- a/src/main/java/com/sleepycat/je/jmx/plugin/services/com.sun.tools.jconsole.JConsolePlugin +++ /dev/null @@ -1 +0,0 @@ -com.sleepycat.je.jmx.plugin.JEStatsPlugin diff --git a/src/main/java/com/sleepycat/je/rep/jmx/plugin/RepJEStats.java b/src/main/java/com/sleepycat/je/rep/jmx/plugin/RepJEStats.java deleted file mode 100644 index 5f0197a..0000000 --- a/src/main/java/com/sleepycat/je/rep/jmx/plugin/RepJEStats.java +++ /dev/null @@ -1,50 +0,0 @@ -/*- - * Copyright (C) 2002, 2018, Oracle and/or its affiliates. All rights reserved. - * - * This file was distributed by Oracle as part of a version of Oracle Berkeley - * DB Java Edition made available at: - * - * http://www.oracle.com/technetwork/database/database-technologies/berkeleydb/downloads/index.html - * - * Please see the LICENSE file included in the top-level directory of the - * appropriate version of Oracle Berkeley DB Java Edition for a copy of the - * license and additional information. - */ - -package com.sleepycat.je.rep.jmx.plugin; - -import java.util.HashMap; - -import javax.management.MBeanServerConnection; - -import com.sleepycat.je.jmx.plugin.Stats; -import com.sleepycat.je.rep.ReplicatedEnvironmentStats; -import com.sleepycat.je.rep.jmx.RepJEMonitor; - -public class RepJEStats extends Stats { - private static final long serialVersionUID = 4240112567440108407L; - - public RepJEStats(MBeanServerConnection connection) { - super(connection); - } - - @Override - protected void initVariables() { - statsTitles = ReplicatedEnvironmentStats.getStatGroupTitles(); - opName = RepJEMonitor.OP_DUMP_REPSTATS; - mBeanNamePrefix = RepJEStatsPlugin.mBeanNamePrefix; - } - - @SuppressWarnings("unchecked") - @Override - protected void generateTips() { - try { - tips = (HashMap) connection.invoke - (objName, RepJEMonitor.OP_GET_REP_TIPS, - new Object[] {}, new String[] {}); - updateTips(); - } catch (Exception e) { - e.printStackTrace(); - } - } -} diff --git a/src/main/java/com/sleepycat/je/rep/jmx/plugin/RepJEStatsPlugin.java b/src/main/java/com/sleepycat/je/rep/jmx/plugin/RepJEStatsPlugin.java deleted file mode 100644 index 81a5b6c..0000000 --- a/src/main/java/com/sleepycat/je/rep/jmx/plugin/RepJEStatsPlugin.java +++ /dev/null @@ -1,56 +0,0 @@ -/*- - * Copyright (C) 2002, 2018, Oracle and/or its affiliates. All rights reserved. - * - * This file was distributed by Oracle as part of a version of Oracle Berkeley - * DB Java Edition made available at: - * - * http://www.oracle.com/technetwork/database/database-technologies/berkeleydb/downloads/index.html - * - * Please see the LICENSE file included in the top-level directory of the - * appropriate version of Oracle Berkeley DB Java Edition for a copy of the - * license and additional information. - */ - -package com.sleepycat.je.rep.jmx.plugin; - -import java.util.LinkedHashMap; - -import javax.management.ObjectName; -import javax.swing.JPanel; - -import com.sleepycat.je.jmx.plugin.JEStats; -import com.sleepycat.je.jmx.plugin.Stats; -import com.sleepycat.je.jmx.plugin.StatsPlugin; - -public class RepJEStatsPlugin extends StatsPlugin { - public static final String mBeanNamePrefix = - "com.sleepycat.je.jmx:name=RepJEMonitor(*"; - - @Override - protected void initTabs() { - if (tabs == null) { - tabs = new LinkedHashMap<String, JPanel>(); - try { - ObjectName name = new ObjectName(mBeanNamePrefix); - mBeanCount = getContext().getMBeanServerConnection(). - queryNames(name, null).size(); - - if (mBeanCount > 0) { - Stats status = - new JEStats(getContext().getMBeanServerConnection()); - tabs.put("JE Statistics", status); - stats.add(status); - status = - new RepJEStats(getContext().getMBeanServerConnection()); - tabs.put("JE Replicated Statistics", status); - stats.add(status); - } else { - tabs.put("JE Statistics", new JPanel()); - tabs.put("JE Replicated Statistics", new JPanel()); - } - } catch (Exception e) { - e.printStackTrace(); - } - } - } -} diff --git a/src/main/java/com/sleepycat/je/rep/jmx/plugin/package-info.java b/src/main/java/com/sleepycat/je/rep/jmx/plugin/package-info.java deleted file mode 100644 index 9e396fd..0000000 --- a/src/main/java/com/sleepycat/je/rep/jmx/plugin/package-info.java +++ /dev/null @@ -1,17 +0,0 @@ -/*- - * Copyright (C) 2002, 2018, Oracle and/or its affiliates. All rights reserved. - * - * This file was distributed by Oracle as part of a version of Oracle Berkeley - * DB Java Edition made available at: - * - * http://www.oracle.com/technetwork/database/database-technologies/berkeleydb/downloads/index.html - * - * Please see the LICENSE file included in the top-level directory of the - * appropriate version of Oracle Berkeley DB Java Edition for a copy of the - * license and additional information. - */ - -/** - * INTERNAL: JConsole plugin for viewing HA stats/config, rarely used. - */ -package com.sleepycat.je.rep.jmx.plugin; diff --git a/src/main/java/com/sleepycat/je/rep/jmx/plugin/services/com.sun.tools.jconsole.JConsolePlugin b/src/main/java/com/sleepycat/je/rep/jmx/plugin/services/com.sun.tools.jconsole.JConsolePlugin deleted file mode 100644 index cec66c5..0000000 --- a/src/main/java/com/sleepycat/je/rep/jmx/plugin/services/com.sun.tools.jconsole.JConsolePlugin +++ /dev/null @@ -1 +0,0 @@ -com.sleepycat.je.rep.jmx.plugin.RepJEStatsPlugin --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org