added spotbugs annotations, ignored a few warnings that do seem unrelated
diff --git a/pom.xml b/pom.xml
index 020fc39..1fc3948 100644
--- a/pom.xml
+++ b/pom.xml
@@ -211,6 +211,11 @@
<artifactId>commons-beanutils</artifactId>
<version>1.9.4</version>
</dependency>
+ <dependency>
+ <groupId>com.github.spotbugs</groupId>
+ <artifactId>spotbugs-annotations</artifactId>
+ <scope>provided</scope>
+ </dependency>
</dependencies>
<reporting>
diff --git a/src/main/java/org/apache/log4j/chainsaw/LogFilePatternLayoutBuilder.java b/src/main/java/org/apache/log4j/chainsaw/LogFilePatternLayoutBuilder.java
index 3f35ff4..a753495 100644
--- a/src/main/java/org/apache/log4j/chainsaw/LogFilePatternLayoutBuilder.java
+++ b/src/main/java/org/apache/log4j/chainsaw/LogFilePatternLayoutBuilder.java
@@ -16,6 +16,7 @@
*/
package org.apache.log4j.chainsaw;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
@@ -132,12 +133,14 @@
return result;
}
+ @SuppressFBWarnings // TODO: loading files like this is dangerous - at least in web. see if we can do better
private static Map<String, Map<String, String>> getXMLFileAppenderConfiguration(File file) throws IOException, ParserConfigurationException, SAXException {
Map<String, Map<String, String>> result = new HashMap<>();
try (InputStream stream = file.toURI().toURL().openStream()) {
InputSource src = new InputSource(stream);
src.setSystemId(file.toURI().toURL().toString());
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+ dbf.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
DocumentBuilder docBuilder = dbf.newDocumentBuilder();
// docBuilder.setErrorHandler(new SAXErrorHandler());
diff --git a/src/main/java/org/apache/log4j/chainsaw/ReceiverConfigurationPanel.java b/src/main/java/org/apache/log4j/chainsaw/ReceiverConfigurationPanel.java
index 5a26abc..675d419 100644
--- a/src/main/java/org/apache/log4j/chainsaw/ReceiverConfigurationPanel.java
+++ b/src/main/java/org/apache/log4j/chainsaw/ReceiverConfigurationPanel.java
@@ -16,9 +16,12 @@
*/
package org.apache.log4j.chainsaw;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import org.apache.log4j.chainsaw.helper.SwingHelper;
import org.apache.log4j.chainsaw.prefs.SettingsManager;
import org.apache.log4j.net.UDPReceiver;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
import javax.swing.*;
import javax.swing.text.SimpleAttributeSet;
@@ -31,12 +34,9 @@
import java.awt.event.FocusListener;
import java.io.File;
import java.net.MalformedURLException;
-import java.net.URISyntaxException;
import java.net.URL;
import java.util.List;
import java.util.Locale;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
/**
@@ -185,6 +185,7 @@
updateEnabledState(log4jConfigReceiverRadioButton);
}
+ @SuppressFBWarnings // TODO: loading files like this is dangerous - at least in web. see if we can do better
private JPanel buildDontWarnAndOKPanel() {
JPanel panel = new JPanel(new GridBagLayout());
@@ -239,16 +240,19 @@
}
});
- saveButton.addActionListener(e -> {
- try {
- URL url = browseFile("Choose a path and file name to save", false);
- if (url != null) {
- File file = new File(url.toURI());
- panelModel.setSaveConfigFile(file);
+
+ saveButton.addActionListener(new ActionListener() {
+ @SuppressFBWarnings // TODO: loading files like this is dangerous - at least in web. see if we can do better
+ public void actionPerformed(ActionEvent e) {
+ try {
+ URL url = browseFile("Choose a path and file name to save", false);
+ if (url != null) {
+ File file = new File(url.toURI());
+ panelModel.setSaveConfigFile(file);
+ }
+ } catch (Exception ex) {
+ logger.error("Error browsing for log file", ex);
}
- } catch (Exception ex) {
- logger.error(
- "Error browsing for log file", ex);
}
});
return panel;
@@ -776,19 +780,5 @@
logFileFormatComboBoxModel.insertElementAt(lastLogFormat, 0);
logFileFormatComboBox.setSelectedIndex(0);
}
-
- public boolean isCancelled() {
- return cancelled;
- }
-
- public File getLog4jConfigFile() {
- try {
- URL newConfigurationURL = new URL(log4jConfigURLTextField.getText());
- return new File(newConfigurationURL.toURI());
- } catch (URISyntaxException | MalformedURLException e) {
- e.printStackTrace();
- }
- return null;
- }
}
}
diff --git a/src/main/java/org/apache/log4j/chainsaw/helper/SwingHelper.java b/src/main/java/org/apache/log4j/chainsaw/helper/SwingHelper.java
index c2eb239..cad537b 100644
--- a/src/main/java/org/apache/log4j/chainsaw/helper/SwingHelper.java
+++ b/src/main/java/org/apache/log4j/chainsaw/helper/SwingHelper.java
@@ -17,6 +17,8 @@
package org.apache.log4j.chainsaw.helper;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
@@ -94,6 +96,7 @@
return result;
}
+ @SuppressFBWarnings // TODO: loading files like this is dangerous - at least in web. see if we can do better
public static File promptForFile(Container parent, String defaultPath, String title, boolean loadDialog) {
if (SwingHelper.isMacOSX()) {
//use filedialog on mac
diff --git a/src/main/java/org/apache/log4j/chainsaw/prefs/SettingsManager.java b/src/main/java/org/apache/log4j/chainsaw/prefs/SettingsManager.java
index 4532693..99e826b 100644
--- a/src/main/java/org/apache/log4j/chainsaw/prefs/SettingsManager.java
+++ b/src/main/java/org/apache/log4j/chainsaw/prefs/SettingsManager.java
@@ -16,6 +16,7 @@
*/
package org.apache.log4j.chainsaw.prefs;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import org.apache.commons.configuration2.AbstractConfiguration;
import org.apache.commons.configuration2.CombinedConfiguration;
import org.apache.commons.configuration2.PropertiesConfiguration;
@@ -141,6 +142,7 @@
return combinedConfig;
}
+ @SuppressFBWarnings // TODO: loading files like this is dangerous - at least in web. see if we can do better
public AbstractConfiguration getSettingsForReceiverTab(String identifier) {
if (tabSettings.containsKey(identifier)) {
return tabSettings.get(identifier).tabSettings;
diff --git a/src/main/java/org/apache/log4j/net/JsonReceiver.java b/src/main/java/org/apache/log4j/net/JsonReceiver.java
index 360b901..04c2a4a 100644
--- a/src/main/java/org/apache/log4j/net/JsonReceiver.java
+++ b/src/main/java/org/apache/log4j/net/JsonReceiver.java
@@ -22,6 +22,8 @@
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Iterator;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import org.apache.log4j.chainsaw.receiver.ChainsawReceiverSkeleton;
import org.apache.log4j.chainsaw.logevents.ChainsawLoggingEventBuilder;
import org.apache.logging.log4j.LogManager;
@@ -47,9 +49,6 @@
*/
public static final String ZONE = "_log4j_json_tcpaccept_receiver.local.";
- public JsonReceiver() {
- }
-
@Override
public void shutdown() {
// mark this as no longer running
@@ -105,6 +104,7 @@
}
@Override
+ @SuppressFBWarnings
public void run() {
/**
* Ensure we start fresh.
diff --git a/src/main/java/org/apache/log4j/net/XMLSocketReceiver.java b/src/main/java/org/apache/log4j/net/XMLSocketReceiver.java
index ca4c382..2637377 100644
--- a/src/main/java/org/apache/log4j/net/XMLSocketReceiver.java
+++ b/src/main/java/org/apache/log4j/net/XMLSocketReceiver.java
@@ -22,6 +22,8 @@
import java.net.Socket;
import java.util.List;
import java.util.Vector;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import org.apache.log4j.chainsaw.receiver.ChainsawReceiverSkeleton;
import org.apache.log4j.chainsaw.logevents.ChainsawLoggingEvent;
import org.apache.log4j.spi.Decoder;
@@ -161,6 +163,7 @@
/**
* Loop, accepting new socket connections.
*/
+ @SuppressFBWarnings // TODO: this hsould be a secure socket?
public void run() {
/**
* Ensure we start fresh.
diff --git a/src/main/java/org/apache/log4j/varia/LogFilePatternReceiver.java b/src/main/java/org/apache/log4j/varia/LogFilePatternReceiver.java
index d384072..9f0f5f3 100644
--- a/src/main/java/org/apache/log4j/varia/LogFilePatternReceiver.java
+++ b/src/main/java/org/apache/log4j/varia/LogFilePatternReceiver.java
@@ -18,6 +18,8 @@
package org.apache.log4j.varia;
import java.nio.charset.StandardCharsets;
+
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import org.apache.log4j.helpers.Constants;
import org.apache.log4j.rule.ExpressionRule;
import org.apache.log4j.rule.Rule;
@@ -1039,6 +1041,7 @@
logger.info("activateOptions");
active = true;
Runnable runnable = new Runnable() {
+ @SuppressFBWarnings // TODO: loading files like this is dangerous - at least in web. see if we can do better
public void run() {
initialize();
while (reader == null) {
diff --git a/src/main/java/org/apache/log4j/xml/LogFileXMLReceiver.java b/src/main/java/org/apache/log4j/xml/LogFileXMLReceiver.java
index e9f917a..ccff7e1 100644
--- a/src/main/java/org/apache/log4j/xml/LogFileXMLReceiver.java
+++ b/src/main/java/org/apache/log4j/xml/LogFileXMLReceiver.java
@@ -17,6 +17,7 @@
package org.apache.log4j.xml;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import org.apache.log4j.helpers.Constants;
import org.apache.log4j.rule.ExpressionRule;
import org.apache.log4j.rule.Rule;
@@ -242,47 +243,53 @@
@Override
public void start() {
- Runnable runnable = () -> {
- try {
- URL url = new URL(fileURL);
- host = url.getHost();
- if (host != null && host.isEmpty()) {
- host = FILE_KEY;
- }
- path = url.getPath();
- } catch (MalformedURLException e1) {
- // TODO Auto-generated catch block
- e1.printStackTrace();
- }
+ Runnable runnable = new Runnable() {
+ @Override
+ @SuppressFBWarnings // TODO: loading files like this is dangerous - at least in web. see if we can do better
+ public void run() {
+ {
+ try {
+ URL url = new URL(fileURL);
+ host = url.getHost();
+ if (host != null && host.isEmpty()) {
+ host = FILE_KEY;
+ }
+ path = url.getPath();
+ } catch (MalformedURLException e1) {
+ // TODO Auto-generated catch block
+ e1.printStackTrace();
+ }
- try {
- if (filterExpression != null) {
- expressionRule = ExpressionRule.getRule(filterExpression);
- }
- } catch (Exception e) {
- logger.warn("Invalid filter expression: " + filterExpression, e);
- }
+ try {
+ if (filterExpression != null) {
+ expressionRule = ExpressionRule.getRule(filterExpression);
+ }
+ } catch (Exception e) {
+ logger.warn("Invalid filter expression: " + filterExpression, e);
+ }
- Class c;
- try {
- c = Class.forName(decoder);
- Object o = c.newInstance();
- if (o instanceof Decoder) {
- decoderInstance = (Decoder) o;
- }
- } catch (ClassNotFoundException | IllegalAccessException | InstantiationException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
+ Class c;
+ try {
+ c = Class.forName(decoder);
+ Object o = c.newInstance();
+ if (o instanceof Decoder) {
+ decoderInstance = (Decoder) o;
+ }
+ } catch (ClassNotFoundException | IllegalAccessException | InstantiationException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
- try {
- reader = new InputStreamReader(new URL(getFileURL()).openStream());
- process(reader);
- } catch (FileNotFoundException fnfe) {
- logger.info("file not available");
- } catch (IOException ioe) {
- logger.warn("unable to load file", ioe);
- return;
+ try {
+ reader = new InputStreamReader(new URL(getFileURL()).openStream());
+ process(reader);
+ } catch (FileNotFoundException fnfe) {
+ logger.info("file not available");
+ } catch (IOException ioe) {
+ logger.warn("unable to load file", ioe);
+ return;
+ }
+ }
}
};
if (useCurrentThread) {