moved save method to more appropriate panel
diff --git a/src/main/java/org/apache/log4j/chainsaw/LogUI.java b/src/main/java/org/apache/log4j/chainsaw/LogUI.java
index dcb53eb..e3d753e 100644
--- a/src/main/java/org/apache/log4j/chainsaw/LogUI.java
+++ b/src/main/java/org/apache/log4j/chainsaw/LogUI.java
@@ -254,7 +254,7 @@
}
private void setupReceiverPanel() {
- receiversPanel = new ReceiversPanel(settingsManager, this, statusBar);
+ receiversPanel = new ReceiversPanel(settingsManager, m_receivers, this, statusBar);
// receiversPanel.addPropertyChangeListener(
// "visible",
// evt -> getApplicationPreferenceModel().setReceivers(
@@ -1503,52 +1503,5 @@
return m_receivers;
}
- public void saveReceiversToFile(File file){
- try {
- //we programmatically register the ZeroConf plugin in the plugin registry
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- factory.setNamespaceAware(true);
- DocumentBuilder builder = factory.newDocumentBuilder();
- Document document = builder.newDocument();
- Element rootElement = document.createElementNS("http://jakarta.apache.org/log4j/", "configuration");
- rootElement.setPrefix("log4j");
- rootElement.setAttribute("xmlns:log4j", "http://jakarta.apache.org/log4j/");
- rootElement.setAttribute("debug", "true");
- for (ChainsawReceiver receiver : m_receivers) {
- Element pluginElement = document.createElement("plugin");
- pluginElement.setAttribute("name", receiver.getName());
- pluginElement.setAttribute("class", receiver.getClass().getName());
-
- BeanInfo beanInfo = Introspector.getBeanInfo(receiver.getClass());
- List<PropertyDescriptor> list = new ArrayList<>(Arrays.asList(beanInfo.getPropertyDescriptors()));
-
- for (PropertyDescriptor desc : list) {
- Object o = desc.getReadMethod().invoke(receiver);
- if (o != null) {
- Element paramElement = document.createElement("param");
- paramElement.setAttribute("name", desc.getName());
- paramElement.setAttribute("value", o.toString());
- pluginElement.appendChild(paramElement);
- }
- }
-
- rootElement.appendChild(pluginElement);
-
- }
-
- TransformerFactory transformerFactory = TransformerFactory.newInstance();
- Transformer transformer = transformerFactory.newTransformer();
- transformer.setOutputProperty(OutputKeys.INDENT, "yes");
- transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4");
- DOMSource source = new DOMSource(rootElement);
- FileOutputStream stream = new FileOutputStream(file);
- StreamResult result = new StreamResult(stream);
- transformer.transform(source, result);
- stream.close();
-
- } catch (Exception e) {
- logger.error(e,e);
- }
- }
}
diff --git a/src/main/java/org/apache/log4j/chainsaw/receivers/ReceiversPanel.java b/src/main/java/org/apache/log4j/chainsaw/receivers/ReceiversPanel.java
index ce70d58..38f7e65 100644
--- a/src/main/java/org/apache/log4j/chainsaw/receivers/ReceiversPanel.java
+++ b/src/main/java/org/apache/log4j/chainsaw/receivers/ReceiversPanel.java
@@ -34,6 +34,8 @@
import org.apache.log4j.chainsaw.prefs.SettingsManager;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
import javax.swing.*;
import javax.swing.event.TreeExpansionEvent;
@@ -45,12 +47,23 @@
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.ExpandVetoException;
import javax.swing.tree.TreePath;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.transform.OutputKeys;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
+import java.beans.BeanInfo;
+import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.io.File;
+import java.io.FileOutputStream;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
@@ -87,11 +100,13 @@
private final Map<Class,PropertyDescriptor[]> m_classToProperties =
new HashMap<>();
private SettingsManager settingsManager;
+ private List<ChainsawReceiver> m_receivers;
private final ChainsawStatusBar m_statusBar;
- public ReceiversPanel(SettingsManager settingsManager, LogUI parentUi, ChainsawStatusBar sb) {
+ public ReceiversPanel(SettingsManager settingsManager, List<ChainsawReceiver> m_receivers, LogUI parentUi, ChainsawStatusBar sb) {
super(new BorderLayout());
this.settingsManager = settingsManager;
+ this.m_receivers = m_receivers;
m_statusBar = sb;
m_parent = parentUi;
final ReceiversTreeModel model = new ReceiversTreeModel();
@@ -350,10 +365,58 @@
private void saveReceivers() {
File saveConfigFile = SwingHelper.promptForFile(this, null, "Save receiver configuration XML file", false);
if (saveConfigFile != null) {
- m_parent.saveReceiversToFile(saveConfigFile);
+ saveReceiversToFile(saveConfigFile);
}
}
+ public void saveReceiversToFile(File file){
+ try {
+ //we programmatically register the ZeroConf plugin in the plugin registry
+ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+ factory.setNamespaceAware(true);
+ DocumentBuilder builder = factory.newDocumentBuilder();
+ Document document = builder.newDocument();
+ Element rootElement = document.createElementNS("http://jakarta.apache.org/log4j/", "configuration");
+ rootElement.setPrefix("log4j");
+ rootElement.setAttribute("xmlns:log4j", "http://jakarta.apache.org/log4j/");
+ rootElement.setAttribute("debug", "true");
+
+ for (ChainsawReceiver receiver : m_receivers) {
+ Element pluginElement = document.createElement("plugin");
+ pluginElement.setAttribute("name", receiver.getName());
+ pluginElement.setAttribute("class", receiver.getClass().getName());
+
+ BeanInfo beanInfo = Introspector.getBeanInfo(receiver.getClass());
+ List<PropertyDescriptor> list = new ArrayList<>(Arrays.asList(beanInfo.getPropertyDescriptors()));
+
+ for (PropertyDescriptor desc : list) {
+ Object o = desc.getReadMethod().invoke(receiver);
+ if (o != null) {
+ Element paramElement = document.createElement("param");
+ paramElement.setAttribute("name", desc.getName());
+ paramElement.setAttribute("value", o.toString());
+ pluginElement.appendChild(paramElement);
+ }
+ }
+
+ rootElement.appendChild(pluginElement);
+
+ }
+
+ TransformerFactory transformerFactory = TransformerFactory.newInstance();
+ Transformer transformer = transformerFactory.newTransformer();
+ transformer.setOutputProperty(OutputKeys.INDENT, "yes");
+ transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4");
+ DOMSource source = new DOMSource(rootElement);
+ FileOutputStream stream = new FileOutputStream(file);
+ StreamResult result = new StreamResult(stream);
+ transformer.transform(source, result);
+ stream.close();
+
+ } catch (Exception e) {
+ logger.error(e,e);
+ }
+ }
protected ReceiversTreeModel getReceiverTreeModel() {
return ((ReceiversTreeModel) receiversTree.getModel());
}
@@ -532,7 +595,7 @@
public void saveSettings(SaveSettingsEvent event) {
File file = new File(settingsManager.getSettingsDirectory(), "receiver-config.xml");
- m_parent.saveReceiversToFile(file);
+ saveReceiversToFile(file);
}
/**