You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by gr...@apache.org on 2023/12/21 18:04:06 UTC

(logging-chainsaw) branch master updated (0a51798 -> 2cac21e)

This is an automated email from the ASF dual-hosted git repository.

grobmeier pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/logging-chainsaw.git


    from 0a51798  upgraded to latest logging-parent, some issues are left to fix
     new f6bb4d5  corrected license
     new 87b3b58  removed unnecessary files
     new 096cd87  removed commented and unused file
     new eec0685  removed unused DB package
     new 6f092c0  added license
     new 2cac21e  applied spotless

The 6 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .asf.yaml                                          |    4 +-
 .editorconfig                                      |   27 -
 pom.xml => .flattened-pom.xml                      |  279 +--
 .gitattributes                                     |    1 -
 .github/workflows/chainsaw.yml                     |    5 +-
 README.md                                          |   17 +
 RELEASING                                          |   17 +
 pom.xml                                            |  252 ++-
 sign-artifacts.sh                                  |   15 +
 src/assembly/bin.xml                               |   36 +-
 src/assembly/standalone.xml                        |   33 +-
 src/changes/changes.xml                            |   32 +-
 src/main/java/org/apache/log4j/ULogger.java        |   10 +-
 .../log4j/chainsaw/AbstractPreferencePanel.java    |   35 +-
 .../log4j/chainsaw/ApplicationPreferenceModel.java |   40 +-
 .../chainsaw/ApplicationPreferenceModelPanel.java  |  278 ++-
 .../org/apache/log4j/chainsaw/BasicPrefPanel.java  |    3 +-
 .../apache/log4j/chainsaw/ChainsawAppender.java    |   20 +-
 .../org/apache/log4j/chainsaw/ChainsawColumns.java |   18 +-
 .../apache/log4j/chainsaw/ChainsawConstants.java   |   26 +-
 .../chainsaw/ChainsawCyclicBufferTableModel.java   |  310 +--
 .../log4j/chainsaw/ChainsawEventBatchListener.java |    2 +-
 .../org/apache/log4j/chainsaw/ChainsawStarter.java |   54 +-
 .../apache/log4j/chainsaw/ChainsawStatusBar.java   |  170 +-
 .../log4j/chainsaw/ChainsawToolBarAndMenus.java    |  595 +++--
 .../org/apache/log4j/chainsaw/ChainsawViewer.java  |    4 +-
 .../log4j/chainsaw/CheckListCellRenderer.java      |   24 +-
 .../apache/log4j/chainsaw/ColumnComparator.java    |  175 +-
 .../chainsaw/CopyEventsToClipboardAction.java      |   39 +-
 .../apache/log4j/chainsaw/CyclicBufferList.java    |   12 +-
 .../org/apache/log4j/chainsaw/DockablePanel.java   |    6 +-
 .../org/apache/log4j/chainsaw/EventContainer.java  |   12 +-
 .../apache/log4j/chainsaw/EventCountListener.java  |    4 +-
 .../log4j/chainsaw/ExpressionRuleContext.java      |  101 +-
 .../log4j/chainsaw/JTextComponentFormatter.java    |    7 +-
 .../chainsaw/LogFilePatternLayoutBuilder.java      |  111 +-
 .../apache/log4j/chainsaw/LoggingEventWrapper.java |   21 +-
 .../apache/log4j/chainsaw/ModifiableListModel.java |    3 +-
 .../org/apache/log4j/chainsaw/NewKeyEvent.java     |    2 +-
 .../org/apache/log4j/chainsaw/NewKeyListener.java  |    4 +-
 .../org/apache/log4j/chainsaw/PopupListener.java   |    4 +-
 .../org/apache/log4j/chainsaw/ProgressPanel.java   |    8 +-
 .../log4j/chainsaw/ReceiverConfigurationPanel.java |  111 +-
 .../log4j/chainsaw/ReceiverEventListener.java      |    6 +-
 .../org/apache/log4j/chainsaw/RuleMediator.java    |   13 +-
 .../apache/log4j/chainsaw/ShutdownListener.java    |    5 +-
 .../org/apache/log4j/chainsaw/ShutdownManager.java |   94 +-
 .../org/apache/log4j/chainsaw/SortTableModel.java  |    4 +-
 .../log4j/chainsaw/TableColorizingRenderer.java    |  274 +--
 .../apache/log4j/chainsaw/color/ColorPanel.java    |  368 ++--
 .../org/apache/log4j/chainsaw/color/Colorizer.java |    3 +-
 .../apache/log4j/chainsaw/color/RuleColorizer.java |   69 +-
 .../chainsaw/components/about/ChainsawAbout.java   |   31 +-
 .../chainsaw/components/elements/SmallButton.java  |   27 +-
 .../components/elements/SmallToggleButton.java     |   17 +-
 .../components/elements/TabIconHandler.java        |   80 +-
 .../components/elements/sorttable/JSortTable.java  |   44 +-
 .../elements/sorttable/SortArrowIcon.java          |    6 +-
 .../elements/sorttable/SortHeaderRenderer.java     |    8 +-
 .../loggernamepanel/LoggerNameListener.java        |    3 +-
 .../loggernamepanel/LoggerNameModel.java           |    5 +-
 .../loggernamepanel/LoggerNameModelSupport.java    |    7 +-
 .../loggernamepanel/LoggerNameTreePanel.java       |  380 ++--
 .../components/logpanel/AutoFilterComboBox.java    |   48 +-
 .../logpanel/ColumnNameKeywordMapper.java          |   19 +-
 .../components/logpanel/ElementFactory.java        |   41 +-
 .../chainsaw/components/logpanel/LogPanel.java     | 2279 ++++++++++----------
 .../logpanel/LogPanelLoggerTreeModel.java          |   32 +-
 .../logpanel/LogPanelPreferenceModel.java          |   39 +-
 .../logpanel/LogPanelPreferencePanel.java          |  502 +++--
 .../chainsaw/components/splash/ChainsawSplash.java |   22 +-
 .../chainsaw/components/splash/SplashViewer.java   |    5 +-
 .../components/tabbedpane/ChainsawTabbedPane.java  |   26 +-
 .../components/tabbedpane/SavableTabSetting.java   |    5 +-
 .../chainsaw/components/tutorial/Generator.java    |   27 +-
 .../components/tutorial/GeneratorBeanInfo.java     |    5 +-
 .../components/tutorial/RandomWordGenerator.java   |    5 +-
 .../components/tutorial/TutorialFrame.java         |  197 +-
 .../chainsaw/components/welcome/WelcomePanel.java  |   98 +-
 .../apache/log4j/chainsaw/dnd/FileDnDTarget.java   |   26 +-
 .../apache/log4j/chainsaw/file/FileLoadAction.java |  135 --
 .../org/apache/log4j/chainsaw/file/FileMenu.java   |   95 +-
 .../apache/log4j/chainsaw/file/FileSaveAction.java |   45 +-
 .../chainsaw/filter/EventTypeEntryContainer.java   |    7 +-
 .../apache/log4j/chainsaw/filter/FilterModel.java  |    8 +-
 .../apache/log4j/chainsaw/help/HelpLocator.java    |    9 +-
 .../apache/log4j/chainsaw/help/HelpManager.java    |   20 +-
 .../log4j/chainsaw/helper/OkCancelPanel.java       |    8 +-
 .../apache/log4j/chainsaw/helper/SwingHelper.java  |   13 +-
 .../chainsaw/helper/TableCellEditorFactory.java    |   17 +-
 .../apache/log4j/chainsaw/icons/ChainsawIcons.java |  140 +-
 .../log4j/chainsaw/icons/LevelIconFactory.java     |   29 +-
 .../log4j/chainsaw/icons/LineIconFactory.java      |   58 +-
 .../chainsaw/layout/DefaultLayoutFactory.java      |   25 +-
 .../log4j/chainsaw/layout/EventDetailLayout.java   |   50 +-
 .../log4j/chainsaw/layout/LayoutEditorPane.java    |  168 +-
 .../chainsaw/logevents/ChainsawLoggingEvent.java   |   19 +-
 .../logevents/ChainsawLoggingEventBuilder.java     |   43 +-
 .../org/apache/log4j/chainsaw/logevents/Level.java |    2 +-
 .../log4j/chainsaw/logevents/LocationInfo.java     |   16 +-
 .../org/apache/log4j/chainsaw/logui/LogUI.java     |  148 +-
 .../log4j/chainsaw/logui/LogUIPanelBuilder.java    |   94 +-
 .../chainsaw/logui/LogUiKeyStrokeCreator.java      |   90 +-
 .../log4j/chainsaw/logui/LogUiReceiversPanel.java  |   44 +-
 .../apache/log4j/chainsaw/osx/OSXIntegration.java  |   25 +-
 .../chainsaw/prefs/AbstractSettingsEvent.java      |    4 +-
 .../log4j/chainsaw/prefs/LoadSettingsEvent.java    |    9 +-
 .../apache/log4j/chainsaw/prefs/MRUFileList.java   |   14 +-
 .../log4j/chainsaw/prefs/ProfileManager.java       |   15 +-
 .../apache/log4j/chainsaw/prefs/Profileable.java   |    4 +-
 .../log4j/chainsaw/prefs/SaveSettingsEvent.java    |    4 +-
 .../apache/log4j/chainsaw/prefs/SettingsEvent.java |    2 +-
 .../log4j/chainsaw/prefs/SettingsListener.java     |    2 +-
 .../log4j/chainsaw/prefs/SettingsManager.java      |   70 +-
 .../log4j/chainsaw/receiver/ChainsawReceiver.java  |   50 +-
 .../chainsaw/receiver/ChainsawReceiverFactory.java |   16 +-
 .../receiver/ChainsawReceiverSkeleton.java         |   77 +-
 .../chainsaw/receivers/NewReceiverDialogPanel.java |   13 +-
 .../receivers/PluginPropertyEditorPanel.java       |  120 +-
 .../receivers/ReceiverTreeCellRenderer.java        |   37 +-
 .../log4j/chainsaw/receivers/ReceiversPanel.java   |  581 +++--
 .../chainsaw/receivers/ReceiversTreeModel.java     |   92 +-
 .../log4j/chainsaw/receivers/VisualReceiver.java   |   13 +-
 .../chainsaw/vfs/VFSLogFilePatternReceiver.java    |  217 +-
 .../vfs/VFSLogFilePatternReceiverBeanInfo.java     |   15 +-
 .../vfs/VFSLogFilePatternReceiverFactory.java      |  176 +-
 .../chainsaw/zeroconf/ZeroConfDeviceModel.java     |   21 +-
 .../log4j/chainsaw/zeroconf/ZeroConfPlugin.java    |  295 +--
 .../chainsaw/zeroconf/ZeroConfPreferenceModel.java |   10 +-
 .../java/org/apache/log4j/db/ConnectionSource.java |   70 -
 .../apache/log4j/db/ConnectionSourceSkeleton.java  |  149 --
 .../org/apache/log4j/db/CustomSQLDBReceiver.java   |  465 ----
 src/main/java/org/apache/log4j/db/DBAppender.java  |  370 ----
 src/main/java/org/apache/log4j/db/DBHelper.java    |   67 -
 src/main/java/org/apache/log4j/db/DBReceiver.java  |  139 --
 .../java/org/apache/log4j/db/DBReceiverJob.java    |  224 --
 .../log4j/db/DataSourceConnectionSource.java       |  105 -
 .../log4j/db/DriverManagerConnectionSource.java    |  137 --
 .../org/apache/log4j/db/JNDIConnectionSource.java  |  144 --
 .../org/apache/log4j/db/dialect/HSQLDBDialect.java |   31 -
 .../org/apache/log4j/db/dialect/MsSQLDialect.java  |   34 -
 .../org/apache/log4j/db/dialect/MySQLDialect.java  |   29 -
 .../org/apache/log4j/db/dialect/OracleDialect.java |   33 -
 .../apache/log4j/db/dialect/PostgreSQLDialect.java |   34 -
 .../org/apache/log4j/db/dialect/SQLDialect.java    |   26 -
 .../org/apache/log4j/db/dialect/SybaseDialect.java |   31 -
 .../java/org/apache/log4j/db/dialect/Util.java     |  119 -
 src/main/java/org/apache/log4j/db/dialect/db2.sql  |   64 -
 src/main/java/org/apache/log4j/db/dialect/db2l.sql |   61 -
 .../java/org/apache/log4j/db/dialect/hsqldb.sql    |   60 -
 .../java/org/apache/log4j/db/dialect/mssql.sql     |   61 -
 .../java/org/apache/log4j/db/dialect/mysql.sql     |   71 -
 .../java/org/apache/log4j/db/dialect/oracle.sql    |   77 -
 .../org/apache/log4j/db/dialect/postgresql.sql     |   63 -
 .../java/org/apache/log4j/db/package-info.java     |   28 -
 .../java/org/apache/log4j/helpers/Constants.java   |    8 +-
 .../org/apache/log4j/helpers/MessageFormatter.java |   21 +-
 .../java/org/apache/log4j/net/AddressBased.java    |    4 +-
 .../java/org/apache/log4j/net/ECSLogEvent.java     |   12 +-
 .../java/org/apache/log4j/net/JsonReceiver.java    |   42 +-
 .../org/apache/log4j/net/JsonReceiverFactory.java  |   24 +-
 .../java/org/apache/log4j/net/JsonSocketNode.java  |  158 --
 .../org/apache/log4j/net/MulticastReceiver.java    |   27 +-
 .../log4j/net/MulticastReceiverBeanInfo.java       |    5 +-
 .../apache/log4j/net/MulticastReceiverFactory.java |   22 +-
 .../java/org/apache/log4j/net/NetworkBased.java    |    3 +-
 src/main/java/org/apache/log4j/net/PortBased.java  |    4 +-
 .../apache/log4j/net/SocketNodeEventListener.java  |    3 +-
 .../java/org/apache/log4j/net/UDPReceiver.java     |   19 +-
 .../org/apache/log4j/net/UDPReceiverFactory.java   |   19 +-
 .../org/apache/log4j/net/XMLReceiverFactory.java   |   23 +-
 .../java/org/apache/log4j/net/XMLSocketNode.java   |  201 --
 .../org/apache/log4j/net/XMLSocketReceiver.java    |   40 +-
 .../java/org/apache/log4j/rule/AbstractRule.java   |   44 +-
 src/main/java/org/apache/log4j/rule/AndRule.java   |   68 +-
 src/main/java/org/apache/log4j/rule/ColorRule.java |   86 +-
 .../java/org/apache/log4j/rule/EqualsRule.java     |   90 +-
 .../java/org/apache/log4j/rule/ExistsRule.java     |   72 +-
 .../java/org/apache/log4j/rule/ExpressionRule.java |  168 +-
 .../java/org/apache/log4j/rule/InFixToPostFix.java |  545 +++--
 .../java/org/apache/log4j/rule/InequalityRule.java |  146 +-
 .../org/apache/log4j/rule/LevelEqualsRule.java     |   11 +-
 .../org/apache/log4j/rule/LevelInequalityRule.java |   36 +-
 src/main/java/org/apache/log4j/rule/LikeRule.java  |  162 +-
 .../java/org/apache/log4j/rule/NotEqualsRule.java  |   92 +-
 .../org/apache/log4j/rule/NotLevelEqualsRule.java  |   13 +-
 src/main/java/org/apache/log4j/rule/NotRule.java   |   82 +-
 src/main/java/org/apache/log4j/rule/OrRule.java    |  127 +-
 .../apache/log4j/rule/PartialTextMatchRule.java    |   81 +-
 src/main/java/org/apache/log4j/rule/Rule.java      |   56 +-
 .../java/org/apache/log4j/rule/RuleFactory.java    |  153 +-
 .../org/apache/log4j/rule/TimestampEqualsRule.java |   64 +-
 .../apache/log4j/rule/TimestampInequalityRule.java |   91 +-
 src/main/java/org/apache/log4j/scheduler/Job.java  |    4 +-
 .../java/org/apache/log4j/scheduler/Scheduler.java |   30 +-
 src/main/java/org/apache/log4j/spi/Decoder.java    |    5 +-
 src/main/java/org/apache/log4j/spi/ErrorItem.java  |   12 +-
 .../log4j/spi/LoggingEventFieldResolver.java       |  239 +-
 src/main/java/org/apache/log4j/spi/NOPULogger.java |   22 +-
 .../java/org/apache/log4j/spi/SimpleULogger.java   |   37 +-
 .../apache/log4j/varia/LogFilePatternReceiver.java |  160 +-
 .../varia/LogFilePatternReceiverBeanInfo.java      |   12 +-
 .../log4j/varia/LogFilePatternReceiverFactory.java |  176 +-
 .../org/apache/log4j/xml/Log4jEntityResolver.java  |   46 +-
 .../org/apache/log4j/xml/LogFileXMLReceiver.java   |   17 +-
 .../log4j/xml/UtilLoggingEntityResolver.java       |   11 +-
 .../apache/log4j/xml/UtilLoggingXMLDecoder.java    |   85 +-
 src/main/java/org/apache/log4j/xml/XMLDecoder.java |  115 +-
 ...log4j.chainsaw.receiver.ChainsawReceiverFactory |   15 +
 src/main/resources/log4j2.xml                      |   16 +
 .../apache/log4j/chainsaw/help/release-notes.html  |   17 +
 .../log4j/chainsaw/log4j-receiver-sample.xml       |   60 +-
 .../apache/log4j/chainsaw/prefs/default.properties |    5 +-
 .../log4j/chainsaw/prefs/logpanel.properties       |    4 +-
 src/site/site.xml                                  |   41 +-
 .../java/org/apache/log4j/xml/XMLDecoderTest.java  |   15 +-
 .../apache/log4j/db/append-with-drivermanager1.xml |   45 +-
 .../apache/log4j/db/read-with-drivermanager1.xml   |   48 +-
 .../resources/org/apache/log4j/rewrite/map.xml     |   32 +-
 .../org/apache/log4j/rewrite/property.xml          |   32 +-
 .../org/apache/log4j/rewrite/reflection.xml        |   32 +-
 .../resources/org/apache/log4j/xml/xmlLayout.1.xml |   32 +-
 .../org/apache/log4j/xml/xsltLayout.1.xml          |   31 +-
 223 files changed, 6993 insertions(+), 10829 deletions(-)
 delete mode 100644 .editorconfig
 copy pom.xml => .flattened-pom.xml (75%)
 delete mode 100644 .gitattributes
 delete mode 100644 src/main/java/org/apache/log4j/chainsaw/file/FileLoadAction.java
 delete mode 100644 src/main/java/org/apache/log4j/db/ConnectionSource.java
 delete mode 100644 src/main/java/org/apache/log4j/db/ConnectionSourceSkeleton.java
 delete mode 100644 src/main/java/org/apache/log4j/db/CustomSQLDBReceiver.java
 delete mode 100644 src/main/java/org/apache/log4j/db/DBAppender.java
 delete mode 100644 src/main/java/org/apache/log4j/db/DBHelper.java
 delete mode 100644 src/main/java/org/apache/log4j/db/DBReceiver.java
 delete mode 100644 src/main/java/org/apache/log4j/db/DBReceiverJob.java
 delete mode 100644 src/main/java/org/apache/log4j/db/DataSourceConnectionSource.java
 delete mode 100644 src/main/java/org/apache/log4j/db/DriverManagerConnectionSource.java
 delete mode 100644 src/main/java/org/apache/log4j/db/JNDIConnectionSource.java
 delete mode 100644 src/main/java/org/apache/log4j/db/dialect/HSQLDBDialect.java
 delete mode 100644 src/main/java/org/apache/log4j/db/dialect/MsSQLDialect.java
 delete mode 100644 src/main/java/org/apache/log4j/db/dialect/MySQLDialect.java
 delete mode 100644 src/main/java/org/apache/log4j/db/dialect/OracleDialect.java
 delete mode 100644 src/main/java/org/apache/log4j/db/dialect/PostgreSQLDialect.java
 delete mode 100644 src/main/java/org/apache/log4j/db/dialect/SQLDialect.java
 delete mode 100644 src/main/java/org/apache/log4j/db/dialect/SybaseDialect.java
 delete mode 100644 src/main/java/org/apache/log4j/db/dialect/Util.java
 delete mode 100644 src/main/java/org/apache/log4j/db/dialect/db2.sql
 delete mode 100644 src/main/java/org/apache/log4j/db/dialect/db2l.sql
 delete mode 100644 src/main/java/org/apache/log4j/db/dialect/hsqldb.sql
 delete mode 100644 src/main/java/org/apache/log4j/db/dialect/mssql.sql
 delete mode 100644 src/main/java/org/apache/log4j/db/dialect/mysql.sql
 delete mode 100644 src/main/java/org/apache/log4j/db/dialect/oracle.sql
 delete mode 100644 src/main/java/org/apache/log4j/db/dialect/postgresql.sql
 delete mode 100644 src/main/java/org/apache/log4j/db/package-info.java
 delete mode 100644 src/main/java/org/apache/log4j/net/JsonSocketNode.java
 delete mode 100644 src/main/java/org/apache/log4j/net/XMLSocketNode.java


(logging-chainsaw) 02/06: removed unnecessary files

Posted by gr...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

grobmeier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/logging-chainsaw.git

commit 87b3b588554f0e0e15bdb00a1535e21cb7db9190
Author: Christian Grobmeier <cg...@grobmeier.de>
AuthorDate: Thu Dec 21 18:59:47 2023 +0100

    removed unnecessary files
---
 .editorconfig  | 27 ---------------------------
 .gitattributes |  1 -
 2 files changed, 28 deletions(-)

diff --git a/.editorconfig b/.editorconfig
deleted file mode 100644
index e156253..0000000
--- a/.editorconfig
+++ /dev/null
@@ -1,27 +0,0 @@
-[*]
-charset=utf-8
-end_of_line=lf
-insert_final_newline=true
-indent_style=space
-indent_size=2
-
-[*.java]
-indent_style=space
-indent_size=4
-
-[*.css]
-indent_style=space
-indent_size=4
-
-[{messages.*,spring.handlers,spring.schemas,messages,org.codehaus.groovy.runtime.ExtensionModule,*.properties}]
-indent_style=space
-indent_size=4
-
-[{*.applejs,*.js}]
-indent_style=space
-indent_size=4
-
-[{*.gson,*.gradle,*.groovy,*.gdsl,*.gy,*.gant}]
-indent_style=space
-indent_size=4
-
diff --git a/.gitattributes b/.gitattributes
deleted file mode 100644
index 2e966f6..0000000
--- a/.gitattributes
+++ /dev/null
@@ -1 +0,0 @@
-*.java                                  text diff=java


(logging-chainsaw) 03/06: removed commented and unused file

Posted by gr...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

grobmeier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/logging-chainsaw.git

commit 096cd87e30529b33fd8b58631edd5563fe6110dc
Author: Christian Grobmeier <cg...@grobmeier.de>
AuthorDate: Thu Dec 21 19:00:02 2023 +0100

    removed commented and unused file
---
 .../apache/log4j/chainsaw/file/FileLoadAction.java | 135 ---------------------
 1 file changed, 135 deletions(-)

diff --git a/src/main/java/org/apache/log4j/chainsaw/file/FileLoadAction.java b/src/main/java/org/apache/log4j/chainsaw/file/FileLoadAction.java
deleted file mode 100644
index 6c6db08..0000000
--- a/src/main/java/org/apache/log4j/chainsaw/file/FileLoadAction.java
+++ /dev/null
@@ -1,135 +0,0 @@
-///*
-// * Licensed to the Apache Software Foundation (ASF) under one or more
-// * contributor license agreements.  See the NOTICE file distributed with
-// * this work for additional information regarding copyright ownership.
-// * The ASF licenses this file to You under the Apache License, Version 2.0
-// * (the "License"); you may not use this file except in compliance with
-// * the License.  You may obtain a copy of the License at
-// *
-// *      http://www.apache.org/licenses/LICENSE-2.0
-// *
-// * Unless required by applicable law or agreed to in writing, software
-// * distributed under the License is distributed on an "AS IS" BASIS,
-// * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// * See the License for the specific language governing permissions and
-// * limitations under the License.
-// */
-//
-//package org.apache.log4j.chainsaw;
-//
-//import org.apache.log4j.Logger;
-//import org.apache.log4j.chainsaw.helper.SwingHelper;
-//import org.apache.log4j.chainsaw.prefs.MRUFileList;
-//import org.apache.log4j.helpers.Constants;
-//import org.apache.log4j.spi.Decoder;
-//import org.apache.log4j.spi.LoggingEvent;
-//
-//import javax.swing.*;
-//import java.awt.event.ActionEvent;
-//import java.io.File;
-//import java.io.IOException;
-//import java.net.URL;
-//import java.util.HashMap;
-//import java.util.Map;
-//import java.util.Vector;
-//
-///**
-// * Allows the user to specify a particular file to open and import the events
-// * into a new tab.
-// *
-// * @author Paul Smith &lt;psmith@apache.org&gt;
-// * @author Scott Deboy &lt;sdeboy@apache.org&gt;
-// */
-//class FileLoadAction extends AbstractAction {
-//    private static final Logger LOG = Logger.getLogger(FileLoadAction.class);
-//
-//    /**
-//     * This action must have a reference to a LogUI window so that it can append
-//     * the events it loads
-//     */
-//    Decoder decoder;
-//
-//    private LogUI parent;
-//
-//    private boolean remoteURL;
-//
-//    public FileLoadAction(LogUI parent, Decoder decoder, String title,
-//                          boolean isRemoteURL) {
-//        super(title);
-//        remoteURL = isRemoteURL;
-//        this.decoder = decoder;
-//        this.parent = parent;
-//    }
-//
-//    /*
-//     * When the user chooses the Load action, a File chooser is presented to
-//     * allow them to find an XML file to load events from.
-//     *
-//     * Any events decoded from this file are added to one of the tabs.
-//     *
-//     * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
-//     */
-//    public void actionPerformed(ActionEvent e) {
-//        String name = "";
-//        URL url = null;
-//
-//        if (!remoteURL) {
-//            try {
-//                File selectedFile = SwingHelper.promptForFile(parent, null, "Load Events from XML file or zipped XML file...", true);
-//                if (selectedFile != null) {
-//                    url = selectedFile.toURI().toURL();
-//                    name = selectedFile.getName();
-//                }
-//            } catch (Exception ex) {
-//                // TODO: handle exception
-//            }
-//        } else {
-//            String urltext = JOptionPane
-//                .showInputDialog(parent,
-//                    "<html>Please type in the <b>complete</b> URL to the remote XML source.</html>");
-//
-//            if (urltext != null) {
-//                try {
-//                    url = new URL(urltext);
-//                } catch (Exception ex) {
-//                    JOptionPane.showMessageDialog(parent, "'" + urltext
-//                        + "' is not a valid URL.");
-//                }
-//            }
-//        }
-//
-//        if (url != null) {
-////            importURL(parent.handler, decoder, name, url);
-//            MRUFileList.log4jMRU().opened(url);
-//        }
-//    }
-//
-//    /**
-//     * Imports a URL into Chainsaw, by using the Decoder, and
-//     * using the name value as the Application key which (usually) determines
-//     * the Tab name
-//     *
-//     * @param name
-//     * @param url  URL to import
-//     */
-//    public static void importURL(final ChainsawAppenderHandler handler, final Decoder decoder, String name, URL url) {
-//        Map additionalProperties = new HashMap();
-//        additionalProperties.put(Constants.HOSTNAME_KEY, "file");
-//        additionalProperties.put(Constants.APPLICATION_KEY, name);
-//        decoder.setAdditionalProperties(additionalProperties);
-//
-//        final URL urlToUse = url;
-//        new Thread(() -> {
-//            try {
-//                Vector events = decoder.decode(urlToUse);
-//                for (Object event : events) {
-//                    handler.append((LoggingEvent) event);
-//                }
-//            } catch (IOException e1) {
-//                // TODO Handle the error with a nice msg
-//                LOG.error(e1);
-//            }
-//            MRUFileList.log4jMRU().opened(urlToUse);
-//        }).start();
-//    }
-//}


(logging-chainsaw) 01/06: corrected license

Posted by gr...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

grobmeier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/logging-chainsaw.git

commit f6bb4d58fcc8f8c075a5509448f36f74215408c9
Author: Christian Grobmeier <cg...@grobmeier.de>
AuthorDate: Thu Dec 21 18:59:35 2023 +0100

    corrected license
---
 .asf.yaml | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/.asf.yaml b/.asf.yaml
index bf078e2..45a284b 100644
--- a/.asf.yaml
+++ b/.asf.yaml
@@ -1,7 +1,8 @@
+#
 # Licensed to the Apache Software Foundation (ASF) under one or more
 # contributor license agreements.  See the NOTICE file distributed with
 # this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
+# The ASF licenses this file to you under the Apache License, Version 2.0
 # (the "License"); you may not use this file except in compliance with
 # the License.  You may obtain a copy of the License at
 #
@@ -12,6 +13,7 @@
 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 # See the License for the specific language governing permissions and
 # limitations under the License.
+#
 
 notifications:
   jira_options: link label


(logging-chainsaw) 05/06: added license

Posted by gr...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

grobmeier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/logging-chainsaw.git

commit 6f092c0b77ec81966b513dbd4935d7c6ea7dbcc0
Author: Christian Grobmeier <cg...@grobmeier.de>
AuthorDate: Thu Dec 21 19:02:11 2023 +0100

    added license
---
 README.md                                          | 17 ++++++
 RELEASING                                          | 17 ++++++
 pom.xml                                            | 33 ++++++------
 sign-artifacts.sh                                  | 15 ++++++
 ...log4j.chainsaw.receiver.ChainsawReceiverFactory | 15 ++++++
 src/main/resources/log4j2.xml                      | 16 ++++++
 .../apache/log4j/chainsaw/help/release-notes.html  | 17 ++++++
 .../log4j/chainsaw/log4j-receiver-sample.xml       | 60 +++++++++++-----------
 8 files changed, 143 insertions(+), 47 deletions(-)

diff --git a/README.md b/README.md
index 0492dfc..765d04b 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,20 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
 # Apache Chainsaw
 
 Apache Chainsaw is a GUI log file viewer
diff --git a/RELEASING b/RELEASING
index 7b8750e..56810c0 100644
--- a/RELEASING
+++ b/RELEASING
@@ -1 +1,18 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
 https://cwiki.apache.org/confluence/display/LOGGING/Chainsaw+Release+Guide
diff --git a/pom.xml b/pom.xml
index 75d0b7c..2f366eb 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,22 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements.  See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
--->
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to you under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <parent>
     <groupId>org.apache.logging</groupId>
     <artifactId>logging-parent</artifactId>
diff --git a/sign-artifacts.sh b/sign-artifacts.sh
index ac2a6e7..447f2d5 100755
--- a/sign-artifacts.sh
+++ b/sign-artifacts.sh
@@ -1,3 +1,18 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
 #!/bin/bash
 
 # script to generate .asc, .md5, and .sha512 files for built artifacts
diff --git a/src/main/resources/META-INF/services/org.apache.log4j.chainsaw.receiver.ChainsawReceiverFactory b/src/main/resources/META-INF/services/org.apache.log4j.chainsaw.receiver.ChainsawReceiverFactory
index 3ae791d..d1abbf2 100644
--- a/src/main/resources/META-INF/services/org.apache.log4j.chainsaw.receiver.ChainsawReceiverFactory
+++ b/src/main/resources/META-INF/services/org.apache.log4j.chainsaw.receiver.ChainsawReceiverFactory
@@ -1,3 +1,18 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
 org.apache.log4j.net.MulticastReceiverFactory
 org.apache.log4j.net.UDPReceiverFactory
 org.apache.log4j.net.XMLReceiverFactory
diff --git a/src/main/resources/log4j2.xml b/src/main/resources/log4j2.xml
index d551a29..f54a160 100644
--- a/src/main/resources/log4j2.xml
+++ b/src/main/resources/log4j2.xml
@@ -1,4 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to you under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
 <Configuration status="WARN">
   <Appenders>
     <Console name="Console" target="SYSTEM_OUT">
diff --git a/src/main/resources/org/apache/log4j/chainsaw/help/release-notes.html b/src/main/resources/org/apache/log4j/chainsaw/help/release-notes.html
index cfa6d91..59316c5 100644
--- a/src/main/resources/org/apache/log4j/chainsaw/help/release-notes.html
+++ b/src/main/resources/org/apache/log4j/chainsaw/help/release-notes.html
@@ -1,3 +1,20 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+-->
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
 <HTML>
 <HEAD>
diff --git a/src/main/resources/org/apache/log4j/chainsaw/log4j-receiver-sample.xml b/src/main/resources/org/apache/log4j/chainsaw/log4j-receiver-sample.xml
index 47ceeea..6aedf74 100644
--- a/src/main/resources/org/apache/log4j/chainsaw/log4j-receiver-sample.xml
+++ b/src/main/resources/org/apache/log4j/chainsaw/log4j-receiver-sample.xml
@@ -1,21 +1,20 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-## copy and modify xml contents below to create a Chainsaw configuration ##
-
-<?xml version="1.0" encoding="UTF-8" ?>
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to you under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
 <!DOCTYPE log4j:configuration >
 <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="true">
    <appender name="A2" class="org.apache.log4j.ConsoleAppender">
@@ -37,38 +36,38 @@
 
    <plugin name="MulticastReceiver" class="org.apache.log4j.net.MulticastReceiver">
       <param name="Port" value="4449"/>
-      <param name="Address" value="224.1.1.1"/>      
+      <param name="Address" value="224.1.1.1"/>
    </plugin>
 
    <plugin name="LogFileXMLReceiver" class="org.apache.log4j.xml.LogFileXMLReceiver">
      <param name="fileURL" value="file:///c:/sample.xml"/>
      <param name="name" value="sampleLogFileXMLReceiver"/>
-     <param name="tailing" value="true"/> 
+     <param name="tailing" value="true"/>
    </plugin>
 
    <plugin name="LogFileReceiver" class="org.apache.log4j.varia.LogFilePatternReceiver">
      <param name="fileURL" value="file:///c:/sample.log"/>
-     <param name="timestampFormat" value="yyyy-MM-dd HH:mm:ss,SSS"/> 
-     <param name="logFormat" value="TIMESTAMP LEVEL [LOGGER] MESSAGE"/> 
+     <param name="timestampFormat" value="yyyy-MM-dd HH:mm:ss,SSS"/>
+     <param name="logFormat" value="TIMESTAMP LEVEL [LOGGER] MESSAGE"/>
      <param name="name" value="sampleLogFilePatternReceiver"/>
-     <param name="tailing" value="true"/> 
+     <param name="tailing" value="true"/>
    </plugin>
 
    <plugin name="VFSLogFilePatternReceiverWithUserInfoPrompt" class="org.apache.log4j.chainsaw.vfs.VFSLogFilePatternReceiver">
      <param name="fileURL" value="sftp://192.168.0.100:///c:/sample.log"/>
-     <param name="timestampFormat" value="yyyy-MM-dd HH:mm:ss,SSS"/> 
-     <param name="logFormat" value="TIMESTAMP LEVEL [LOGGER] MESSAGE"/> 
+     <param name="timestampFormat" value="yyyy-MM-dd HH:mm:ss,SSS"/>
+     <param name="logFormat" value="TIMESTAMP LEVEL [LOGGER] MESSAGE"/>
      <param name="name" value="sampleLogFilePatternReceiver"/>
      <param name="promptForUserInfo" value="true"/>
-     <param name="tailing" value="true"/> 
+     <param name="tailing" value="true"/>
    </plugin>
 
    <plugin name="VFSLogFilePatternReceiverNoUserInfoPrompt" class="org.apache.log4j.chainsaw.vfs.VFSLogFilePatternReceiver">
      <param name="fileURL" value="sftp://user:password@192.168.0.100:///c:/sample.log"/>
-     <param name="timestampFormat" value="yyyy-MM-dd HH:mm:ss,SSS"/> 
-     <param name="logFormat" value="TIMESTAMP LEVEL [LOGGER] MESSAGE"/> 
+     <param name="timestampFormat" value="yyyy-MM-dd HH:mm:ss,SSS"/>
+     <param name="logFormat" value="TIMESTAMP LEVEL [LOGGER] MESSAGE"/>
      <param name="name" value="sampleLogFilePatternReceiver"/>
-     <param name="tailing" value="true"/> 
+     <param name="tailing" value="true"/>
    </plugin>
 
    <plugin name="CustomDBReceiver" class="org.apache.log4j.db.CustomSQLDBReceiver">
@@ -79,7 +78,7 @@
         <param name="url" value="jdbc:mysql://127.0.0.1/logs"/>
 	  </connectionSource>
       <param name="refreshMillis" value="5000"/>
-      <param name="sql" value='select logger as LOGGER, timestamp as TIMESTAMP, level as LEVEL, thread as THREAD, message as MESSAGE, ndc as NDC, mdc as MDC, class as CLASS, method as METHOD, file as FILE, line as LINE, concat("{{application,databaselogs,hostname,mymachine,log4jid,", COUNTER, "}}") as PROPERTIES, "" as EXCEPTION from logtable'/> 
+      <param name="sql" value='select logger as LOGGER, timestamp as TIMESTAMP, level as LEVEL, thread as THREAD, message as MESSAGE, ndc as NDC, mdc as MDC, class as CLASS, method as METHOD, file as FILE, line as LINE, concat("{{application,databaselogs,hostname,mymachine,log4jid,", COUNTER, "}}") as PROPERTIES, "" as EXCEPTION from logtable'/>
       <param name="IDField" value="COUNTER"/>
    </plugin>
 
@@ -88,4 +87,3 @@
       <level value="debug"/>
    </root>
 </log4j:configuration>
-


(logging-chainsaw) 04/06: removed unused DB package

Posted by gr...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

grobmeier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/logging-chainsaw.git

commit eec06851b1997686ee4e45724e274da704b93951
Author: Christian Grobmeier <cg...@grobmeier.de>
AuthorDate: Thu Dec 21 19:00:55 2023 +0100

    removed unused DB package
---
 .../java/org/apache/log4j/db/ConnectionSource.java |  70 ----
 .../apache/log4j/db/ConnectionSourceSkeleton.java  | 149 -------
 .../org/apache/log4j/db/CustomSQLDBReceiver.java   | 465 ---------------------
 src/main/java/org/apache/log4j/db/DBAppender.java  | 370 ----------------
 src/main/java/org/apache/log4j/db/DBHelper.java    |  67 ---
 src/main/java/org/apache/log4j/db/DBReceiver.java  | 139 ------
 .../java/org/apache/log4j/db/DBReceiverJob.java    | 224 ----------
 .../log4j/db/DataSourceConnectionSource.java       | 105 -----
 .../log4j/db/DriverManagerConnectionSource.java    | 137 ------
 .../org/apache/log4j/db/JNDIConnectionSource.java  | 144 -------
 .../org/apache/log4j/db/dialect/HSQLDBDialect.java |  31 --
 .../org/apache/log4j/db/dialect/MsSQLDialect.java  |  34 --
 .../org/apache/log4j/db/dialect/MySQLDialect.java  |  29 --
 .../org/apache/log4j/db/dialect/OracleDialect.java |  33 --
 .../apache/log4j/db/dialect/PostgreSQLDialect.java |  34 --
 .../org/apache/log4j/db/dialect/SQLDialect.java    |  26 --
 .../org/apache/log4j/db/dialect/SybaseDialect.java |  31 --
 .../java/org/apache/log4j/db/dialect/Util.java     | 119 ------
 src/main/java/org/apache/log4j/db/dialect/db2.sql  |  64 ---
 src/main/java/org/apache/log4j/db/dialect/db2l.sql |  61 ---
 .../java/org/apache/log4j/db/dialect/hsqldb.sql    |  60 ---
 .../java/org/apache/log4j/db/dialect/mssql.sql     |  61 ---
 .../java/org/apache/log4j/db/dialect/mysql.sql     |  71 ----
 .../java/org/apache/log4j/db/dialect/oracle.sql    |  77 ----
 .../org/apache/log4j/db/dialect/postgresql.sql     |  63 ---
 .../java/org/apache/log4j/db/package-info.java     |  28 --
 26 files changed, 2692 deletions(-)

diff --git a/src/main/java/org/apache/log4j/db/ConnectionSource.java b/src/main/java/org/apache/log4j/db/ConnectionSource.java
deleted file mode 100644
index d59a1cc..0000000
--- a/src/main/java/org/apache/log4j/db/ConnectionSource.java
+++ /dev/null
@@ -1,70 +0,0 @@
-///*
-// * Licensed to the Apache Software Foundation (ASF) under one or more
-// * contributor license agreements.  See the NOTICE file distributed with
-// * this work for additional information regarding copyright ownership.
-// * The ASF licenses this file to You under the Apache License, Version 2.0
-// * (the "License"); you may not use this file except in compliance with
-// * the License.  You may obtain a copy of the License at
-// *
-// *      http://www.apache.org/licenses/LICENSE-2.0
-// *
-// * Unless required by applicable law or agreed to in writing, software
-// * distributed under the License is distributed on an "AS IS" BASIS,
-// * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// * See the License for the specific language governing permissions and
-// * limitations under the License.
-// */
-//
-//package org.apache.log4j.db;
-//
-//import org.apache.log4j.spi.Component;
-//import org.apache.log4j.spi.OptionHandler;
-//
-//import java.sql.Connection;
-//import java.sql.SQLException;
-//
-//
-///**
-// * The {@code ConnectionSource} interface provides a pluggable means of
-// * transparently obtaining JDBC {@link java.sql.Connection}s for log4j classes
-// * that require the use of a {@link java.sql.Connection}.
-// *
-// * @author <a href="mailto:rdecampo@twcny.rr.com">Ray DeCampo</a>
-// */
-//public interface ConnectionSource extends Component, OptionHandler {
-//
-//    int UNKNOWN_DIALECT = 0;
-//    int POSTGRES_DIALECT = 1;
-//    int MYSQL_DIALECT = 2;
-//    int ORACLE_DIALECT = 3;
-//    int MSSQL_DIALECT = 4;
-//    int HSQL_DIALECT = 5;
-//
-//    /**
-//     * Obtain a {@link java.sql.Connection} for use.  The client is
-//     * responsible for closing the {@link java.sql.Connection} when it is no
-//     * longer required.
-//     *
-//     * @throws SQLException if a {@link java.sql.Connection} could not be
-//     *                      obtained
-//     */
-//    Connection getConnection() throws SQLException;
-//
-//    /**
-//     * Get the SQL dialect that should be used for this connection. Note that the
-//     * dialect is not needed if the JDBC driver supports the getGeneratedKeys
-//     * method.
-//     */
-//    int getSQLDialectCode();
-//
-//    /**
-//     * If the connection supports the JDBC 3.0 getGeneratedKeys method, then
-//     * we do not need any specific dialect support.
-//     */
-//    boolean supportsGetGeneratedKeys();
-//
-//    /**
-//     * If the connection does not support batch updates, we will avoid using them.
-//     */
-//    boolean supportsBatchUpdates();
-//}
diff --git a/src/main/java/org/apache/log4j/db/ConnectionSourceSkeleton.java b/src/main/java/org/apache/log4j/db/ConnectionSourceSkeleton.java
deleted file mode 100644
index 3fc8f1e..0000000
--- a/src/main/java/org/apache/log4j/db/ConnectionSourceSkeleton.java
+++ /dev/null
@@ -1,149 +0,0 @@
-///*
-// * Licensed to the Apache Software Foundation (ASF) under one or more
-// * contributor license agreements.  See the NOTICE file distributed with
-// * this work for additional information regarding copyright ownership.
-// * The ASF licenses this file to You under the Apache License, Version 2.0
-// * (the "License"); you may not use this file except in compliance with
-// * the License.  You may obtain a copy of the License at
-// *
-// *      http://www.apache.org/licenses/LICENSE-2.0
-// *
-// * Unless required by applicable law or agreed to in writing, software
-// * distributed under the License is distributed on an "AS IS" BASIS,
-// * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// * See the License for the specific language governing permissions and
-// * limitations under the License.
-// */
-//
-//package org.apache.log4j.db;
-//
-//import org.apache.log4j.db.dialect.Util;
-//import org.apache.log4j.spi.ComponentBase;
-//
-//import java.sql.Connection;
-//import java.sql.DatabaseMetaData;
-//import java.sql.SQLException;
-//
-//
-///**
-// * @author Ceki G&uuml;lc&uuml;
-// */
-//public abstract class ConnectionSourceSkeleton extends ComponentBase implements ConnectionSource {
-//
-//    private Boolean overriddenSupportsGetGeneratedKeys = null;
-//
-//    private String user = null;
-//    private String password = null;
-//
-//    // initially we have an unkonw dialect
-//    private int dialectCode = UNKNOWN_DIALECT;
-//    private boolean supportsGetGeneratedKeys = false;
-//    private boolean supportsBatchUpdates = false;
-//
-//
-//    /**
-//     * Learn relevant information about this connection source.
-//     */
-//    public void discoverConnnectionProperties() {
-//        Connection connection = null;
-//        try {
-//            connection = getConnection();
-//            if (connection == null) {
-//                getLogger().warn("Could not get a conneciton");
-//                return;
-//            }
-//            DatabaseMetaData meta = connection.getMetaData();
-//            Util util = new Util();
-//            util.setLoggerRepository(repository);
-//            if (overriddenSupportsGetGeneratedKeys != null) {
-//                supportsGetGeneratedKeys = overriddenSupportsGetGeneratedKeys;
-//            } else {
-//                supportsGetGeneratedKeys = util.supportsGetGeneratedKeys(meta);
-//            }
-//            supportsBatchUpdates = util.supportsBatchUpdates(meta);
-//            dialectCode = Util.discoverSQLDialect(meta);
-//        } catch (SQLException se) {
-//            getLogger().warn("Could not discover the dialect to use.", se);
-//        } finally {
-//            DBHelper.closeConnection(connection);
-//        }
-//    }
-//
-//    /**
-//     * Does this connection support the JDBC Connection.getGeneratedKeys method?
-//     */
-//    public final boolean supportsGetGeneratedKeys() {
-//        return supportsGetGeneratedKeys;
-//    }
-//
-//    public final int getSQLDialectCode() {
-//        return dialectCode;
-//    }
-//
-//    /**
-//     * Get the password for this connection source.
-//     */
-//    public final String getPassword() {
-//        return password;
-//    }
-//
-//    /**
-//     * Sets the password.
-//     *
-//     * @param password The password to set
-//     */
-//    public final void setPassword(final String password) {
-//        this.password = password;
-//    }
-//
-//    /**
-//     * Get the user for this connection source.
-//     */
-//    public final String getUser() {
-//        return user;
-//    }
-//
-//    /**
-//     * Sets the username.
-//     *
-//     * @param username The username to set
-//     */
-//    public final void setUser(final String username) {
-//        this.user = username;
-//    }
-//
-//    /**
-//     * Returns the "overridden" value of "supportsGetGeneratedKeys" property of
-//     * the JDBC driver. In certain cases, getting (e.g. Oracle 10g) generated keys
-//     * does not work because it returns the ROWID, not the value of the sequence.
-//     *
-//     * @return A non null string, with "true" or "false" value, if overridden,
-//     * <code>null</code> if not overridden.
-//     */
-//    public String getOverriddenSupportsGetGeneratedKeys() {
-//        return overriddenSupportsGetGeneratedKeys != null ? overriddenSupportsGetGeneratedKeys
-//            .toString()
-//            : null;
-//    }
-//
-//    /**
-//     * Sets the "overridden" value of "supportsGetGeneratedKeys" property of the
-//     * JDBC driver. In certain cases, getting (e.g. Oracle 10g) generated keys
-//     * does not work because it returns the ROWID, not the value of the sequence.
-//     *
-//     * @param overriddenSupportsGetGeneratedKeys A non null string, with "true" or "false" value, if overridden,
-//     *                                           <code>null</code> if not overridden.
-//     */
-//    public void setOverriddenSupportsGetGeneratedKeys(
-//        String overriddenSupportsGetGeneratedKeys) {
-//        this.overriddenSupportsGetGeneratedKeys = Boolean
-//            .valueOf(overriddenSupportsGetGeneratedKeys);
-//    }
-//
-//    /**
-//     * Does this connection support batch updates?
-//     */
-//    public final boolean supportsBatchUpdates() {
-//        return supportsBatchUpdates;
-//    }
-//}
diff --git a/src/main/java/org/apache/log4j/db/CustomSQLDBReceiver.java b/src/main/java/org/apache/log4j/db/CustomSQLDBReceiver.java
deleted file mode 100644
index d8463c0..0000000
--- a/src/main/java/org/apache/log4j/db/CustomSQLDBReceiver.java
+++ /dev/null
@@ -1,465 +0,0 @@
-///*
-// * Licensed to the Apache Software Foundation (ASF) under one or more
-// * contributor license agreements.  See the NOTICE file distributed with
-// * this work for additional information regarding copyright ownership.
-// * The ASF licenses this file to You under the Apache License, Version 2.0
-// * (the "License"); you may not use this file except in compliance with
-// * the License.  You may obtain a copy of the License at
-// *
-// *      http://www.apache.org/licenses/LICENSE-2.0
-// *
-// * Unless required by applicable law or agreed to in writing, software
-// * distributed under the License is distributed on an "AS IS" BASIS,
-// * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// * See the License for the specific language governing permissions and
-// * limitations under the License.
-// */
-//
-//package org.apache.log4j.db;
-//
-//import org.apache.log4j.Level;
-//import org.apache.log4j.Logger;
-//import org.apache.log4j.plugins.Pauseable;
-//import org.apache.log4j.plugins.Receiver;
-//import org.apache.log4j.scheduler.Job;
-//import org.apache.log4j.scheduler.Scheduler;
-//import org.apache.log4j.spi.LocationInfo;
-//import org.apache.log4j.spi.LoggerRepositoryEx;
-//import org.apache.log4j.spi.LoggingEvent;
-//import org.apache.log4j.spi.ThrowableInformation;
-//import org.apache.log4j.xml.DOMConfigurator;
-//import org.apache.log4j.xml.UnrecognizedElementHandler;
-//import org.w3c.dom.Element;
-//
-//import java.sql.Connection;
-//import java.sql.ResultSet;
-//import java.sql.SQLException;
-//import java.sql.Statement;
-//import java.util.Hashtable;
-//import java.util.Properties;
-//import java.util.StringTokenizer;
-//
-///**
-// * Converts log data stored in a database into LoggingEvents.
-// * <p>
-// * <b>NOTE:</b> This receiver cannot yet be created through Chainsaw's receiver panel.
-// * It must be created through an XML configuration file.
-// * <p>
-// * This receiver supports database configuration via ConnectionSource, in the
-// * org.apache.log4j.db package: DriverManagerConnectionSource,
-// * DataSourceConnectionSource, JNDIConnectionSource
-// * <p>
-// * This database receiver differs from DBReceiver in that this receiver relies
-// * on custom SQL to retrieve logging event data, where DBReceiver requires the
-// * use of a log4j-defined schema.
-// * <p>
-// * A 'refreshMillis' int parameter controls SQL execution. If 'refreshMillis' is
-// * zero (the default), the receiver will run only one time. If it is set to any
-// * other numeric value, the SQL will be executed on a recurring basis every
-// * 'refreshMillis' milliseconds.
-// * <p>
-// * The receiver closes the connection and acquires a new connection on each
-// * execution of the SQL (use pooled connections if possible).
-// * <p>
-// * If the SQL will be executing on a recurring basis, specify the IDField param -
-// * the column name holding the unique identifier (int) representing the logging
-// * event.
-// * <p>
-// * As events are retrieved, the column represented by IDField is examined and
-// * the largest value is held and used by the next execution of the SQL statement
-// * to avoid retrieving previously processed events.
-// * <p>
-// * As an example, the IDField references a 'COUNTER' (int, auto-increment,
-// * unique) column. The first execution of the SQL statement returns 500 rows,
-// * with a final value in the COUNTER field of 500.
-// * <p>
-// * The SQL statement is manipulated prior to the next execution, adding ' WHERE
-// * COUNTER &gt; 500' to the statement to avoid retrieval of previously processed
-// * events.
-// * <p>
-// * The select statement must provide ALL fields which define a LoggingEvent.
-// * <p>
-// * The SQL statement MUST include the columns: LOGGER, TIMESTAMP, LEVEL, THREAD,
-// * MESSAGE, NDC, MDC, CLASS, METHOD, FILE, LINE, PROPERTIES, THROWABLE
-// * <p>
-// * Use ' AS ' in the SQL statement to alias the SQL's column names to match your
-// * database schema. (see example below).
-// * <p>
-// * Include all fields in the SQL statement, even if you don't have data for the
-// * field (specify an empty string as the value for columns which you don't have
-// * data).
-// * <p>
-// * The TIMESTAMP column must be a datetime.
-// * <p>
-// * Both a PROPERTIES column and an MDC column are supported. These fields
-// * represent Maps on the logging event, but require the use of string
-// * concatenation database functions to hold the (possibly multiple) name/value
-// * pairs in the column.
-// * <p>
-// * For example, to include both 'userid' and 'lastname' properties in the
-// * logging event (from either the PROPERTIES or MDC columns), the name/value
-// * pairs must be concatenated together by your database.
-// * <p>
-// * The resulting PROPERTIES or MDC column must have data in this format: {{name,
-// * value, name2, value2}}
-// * <p>
-// * The resulting PROPERTIES column would contain this text: {{userid, someone,
-// * lastname, mylastname}}
-// * <p>
-// * Here is an example of concatenating a PROPERTIES or MDC column using MySQL's
-// * concat function, where the 'application' and 'hostname' parameters were fixed
-// * text, but the 'log4jid' key's value is the value of the COUNTER column:
-// * <p>
-// * concat("{{application,databaselogs,hostname,mymachine,log4jid,", COUNTER,
-// * "}}") as PROPERTIES
-// * <p>
-// * log4jid is a special property that is used by Chainsaw to represent an 'ID'
-// * field. Specify this property to ensure you can map events in Chainsaw to
-// * events in the database if you need to go back and view events at a later time
-// * or save the events to XML for later analysis.
-// * <p>
-// * Here is a complete MySQL SQL statement which can be used to provide events to
-// * Chainsaw (note how in the example below, there is no column in logtable representing the throwable, so an
-// * empty string is passed in and an ALIAS is still defined):
-// * <p>
-// * select myloggercolumn as LOGGER, mytimestampcolumn as TIMESTAMP, mylevelcolumn as LEVEL, mythreadcolumn as
-// * THREAD, mymessagecolumn as MESSAGE, myndccolumn as NDC, mymdccolumn as MDC, myclasscolumn as CLASS, mymethodcolumn as
-// * METHOD, myfilecolumn as FILE, mylinecolumn as LINE,
-// * concat("{{application,databaselogs,hostname,mymachine, log4jid,",
-// * COUNTER,"}}") as PROPERTIES, "" as THROWABLE from logtable
-// * <p>
-// *
-// * @author Scott Deboy &lt;sdeboy@apache.org&gt;
-// * <p>
-// */
-//public class CustomSQLDBReceiver extends Receiver implements Pauseable, UnrecognizedElementHandler {
-//
-//    protected volatile Connection connection = null;
-//
-//    protected String sqlStatement = "";
-//
-//    /**
-//     * By default we refresh data every 1000 milliseconds.
-//     *
-//     * @see #setRefreshMillis
-//     */
-//    static int DEFAULT_REFRESH_MILLIS = 1000;
-//
-//    int refreshMillis = DEFAULT_REFRESH_MILLIS;
-//
-//    protected String idField = null;
-//
-//    int lastID = -1;
-//
-//    private static final String WHERE_CLAUSE = " WHERE ";
-//
-//    private static final String AND_CLAUSE = " AND ";
-//
-//    private boolean whereExists = false;
-//
-//    private boolean paused = false;
-//
-//    private ConnectionSource connectionSource;
-//
-//    public static final String LOG4J_ID_KEY = "log4jid";
-//
-//    private Job customReceiverJob;
-//
-//    public void activateOptions() {
-//
-//        if (connectionSource == null) {
-//            throw new IllegalStateException(
-//                "CustomSQLDBReceiver cannot function without a connection source");
-//        }
-//        whereExists = (sqlStatement.toUpperCase().contains(WHERE_CLAUSE));
-//
-//        customReceiverJob = new CustomReceiverJob();
-//
-//        if (this.repository == null) {
-//            throw new IllegalStateException(
-//                "CustomSQLDBReceiver cannot function without a reference to its owning repository");
-//        }
-//
-//
-//        if (repository instanceof LoggerRepositoryEx) {
-//            Scheduler scheduler = ((LoggerRepositoryEx) repository).getScheduler();
-//
-//            scheduler.schedule(
-//                customReceiverJob, System.currentTimeMillis() + 500, refreshMillis);
-//        }
-//
-//    }
-//
-//    void closeConnection() {
-//        if (connection != null) {
-//            try {
-//                // LogLog.warn("closing the connection. ", new Exception("x"));
-//                connection.close();
-//            } catch (SQLException sqle) {
-//                // nothing we can do here
-//            }
-//        }
-//    }
-//
-//    public void setRefreshMillis(int refreshMillis) {
-//        this.refreshMillis = refreshMillis;
-//    }
-//
-//    public int getRefreshMillis() {
-//        return refreshMillis;
-//    }
-//
-//    /**
-//     * @return Returns the connectionSource.
-//     */
-//    public ConnectionSource getConnectionSource() {
-//        return connectionSource;
-//    }
-//
-//    /**
-//     * @param connectionSource The connectionSource to set.
-//     */
-//    public void setConnectionSource(ConnectionSource connectionSource) {
-//        this.connectionSource = connectionSource;
-//    }
-//
-//    public void close() {
-//        try {
-//            if ((connection != null) && !connection.isClosed()) {
-//                connection.close();
-//            }
-//        } catch (SQLException e) {
-//            e.printStackTrace();
-//        } finally {
-//            connection = null;
-//        }
-//    }
-//
-//    public void finalize() throws Throwable {
-//        super.finalize();
-//        close();
-//    }
-//
-//    /*
-//     * (non-Javadoc)
-//     *
-//     * @see org.apache.log4j.plugins.Plugin#shutdown()
-//     */
-//    public void shutdown() {
-//        getLogger().info("removing receiverJob from the Scheduler.");
-//
-//        if (this.repository instanceof LoggerRepositoryEx) {
-//            Scheduler scheduler = ((LoggerRepositoryEx) repository).getScheduler();
-//            scheduler.delete(customReceiverJob);
-//        }
-//
-//        lastID = -1;
-//    }
-//
-//    public void setSql(String s) {
-//        sqlStatement = s;
-//    }
-//
-//    public String getSql() {
-//        return sqlStatement;
-//    }
-//
-//    public void setIDField(String id) {
-//        idField = id;
-//    }
-//
-//    public String getIDField() {
-//        return idField;
-//    }
-//
-//    public synchronized void setPaused(boolean p) {
-//        paused = p;
-//    }
-//
-//    public synchronized boolean isPaused() {
-//        return paused;
-//    }
-//
-//    class CustomReceiverJob implements Job {
-//        public void execute() {
-//            int oldLastID = lastID;
-//            try {
-//                connection = connectionSource.getConnection();
-//                Statement statement = connection.createStatement();
-//
-//                Logger eventLogger;
-//                long timeStamp;
-//                String level;
-//                String threadName;
-//                Object message;
-//                String ndc;
-//                Hashtable<String, String> mdc;
-//                String[] throwable;
-//                String className;
-//                String methodName;
-//                String fileName;
-//                String lineNumber;
-//                Hashtable<String, String> properties;
-//
-//                String currentSQLStatement;
-//                if (whereExists) {
-//                    currentSQLStatement = sqlStatement + AND_CLAUSE + idField
-//                        + " > " + lastID;
-//                } else {
-//                    currentSQLStatement = sqlStatement + WHERE_CLAUSE + idField
-//                        + " > " + lastID;
-//                }
-//
-//                ResultSet rs = statement.executeQuery(currentSQLStatement);
-//
-//                int i = 0;
-//                while (rs.next()) {
-//                    // add a small break every 1000 received events
-//                    if (++i == 1000) {
-//                        synchronized (this) {
-//                            try {
-//                                // add a delay
-//                                wait(300);
-//                            } catch (InterruptedException ie) {
-//                            }
-//                            i = 0;
-//                        }
-//                    }
-//                    eventLogger = Logger.getLogger(rs.getString("LOGGER"));
-//                    timeStamp = rs.getTimestamp("TIMESTAMP").getTime();
-//
-//                    level = rs.getString("LEVEL");
-//                    threadName = rs.getString("THREAD");
-//                    message = rs.getString("MESSAGE");
-//                    ndc = rs.getString("NDC");
-//
-//                    String mdcString = rs.getString("MDC");
-//                    mdc = new Hashtable<>();
-//
-//                    if (mdcString != null) {
-//                        // support MDC being wrapped in {{name, value}}
-//                        // or
-//                        // just name, value
-//                        if ((mdcString.contains("{{"))
-//                            && (mdcString.contains("}}"))) {
-//                            mdcString = mdcString
-//                                .substring(mdcString.indexOf("{{") + 2,
-//                                    mdcString.indexOf("}}"));
-//                        }
-//
-//                        StringTokenizer tok = new StringTokenizer(mdcString,
-//                            ",");
-//
-//                        while (tok.countTokens() > 1) {
-//                            mdc.put(tok.nextToken(), tok.nextToken());
-//                        }
-//                    }
-//
-//                    throwable = new String[]{rs.getString("THROWABLE")};
-//                    className = rs.getString("CLASS");
-//                    methodName = rs.getString("METHOD");
-//                    fileName = rs.getString("FILE");
-//                    lineNumber = rs.getString("LINE");
-//
-//                    // if properties are provided in the
-//                    // SQL they can be used here (for example, to route
-//                    // events to a unique tab in
-//                    // Chainsaw if the machinename and/or appname
-//                    // property
-//                    // are set)
-//                    String propertiesString = rs.getString("PROPERTIES");
-//                    properties = new Hashtable<>();
-//
-//                    if (propertiesString != null) {
-//                        // support properties being wrapped in {{name,
-//                        // value}} or just name, value
-//                        if ((propertiesString.contains("{{"))
-//                            && (propertiesString.contains("}}"))) {
-//                            propertiesString = propertiesString.substring(
-//                                propertiesString.indexOf("{{") + 2,
-//                                propertiesString.indexOf("}}"));
-//                        }
-//
-//                        StringTokenizer tok2 = new StringTokenizer(
-//                            propertiesString, ",");
-//                        while (tok2.countTokens() > 1) {
-//                            String tokenName = tok2.nextToken();
-//                            String value = tok2.nextToken();
-//                            if (tokenName.equals(LOG4J_ID_KEY)) {
-//                                try {
-//                                    int thisInt = Integer.parseInt(value);
-//                                    value = String.valueOf(thisInt);
-//                                    if (thisInt > lastID) {
-//                                        lastID = thisInt;
-//                                    }
-//                                } catch (Exception e) {
-//                                }
-//                            }
-//                            properties.put(tokenName, value);
-//                        }
-//                    }
-//
-//                    Level levelImpl = Level.toLevel(level);
-//
-//
-//                    LocationInfo locationInfo = new LocationInfo(fileName,
-//                        className, methodName, lineNumber);
-//
-//                    ThrowableInformation throwableInfo = new ThrowableInformation(
-//                        throwable);
-//
-//                    properties.putAll(mdc);
-//
-//                    LoggingEvent event = new LoggingEvent(eventLogger.getName(),
-//                        eventLogger, timeStamp, levelImpl, message,
-//                        threadName,
-//                        throwableInfo,
-//                        ndc,
-//                        locationInfo,
-//                        properties);
-//
-//                    doPost(event);
-//                }
-//                //log when rows are retrieved
-//                if (lastID != oldLastID) {
-//                    getLogger().debug("lastID: " + lastID);
-//                }
-//
-//                statement.close();
-//            } catch (SQLException sqle) {
-//                getLogger()
-//                    .error("*************Problem receiving events", sqle);
-//            } finally {
-//                closeConnection();
-//            }
-//
-//            // if paused, loop prior to executing sql query
-//            synchronized (this) {
-//                while (isPaused()) {
-//                    try {
-//                        wait(1000);
-//                    } catch (InterruptedException ie) {
-//                    }
-//                }
-//            }
-//        }
-//    }
-//
-//    /**
-//     * {@inheritDoc}
-//     */
-//    public boolean parseUnrecognizedElement(Element element, Properties props) throws Exception {
-//        if ("connectionSource".equals(element.getNodeName())) {
-//            Object instance =
-//                DOMConfigurator.parseElement(element, props, ConnectionSource.class);
-//            if (instance instanceof ConnectionSource) {
-//                ConnectionSource source = (ConnectionSource) instance;
-//                source.activateOptions();
-//                setConnectionSource(source);
-//            }
-//            return true;
-//        }
-//        return false;
-//    }
-//
-//}
diff --git a/src/main/java/org/apache/log4j/db/DBAppender.java b/src/main/java/org/apache/log4j/db/DBAppender.java
deleted file mode 100644
index c77cd7e..0000000
--- a/src/main/java/org/apache/log4j/db/DBAppender.java
+++ /dev/null
@@ -1,370 +0,0 @@
-///*
-// * Licensed to the Apache Software Foundation (ASF) under one or more
-// * contributor license agreements.  See the NOTICE file distributed with
-// * this work for additional information regarding copyright ownership.
-// * The ASF licenses this file to You under the Apache License, Version 2.0
-// * (the "License"); you may not use this file except in compliance with
-// * the License.  You may obtain a copy of the License at
-// *
-// *      http://www.apache.org/licenses/LICENSE-2.0
-// *
-// * Unless required by applicable law or agreed to in writing, software
-// * distributed under the License is distributed on an "AS IS" BASIS,
-// * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// * See the License for the specific language governing permissions and
-// * limitations under the License.
-// */
-//
-//package org.apache.log4j.db;
-//
-//import org.apache.log4j.AppenderSkeleton;
-//import org.apache.log4j.db.dialect.SQLDialect;
-//import org.apache.log4j.db.dialect.Util;
-//import org.apache.log4j.helpers.LogLog;
-//import org.apache.log4j.spi.LocationInfo;
-//import org.apache.log4j.spi.LoggingEvent;
-//import org.apache.log4j.xml.DOMConfigurator;
-//import org.apache.log4j.xml.UnrecognizedElementHandler;
-//import org.w3c.dom.Element;
-//
-//import java.sql.Connection;
-//import java.sql.PreparedStatement;
-//import java.sql.ResultSet;
-//import java.sql.Statement;
-//import java.util.Properties;
-//import java.util.Set;
-//
-//
-///**
-// * The DBAppender inserts loggin events into three database tables in a format
-// * independent of the Java programming language. The three tables that
-// * DBAppender inserts to must exists before DBAppender can be used. These tables
-// * may be created with the help of SQL scripts found in the
-// * <em>src/java/org/apache/log4j/db/dialect</em> directory. There is a
-// * specific script for each of the most popular database systems. If the script
-// * for your particular type of database system is missing, it should be quite
-// * easy to write one, taking example on the already existing scripts. If you
-// * send them to us, we will gladly include missing scripts in future releases.
-// * <p>
-// * <p>
-// * If the JDBC driver you are using supports the
-// * {@link java.sql.Statement#getGeneratedKeys}method introduced in JDBC 3.0
-// * specification, then you are all set. Otherwise, there must be an
-// * {@link SQLDialect}appropriate for your database system. Currently, we have
-// * dialects for PostgreSQL, MySQL, Oracle and MsSQL. As mentioed previously, an
-// * SQLDialect is required only if the JDBC driver for your database system does
-// * not support the {@link java.sql.Statement#getGeneratedKeys getGeneratedKeys}
-// * method.
-// * </p>
-// * <p>
-// * <table border="1" cellpadding="4">
-// * <caption>supported dialects</caption>
-// * <tr>
-// * <th>RDBMS</th>
-// * <th>supports <br><code>getGeneratedKeys()</code> method</th>
-// * <th>specific <br>SQLDialect support</th>
-// * <tr>
-// * <tr>
-// * <td>PostgreSQL</td>
-// * <td align="center">NO</td>
-// * <td>present and used</td>
-// * <tr>
-// * <tr>
-// * <td>MySQL</td>
-// * <td align="center">YES</td>
-// * <td>present, but not actually needed or used</td>
-// * <tr>
-// * <tr>
-// * <td>Oracle</td>
-// * <td align="center">YES</td>
-// * <td>present, but not actually needed or used</td>
-// * <tr>
-// * <tr>
-// * <td>DB2</td>
-// * <td align="center">YES</td>
-// * <td>not present, and not needed or used</td>
-// * <tr>
-// * <tr>
-// * <td>MsSQL</td>
-// * <td align="center">YES</td>
-// * <td>not present, and not needed or used</td>
-// * <tr>
-// * <tr>
-// * <td>HSQL</td>
-// * <td align="center">NO</td>
-// * <td>present and used</td>
-// * <tr>
-// * <p>
-// * </table>
-// * <p>
-// * <b>Performance: </b> Experiments show that writing a single event into the
-// * database takes approximately 50 milliseconds, on a "standard" PC. If pooled
-// * connections are used, this figure drops to under 10 milliseconds. Note that
-// * most JDBC drivers already ship with connection pooling support.
-// * </p>
-// * <p>
-// * <p>
-// * <p>
-// * <p>
-// * <b>Configuration </b> DBAppender can be configured programmatically, or using
-// * {@link org.apache.log4j.xml.DOMConfigurator JoranConfigurator}. Example
-// * scripts can be found in the <em>tests/input/db</em> directory.
-// *
-// * @author Ceki G&uuml;lc&uuml;
-// * @author Ray DeCampo
-// */
-//public class DBAppender extends AppenderSkeleton implements UnrecognizedElementHandler {
-//    static final String insertPropertiesSQL =
-//        "INSERT INTO  logging_event_property (event_id, mapped_key, mapped_value) VALUES (?, ?, ?)";
-//    static final String insertExceptionSQL =
-//        "INSERT INTO  logging_event_exception (event_id, i, trace_line) VALUES (?, ?, ?)";
-//    static final String insertSQL;
-//
-//
-//    static {
-//        String sql = "INSERT INTO logging_event (" +
-//            "sequence_number, " +
-//            "timestamp, " +
-//            "rendered_message, " +
-//            "logger_name, " +
-//            "level_string, " +
-//            "ndc, " +
-//            "thread_name, " +
-//            "reference_flag, " +
-//            "caller_filename, " +
-//            "caller_class, " +
-//            "caller_method, " +
-//            "caller_line) " +
-//            " VALUES (?, ?, ? ,?, ?, ?, ?, ?, ?, ?, ?, ?)";
-//        insertSQL = sql;
-//    }
-//
-//    ConnectionSource connectionSource;
-//    boolean cnxSupportsGetGeneratedKeys = false;
-//    boolean cnxSupportsBatchUpdates = false;
-//    SQLDialect sqlDialect;
-//    boolean locationInfo = false;
-//
-//
-//    public DBAppender() {
-//        super(false);
-//    }
-//
-//    public void activateOptions() {
-//        LogLog.debug("DBAppender.activateOptions called");
-//
-//        if (connectionSource == null) {
-//            throw new IllegalStateException(
-//                "DBAppender cannot function without a connection source");
-//        }
-//
-//        sqlDialect = Util.getDialectFromCode(connectionSource.getSQLDialectCode());
-//        cnxSupportsGetGeneratedKeys = connectionSource.supportsGetGeneratedKeys();
-//        cnxSupportsBatchUpdates = connectionSource.supportsBatchUpdates();
-//        if (!cnxSupportsGetGeneratedKeys && (sqlDialect == null)) {
-//            throw new IllegalStateException(
-//                "DBAppender cannot function if the JDBC driver does not support getGeneratedKeys method *and* without a specific SQL dialect");
-//        }
-//
-//        // all nice and dandy on the eastern front
-//        super.activateOptions();
-//    }
-//
-//    /**
-//     * @return Returns the connectionSource.
-//     */
-//    public ConnectionSource getConnectionSource() {
-//        return connectionSource;
-//    }
-//
-//    /**
-//     * @param connectionSource The connectionSource to set.
-//     */
-//    public void setConnectionSource(ConnectionSource connectionSource) {
-//        LogLog.debug("setConnectionSource called for DBAppender");
-//        this.connectionSource = connectionSource;
-//    }
-//
-//    protected void append(LoggingEvent event) {
-//        Connection connection = null;
-//        try {
-//            connection = connectionSource.getConnection();
-//            connection.setAutoCommit(false);
-//
-//            PreparedStatement insertStatement;
-//            if (cnxSupportsGetGeneratedKeys) {
-//                insertStatement = connection.prepareStatement(insertSQL, Statement.RETURN_GENERATED_KEYS);
-//            } else {
-//                insertStatement = connection.prepareStatement(insertSQL);
-//            }
-//
-//            /*          insertStatement.setLong(1, event.getSequenceNumber());*/
-//            insertStatement.setLong(1, 0);
-//
-//            insertStatement.setLong(2, event.getTimeStamp());
-//            insertStatement.setString(3, event.getRenderedMessage());
-//            insertStatement.setString(4, event.getLoggerName());
-//            insertStatement.setString(5, event.getLevel().toString());
-//            insertStatement.setString(6, event.getNDC());
-//            insertStatement.setString(7, event.getThreadName());
-//            insertStatement.setShort(8, DBHelper.computeReferenceMask(event));
-//
-//            LocationInfo li;
-//
-//            if (event.locationInformationExists() || locationInfo) {
-//                li = event.getLocationInformation();
-//            } else {
-//                li = LocationInfo.NA_LOCATION_INFO;
-//            }
-//
-//            insertStatement.setString(9, li.getFileName());
-//            insertStatement.setString(10, li.getClassName());
-//            insertStatement.setString(11, li.getMethodName());
-//            insertStatement.setString(12, li.getLineNumber());
-//
-//            int updateCount = insertStatement.executeUpdate();
-//            if (updateCount != 1) {
-//                LogLog.warn("Failed to insert loggingEvent");
-//            }
-//
-//            ResultSet rs = null;
-//            Statement idStatement = null;
-//            boolean gotGeneratedKeys = false;
-//            if (cnxSupportsGetGeneratedKeys) {
-//                rs = insertStatement.getGeneratedKeys();
-//                gotGeneratedKeys = true;
-//            }
-//
-//            if (!gotGeneratedKeys) {
-//                insertStatement.close();
-//                insertStatement = null;
-//
-//                idStatement = connection.createStatement();
-//                idStatement.setMaxRows(1);
-//                rs = idStatement.executeQuery(sqlDialect.getSelectInsertId());
-//            }
-//
-//            // A ResultSet cursor is initially positioned before the first row; the
-//            // first call to the method next makes the first row the current row
-//            rs.next();
-//            int eventId = rs.getInt(1);
-//
-//            rs.close();
-//
-//            // we no longer need the insertStatement
-//            if (insertStatement != null) {
-//                insertStatement.close();
-//            }
-//
-//            if (idStatement != null) {
-//                idStatement.close();
-//            }
-//
-//            Set propertiesKeys = event.getPropertyKeySet();
-//
-//            if (propertiesKeys.size() > 0) {
-//                PreparedStatement insertPropertiesStatement =
-//                    connection.prepareStatement(insertPropertiesSQL);
-//
-//                for (Object propertiesKey : propertiesKeys) {
-//                    String key = (String) propertiesKey;
-//                    String value = event.getProperty(key);
-//
-//                    //LogLog.info("id " + eventId + ", key " + key + ", value " + value);
-//                    insertPropertiesStatement.setInt(1, eventId);
-//                    insertPropertiesStatement.setString(2, key);
-//                    insertPropertiesStatement.setString(3, value);
-//
-//                    if (cnxSupportsBatchUpdates) {
-//                        insertPropertiesStatement.addBatch();
-//                    } else {
-//                        insertPropertiesStatement.execute();
-//                    }
-//                }
-//
-//                if (cnxSupportsBatchUpdates) {
-//                    insertPropertiesStatement.executeBatch();
-//                }
-//
-//                insertPropertiesStatement.close();
-//            }
-//
-//            String[] strRep = event.getThrowableStrRep();
-//
-//            if (strRep != null) {
-//                LogLog.debug("Logging an exception");
-//
-//                PreparedStatement insertExceptionStatement =
-//                    connection.prepareStatement(insertExceptionSQL);
-//
-//                for (short i = 0; i < strRep.length; i++) {
-//                    insertExceptionStatement.setInt(1, eventId);
-//                    insertExceptionStatement.setShort(2, i);
-//                    insertExceptionStatement.setString(3, strRep[i]);
-//                    if (cnxSupportsBatchUpdates) {
-//                        insertExceptionStatement.addBatch();
-//                    } else {
-//                        insertExceptionStatement.execute();
-//                    }
-//                }
-//                if (cnxSupportsBatchUpdates) {
-//                    insertExceptionStatement.executeBatch();
-//                }
-//                insertExceptionStatement.close();
-//            }
-//
-//            connection.commit();
-//        } catch (Throwable sqle) {
-//            LogLog.error("problem appending event", sqle);
-//        } finally {
-//            DBHelper.closeConnection(connection);
-//        }
-//    }
-//
-//    public void close() {
-//        closed = true;
-//    }
-//
-//    /**
-//     * Returns value of the <b>LocationInfo </b> property which determines whether
-//     * caller's location info is written to the database.
-//     */
-//    public boolean getLocationInfo() {
-//        return locationInfo;
-//    }
-//
-//    /**
-//     * If true, the information written to the database will include caller's
-//     * location information. Due to performance concerns, by default no location
-//     * information is written to the database.
-//     */
-//    public void setLocationInfo(boolean locationInfo) {
-//        this.locationInfo = locationInfo;
-//    }
-//
-//    /**
-//     * Gets whether appender requires a layout.
-//     *
-//     * @return false
-//     */
-//    public boolean requiresLayout() {
-//        return false;
-//    }
-//
-//    /**
-//     * {@inheritDoc}
-//     */
-//    public boolean parseUnrecognizedElement(Element element, Properties props) throws Exception {
-//        if ("connectionSource".equals(element.getNodeName())) {
-//            Object instance =
-//                DOMConfigurator.parseElement(element, props, ConnectionSource.class);
-//            if (instance instanceof ConnectionSource) {
-//                ConnectionSource source = (ConnectionSource) instance;
-//                source.activateOptions();
-//                setConnectionSource(source);
-//            }
-//            return true;
-//        }
-//        return false;
-//    }
-//}
diff --git a/src/main/java/org/apache/log4j/db/DBHelper.java b/src/main/java/org/apache/log4j/db/DBHelper.java
deleted file mode 100644
index 88d17fb..0000000
--- a/src/main/java/org/apache/log4j/db/DBHelper.java
+++ /dev/null
@@ -1,67 +0,0 @@
-///*
-// * Licensed to the Apache Software Foundation (ASF) under one or more
-// * contributor license agreements.  See the NOTICE file distributed with
-// * this work for additional information regarding copyright ownership.
-// * The ASF licenses this file to You under the Apache License, Version 2.0
-// * (the "License"); you may not use this file except in compliance with
-// * the License.  You may obtain a copy of the License at
-// *
-// *      http://www.apache.org/licenses/LICENSE-2.0
-// *
-// * Unless required by applicable law or agreed to in writing, software
-// * distributed under the License is distributed on an "AS IS" BASIS,
-// * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// * See the License for the specific language governing permissions and
-// * limitations under the License.
-// */
-//
-//package org.apache.log4j.db;
-//
-//import org.apache.log4j.spi.LoggingEvent;
-//
-//import java.sql.Connection;
-//import java.sql.SQLException;
-//import java.sql.Statement;
-//import java.util.Set;
-//
-///**
-// * @author Ceki G&uuml;lc&uuml;
-// */
-//public class DBHelper {
-//
-//    public final static short PROPERTIES_EXIST = 0x01;
-//    public final static short EXCEPTION_EXISTS = 0x02;
-//
-//    public static short computeReferenceMask(LoggingEvent event) {
-//        short mask = 0;
-//        Set propertiesKeys = event.getPropertyKeySet();
-//        if (propertiesKeys.size() > 0) {
-//            mask = PROPERTIES_EXIST;
-//        }
-//        String[] strRep = event.getThrowableStrRep();
-//        if (strRep != null) {
-//            mask |= EXCEPTION_EXISTS;
-//        }
-//        return mask;
-//    }
-//
-//    static public void closeConnection(Connection connection) {
-//        if (connection != null) {
-//            try {
-//                connection.close();
-//            } catch (SQLException sqle) {
-//                // static utility classes should not log without an explicit repository
-//                // reference
-//            }
-//        }
-//    }
-//
-//    public static void closeStatement(Statement statement) {
-//        if (statement != null) {
-//            try {
-//                statement.close();
-//            } catch (SQLException sqle) {
-//            }
-//        }
-//    }
-//}
diff --git a/src/main/java/org/apache/log4j/db/DBReceiver.java b/src/main/java/org/apache/log4j/db/DBReceiver.java
deleted file mode 100644
index e40e808..0000000
--- a/src/main/java/org/apache/log4j/db/DBReceiver.java
+++ /dev/null
@@ -1,139 +0,0 @@
-///*
-// * Licensed to the Apache Software Foundation (ASF) under one or more
-// * contributor license agreements.  See the NOTICE file distributed with
-// * this work for additional information regarding copyright ownership.
-// * The ASF licenses this file to You under the Apache License, Version 2.0
-// * (the "License"); you may not use this file except in compliance with
-// * the License.  You may obtain a copy of the License at
-// *
-// *      http://www.apache.org/licenses/LICENSE-2.0
-// *
-// * Unless required by applicable law or agreed to in writing, software
-// * distributed under the License is distributed on an "AS IS" BASIS,
-// * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// * See the License for the specific language governing permissions and
-// * limitations under the License.
-// */
-//
-//package org.apache.log4j.db;
-//
-//import org.apache.log4j.plugins.Pauseable;
-//import org.apache.log4j.plugins.Receiver;
-//import org.apache.log4j.scheduler.Scheduler;
-//import org.apache.log4j.spi.LoggerRepositoryEx;
-//import org.apache.log4j.xml.DOMConfigurator;
-//import org.apache.log4j.xml.UnrecognizedElementHandler;
-//import org.w3c.dom.Element;
-//
-//import java.util.Properties;
-//
-///**
-// * @author Scott Deboy &lt;sdeboy@apache.org&gt;
-// * @author Ceki G&uuml;lc&uuml;
-// */
-//public class DBReceiver extends Receiver implements Pauseable, UnrecognizedElementHandler {
-//    /**
-//     * By default we refresh data every 1000 milliseconds.
-//     *
-//     * @see #setRefreshMillis
-//     */
-//    static int DEFAULT_REFRESH_MILLIS = 1000;
-//    ConnectionSource connectionSource;
-//    int refreshMillis = DEFAULT_REFRESH_MILLIS;
-//    DBReceiverJob receiverJob;
-//    boolean paused = false;
-//
-//    public void activateOptions() {
-//
-//        if (connectionSource == null) {
-//            throw new IllegalStateException(
-//                "DBAppender cannot function without a connection source");
-//        }
-//
-//        receiverJob = new DBReceiverJob(this);
-//        receiverJob.setLoggerRepository(repository);
-//
-//        if (this.repository == null) {
-//            throw new IllegalStateException(
-//                "DBAppender cannot function without a reference to its owning repository");
-//        }
-//
-//        if (repository instanceof LoggerRepositoryEx) {
-//            Scheduler scheduler = ((LoggerRepositoryEx) repository).getScheduler();
-//
-//            scheduler.schedule(
-//                receiverJob, System.currentTimeMillis() + 500, refreshMillis);
-//        }
-//
-//    }
-//
-//    public void setRefreshMillis(int refreshMillis) {
-//        this.refreshMillis = refreshMillis;
-//    }
-//
-//    public int getRefreshMillis() {
-//        return refreshMillis;
-//    }
-//
-//
-//    /**
-//     * @return Returns the connectionSource.
-//     */
-//    public ConnectionSource getConnectionSource() {
-//        return connectionSource;
-//    }
-//
-//
-//    /**
-//     * @param connectionSource The connectionSource to set.
-//     */
-//    public void setConnectionSource(ConnectionSource connectionSource) {
-//        this.connectionSource = connectionSource;
-//    }
-//
-//
-//    /* (non-Javadoc)
-//     * @see org.apache.log4j.plugins.Plugin#shutdown()
-//     */
-//    public void shutdown() {
-//        getLogger().info("removing receiverJob from the Scheduler.");
-//
-//        if (this.repository instanceof LoggerRepositoryEx) {
-//            Scheduler scheduler = ((LoggerRepositoryEx) repository).getScheduler();
-//            scheduler.delete(receiverJob);
-//        }
-//    }
-//
-//
-//    /* (non-Javadoc)
-//     * @see org.apache.log4j.plugins.Pauseable#setPaused(boolean)
-//     */
-//    public void setPaused(boolean paused) {
-//        this.paused = paused;
-//    }
-//
-//    /* (non-Javadoc)
-//     * @see org.apache.log4j.plugins.Pauseable#isPaused()
-//     */
-//    public boolean isPaused() {
-//        return paused;
-//    }
-//
-//    /**
-//     * {@inheritDoc}
-//     */
-//    public boolean parseUnrecognizedElement(Element element, Properties props) throws Exception {
-//        if ("connectionSource".equals(element.getNodeName())) {
-//            Object instance =
-//                DOMConfigurator.parseElement(element, props, ConnectionSource.class);
-//            if (instance instanceof ConnectionSource) {
-//                ConnectionSource source = (ConnectionSource) instance;
-//                source.activateOptions();
-//                setConnectionSource(source);
-//            }
-//            return true;
-//        }
-//        return false;
-//    }
-//
-//}
diff --git a/src/main/java/org/apache/log4j/db/DBReceiverJob.java b/src/main/java/org/apache/log4j/db/DBReceiverJob.java
deleted file mode 100644
index 45233fc..0000000
--- a/src/main/java/org/apache/log4j/db/DBReceiverJob.java
+++ /dev/null
@@ -1,224 +0,0 @@
-///*
-// * Licensed to the Apache Software Foundation (ASF) under one or more
-// * contributor license agreements.  See the NOTICE file distributed with
-// * this work for additional information regarding copyright ownership.
-// * The ASF licenses this file to You under the Apache License, Version 2.0
-// * (the "License"); you may not use this file except in compliance with
-// * the License.  You may obtain a copy of the License at
-// *
-// *      http://www.apache.org/licenses/LICENSE-2.0
-// *
-// * Unless required by applicable law or agreed to in writing, software
-// * distributed under the License is distributed on an "AS IS" BASIS,
-// * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// * See the License for the specific language governing permissions and
-// * limitations under the License.
-// */
-//
-//package org.apache.log4j.db;
-//
-//import org.apache.log4j.Level;
-//import org.apache.log4j.Logger;
-//import org.apache.log4j.scheduler.Job;
-//import org.apache.log4j.spi.ComponentBase;
-//import org.apache.log4j.spi.LocationInfo;
-//import org.apache.log4j.spi.LoggingEvent;
-//import org.apache.log4j.spi.ThrowableInformation;
-//
-//import java.sql.Connection;
-//import java.sql.PreparedStatement;
-//import java.sql.ResultSet;
-//import java.sql.SQLException;
-//import java.util.Hashtable;
-//import java.util.Vector;
-//
-///**
-// * Actual retrieval of data is made by the instance of DBReceiverJob associated
-// * with DBReceiver.
-// *
-// * @author Ceki G&uuml;lc&uuml;
-// */
-//class DBReceiverJob extends ComponentBase implements Job {
-//
-//    String sqlException = "SELECT trace_line FROM logging_event_exception where event_id=? ORDER by i ASC";
-//    String sqlProperties = "SELECT mapped_key, mapped_value FROM logging_event_property WHERE event_id=?";
-//    String sqlSelect =
-//        "SELECT " +
-//            "sequence_number, timestamp, rendered_message, logger_name, " +
-//            "level_string, ndc, thread_name, reference_flag, " +
-//            "caller_filename, caller_class, caller_method, caller_line, " +
-//            "event_id " +
-//            "FROM logging_event " +
-//            "WHERE event_id > ?  ORDER BY event_id ASC";
-//
-//
-//    long lastId = Short.MIN_VALUE;
-//
-//    DBReceiver parentDBReceiver;
-//
-//    DBReceiverJob(DBReceiver parent) {
-//        parentDBReceiver = parent;
-//    }
-//
-//    public void execute() {
-//        getLogger().debug("DBReceiverJob.execute() called");
-//
-//        Connection connection = null;
-//
-//        try {
-//            connection = parentDBReceiver.connectionSource.getConnection();
-//            PreparedStatement statement = connection.prepareStatement(sqlSelect);
-//            statement.setLong(1, lastId);
-//            ResultSet rs = statement.executeQuery();
-//            //rs.beforeFirst();
-//
-//            while (rs.next()) {
-//                Logger logger;
-//                long timeStamp;
-//                String level;
-//                String threadName;
-//                Object message;
-//                String ndc;
-//                String className;
-//                String methodName;
-//                String fileName;
-//                String lineNumber;
-//                Hashtable properties = new Hashtable();
-//
-//
-//                //event.setSequenceNumber(rs.getLong(1));
-//                timeStamp = rs.getLong(2);
-//                message = rs.getString(3);
-//                logger = Logger.getLogger(rs.getString(4));
-//                level = rs.getString(5);
-//                Level levelImpl = Level.toLevel(level.trim());
-//
-//                ndc = rs.getString(6);
-//                threadName = rs.getString(7);
-//
-//                short mask = rs.getShort(8);
-//
-//                fileName = rs.getString(9);
-//                className = rs.getString(10);
-//                methodName = rs.getString(11);
-//                lineNumber = rs.getString(12).trim();
-//
-//                LocationInfo locationInfo;
-//                if (fileName.equals(LocationInfo.NA)) {
-//                    locationInfo = LocationInfo.NA_LOCATION_INFO;
-//                } else {
-//                    locationInfo = new LocationInfo(fileName, className,
-//                        methodName, lineNumber);
-//                }
-//
-//                long id = rs.getLong(13);
-//                //LogLog.info("Received event with id=" + id);
-//                lastId = id;
-//
-//                ThrowableInformation throwableInfo = null;
-//                if ((mask & DBHelper.EXCEPTION_EXISTS) != 0) {
-//                    throwableInfo = getException(connection, id);
-//                }
-//
-//                LoggingEvent event = new LoggingEvent(logger.getName(),
-//                    logger, timeStamp, levelImpl, message,
-//                    threadName,
-//                    throwableInfo,
-//                    ndc,
-//                    locationInfo,
-//                    properties);
-//
-//
-//                // Scott asked for this info to be
-//                event.setProperty("log4jid", Long.toString(id));
-//
-//                if ((mask & DBHelper.PROPERTIES_EXIST) != 0) {
-//                    getProperties(connection, id, event);
-//                }
-//
-//
-//                if (!parentDBReceiver.isPaused()) {
-//                    parentDBReceiver.doPost(event);
-//                }
-//            } // while
-//            statement.close();
-//        } catch (SQLException sqle) {
-//            getLogger().error("Problem receiving events", sqle);
-//        } finally {
-//            closeConnection(connection);
-//        }
-//    }
-//
-//    void closeConnection(Connection connection) {
-//        if (connection != null) {
-//            try {
-//                //LogLog.warn("closing the connection. ", new Exception("x"));
-//                connection.close();
-//            } catch (SQLException sqle) {
-//                // nothing we can do here
-//            }
-//        }
-//    }
-//
-//    /**
-//     * Retrieve the event properties from the logging_event_property table.
-//     *
-//     * @param connection
-//     * @param id
-//     * @param event
-//     * @throws SQLException
-//     */
-//    void getProperties(Connection connection, long id, LoggingEvent event)
-//        throws SQLException {
-//
-//        try (PreparedStatement statement = connection.prepareStatement(sqlProperties)) {
-//            statement.setLong(1, id);
-//            ResultSet rs = statement.executeQuery();
-//
-//            while (rs.next()) {
-//                String key = rs.getString(1);
-//                String value = rs.getString(2);
-//                event.setProperty(key, value);
-//            }
-//        }
-//    }
-//
-//    /**
-//     * Retrieve the exception string representation from the
-//     * logging_event_exception table.
-//     *
-//     * @param connection
-//     * @param id
-//     * @throws SQLException
-//     */
-//    ThrowableInformation getException(Connection connection, long id)
-//        throws SQLException {
-//
-//        PreparedStatement statement = null;
-//
-//        try {
-//            statement = connection.prepareStatement(sqlException);
-//            statement.setLong(1, id);
-//            ResultSet rs = statement.executeQuery();
-//
-//            Vector<String> v = new Vector<>();
-//
-//            while (rs.next()) {
-//                //int i = rs.getShort(1);
-//                v.add(rs.getString(1));
-//            }
-//
-//            int len = v.size();
-//            String[] strRep = new String[len];
-//            for (int i = 0; i < len; i++) {
-//                strRep[i] = v.get(i);
-//            }
-//            // we've filled strRep, we now attach it to the event
-//            return new ThrowableInformation(strRep);
-//        } finally {
-//            if (statement != null) {
-//                statement.close();
-//            }
-//        }
-//    }
-//}
diff --git a/src/main/java/org/apache/log4j/db/DataSourceConnectionSource.java b/src/main/java/org/apache/log4j/db/DataSourceConnectionSource.java
deleted file mode 100644
index e5e1ebb..0000000
--- a/src/main/java/org/apache/log4j/db/DataSourceConnectionSource.java
+++ /dev/null
@@ -1,105 +0,0 @@
-///*
-// * Licensed to the Apache Software Foundation (ASF) under one or more
-// * contributor license agreements.  See the NOTICE file distributed with
-// * this work for additional information regarding copyright ownership.
-// * The ASF licenses this file to You under the Apache License, Version 2.0
-// * (the "License"); you may not use this file except in compliance with
-// * the License.  You may obtain a copy of the License at
-// *
-// *      http://www.apache.org/licenses/LICENSE-2.0
-// *
-// * Unless required by applicable law or agreed to in writing, software
-// * distributed under the License is distributed on an "AS IS" BASIS,
-// * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// * See the License for the specific language governing permissions and
-// * limitations under the License.
-// */
-//
-//package org.apache.log4j.db;
-//
-//
-//import org.apache.log4j.xml.DOMConfigurator;
-//import org.apache.log4j.xml.UnrecognizedElementHandler;
-//import org.w3c.dom.Element;
-//
-//import javax.sql.DataSource;
-//import java.sql.Connection;
-//import java.sql.SQLException;
-//import java.util.Properties;
-//
-//
-///**
-// * The DataSourceConnectionSource is an implementation of {@link ConnectionSource}
-// * that obtains the Connection in the recommended JDBC manner based on
-// * a {@link javax.sql.DataSource DataSource}.
-// * <p>
-// *
-// * @author Ray DeCampo
-// * @author Ceki G&uuml;lc&uuml;
-// */
-//public class DataSourceConnectionSource extends ConnectionSourceSkeleton
-//    implements UnrecognizedElementHandler {
-//
-//    private DataSource dataSource;
-//
-//
-//    public void activateOptions() {
-//        //LogLog.debug("**********DataSourceConnectionSource.activateOptions called");
-//        if (dataSource == null) {
-//            getLogger().warn("WARNING: No data source specified");
-//        } else {
-//            Connection connection = null;
-//            try {
-//                connection = getConnection();
-//            } catch (SQLException se) {
-//                getLogger().warn("Could not get a connection to discover the dialect to use.", se);
-//            }
-//            if (connection != null) {
-//                discoverConnnectionProperties();
-//            }
-//            if (!supportsGetGeneratedKeys() && getSQLDialectCode() == ConnectionSource.UNKNOWN_DIALECT) {
-//                getLogger().warn("Connection does not support GetGeneratedKey method and could not discover the dialect.");
-//            }
-//        }
-//    }
-//
-//    /**
-//     * @see org.apache.log4j.db.ConnectionSource#getConnection()
-//     */
-//    public Connection getConnection() throws SQLException {
-//        if (dataSource == null) {
-//            getLogger().error("WARNING: No data source specified");
-//            return null;
-//        }
-//
-//        if (getUser() == null) {
-//            return dataSource.getConnection();
-//        } else {
-//            return dataSource.getConnection(getUser(), getPassword());
-//        }
-//    }
-//
-//    public DataSource getDataSource() {
-//        return dataSource;
-//    }
-//
-//    public void setDataSource(DataSource dataSource) {
-//        this.dataSource = dataSource;
-//    }
-//
-//    /**
-//     * {@inheritDoc}
-//     */
-//    public boolean parseUnrecognizedElement(Element element, Properties props) throws Exception {
-//        if ("dataSource".equals(element.getNodeName())) {
-//            Object instance =
-//                DOMConfigurator.parseElement(element, props, DataSource.class);
-//            if (instance instanceof DataSource) {
-//                setDataSource((DataSource) instance);
-//            }
-//            return true;
-//        }
-//        return false;
-//    }
-//
-//}
diff --git a/src/main/java/org/apache/log4j/db/DriverManagerConnectionSource.java b/src/main/java/org/apache/log4j/db/DriverManagerConnectionSource.java
deleted file mode 100644
index d389632..0000000
--- a/src/main/java/org/apache/log4j/db/DriverManagerConnectionSource.java
+++ /dev/null
@@ -1,137 +0,0 @@
-///*
-// * Licensed to the Apache Software Foundation (ASF) under one or more
-// * contributor license agreements.  See the NOTICE file distributed with
-// * this work for additional information regarding copyright ownership.
-// * The ASF licenses this file to You under the Apache License, Version 2.0
-// * (the "License"); you may not use this file except in compliance with
-// * the License.  You may obtain a copy of the License at
-// *
-// *      http://www.apache.org/licenses/LICENSE-2.0
-// *
-// * Unless required by applicable law or agreed to in writing, software
-// * distributed under the License is distributed on an "AS IS" BASIS,
-// * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// * See the License for the specific language governing permissions and
-// * limitations under the License.
-// */
-//
-//package org.apache.log4j.db;
-//
-//import java.sql.Connection;
-//import java.sql.DriverManager;
-//import java.sql.SQLException;
-//
-//
-///**
-// * The DriverManagerConnectionSource is an implementation of {@link ConnectionSource}
-// * that obtains the Connection in the traditional JDBC manner based on the
-// * connection URL.
-// * <p>
-// * Note that this class will establish a new Connection for each call to
-// * {@link #getConnection()}.  It is recommended that you either use a JDBC
-// * driver that natively supported Connection pooling or that you create
-// * your own implementation of {@link ConnectionSource} that taps into whatever
-// * pooling mechanism you are already using.  (If you have access to a JNDI
-// * implementation that supports {@link javax.sql.DataSource}s, e.g. within
-// * a J2EE application server, see {@link JNDIConnectionSource}).  See
-// * <a href="#dbcp">below</a> for a configuration example that uses the
-// * <a href="http://jakarta.apache.org/commons/dbcp/index.html">commons-dbcp</a>
-// * package from Apache.
-// * <p>
-// * Sample configuration:<br>
-// * <pre>
-// *     &lt;connectionSource class="org.apache.log4j.jdbc.DriverManagerConnectionSource"&gt;
-// *        &lt;param name="driver" value="com.mysql.jdbc.Driver" /&gt;
-// *        &lt;param name="url" value="jdbc:mysql://localhost:3306/mydb" /&gt;
-// *        &lt;param name="username" value="myUser" /&gt;
-// *        &lt;param name="password" value="myPassword" /&gt;
-// *     &lt;/connectionSource&gt;
-// *  </pre>
-// * <p>
-// * <a name="dbcp">If</a> you do not have another connection pooling mechanism
-// * built into your application, you can use  the
-// * <a href="http://jakarta.apache.org/commons/dbcp/index.html">commons-dbcp</a>
-// * package from Apache:<br>
-// * <pre>
-// *     &lt;connectionSource class="org.apache.log4j.jdbc.DriverManagerConnectionSource"&gt;
-// *        &lt;param name="driver" value="org.apache.commons.dbcp.PoolingDriver" /&gt;
-// *        &lt;param name="url" value="jdbc:apache:commons:dbcp:/myPoolingDriver" /&gt;
-// *     &lt;/connectionSource&gt;
-// *  </pre>
-// * Then the configuration information for the commons-dbcp package goes into
-// * the file myPoolingDriver.jocl and is placed in the classpath.  See the
-// * <a href="http://jakarta.apache.org/commons/dbcp/index.html">commons-dbcp</a>
-// * documentation for details.
-// *
-// * @author <a href="mailto:rdecampo@twcny.rr.com">Ray DeCampo</a>
-// */
-//public class DriverManagerConnectionSource extends ConnectionSourceSkeleton {
-//    private String driverClass = null;
-//    private String url = null;
-//
-//    public void activateOptions() {
-//        try {
-//            if (driverClass != null) {
-//                Class.forName(driverClass);
-//                discoverConnnectionProperties();
-//            } else {
-//                getLogger().error(
-//                    "WARNING: No JDBC driver specified for log4j DriverManagerConnectionSource.");
-//            }
-//        } catch (final ClassNotFoundException cnfe) {
-//            getLogger().error("Could not load JDBC driver class: " + driverClass, cnfe);
-//        }
-//    }
-//
-//
-//    /**
-//     * @see org.apache.log4j.db.ConnectionSource#getConnection()
-//     */
-//    public Connection getConnection() throws SQLException {
-//        if (getUser() == null) {
-//            return DriverManager.getConnection(url);
-//        } else {
-//            return DriverManager.getConnection(url, getUser(), getPassword());
-//        }
-//    }
-//
-//
-//    /**
-//     * Returns the url.
-//     *
-//     * @return String
-//     */
-//    public String getUrl() {
-//        return url;
-//    }
-//
-//
-//    /**
-//     * Sets the url.
-//     *
-//     * @param url The url to set
-//     */
-//    public void setUrl(String url) {
-//        this.url = url;
-//    }
-//
-//
-//    /**
-//     * Returns the name of the driver class.
-//     *
-//     * @return String
-//     */
-//    public String getDriverClass() {
-//        return driverClass;
-//    }
-//
-//
-//    /**
-//     * Sets the driver class.
-//     *
-//     * @param driverClass The driver class to set
-//     */
-//    public void setDriverClass(String driverClass) {
-//        this.driverClass = driverClass;
-//    }
-//}
diff --git a/src/main/java/org/apache/log4j/db/JNDIConnectionSource.java b/src/main/java/org/apache/log4j/db/JNDIConnectionSource.java
deleted file mode 100644
index f7f2d6a..0000000
--- a/src/main/java/org/apache/log4j/db/JNDIConnectionSource.java
+++ /dev/null
@@ -1,144 +0,0 @@
-///*
-// * Licensed to the Apache Software Foundation (ASF) under one or more
-// * contributor license agreements.  See the NOTICE file distributed with
-// * this work for additional information regarding copyright ownership.
-// * The ASF licenses this file to You under the Apache License, Version 2.0
-// * (the "License"); you may not use this file except in compliance with
-// * the License.  You may obtain a copy of the License at
-// *
-// *      http://www.apache.org/licenses/LICENSE-2.0
-// *
-// * Unless required by applicable law or agreed to in writing, software
-// * distributed under the License is distributed on an "AS IS" BASIS,
-// * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// * See the License for the specific language governing permissions and
-// * limitations under the License.
-// */
-//package org.apache.log4j.db;
-//
-//import javax.naming.Context;
-//import javax.naming.InitialContext;
-//import javax.naming.NamingException;
-//import javax.sql.DataSource;
-//import java.sql.Connection;
-//import java.sql.SQLException;
-//
-//// PortableRemoteObject was introduced in JDK 1.3. We won't use it.
-//// import javax.rmi.PortableRemoteObject;
-//
-//
-///**
-// * The {@code JNDIConnectionSource} is an implementation of
-// * {@link ConnectionSource} that obtains a {@link javax.sql.DataSource} from a
-// * JNDI provider and uses it to obtain a {@link java.sql.Connection}.  It is
-// * primarily designed to be used inside of J2EE application servers or
-// * application server clients, assuming the application server supports remote
-// * access of {@link javax.sql.DataSource}s.  In this way one can take
-// * advantage of  connection pooling and whatever other goodies the application
-// * server provides.
-// * <p>
-// * Sample configuration:<br>
-// * <pre>
-// *    &lt;connectionSource class="org.apache.log4j.jdbc.JNDIConnectionSource"&gt;
-// *        &lt;param name="jndiLocation" value="jdbc/MySQLDS" /&gt;
-// *    &lt;/connectionSource&gt;
-// *  </pre>
-// * <p>
-// * Sample configuration (with username and password):<br>
-// * <pre>
-// *    &lt;connectionSource class="org.apache.log4j.jdbc.JNDIConnectionSource"&gt;
-// *        &lt;param name="jndiLocation" value="jdbc/MySQLDS" /&gt;
-// *        &lt;param name="username" value="myUser" /&gt;
-// *        &lt;param name="password" value="myPassword" /&gt;
-// *    &lt;/connectionSource&gt;
-// *  </pre>
-// * <p>
-// * Note that this class will obtain an {@link javax.naming.InitialContext}
-// * using the no-argument constructor.  This will usually work when executing
-// * within a J2EE environment.  When outside the J2EE environment, make sure
-// * that you provide a jndi.properties file as described by your JNDI
-// * provider's documentation.
-// *
-// * @author <a href="mailto:rdecampo@twcny.rr.com">Ray DeCampo</a>
-// */
-//public class JNDIConnectionSource
-//    extends ConnectionSourceSkeleton {
-//    private String jndiLocation = null;
-//    private DataSource dataSource = null;
-//
-//    /**
-//     * @see org.apache.log4j.spi.OptionHandler#activateOptions()
-//     */
-//    public void activateOptions() {
-//        if (jndiLocation == null) {
-//            getLogger().error("No JNDI location specified for JNDIConnectionSource.");
-//        }
-//
-//        discoverConnnectionProperties();
-//
-//    }
-//
-//    /**
-//     * @see org.apache.log4j.db.ConnectionSource#getConnection()
-//     */
-//    public Connection getConnection()
-//        throws SQLException {
-//        Connection conn;
-//        try {
-//
-//            if (dataSource == null) {
-//                dataSource = lookupDataSource();
-//            }
-//            if (getUser() == null) {
-//                conn = dataSource.getConnection();
-//            } else {
-//                conn = dataSource.getConnection(getUser(), getPassword());
-//            }
-//        } catch (final NamingException ne) {
-//            getLogger().error("Error while getting data source", ne);
-//            throw new SQLException("NamingException while looking up DataSource: " + ne.getMessage());
-//        } catch (final ClassCastException cce) {
-//            getLogger().error("ClassCastException while looking up DataSource.", cce);
-//            throw new SQLException("ClassCastException while looking up DataSource: " + cce.getMessage());
-//        }
-//
-//        return conn;
-//    }
-//
-//    /**
-//     * Returns the jndiLocation.
-//     *
-//     * @return String
-//     */
-//    public String getJndiLocation() {
-//        return jndiLocation;
-//    }
-//
-//
-//    /**
-//     * Sets the jndiLocation.
-//     *
-//     * @param jndiLocation The jndiLocation to set
-//     */
-//    public void setJndiLocation(String jndiLocation) {
-//        this.jndiLocation = jndiLocation;
-//    }
-//
-//
-//    private DataSource lookupDataSource()
-//        throws NamingException, SQLException {
-//        DataSource ds;
-//        Context ctx = new InitialContext();
-//        Object obj = ctx.lookup(jndiLocation);
-//
-//        // PortableRemoteObject was introduced in JDK 1.3. We won't use it.
-//        //ds = (DataSource)PortableRemoteObject.narrow(obj, DataSource.class);
-//        ds = (DataSource) obj;
-//
-//        if (ds == null) {
-//            throw new SQLException("Failed to obtain data source from JNDI location " + jndiLocation);
-//        } else {
-//            return ds;
-//        }
-//    }
-//}
diff --git a/src/main/java/org/apache/log4j/db/dialect/HSQLDBDialect.java b/src/main/java/org/apache/log4j/db/dialect/HSQLDBDialect.java
deleted file mode 100644
index efddad5..0000000
--- a/src/main/java/org/apache/log4j/db/dialect/HSQLDBDialect.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.log4j.db.dialect;
-
-/**
- * The HSQLDB dialect.
- *
- * @author <a href="http://www.qos.ch/log4j/">Ceki G&uuml;lc&uuml;</a>
- */
-public class HSQLDBDialect implements SQLDialect {
-    public static final String SELECT_CURRVAL = "CALL IDENTITY()";
-
-    public String getSelectInsertId() {
-        return SELECT_CURRVAL;
-    }
-}
diff --git a/src/main/java/org/apache/log4j/db/dialect/MsSQLDialect.java b/src/main/java/org/apache/log4j/db/dialect/MsSQLDialect.java
deleted file mode 100644
index 32368d6..0000000
--- a/src/main/java/org/apache/log4j/db/dialect/MsSQLDialect.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.log4j.db.dialect;
-
-/**
- * The MS SQL Server dialect is untested.
- * <p>
- * Note that the dialect is not needed if your JDBC driver supports
- * the getGeneratedKeys method introduced in JDBC 3.0 specification.
- *
- * @author James Stauffer
- */
-public class MsSQLDialect implements SQLDialect {
-    public static final String SELECT_CURRVAL = "SELECT @@identity id";
-
-    public String getSelectInsertId() {
-        return SELECT_CURRVAL;
-    }
-}
diff --git a/src/main/java/org/apache/log4j/db/dialect/MySQLDialect.java b/src/main/java/org/apache/log4j/db/dialect/MySQLDialect.java
deleted file mode 100644
index 993df83..0000000
--- a/src/main/java/org/apache/log4j/db/dialect/MySQLDialect.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.log4j.db.dialect;
-
-/**
- * @author Ceki
- */
-public class MySQLDialect implements SQLDialect {
-    public static final String SELECT_LAST_INSERT_ID = "SELECT LAST_INSERT_ID()";
-
-    public String getSelectInsertId() {
-        return SELECT_LAST_INSERT_ID;
-    }
-}
diff --git a/src/main/java/org/apache/log4j/db/dialect/OracleDialect.java b/src/main/java/org/apache/log4j/db/dialect/OracleDialect.java
deleted file mode 100644
index cba2507..0000000
--- a/src/main/java/org/apache/log4j/db/dialect/OracleDialect.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.log4j.db.dialect;
-
-/**
- * The Oracle dialect. Tested successfully on Oracle9i Release 9.2.0.3.0 by
- * James Stauffer.
- *
- * @author Ceki G&uuml;lc&uuml;
- */
-public class OracleDialect implements SQLDialect {
-    public static final String SELECT_CURRVAL = "SELECT logging_event_id_seq.currval from dual";
-
-    public String getSelectInsertId() {
-        return SELECT_CURRVAL;
-    }
-
-}
diff --git a/src/main/java/org/apache/log4j/db/dialect/PostgreSQLDialect.java b/src/main/java/org/apache/log4j/db/dialect/PostgreSQLDialect.java
deleted file mode 100644
index 8f5d4c9..0000000
--- a/src/main/java/org/apache/log4j/db/dialect/PostgreSQLDialect.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.log4j.db.dialect;
-
-
-/**
- * @author ceki
- * <p>
- * To change the template for this generated type comment go to
- * Window&gt;Preferences&gt;Java&gt;Code Generation&gt;Code and Comments
- */
-public class PostgreSQLDialect
-    implements SQLDialect {
-    public static final String SELECT_CURRVAL = "SELECT currval('logging_event_id_seq')";
-
-    public String getSelectInsertId() {
-        return SELECT_CURRVAL;
-    }
-}
diff --git a/src/main/java/org/apache/log4j/db/dialect/SQLDialect.java b/src/main/java/org/apache/log4j/db/dialect/SQLDialect.java
deleted file mode 100644
index 538b74d..0000000
--- a/src/main/java/org/apache/log4j/db/dialect/SQLDialect.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.log4j.db.dialect;
-
-/**
- * @author ceki
- */
-public interface SQLDialect {
-
-    String getSelectInsertId();
-
-}
diff --git a/src/main/java/org/apache/log4j/db/dialect/SybaseDialect.java b/src/main/java/org/apache/log4j/db/dialect/SybaseDialect.java
deleted file mode 100644
index 38bcabb..0000000
--- a/src/main/java/org/apache/log4j/db/dialect/SybaseDialect.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.log4j.db.dialect;
-
-/**
- * The Sybase dialect.
- */
-public class SybaseDialect implements SQLDialect {
-    public static final String SELECT_CURRVAL = "select @@identity";
-
-    public String getSelectInsertId() {
-        return SELECT_CURRVAL;
-    }
-}
diff --git a/src/main/java/org/apache/log4j/db/dialect/Util.java b/src/main/java/org/apache/log4j/db/dialect/Util.java
deleted file mode 100644
index a79b7d8..0000000
--- a/src/main/java/org/apache/log4j/db/dialect/Util.java
+++ /dev/null
@@ -1,119 +0,0 @@
-///*
-// * Licensed to the Apache Software Foundation (ASF) under one or more
-// * contributor license agreements.  See the NOTICE file distributed with
-// * this work for additional information regarding copyright ownership.
-// * The ASF licenses this file to You under the Apache License, Version 2.0
-// * (the "License"); you may not use this file except in compliance with
-// * the License.  You may obtain a copy of the License at
-// *
-// *      http://www.apache.org/licenses/LICENSE-2.0
-// *
-// * Unless required by applicable law or agreed to in writing, software
-// * distributed under the License is distributed on an "AS IS" BASIS,
-// * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// * See the License for the specific language governing permissions and
-// * limitations under the License.
-// */
-//
-//package org.apache.log4j.db.dialect;
-//
-//import org.apache.log4j.db.ConnectionSource;
-//
-//import java.sql.DatabaseMetaData;
-//import java.sql.SQLException;
-//
-//
-///**
-// * @author Ceki Gulcu
-// */
-//public class Util {
-//    private static final String POSTGRES_PART = "postgresql";
-//    private static final String MYSQL_PART = "mysql";
-//    private static final String ORACLE_PART = "oracle";
-//    //private static final String MSSQL_PART = "mssqlserver4";
-//    private static final String MSSQL_PART = "microsoft";
-//    private static final String HSQL_PART = "hsql";
-//
-//    public static int discoverSQLDialect(DatabaseMetaData meta) {
-//        int dialectCode = 0;
-//
-//        try {
-//
-//            String dbName = meta.getDatabaseProductName().toLowerCase();
-//
-//            if (dbName.contains(POSTGRES_PART)) {
-//                return ConnectionSource.POSTGRES_DIALECT;
-//            } else if (dbName.contains(MYSQL_PART)) {
-//                return ConnectionSource.MYSQL_DIALECT;
-//            } else if (dbName.contains(ORACLE_PART)) {
-//                return ConnectionSource.ORACLE_DIALECT;
-//            } else if (dbName.contains(MSSQL_PART)) {
-//                return ConnectionSource.MSSQL_DIALECT;
-//            } else if (dbName.contains(HSQL_PART)) {
-//                return ConnectionSource.HSQL_DIALECT;
-//            } else {
-//                return ConnectionSource.UNKNOWN_DIALECT;
-//            }
-//        } catch (SQLException sqle) {
-//            // we can't do much here
-//        }
-//
-//        return dialectCode;
-//    }
-//
-//    public static SQLDialect getDialectFromCode(int dialectCode) {
-//        SQLDialect sqlDialect = null;
-//
-//        switch (dialectCode) {
-//            case ConnectionSource.POSTGRES_DIALECT:
-//                sqlDialect = new PostgreSQLDialect();
-//
-//                break;
-//            case ConnectionSource.MYSQL_DIALECT:
-//                sqlDialect = new MySQLDialect();
-//
-//                break;
-//            case ConnectionSource.ORACLE_DIALECT:
-//                sqlDialect = new OracleDialect();
-//
-//                break;
-//            case ConnectionSource.MSSQL_DIALECT:
-//                sqlDialect = new MsSQLDialect();
-//
-//                break;
-//            case ConnectionSource.HSQL_DIALECT:
-//                sqlDialect = new HSQLDBDialect();
-//
-//                break;
-//        }
-//        return sqlDialect;
-//    }
-//
-//    /**
-//     * This method handles cases where the
-//     * {@link DatabaseMetaData#supportsGetGeneratedKeys} method is missing in the
-//     * JDBC driver implementation.
-//     */
-//    public boolean supportsGetGeneratedKeys(DatabaseMetaData meta) {
-//        try {
-//            return meta.supportsGetGeneratedKeys();
-//        } catch (Throwable e) {
-////            getLogger().info("Could not call supportsGetGeneratedKeys method. This may be recoverable");
-//            return false;
-//        }
-//    }
-//
-//    /**
-//     * This method handles cases where the
-//     * {@link DatabaseMetaData#supportsBatchUpdates} method is missing in the
-//     * JDBC driver implementation.
-//     */
-//    public boolean supportsBatchUpdates(DatabaseMetaData meta) {
-//        try {
-//            return meta.supportsBatchUpdates();
-//        } catch (Throwable e) {
-////            getLogger().info("Missing DatabaseMetaData.supportsBatchUpdates method.");
-//            return false;
-//        }
-//    }
-//}
diff --git a/src/main/java/org/apache/log4j/db/dialect/db2.sql b/src/main/java/org/apache/log4j/db/dialect/db2.sql
deleted file mode 100644
index 47d2164..0000000
--- a/src/main/java/org/apache/log4j/db/dialect/db2.sql
+++ /dev/null
@@ -1,64 +0,0 @@
-#  Licensed to the Apache Software Foundation (ASF) under one or more
-#  contributor license agreements.  See the NOTICE file distributed with
-#  this work for additional information regarding copyright ownership.
-#  The ASF licenses this file to You under the Apache License, Version 2.0
-#  (the "License"); you may not use this file except in compliance with
-#  the License.  You may obtain a copy of the License at
-# 
-#       http://www.apache.org/licenses/LICENSE-2.0
-#
-#  Unless required by applicable law or agreed to in writing, software
-#  distributed under the License is distributed on an "AS IS" BASIS,
-#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-#  See the License for the specific language governing permissions and
-#  limitations under the License.
-#
-# This SQL script creates the required tables by org.apache.log4j.db.DBAppender and 
-# org.apache.log4j.db.DBReceiver.
-#
-# It is intended for IBM DB2 databases.
-#
-# WARNING  WARNING WARNING  WARNING 
-# =================================
-# This SQL script has not been tested on an actual DB2
-# instance. It may contain errors or even invalid SQL
-# statements.
-
-DROP TABLE  logging_event_property;
-DROP TABLE  logging_event_exception;
-DROP TABLE  logging_event;
-
-CREATE TABLE logging_event 
-  (
-    sequence_number   BIGINT NOT NULL,
-    timestamp         BIGINT NOT NULL,
-    rendered_message  VARCHAR(4000) NOT NULL,
-    logger_name       VARCHAR(254) NOT NULL,
-    level_string      VARCHAR(254) NOT NULL,
-    ndc               VARCHAR(4000),
-    thread_name       VARCHAR(254),
-    reference_flag    SMALLINT,
-    caller_filename   VARCHAR(254) NOT NULL,
-    caller_class      VARCHAR(254) NOT NULL,
-    caller_method     VARCHAR(254) NOT NULL,
-    caller_line       CHAR(4) NOT NULL,
-    event_id          INTEGER GENERATED ALWAYS AS IDENTITY (START WITH 1)
-  );
-
-CREATE TABLE logging_event_property
-  (
-    event_id	      INTEGER NOT NULL,
-    mapped_key        VARCHAR(254) NOT NULL,
-    mapped_value      VARCHAR(1024),
-    PRIMARY KEY(event_id, mapped_key),
-    FOREIGN KEY (event_id) REFERENCES logging_event(event_id)
-  );
-
-CREATE TABLE logging_event_exception
-  (
-    event_id         INTEGER NOT NULL,
-    i                SMALLINT NOT NULL,
-    trace_line       VARCHAR(254) NOT NULL,
-    PRIMARY KEY(event_id, i),
-    FOREIGN KEY (event_id) REFERENCES logging_event(event_id)
-  );
diff --git a/src/main/java/org/apache/log4j/db/dialect/db2l.sql b/src/main/java/org/apache/log4j/db/dialect/db2l.sql
deleted file mode 100644
index 0f91315..0000000
--- a/src/main/java/org/apache/log4j/db/dialect/db2l.sql
+++ /dev/null
@@ -1,61 +0,0 @@
-#  Licensed to the Apache Software Foundation (ASF) under one or more
-#  contributor license agreements.  See the NOTICE file distributed with
-#  this work for additional information regarding copyright ownership.
-#  The ASF licenses this file to You under the Apache License, Version 2.0
-#  (the "License"); you may not use this file except in compliance with
-#  the License.  You may obtain a copy of the License at
-# 
-#       http://www.apache.org/licenses/LICENSE-2.0
-#
-#  Unless required by applicable law or agreed to in writing, software
-#  distributed under the License is distributed on an "AS IS" BASIS,
-#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-#  See the License for the specific language governing permissions and
-#  limitations under the License.
-# This SQL script creates the required tables by org.apache.log4j.db.DBAppender and 
-# org.apache.log4j.db.DBReceiver.
-#
-# It is intended for PostgreSQL databases.
-
-DROP TABLE    logging_event_property;
-DROP TABLE    logging_event_exception;
-DROP TABLE    logging_event;
-
-
-CREATE SEQUENCE logging_event_id_seq MINVALUE 1 START 1;
-
-
-CREATE TABLE logging_event 
-  (
-    sequence_number   BIGINT NOT NULL,
-    timestamp         BIGINT NOT NULL,
-    rendered_message  TEXT NOT NULL,
-    logger_name       VARCHAR(254) NOT NULL,
-    level_string      VARCHAR(254) NOT NULL,
-    ndc               TEXT,
-    thread_name       VARCHAR(254),
-    reference_flag    SMALLINT,
-    caller_filename   VARCHAR(254) NOT NULL,
-    caller_class      VARCHAR(254) NOT NULL,
-    caller_method     VARCHAR(254) NOT NULL,
-    caller_line       CHAR(4) NOT NULL,
-    event_id          INT IDENTITY GENERATED ALWAYS PRIMARY KEY
-  );
-
-CREATE TABLE logging_event_property
-  (
-    event_id	      INT NOT NULL,
-    mapped_key        VARCHAR(254) NOT NULL,
-    mapped_value      VARCHAR(1024),
-    PRIMARY KEY(event_id, mapped_key),
-    FOREIGN KEY (event_id) REFERENCES logging_event(event_id)
-  );
-
-CREATE TABLE logging_event_exception
-  (
-    event_id         INT NOT NULL,
-    i                SMALLINT NOT NULL,
-    trace_line       VARCHAR(254) NOT NULL,
-    PRIMARY KEY(event_id, i),
-    FOREIGN KEY (event_id) REFERENCES logging_event(event_id)
-  );
diff --git a/src/main/java/org/apache/log4j/db/dialect/hsqldb.sql b/src/main/java/org/apache/log4j/db/dialect/hsqldb.sql
deleted file mode 100644
index 50f8f78..0000000
--- a/src/main/java/org/apache/log4j/db/dialect/hsqldb.sql
+++ /dev/null
@@ -1,60 +0,0 @@
-//  Licensed to the Apache Software Foundation (ASF) under one or more
-//  contributor license agreements.  See the NOTICE file distributed with
-//  this work for additional information regarding copyright ownership.
-//  The ASF licenses this file to You under the Apache License, Version 2.0
-//  (the "License"); you may not use this file except in compliance with
-//  the License.  You may obtain a copy of the License at
-// 
-//       http://www.apache.org/licenses/LICENSE-2.0
-//
-//  Unless required by applicable law or agreed to in writing, software
-//  distributed under the License is distributed on an "AS IS" BASIS,
-//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-//  See the License for the specific language governing permissions and
-//  limitations under the License.
-// This SQL script creates the required tables by
-// org.apache.log4j.db.DBAppender and org.apache.log4j.db.DBReceiver.
-//
-// It is intended for HSQLDB. 
-//
-
-DROP TABLE logging_event_exception IF EXISTS;
-DROP TABLE logging_event_property IF EXISTS;
-DROP TABLE logging_event IF EXISTS;
-
-
-CREATE TABLE logging_event 
-  (
-    sequence_number   BIGINT NOT NULL,
-    timestamp         BIGINT NOT NULL,
-    rendered_message  LONGVARCHAR NOT NULL,
-    logger_name       VARCHAR NOT NULL,
-    level_string      VARCHAR NOT NULL,
-    ndc               LONGVARCHAR,
-    thread_name       VARCHAR,
-    reference_flag    SMALLINT,
-    caller_filename   VARCHAR, 
-    caller_class      VARCHAR, 
-    caller_method     VARCHAR, 
-    caller_line       CHAR(4), 
-    event_id          INT NOT NULL IDENTITY
-  );
-
-
-CREATE TABLE logging_event_property
-  (
-    event_id	      INT NOT NULL,
-    mapped_key        VARCHAR(254) NOT NULL,
-    mapped_value      LONGVARCHAR,
-    PRIMARY KEY(event_id, mapped_key),
-    FOREIGN KEY (event_id) REFERENCES logging_event(event_id)
-  );
-
-CREATE TABLE logging_event_exception
-  (
-    event_id         INT NOT NULL,
-    i                SMALLINT NOT NULL,
-    trace_line       VARCHAR NOT NULL,
-    PRIMARY KEY(event_id, i),
-    FOREIGN KEY (event_id) REFERENCES logging_event(event_id)
-  );
diff --git a/src/main/java/org/apache/log4j/db/dialect/mssql.sql b/src/main/java/org/apache/log4j/db/dialect/mssql.sql
deleted file mode 100644
index d87e0a0..0000000
--- a/src/main/java/org/apache/log4j/db/dialect/mssql.sql
+++ /dev/null
@@ -1,61 +0,0 @@
---  Licensed to the Apache Software Foundation (ASF) under one or more
---  contributor license agreements.  See the NOTICE file distributed with
---  this work for additional information regarding copyright ownership.
---  The ASF licenses this file to You under the Apache License, Version 2.0
---  (the "License"); you may not use this file except in compliance with
---  the License.  You may obtain a copy of the License at
--- 
---       http://www.apache.org/licenses/LICENSE-2.0
---
---  Unless required by applicable law or agreed to in writing, software
---  distributed under the License is distributed on an "AS IS" BASIS,
---  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
---  See the License for the specific language governing permissions and
---  limitations under the License.
---
---
--- This SQL script creates the required tables by org.apache.log4j.db.DBAppender and 
--- org.apache.log4j.db.DBReceiver. 
--- 
--- It is intended for MS SQL Server databases.  This has been tested with version 7.0. 
-
-DROP TABLE logging_event_property 
-DROP TABLE logging_event_exception 
-DROP TABLE logging_event 
-
-CREATE TABLE logging_event 
-  ( 
-    sequence_number   DECIMAL(20) NOT NULL, 
-    timestamp         DECIMAL(20) NOT NULL, 
-    rendered_message  VARCHAR(4000) NOT NULL, 
-    logger_name       VARCHAR(254) NOT NULL, 
-    level_string      VARCHAR(254) NOT NULL, 
-    ndc               VARCHAR(4000), 
-    thread_name       VARCHAR(254), 
-    reference_flag    SMALLINT, 
-    caller_filename   VARCHAR(254) NOT NULL,
-    caller_class      VARCHAR(254) NOT NULL,
-    caller_method     VARCHAR(254) NOT NULL,
-    caller_line       CHAR(4) NOT NULL,
-    event_id          INT NOT NULL identity, 
-    PRIMARY KEY(event_id) 
-  ) 
-
-CREATE TABLE logging_event_property 
-  ( 
-    event_id          INT NOT NULL, 
-    mapped_key        VARCHAR(254) NOT NULL, 
-    mapped_value      VARCHAR(1024), 
-    PRIMARY KEY(event_id, mapped_key), 
-    FOREIGN KEY (event_id) REFERENCES logging_event(event_id) 
-  ) 
-
-CREATE TABLE logging_event_exception 
-  ( 
-    event_id         INT NOT NULL, 
-    i                SMALLINT NOT NULL, 
-    trace_line       VARCHAR(254) NOT NULL, 
-    PRIMARY KEY(event_id, i), 
-    FOREIGN KEY (event_id) REFERENCES logging_event(event_id) 
-  ) 
-
diff --git a/src/main/java/org/apache/log4j/db/dialect/mysql.sql b/src/main/java/org/apache/log4j/db/dialect/mysql.sql
deleted file mode 100644
index e3a2be1..0000000
--- a/src/main/java/org/apache/log4j/db/dialect/mysql.sql
+++ /dev/null
@@ -1,71 +0,0 @@
-#  Licensed to the Apache Software Foundation (ASF) under one or more
-#  contributor license agreements.  See the NOTICE file distributed with
-#  this work for additional information regarding copyright ownership.
-#  The ASF licenses this file to You under the Apache License, Version 2.0
-#  (the "License"); you may not use this file except in compliance with
-#  the License.  You may obtain a copy of the License at
-# 
-#       http://www.apache.org/licenses/LICENSE-2.0
-#
-#  Unless required by applicable law or agreed to in writing, software
-#  distributed under the License is distributed on an "AS IS" BASIS,
-#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-#  See the License for the specific language governing permissions and
-#  limitations under the License.
-#
-#
-#
-# This SQL script creates the required tables by org.apache.log4j.db.DBAppender and 
-# org.apache.log4j.db.DBReceiver.
-#
-# It is intended for MySQL databases. It has been tested on MySQL 4.1.1 with 
-# INNODB tables.
-
-
-BEGIN;
-DROP TABLE IF EXISTS logging_event_property;
-DROP TABLE IF EXISTS logging_event_exception;
-DROP TABLE IF EXISTS logging_event;
-COMMIT;
-
-
-BEGIN;
-CREATE TABLE logging_event 
-  (
-    sequence_number BIGINT NOT NULL,
-    timestamp         BIGINT NOT NULL,
-    rendered_message  TEXT NOT NULL,
-    logger_name       VARCHAR(254) NOT NULL,
-    level_string      VARCHAR(254) NOT NULL,
-    ndc               TEXT,
-    thread_name       VARCHAR(254),
-    reference_flag    SMALLINT,
-    caller_filename   VARCHAR(254) NOT NULL,
-    caller_class      VARCHAR(254) NOT NULL,
-    caller_method     VARCHAR(254) NOT NULL,
-    caller_line       CHAR(4) NOT NULL,
-    event_id          INT NOT NULL AUTO_INCREMENT PRIMARY KEY
-  );
-COMMIT;
-
-BEGIN;
-CREATE TABLE logging_event_property
-  (
-    event_id	      INT NOT NULL,
-    mapped_key        VARCHAR(254) NOT NULL,
-    mapped_value      TEXT,
-    PRIMARY KEY(event_id, mapped_key),
-    FOREIGN KEY (event_id) REFERENCES logging_event(event_id)
-  );
-COMMIT;
-
-BEGIN;
-CREATE TABLE logging_event_exception
-  (
-    event_id         INT NOT NULL,
-    i                SMALLINT NOT NULL,
-    trace_line       VARCHAR(254) NOT NULL,
-    PRIMARY KEY(event_id, i),
-    FOREIGN KEY (event_id) REFERENCES logging_event(event_id)
-  );
-COMMIT;
diff --git a/src/main/java/org/apache/log4j/db/dialect/oracle.sql b/src/main/java/org/apache/log4j/db/dialect/oracle.sql
deleted file mode 100644
index 84bf9e5..0000000
--- a/src/main/java/org/apache/log4j/db/dialect/oracle.sql
+++ /dev/null
@@ -1,77 +0,0 @@
---  Licensed to the Apache Software Foundation (ASF) under one or more
---  contributor license agreements.  See the NOTICE file distributed with
---  this work for additional information regarding copyright ownership.
---  The ASF licenses this file to You under the Apache License, Version 2.0
---  (the "License"); you may not use this file except in compliance with
---  the License.  You may obtain a copy of the License at
--- 
---       http://www.apache.org/licenses/LICENSE-2.0
---
---  Unless required by applicable law or agreed to in writing, software
---  distributed under the License is distributed on an "AS IS" BASIS,
---  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
---  See the License for the specific language governing permissions and
---  limitations under the License.
---
---
--- This SQL script creates the required tables by org.apache.log4j.db.DBAppender and 
--- org.apache.log4j.db.DBReceiver.
---
--- It is intended for Oracle databases.
-
--- Tested successfully on Oracle9i Release 9.2.0.3.0 by James Stauffer
--- Tested successfully on Oracle9i Release by Elias Ross
-
--- The following lines are useful in cleaning any previous tables 
-
---drop TRIGGER logging_event_id_seq_trig; 
---drop SEQUENCE logging_event_id_seq; 
---drop table logging_event_property; 
---drop table logging_event_exception; 
---drop table logging_event; 
-
-CREATE SEQUENCE logging_event_id_seq MINVALUE 1 START WITH 1;
-
-CREATE TABLE logging_event 
-  (
-    sequence_number   NUMBER(20) NOT NULL,
-    timestamp         NUMBER(20) NOT NULL,
-    rendered_message  VARCHAR2(4000) NOT NULL,
-    logger_name       VARCHAR2(254) NOT NULL,
-    level_string      VARCHAR2(254) NOT NULL,
-    ndc               VARCHAR2(4000),
-    thread_name       VARCHAR2(254),
-    reference_flag    NUMBER(5),
-    caller_filename   VARCHAR2(254) NOT NULL,
-    caller_class      VARCHAR2(254) NOT NULL,
-    caller_method     VARCHAR2(254) NOT NULL,
-    caller_line       CHAR(4) NOT NULL,
-    event_id          NUMBER(10) PRIMARY KEY
-  );
-
-CREATE OR REPLACE TRIGGER logging_event_id_seq_trig
-BEFORE INSERT ON logging_event
-FOR EACH ROW
-BEGIN
-   SELECT logging_event_id_seq.nextval
-   INTO :new.sequence_number FROM dual;
-END;
-
-CREATE TABLE logging_event_property
-  (
-    event_id	      NUMBER(10) NOT NULL,
-    mapped_key        VARCHAR2(254) NOT NULL,
-    mapped_value      VARCHAR2(1024),
-    PRIMARY KEY(event_id, mapped_key),
-    FOREIGN KEY (event_id) REFERENCES logging_event(event_id)
-  );
-  
-CREATE TABLE logging_event_exception
-  (
-    event_id         NUMBER(10) NOT NULL,
-    i                NUMBER(5)  NOT NULL,
-    trace_line       VARCHAR2(254) NOT NULL,
-    PRIMARY KEY(event_id, i),
-    FOREIGN KEY (event_id) REFERENCES logging_event(event_id)
-  );
-  
diff --git a/src/main/java/org/apache/log4j/db/dialect/postgresql.sql b/src/main/java/org/apache/log4j/db/dialect/postgresql.sql
deleted file mode 100644
index c38757b..0000000
--- a/src/main/java/org/apache/log4j/db/dialect/postgresql.sql
+++ /dev/null
@@ -1,63 +0,0 @@
-#  Licensed to the Apache Software Foundation (ASF) under one or more
-#  contributor license agreements.  See the NOTICE file distributed with
-#  this work for additional information regarding copyright ownership.
-#  The ASF licenses this file to You under the Apache License, Version 2.0
-#  (the "License"); you may not use this file except in compliance with
-#  the License.  You may obtain a copy of the License at
-# 
-#       http://www.apache.org/licenses/LICENSE-2.0
-#
-#  Unless required by applicable law or agreed to in writing, software
-#  distributed under the License is distributed on an "AS IS" BASIS,
-#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-#  See the License for the specific language governing permissions and
-#  limitations under the License.
-#
-## This SQL script creates the required tables by org.apache.log4j.db.DBAppender and 
-# org.apache.log4j.db.DBReceiver.
-#
-# It is intended for PostgreSQL databases.
-
-DROP TABLE    logging_event_property;
-DROP TABLE    logging_event_exception;
-DROP SEQUENCE logging_event_id_seq;
-DROP TABLE    logging_event;
-
-
-CREATE SEQUENCE logging_event_id_seq MINVALUE 1 START 1;
-
-
-CREATE TABLE logging_event 
-  (
-    sequence_number   BIGINT NOT NULL,
-    timestamp         BIGINT NOT NULL,
-    rendered_message  TEXT NOT NULL,
-    logger_name       VARCHAR(254) NOT NULL,
-    level_string      VARCHAR(254) NOT NULL,
-    ndc               TEXT,
-    thread_name       VARCHAR(254),
-    reference_flag    SMALLINT,
-    caller_filename   VARCHAR(254) NOT NULL,
-    caller_class      VARCHAR(254) NOT NULL,
-    caller_method     VARCHAR(254) NOT NULL,
-    caller_line       CHAR(4) NOT NULL,
-    event_id          INT DEFAULT nextval('logging_event_id_seq') PRIMARY KEY
-  );
-
-CREATE TABLE logging_event_property
-  (
-    event_id	      INT NOT NULL,
-    mapped_key        VARCHAR(254) NOT NULL,
-    mapped_value      VARCHAR(1024),
-    PRIMARY KEY(event_id, mapped_key),
-    FOREIGN KEY (event_id) REFERENCES logging_event(event_id)
-  );
-
-CREATE TABLE logging_event_exception
-  (
-    event_id         INT NOT NULL,
-    i                SMALLINT NOT NULL,
-    trace_line       VARCHAR(254) NOT NULL,
-    PRIMARY KEY(event_id, i),
-    FOREIGN KEY (event_id) REFERENCES logging_event(event_id)
-  );
diff --git a/src/main/java/org/apache/log4j/db/package-info.java b/src/main/java/org/apache/log4j/db/package-info.java
deleted file mode 100644
index 9e40623..0000000
--- a/src/main/java/org/apache/log4j/db/package-info.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * Provides means to append logging events into various databases. The persisted data can be later read back using {@link org.apache.log4j.db.DBReceiver}.
- * <p>
- * Most popular database systems, such as PostgreSQL, MySQL, Oracle, DB2 and MsSQL are supported.
- * </p>
- * <p>
- * Just as importantly, the way for obtaining JDBC connections is pluggable. Connections can be obtained through the traditional way of DriverManager, or
- * alternatively as a DataSource. A DataSource can be instantiated directly or it can obtained through JNDI.
- * </p>
- */
-package org.apache.log4j.db;


(logging-chainsaw) 06/06: applied spotless

Posted by gr...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

grobmeier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/logging-chainsaw.git

commit 2cac21e9e3ef08040f614000629fa31b9073fd15
Author: Christian Grobmeier <cg...@grobmeier.de>
AuthorDate: Thu Dec 21 19:04:00 2023 +0100

    applied spotless
---
 pom.xml => .flattened-pom.xml                      |  248 +--
 .github/workflows/chainsaw.yml                     |    5 +-
 pom.xml                                            |  219 +-
 src/assembly/bin.xml                               |   36 +-
 src/assembly/standalone.xml                        |   33 +-
 src/changes/changes.xml                            |   32 +-
 src/main/java/org/apache/log4j/ULogger.java        |   10 +-
 .../log4j/chainsaw/AbstractPreferencePanel.java    |   35 +-
 .../log4j/chainsaw/ApplicationPreferenceModel.java |   40 +-
 .../chainsaw/ApplicationPreferenceModelPanel.java  |  278 ++-
 .../org/apache/log4j/chainsaw/BasicPrefPanel.java  |    3 +-
 .../apache/log4j/chainsaw/ChainsawAppender.java    |   20 +-
 .../org/apache/log4j/chainsaw/ChainsawColumns.java |   18 +-
 .../apache/log4j/chainsaw/ChainsawConstants.java   |   26 +-
 .../chainsaw/ChainsawCyclicBufferTableModel.java   |  310 +--
 .../log4j/chainsaw/ChainsawEventBatchListener.java |    2 +-
 .../org/apache/log4j/chainsaw/ChainsawStarter.java |   54 +-
 .../apache/log4j/chainsaw/ChainsawStatusBar.java   |  170 +-
 .../log4j/chainsaw/ChainsawToolBarAndMenus.java    |  595 +++--
 .../org/apache/log4j/chainsaw/ChainsawViewer.java  |    4 +-
 .../log4j/chainsaw/CheckListCellRenderer.java      |   24 +-
 .../apache/log4j/chainsaw/ColumnComparator.java    |  175 +-
 .../chainsaw/CopyEventsToClipboardAction.java      |   39 +-
 .../apache/log4j/chainsaw/CyclicBufferList.java    |   12 +-
 .../org/apache/log4j/chainsaw/DockablePanel.java   |    6 +-
 .../org/apache/log4j/chainsaw/EventContainer.java  |   12 +-
 .../apache/log4j/chainsaw/EventCountListener.java  |    4 +-
 .../log4j/chainsaw/ExpressionRuleContext.java      |  101 +-
 .../log4j/chainsaw/JTextComponentFormatter.java    |    7 +-
 .../chainsaw/LogFilePatternLayoutBuilder.java      |  111 +-
 .../apache/log4j/chainsaw/LoggingEventWrapper.java |   21 +-
 .../apache/log4j/chainsaw/ModifiableListModel.java |    3 +-
 .../org/apache/log4j/chainsaw/NewKeyEvent.java     |    2 +-
 .../org/apache/log4j/chainsaw/NewKeyListener.java  |    4 +-
 .../org/apache/log4j/chainsaw/PopupListener.java   |    4 +-
 .../org/apache/log4j/chainsaw/ProgressPanel.java   |    8 +-
 .../log4j/chainsaw/ReceiverConfigurationPanel.java |  111 +-
 .../log4j/chainsaw/ReceiverEventListener.java      |    6 +-
 .../org/apache/log4j/chainsaw/RuleMediator.java    |   13 +-
 .../apache/log4j/chainsaw/ShutdownListener.java    |    5 +-
 .../org/apache/log4j/chainsaw/ShutdownManager.java |   94 +-
 .../org/apache/log4j/chainsaw/SortTableModel.java  |    4 +-
 .../log4j/chainsaw/TableColorizingRenderer.java    |  274 +--
 .../apache/log4j/chainsaw/color/ColorPanel.java    |  368 ++--
 .../org/apache/log4j/chainsaw/color/Colorizer.java |    3 +-
 .../apache/log4j/chainsaw/color/RuleColorizer.java |   69 +-
 .../chainsaw/components/about/ChainsawAbout.java   |   31 +-
 .../chainsaw/components/elements/SmallButton.java  |   27 +-
 .../components/elements/SmallToggleButton.java     |   17 +-
 .../components/elements/TabIconHandler.java        |   80 +-
 .../components/elements/sorttable/JSortTable.java  |   44 +-
 .../elements/sorttable/SortArrowIcon.java          |    6 +-
 .../elements/sorttable/SortHeaderRenderer.java     |    8 +-
 .../loggernamepanel/LoggerNameListener.java        |    3 +-
 .../loggernamepanel/LoggerNameModel.java           |    5 +-
 .../loggernamepanel/LoggerNameModelSupport.java    |    7 +-
 .../loggernamepanel/LoggerNameTreePanel.java       |  380 ++--
 .../components/logpanel/AutoFilterComboBox.java    |   48 +-
 .../logpanel/ColumnNameKeywordMapper.java          |   19 +-
 .../components/logpanel/ElementFactory.java        |   41 +-
 .../chainsaw/components/logpanel/LogPanel.java     | 2279 ++++++++++----------
 .../logpanel/LogPanelLoggerTreeModel.java          |   32 +-
 .../logpanel/LogPanelPreferenceModel.java          |   39 +-
 .../logpanel/LogPanelPreferencePanel.java          |  502 +++--
 .../chainsaw/components/splash/ChainsawSplash.java |   22 +-
 .../chainsaw/components/splash/SplashViewer.java   |    5 +-
 .../components/tabbedpane/ChainsawTabbedPane.java  |   26 +-
 .../components/tabbedpane/SavableTabSetting.java   |    5 +-
 .../chainsaw/components/tutorial/Generator.java    |   27 +-
 .../components/tutorial/GeneratorBeanInfo.java     |    5 +-
 .../components/tutorial/RandomWordGenerator.java   |    5 +-
 .../components/tutorial/TutorialFrame.java         |  197 +-
 .../chainsaw/components/welcome/WelcomePanel.java  |   98 +-
 .../apache/log4j/chainsaw/dnd/FileDnDTarget.java   |   26 +-
 .../org/apache/log4j/chainsaw/file/FileMenu.java   |   95 +-
 .../apache/log4j/chainsaw/file/FileSaveAction.java |   45 +-
 .../chainsaw/filter/EventTypeEntryContainer.java   |    7 +-
 .../apache/log4j/chainsaw/filter/FilterModel.java  |    8 +-
 .../apache/log4j/chainsaw/help/HelpLocator.java    |    9 +-
 .../apache/log4j/chainsaw/help/HelpManager.java    |   20 +-
 .../log4j/chainsaw/helper/OkCancelPanel.java       |    8 +-
 .../apache/log4j/chainsaw/helper/SwingHelper.java  |   13 +-
 .../chainsaw/helper/TableCellEditorFactory.java    |   17 +-
 .../apache/log4j/chainsaw/icons/ChainsawIcons.java |  140 +-
 .../log4j/chainsaw/icons/LevelIconFactory.java     |   29 +-
 .../log4j/chainsaw/icons/LineIconFactory.java      |   58 +-
 .../chainsaw/layout/DefaultLayoutFactory.java      |   25 +-
 .../log4j/chainsaw/layout/EventDetailLayout.java   |   50 +-
 .../log4j/chainsaw/layout/LayoutEditorPane.java    |  168 +-
 .../chainsaw/logevents/ChainsawLoggingEvent.java   |   19 +-
 .../logevents/ChainsawLoggingEventBuilder.java     |   43 +-
 .../org/apache/log4j/chainsaw/logevents/Level.java |    2 +-
 .../log4j/chainsaw/logevents/LocationInfo.java     |   16 +-
 .../org/apache/log4j/chainsaw/logui/LogUI.java     |  148 +-
 .../log4j/chainsaw/logui/LogUIPanelBuilder.java    |   94 +-
 .../chainsaw/logui/LogUiKeyStrokeCreator.java      |   90 +-
 .../log4j/chainsaw/logui/LogUiReceiversPanel.java  |   44 +-
 .../apache/log4j/chainsaw/osx/OSXIntegration.java  |   25 +-
 .../chainsaw/prefs/AbstractSettingsEvent.java      |    4 +-
 .../log4j/chainsaw/prefs/LoadSettingsEvent.java    |    9 +-
 .../apache/log4j/chainsaw/prefs/MRUFileList.java   |   14 +-
 .../log4j/chainsaw/prefs/ProfileManager.java       |   15 +-
 .../apache/log4j/chainsaw/prefs/Profileable.java   |    4 +-
 .../log4j/chainsaw/prefs/SaveSettingsEvent.java    |    4 +-
 .../apache/log4j/chainsaw/prefs/SettingsEvent.java |    2 +-
 .../log4j/chainsaw/prefs/SettingsListener.java     |    2 +-
 .../log4j/chainsaw/prefs/SettingsManager.java      |   70 +-
 .../log4j/chainsaw/receiver/ChainsawReceiver.java  |   50 +-
 .../chainsaw/receiver/ChainsawReceiverFactory.java |   16 +-
 .../receiver/ChainsawReceiverSkeleton.java         |   77 +-
 .../chainsaw/receivers/NewReceiverDialogPanel.java |   13 +-
 .../receivers/PluginPropertyEditorPanel.java       |  120 +-
 .../receivers/ReceiverTreeCellRenderer.java        |   37 +-
 .../log4j/chainsaw/receivers/ReceiversPanel.java   |  581 +++--
 .../chainsaw/receivers/ReceiversTreeModel.java     |   92 +-
 .../log4j/chainsaw/receivers/VisualReceiver.java   |   13 +-
 .../chainsaw/vfs/VFSLogFilePatternReceiver.java    |  217 +-
 .../vfs/VFSLogFilePatternReceiverBeanInfo.java     |   15 +-
 .../vfs/VFSLogFilePatternReceiverFactory.java      |  176 +-
 .../chainsaw/zeroconf/ZeroConfDeviceModel.java     |   21 +-
 .../log4j/chainsaw/zeroconf/ZeroConfPlugin.java    |  295 +--
 .../chainsaw/zeroconf/ZeroConfPreferenceModel.java |   10 +-
 .../java/org/apache/log4j/helpers/Constants.java   |    8 +-
 .../org/apache/log4j/helpers/MessageFormatter.java |   21 +-
 .../java/org/apache/log4j/net/AddressBased.java    |    4 +-
 .../java/org/apache/log4j/net/ECSLogEvent.java     |   12 +-
 .../java/org/apache/log4j/net/JsonReceiver.java    |   42 +-
 .../org/apache/log4j/net/JsonReceiverFactory.java  |   24 +-
 .../java/org/apache/log4j/net/JsonSocketNode.java  |  158 --
 .../org/apache/log4j/net/MulticastReceiver.java    |   27 +-
 .../log4j/net/MulticastReceiverBeanInfo.java       |    5 +-
 .../apache/log4j/net/MulticastReceiverFactory.java |   22 +-
 .../java/org/apache/log4j/net/NetworkBased.java    |    3 +-
 src/main/java/org/apache/log4j/net/PortBased.java  |    4 +-
 .../apache/log4j/net/SocketNodeEventListener.java  |    3 +-
 .../java/org/apache/log4j/net/UDPReceiver.java     |   19 +-
 .../org/apache/log4j/net/UDPReceiverFactory.java   |   19 +-
 .../org/apache/log4j/net/XMLReceiverFactory.java   |   23 +-
 .../java/org/apache/log4j/net/XMLSocketNode.java   |  201 --
 .../org/apache/log4j/net/XMLSocketReceiver.java    |   40 +-
 .../java/org/apache/log4j/rule/AbstractRule.java   |   44 +-
 src/main/java/org/apache/log4j/rule/AndRule.java   |   68 +-
 src/main/java/org/apache/log4j/rule/ColorRule.java |   86 +-
 .../java/org/apache/log4j/rule/EqualsRule.java     |   90 +-
 .../java/org/apache/log4j/rule/ExistsRule.java     |   72 +-
 .../java/org/apache/log4j/rule/ExpressionRule.java |  168 +-
 .../java/org/apache/log4j/rule/InFixToPostFix.java |  545 +++--
 .../java/org/apache/log4j/rule/InequalityRule.java |  146 +-
 .../org/apache/log4j/rule/LevelEqualsRule.java     |   11 +-
 .../org/apache/log4j/rule/LevelInequalityRule.java |   36 +-
 src/main/java/org/apache/log4j/rule/LikeRule.java  |  162 +-
 .../java/org/apache/log4j/rule/NotEqualsRule.java  |   92 +-
 .../org/apache/log4j/rule/NotLevelEqualsRule.java  |   13 +-
 src/main/java/org/apache/log4j/rule/NotRule.java   |   82 +-
 src/main/java/org/apache/log4j/rule/OrRule.java    |  127 +-
 .../apache/log4j/rule/PartialTextMatchRule.java    |   81 +-
 src/main/java/org/apache/log4j/rule/Rule.java      |   56 +-
 .../java/org/apache/log4j/rule/RuleFactory.java    |  153 +-
 .../org/apache/log4j/rule/TimestampEqualsRule.java |   64 +-
 .../apache/log4j/rule/TimestampInequalityRule.java |   91 +-
 src/main/java/org/apache/log4j/scheduler/Job.java  |    4 +-
 .../java/org/apache/log4j/scheduler/Scheduler.java |   30 +-
 src/main/java/org/apache/log4j/spi/Decoder.java    |    5 +-
 src/main/java/org/apache/log4j/spi/ErrorItem.java  |   12 +-
 .../log4j/spi/LoggingEventFieldResolver.java       |  239 +-
 src/main/java/org/apache/log4j/spi/NOPULogger.java |   22 +-
 .../java/org/apache/log4j/spi/SimpleULogger.java   |   37 +-
 .../apache/log4j/varia/LogFilePatternReceiver.java |  160 +-
 .../varia/LogFilePatternReceiverBeanInfo.java      |   12 +-
 .../log4j/varia/LogFilePatternReceiverFactory.java |  176 +-
 .../org/apache/log4j/xml/Log4jEntityResolver.java  |   46 +-
 .../org/apache/log4j/xml/LogFileXMLReceiver.java   |   17 +-
 .../log4j/xml/UtilLoggingEntityResolver.java       |   11 +-
 .../apache/log4j/xml/UtilLoggingXMLDecoder.java    |   85 +-
 src/main/java/org/apache/log4j/xml/XMLDecoder.java |  115 +-
 .../apache/log4j/chainsaw/prefs/default.properties |    5 +-
 .../log4j/chainsaw/prefs/logpanel.properties       |    4 +-
 src/site/site.xml                                  |   41 +-
 .../java/org/apache/log4j/xml/XMLDecoderTest.java  |   15 +-
 .../apache/log4j/db/append-with-drivermanager1.xml |   45 +-
 .../apache/log4j/db/read-with-drivermanager1.xml   |   48 +-
 .../resources/org/apache/log4j/rewrite/map.xml     |   32 +-
 .../org/apache/log4j/rewrite/property.xml          |   32 +-
 .../org/apache/log4j/rewrite/reflection.xml        |   32 +-
 .../resources/org/apache/log4j/xml/xmlLayout.1.xml |   32 +-
 .../org/apache/log4j/xml/xsltLayout.1.xml          |   31 +-
 186 files changed, 6831 insertions(+), 7911 deletions(-)

diff --git a/pom.xml b/.flattened-pom.xml
similarity index 78%
copy from pom.xml
copy to .flattened-pom.xml
index 2f366eb..f9226c9 100644
--- a/pom.xml
+++ b/.flattened-pom.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   ~ Licensed to the Apache Software Foundation (ASF) under one or more
   ~ contributor license agreements.  See the NOTICE file distributed with
   ~ this work for additional information regarding copyright ownership.
@@ -17,60 +15,29 @@
   ~ See the License for the specific language governing permissions and
   ~ limitations under the License.
   -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+  <modelVersion>4.0.0</modelVersion>
   <parent>
     <groupId>org.apache.logging</groupId>
     <artifactId>logging-parent</artifactId>
     <version>10.4.0</version>
-    <relativePath/>
+    <relativePath></relativePath>
   </parent>
-  <modelVersion>4.0.0</modelVersion>
   <groupId>log4j</groupId>
   <artifactId>apache-chainsaw</artifactId>
-  <name>Apache Chainsaw</name>
   <version>2.2.0-SNAPSHOT</version>
+  <name>Apache Chainsaw</name>
   <description>Graphical Viewer for Logging events from a local or remote log4j event system.</description>
   <url>https://logging.apache.org/chainsaw</url>
   <inceptionYear>2002</inceptionYear>
-  <packaging>jar</packaging>
-
-  <issueManagement>
-    <system>GitHub</system>
-    <url>https://github.com/apache/logging-chainsaw/issues</url>
-  </issueManagement>
-
-  <mailingLists>
-    <mailingList>
-      <name>log4j-user</name>
-      <subscribe>log4j-user-subscribe@logging.apache.org</subscribe>
-      <unsubscribe>log4j-user-unsubscribe@logging.apache.org</unsubscribe>
-      <post>log4j-user@logging.apache.org</post>
-      <archive>https://lists.apache.org/list.html?log4j-user@logging.apache.org</archive>
-      <otherArchives>
-        <otherArchive>http://mail-archives.apache.org/mod_mbox/logging-log4j-user/</otherArchive>
-        <otherArchive>http://marc.info/?l=log4j-user</otherArchive>
-        <otherArchive>http://dir.gmane.org/gmane.comp.jakarta.log4j.user</otherArchive>
-      </otherArchives>
-    </mailingList>
-    <mailingList>
-      <name>dev : development of the logging projects including chainsaw</name>
-      <subscribe>dev-subscribe@logging.apache.org</subscribe>
-      <unsubscribe>dev-unsubscribe@logging.apache.org</unsubscribe>
-      <post>dev@logging.apache.org</post>
-      <archive>https://lists.apache.org/list.html?dev@logging.apache.org</archive>
-      <otherArchives>
-        <otherArchive>http://mail-archives.apache.org/mod_mbox/logging-dev/</otherArchive>
-      </otherArchives>
-    </mailingList>
-    <mailingList>
-      <name>logging commits : all svn/git commits of the logging projects including chainsaw</name>
-      <subscribe>commits-subscribe@logging.apache.org</subscribe>
-      <unsubscribe>commits-unsubscribe@logging.apache.org</unsubscribe>
-      <post>Read-Only List</post>
-      <archive>http://mail-archives.apache.org/mod_mbox/logging-commits/</archive>
-    </mailingList>
-  </mailingLists>
-
+  <licenses>
+    <license>
+      <name>Apache License, Version 2.0</name>
+      <url>https://www.apache.org/licenses/LICENSE-2.0.txt</url>
+      <distribution>repo</distribution>
+    </license>
+  </licenses>
   <developers>
     <developer>
       <id>mwomack</id>
@@ -108,50 +75,65 @@
       <name>Isuru Suriarachchi</name>
     </contributor>
   </contributors>
-
-  <licenses>
-    <license>
-      <name>Apache License, Version 2.0</name>
-      <url>https://www.apache.org/licenses/LICENSE-2.0.txt</url>
-      <distribution>repo</distribution>
-    </license>
-  </licenses>
-
+  <mailingLists>
+    <mailingList>
+      <name>log4j-user</name>
+      <subscribe>log4j-user-subscribe@logging.apache.org</subscribe>
+      <unsubscribe>log4j-user-unsubscribe@logging.apache.org</unsubscribe>
+      <post>log4j-user@logging.apache.org</post>
+      <archive>https://lists.apache.org/list.html?log4j-user@logging.apache.org</archive>
+      <otherArchives>
+        <otherArchive>http://mail-archives.apache.org/mod_mbox/logging-log4j-user/</otherArchive>
+        <otherArchive>http://marc.info/?l=log4j-user</otherArchive>
+        <otherArchive>http://dir.gmane.org/gmane.comp.jakarta.log4j.user</otherArchive>
+      </otherArchives>
+    </mailingList>
+    <mailingList>
+      <name>dev : development of the logging projects including chainsaw</name>
+      <subscribe>dev-subscribe@logging.apache.org</subscribe>
+      <unsubscribe>dev-unsubscribe@logging.apache.org</unsubscribe>
+      <post>dev@logging.apache.org</post>
+      <archive>https://lists.apache.org/list.html?dev@logging.apache.org</archive>
+      <otherArchives>
+        <otherArchive>http://mail-archives.apache.org/mod_mbox/logging-dev/</otherArchive>
+      </otherArchives>
+    </mailingList>
+    <mailingList>
+      <name>logging commits : all svn/git commits of the logging projects including chainsaw</name>
+      <subscribe>commits-subscribe@logging.apache.org</subscribe>
+      <unsubscribe>commits-unsubscribe@logging.apache.org</unsubscribe>
+      <post>Read-Only List</post>
+      <archive>http://mail-archives.apache.org/mod_mbox/logging-commits/</archive>
+    </mailingList>
+  </mailingLists>
   <scm>
     <connection>scm:git:https://github.com/apache/logging-chainsaw.git</connection>
     <developerConnection>scm:git:https://github.com/apache/logging-chainsaw.git</developerConnection>
     <url>https://github.com/apache/logging-chainsaw</url>
   </scm>
-
+  <issueManagement>
+    <system>GitHub</system>
+    <url>https://github.com/apache/logging-chainsaw/issues</url>
+  </issueManagement>
+  <distributionManagement>
+    <site>
+      <id>www.example.com</id>
+      <url>scp://www.example.com/www/docs/project/</url>
+    </site>
+    <downloadUrl>https://logging.apache.org/log4j/chainsaw/download.html</downloadUrl>
+  </distributionManagement>
   <properties>
+    <maven.compiler.release>11</maven.compiler.release>
     <chainsaw.mainclass>org.apache.log4j.chainsaw.ChainsawStarter</chainsaw.mainclass>
-    <maven.compiler.source>11</maven.compiler.source>
     <maven.compiler.target>11</maven.compiler.target>
-    <maven.compiler.release>11</maven.compiler.release>
+    <ChainsawReleaseManager>Robert Middleton</ChainsawReleaseManager>
+    <maven.compiler.source>11</maven.compiler.source>
     <log4j.version>2.22.0</log4j.version>
     <dependency.locations.enabled>false</dependency.locations.enabled>
     <ChainsawReleaseVersion>2.1.0</ChainsawReleaseVersion>
-    <ChainsawReleaseManager>Robert Middleton</ChainsawReleaseManager>
     <ChainsawReleaseKey>B095DD52</ChainsawReleaseKey>
   </properties>
-
-    <build>
-        <plugins>
-            <plugin>
-            <groupId>org.apache.maven.plugins</groupId>
-            <artifactId>maven-compiler-plugin</artifactId>
-            <version>3.12.0</version>
-            <configuration>
-              <source>${maven.compiler.source}</source>
-              <target>${maven.compiler.target}</target>
-            </configuration>
-            </plugin>
-            
-        </plugins>
-    </build>
-    
   <dependencies>
-
     <dependency>
       <groupId>org.apache.logging.log4j</groupId>
       <artifactId>log4j-api</artifactId>
@@ -167,7 +149,6 @@
       <artifactId>jmdns</artifactId>
       <version>3.5.8</version>
     </dependency>
-    <!-- TODO upgrade to new versions once they come out -->
     <dependency>
       <groupId>org.apache.commons</groupId>
       <artifactId>commons-vfs2</artifactId>
@@ -183,7 +164,6 @@
       <groupId>org.apache.openejb</groupId>
       <artifactId>javaee-api</artifactId>
       <version>5.0-2</version>
-      <type>jar</type>
       <scope>provided</scope>
     </dependency>
     <dependency>
@@ -195,8 +175,8 @@
       <groupId>org.apache.geronimo.specs</groupId>
       <artifactId>geronimo-jms_1.1_spec</artifactId>
       <version>1.0</version>
-      <optional>true</optional>
       <scope>provided</scope>
+      <optional>true</optional>
     </dependency>
     <dependency>
       <groupId>com.owlike</groupId>
@@ -208,29 +188,37 @@
       <artifactId>commons-configuration2</artifactId>
       <version>2.9.0</version>
     </dependency>
-    <!-- TODO: Upgrade to next version when it comes out: CVE-2020-15250 -->
     <dependency>
       <groupId>commons-beanutils</groupId>
       <artifactId>commons-beanutils</artifactId>
       <version>1.9.4</version>
-     </dependency>
+    </dependency>
     <dependency>
       <groupId>com.github.spotbugs</groupId>
       <artifactId>spotbugs-annotations</artifactId>
       <scope>provided</scope>
     </dependency>
   </dependencies>
-
+  <build>
+    <plugins>
+      <plugin>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <version>3.12.0</version>
+        <configuration>
+          <source>${maven.compiler.source}</source>
+          <target>${maven.compiler.target}</target>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
   <reporting>
     <excludeDefaults>true</excludeDefaults>
     <plugins>
       <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-jxr-plugin</artifactId>
         <version>2.5</version>
       </plugin>
       <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-release-plugin</artifactId>
         <configuration>
           <goals>site-deploy</goals>
@@ -238,7 +226,6 @@
         </configuration>
       </plugin>
       <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-changes-plugin</artifactId>
         <version>2.12.1</version>
         <reportSets>
@@ -254,25 +241,22 @@
         <artifactId>maven-pmd-plugin</artifactId>
       </plugin>
       <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-javadoc-plugin</artifactId>
         <version>3.3.2</version>
         <configuration>
-          <bottom><![CDATA[<p align="center">Copyright &#169; {inceptionYear}-{currentYear} {organizationName}. All Rights Reserved.<br />
+          <bottom>&lt;p align="center">Copyright &amp;#169; {inceptionYear}-{currentYear} {organizationName}. All Rights Reserved.&lt;br />
           Apache Logging, Apache Log4j, Log4j, Apache Chainsaw, Chainsaw, Apache, the Apache feather logo, the Apache Logging project logo,
-          and the Apache Log4j logo are trademarks of The Apache Software Foundation.</p>]]></bottom>
+          and the Apache Log4j logo are trademarks of The Apache Software Foundation.&lt;/p></bottom>
           <encoding>UTF-8</encoding>
           <doclint>none</doclint>
         </configuration>
       </plugin>
       <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-project-info-reports-plugin</artifactId>
         <version>2.9</version>
         <reportSets>
           <reportSet>
             <reports>
-              <!--report>cim</report-->
               <report>scm</report>
               <report>project-team</report>
               <report>issue-tracking</report>
@@ -284,15 +268,6 @@
       </plugin>
     </plugins>
   </reporting>
-
-  <distributionManagement>
-    <downloadUrl>https://logging.apache.org/log4j/chainsaw/download.html</downloadUrl>
-    <site>
-      <id>www.example.com</id>
-      <url>scp://www.example.com/www/docs/project/</url>
-    </site>
-  </distributionManagement>
-
   <profiles>
     <profile>
       <id>mac</id>
@@ -303,85 +278,56 @@
       </activation>
       <build>
         <plugins>
-          <!--
           <plugin>
-            <groupId>de.perdian.maven.plugins</groupId>
-            <artifactId>macosappbundler-maven-plugin</artifactId>
-            <version>1.10.2</version>
+            <groupId>org.apache.rat</groupId>
+            <artifactId>apache-rat-plugin</artifactId>
             <configuration>
-              <plist>
-                <CFBundleIconFile>src/main/resources/logo.icns</CFBundleIconFile>
-                <CFBundleDisplayName>Chainsaw</CFBundleDisplayName>
-                <CFBundleDevelopmentRegion>English</CFBundleDevelopmentRegion>
-                <CFBundleURLTypes>
-                  <string>msa</string>
-                </CFBundleURLTypes>
-                <JVMMainClassName>${chainsaw.mainclass}</JVMMainClassName>
-                <JVMVersion>11+</JVMVersion>
-                <JVMOptions>
-                  <jvmOption>-Xms128m</jvmOption>
-                  <jvmOption>-Xmx512m</jvmOption>
-                </JVMOptions>
-              </plist>
-              <dmg>
-                <generate>true</generate>
-                <additionalResources>
-                  <additionalResource>
-                    <directory>src/bundle/macos/distribution</directory>
-                  </additionalResource>
-                </additionalResources>
-              </dmg>
+              <consoleOutput>true</consoleOutput>
+              <excludes>
+                <exclude>**/*.log</exclude>
+                <exclude>.java-version</exclude>
+                <exclude>.mvn/jvm.config</exclude>
+                <exclude>**/*.txt</exclude>
+                <exclude>src/changelog/**/*.xml</exclude>
+                <exclude>.github/ISSUE_TEMPLATE/*.md</exclude>
+                <exclude>.github/pull_request_template.md</exclude>
+              </excludes>
             </configuration>
-            <executions>
-              <execution>
-                <phase>package</phase>
-                <goals>
-                  <goal>bundle</goal>
-                </goals>
-              </execution>
-            </executions>
           </plugin>
-          -->
         </plugins>
       </build>
     </profile>
-
     <profile>
       <id>development</id>
       <repositories>
         <repository>
-          <id>apache.snapshots</id>
-          <name>Apache Snapshot Repository</name>
-          <url>https://repository.apache.org/snapshots</url>
           <releases>
             <enabled>false</enabled>
           </releases>
+          <id>apache.snapshots</id>
+          <name>Apache Snapshot Repository</name>
+          <url>https://repository.apache.org/snapshots</url>
         </repository>
       </repositories>
     </profile>
-    
     <profile>
-        <id>packaging</id>
-        <build>
+      <id>packaging</id>
+      <build>
         <plugins>
           <plugin>
             <groupId>org.apache.rat</groupId>
             <artifactId>apache-rat-plugin</artifactId>
           </plugin>
           <plugin>
-            <groupId>org.apache.maven.plugins</groupId>
             <artifactId>maven-project-info-reports-plugin</artifactId>
           </plugin>
           <plugin>
-            <groupId>org.apache.maven.plugins</groupId>
             <artifactId>maven-surefire-plugin</artifactId>
             <configuration>
               <workingDirectory>target</workingDirectory>
             </configuration>
           </plugin>
-          
           <plugin>
-            <groupId>org.apache.maven.plugins</groupId>
             <artifactId>maven-jar-plugin</artifactId>
             <version>3.2.2</version>
             <configuration>
@@ -403,7 +349,6 @@
               </archive>
             </configuration>
           </plugin>
-          
           <plugin>
             <groupId>org.codehaus.mojo</groupId>
             <artifactId>appassembler-maven-plugin</artifactId>
@@ -426,7 +371,6 @@
             </configuration>
           </plugin>
           <plugin>
-            <groupId>org.apache.maven.plugins</groupId>
             <artifactId>maven-assembly-plugin</artifactId>
             <executions>
               <execution>
@@ -440,8 +384,6 @@
                     <descriptor>src/assembly/bin.xml</descriptor>
                     <descriptor>src/assembly/standalone.xml</descriptor>
                   </descriptors>
-                  <!-- we append the assembly ID here,but note that the bin assembly does not have an id specified
-                      in its config, so it doesn't have a suffix -->
                   <appendAssemblyId>true</appendAssemblyId>
                 </configuration>
               </execution>
@@ -470,7 +412,6 @@
             </executions>
           </plugin>
           <plugin>
-            <groupId>org.apache.maven.plugins</groupId>
             <artifactId>maven-source-plugin</artifactId>
             <executions>
               <execution>
@@ -481,7 +422,6 @@
             </executions>
           </plugin>
           <plugin>
-            <groupId>org.apache.maven.plugins</groupId>
             <artifactId>maven-site-plugin</artifactId>
             <version>3.8.2</version>
             <dependencies>
@@ -492,17 +432,12 @@
               </dependency>
             </dependencies>
             <configuration>
-              <!-- only build English site even on other language OS -->
               <locales>en</locales>
-              <!-- Exclude the navigation file for Maven 1 sites
-                   and the changes file used by the changes-plugin,
-                   as they interfere with the site generation. -->
               <moduleExcludes>
                 <xdoc>navigation.xml,changes.xml</xdoc>
               </moduleExcludes>
               <asciidoc>
                 <attributes>
-                  <!-- copy any site properties wanted in asciidoc files -->
                   <ChainsawReleaseVersion>${ChainsawReleaseVersion}</ChainsawReleaseVersion>
                   <ChainsawReleaseManager>${ChainsawReleaseManager}</ChainsawReleaseManager>
                   <ChainsawReleaseKey>${ChainsawReleaseKey}</ChainsawReleaseKey>
@@ -511,8 +446,7 @@
             </configuration>
           </plugin>
         </plugins>
-        </build>
+      </build>
     </profile>
   </profiles>
 </project>
-
diff --git a/.github/workflows/chainsaw.yml b/.github/workflows/chainsaw.yml
index 293ffbd..5c673d9 100644
--- a/.github/workflows/chainsaw.yml
+++ b/.github/workflows/chainsaw.yml
@@ -1,7 +1,8 @@
+#
 # Licensed to the Apache Software Foundation (ASF) under one or more
 # contributor license agreements.  See the NOTICE file distributed with
 # this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
+# The ASF licenses this file to you under the Apache License, Version 2.0
 # (the "License"); you may not use this file except in compliance with
 # the License.  You may obtain a copy of the License at
 #
@@ -12,6 +13,7 @@
 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 # See the License for the specific language governing permissions and
 # limitations under the License.
+#
 name: chainsaw
 
 on: [push, pull_request]
@@ -69,4 +71,3 @@ jobs:
         with:
           name: chainsaw.dmg
           path: target/*.dmg
-
diff --git a/pom.xml b/pom.xml
index 2f366eb..14de62a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   ~ Licensed to the Apache Software Foundation (ASF) under one or more
   ~ contributor license agreements.  See the NOTICE file distributed with
   ~ this work for additional information regarding copyright ownership.
@@ -18,58 +16,29 @@
   ~ limitations under the License.
   -->
 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
   <parent>
     <groupId>org.apache.logging</groupId>
     <artifactId>logging-parent</artifactId>
     <version>10.4.0</version>
-    <relativePath/>
+    <relativePath />
   </parent>
-  <modelVersion>4.0.0</modelVersion>
   <groupId>log4j</groupId>
   <artifactId>apache-chainsaw</artifactId>
-  <name>Apache Chainsaw</name>
   <version>2.2.0-SNAPSHOT</version>
+  <packaging>jar</packaging>
+  <name>Apache Chainsaw</name>
   <description>Graphical Viewer for Logging events from a local or remote log4j event system.</description>
   <url>https://logging.apache.org/chainsaw</url>
   <inceptionYear>2002</inceptionYear>
-  <packaging>jar</packaging>
 
-  <issueManagement>
-    <system>GitHub</system>
-    <url>https://github.com/apache/logging-chainsaw/issues</url>
-  </issueManagement>
-
-  <mailingLists>
-    <mailingList>
-      <name>log4j-user</name>
-      <subscribe>log4j-user-subscribe@logging.apache.org</subscribe>
-      <unsubscribe>log4j-user-unsubscribe@logging.apache.org</unsubscribe>
-      <post>log4j-user@logging.apache.org</post>
-      <archive>https://lists.apache.org/list.html?log4j-user@logging.apache.org</archive>
-      <otherArchives>
-        <otherArchive>http://mail-archives.apache.org/mod_mbox/logging-log4j-user/</otherArchive>
-        <otherArchive>http://marc.info/?l=log4j-user</otherArchive>
-        <otherArchive>http://dir.gmane.org/gmane.comp.jakarta.log4j.user</otherArchive>
-      </otherArchives>
-    </mailingList>
-    <mailingList>
-      <name>dev : development of the logging projects including chainsaw</name>
-      <subscribe>dev-subscribe@logging.apache.org</subscribe>
-      <unsubscribe>dev-unsubscribe@logging.apache.org</unsubscribe>
-      <post>dev@logging.apache.org</post>
-      <archive>https://lists.apache.org/list.html?dev@logging.apache.org</archive>
-      <otherArchives>
-        <otherArchive>http://mail-archives.apache.org/mod_mbox/logging-dev/</otherArchive>
-      </otherArchives>
-    </mailingList>
-    <mailingList>
-      <name>logging commits : all svn/git commits of the logging projects including chainsaw</name>
-      <subscribe>commits-subscribe@logging.apache.org</subscribe>
-      <unsubscribe>commits-unsubscribe@logging.apache.org</unsubscribe>
-      <post>Read-Only List</post>
-      <archive>http://mail-archives.apache.org/mod_mbox/logging-commits/</archive>
-    </mailingList>
-  </mailingLists>
+  <licenses>
+    <license>
+      <name>Apache License, Version 2.0</name>
+      <url>https://www.apache.org/licenses/LICENSE-2.0.txt</url>
+      <distribution>repo</distribution>
+    </license>
+  </licenses>
 
   <developers>
     <developer>
@@ -109,13 +78,37 @@
     </contributor>
   </contributors>
 
-  <licenses>
-    <license>
-      <name>Apache License, Version 2.0</name>
-      <url>https://www.apache.org/licenses/LICENSE-2.0.txt</url>
-      <distribution>repo</distribution>
-    </license>
-  </licenses>
+  <mailingLists>
+    <mailingList>
+      <name>log4j-user</name>
+      <subscribe>log4j-user-subscribe@logging.apache.org</subscribe>
+      <unsubscribe>log4j-user-unsubscribe@logging.apache.org</unsubscribe>
+      <post>log4j-user@logging.apache.org</post>
+      <archive>https://lists.apache.org/list.html?log4j-user@logging.apache.org</archive>
+      <otherArchives>
+        <otherArchive>http://mail-archives.apache.org/mod_mbox/logging-log4j-user/</otherArchive>
+        <otherArchive>http://marc.info/?l=log4j-user</otherArchive>
+        <otherArchive>http://dir.gmane.org/gmane.comp.jakarta.log4j.user</otherArchive>
+      </otherArchives>
+    </mailingList>
+    <mailingList>
+      <name>dev : development of the logging projects including chainsaw</name>
+      <subscribe>dev-subscribe@logging.apache.org</subscribe>
+      <unsubscribe>dev-unsubscribe@logging.apache.org</unsubscribe>
+      <post>dev@logging.apache.org</post>
+      <archive>https://lists.apache.org/list.html?dev@logging.apache.org</archive>
+      <otherArchives>
+        <otherArchive>http://mail-archives.apache.org/mod_mbox/logging-dev/</otherArchive>
+      </otherArchives>
+    </mailingList>
+    <mailingList>
+      <name>logging commits : all svn/git commits of the logging projects including chainsaw</name>
+      <subscribe>commits-subscribe@logging.apache.org</subscribe>
+      <unsubscribe>commits-unsubscribe@logging.apache.org</unsubscribe>
+      <post>Read-Only List</post>
+      <archive>http://mail-archives.apache.org/mod_mbox/logging-commits/</archive>
+    </mailingList>
+  </mailingLists>
 
   <scm>
     <connection>scm:git:https://github.com/apache/logging-chainsaw.git</connection>
@@ -123,6 +116,19 @@
     <url>https://github.com/apache/logging-chainsaw</url>
   </scm>
 
+  <issueManagement>
+    <system>GitHub</system>
+    <url>https://github.com/apache/logging-chainsaw/issues</url>
+  </issueManagement>
+
+  <distributionManagement>
+    <site>
+      <id>www.example.com</id>
+      <url>scp://www.example.com/www/docs/project/</url>
+    </site>
+    <downloadUrl>https://logging.apache.org/log4j/chainsaw/download.html</downloadUrl>
+  </distributionManagement>
+
   <properties>
     <chainsaw.mainclass>org.apache.log4j.chainsaw.ChainsawStarter</chainsaw.mainclass>
     <maven.compiler.source>11</maven.compiler.source>
@@ -135,21 +141,6 @@
     <ChainsawReleaseKey>B095DD52</ChainsawReleaseKey>
   </properties>
 
-    <build>
-        <plugins>
-            <plugin>
-            <groupId>org.apache.maven.plugins</groupId>
-            <artifactId>maven-compiler-plugin</artifactId>
-            <version>3.12.0</version>
-            <configuration>
-              <source>${maven.compiler.source}</source>
-              <target>${maven.compiler.target}</target>
-            </configuration>
-            </plugin>
-            
-        </plugins>
-    </build>
-    
   <dependencies>
 
     <dependency>
@@ -195,8 +186,8 @@
       <groupId>org.apache.geronimo.specs</groupId>
       <artifactId>geronimo-jms_1.1_spec</artifactId>
       <version>1.0</version>
-      <optional>true</optional>
       <scope>provided</scope>
+      <optional>true</optional>
     </dependency>
     <dependency>
       <groupId>com.owlike</groupId>
@@ -213,7 +204,7 @@
       <groupId>commons-beanutils</groupId>
       <artifactId>commons-beanutils</artifactId>
       <version>1.9.4</version>
-     </dependency>
+    </dependency>
     <dependency>
       <groupId>com.github.spotbugs</groupId>
       <artifactId>spotbugs-annotations</artifactId>
@@ -221,6 +212,21 @@
     </dependency>
   </dependencies>
 
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <version>3.12.0</version>
+        <configuration>
+          <source>${maven.compiler.source}</source>
+          <target>${maven.compiler.target}</target>
+        </configuration>
+      </plugin>
+
+    </plugins>
+  </build>
+
   <reporting>
     <excludeDefaults>true</excludeDefaults>
     <plugins>
@@ -285,14 +291,6 @@
     </plugins>
   </reporting>
 
-  <distributionManagement>
-    <downloadUrl>https://logging.apache.org/log4j/chainsaw/download.html</downloadUrl>
-    <site>
-      <id>www.example.com</id>
-      <url>scp://www.example.com/www/docs/project/</url>
-    </site>
-  </distributionManagement>
-
   <profiles>
     <profile>
       <id>mac</id>
@@ -342,6 +340,26 @@
             </executions>
           </plugin>
           -->
+          <plugin>
+            <groupId>org.apache.rat</groupId>
+            <artifactId>apache-rat-plugin</artifactId>
+            <configuration>
+              <consoleOutput>true</consoleOutput>
+              <excludes>
+                <!-- usually testing log files -->
+                <exclude>**/*.log</exclude>
+
+                <!-- should come by parent, but parent does not allow override so far (PR in progress -->
+                <exclude>.java-version</exclude>
+                <exclude>.mvn/jvm.config</exclude>
+                <exclude>**/*.txt</exclude>
+                <exclude>src/changelog/**/*.xml</exclude>
+                <exclude>.github/ISSUE_TEMPLATE/*.md</exclude>
+                <exclude>.github/pull_request_template.md</exclude>
+
+              </excludes>
+            </configuration>
+          </plugin>
         </plugins>
       </build>
     </profile>
@@ -350,19 +368,19 @@
       <id>development</id>
       <repositories>
         <repository>
-          <id>apache.snapshots</id>
-          <name>Apache Snapshot Repository</name>
-          <url>https://repository.apache.org/snapshots</url>
           <releases>
             <enabled>false</enabled>
           </releases>
+          <id>apache.snapshots</id>
+          <name>Apache Snapshot Repository</name>
+          <url>https://repository.apache.org/snapshots</url>
         </repository>
       </repositories>
     </profile>
-    
+
     <profile>
-        <id>packaging</id>
-        <build>
+      <id>packaging</id>
+      <build>
         <plugins>
           <plugin>
             <groupId>org.apache.rat</groupId>
@@ -379,7 +397,7 @@
               <workingDirectory>target</workingDirectory>
             </configuration>
           </plugin>
-          
+
           <plugin>
             <groupId>org.apache.maven.plugins</groupId>
             <artifactId>maven-jar-plugin</artifactId>
@@ -403,18 +421,10 @@
               </archive>
             </configuration>
           </plugin>
-          
+
           <plugin>
             <groupId>org.codehaus.mojo</groupId>
             <artifactId>appassembler-maven-plugin</artifactId>
-            <executions>
-              <execution>
-                <phase>package</phase>
-                <goals>
-                  <goal>assemble</goal>
-                </goals>
-              </execution>
-            </executions>
             <configuration>
               <showConsoleWindow>false</showConsoleWindow>
               <programs>
@@ -424,6 +434,14 @@
                 </program>
               </programs>
             </configuration>
+            <executions>
+              <execution>
+                <goals>
+                  <goal>assemble</goal>
+                </goals>
+                <phase>package</phase>
+              </execution>
+            </executions>
           </plugin>
           <plugin>
             <groupId>org.apache.maven.plugins</groupId>
@@ -431,10 +449,10 @@
             <executions>
               <execution>
                 <id>make-assembly</id>
-                <phase>package</phase>
                 <goals>
                   <goal>single</goal>
                 </goals>
+                <phase>package</phase>
                 <configuration>
                   <descriptors>
                     <descriptor>src/assembly/bin.xml</descriptor>
@@ -453,10 +471,10 @@
             <executions>
               <execution>
                 <id>attach-artifacts</id>
-                <phase>package</phase>
                 <goals>
                   <goal>attach-artifact</goal>
                 </goals>
+                <phase>package</phase>
                 <configuration>
                   <artifacts>
                     <artifact>
@@ -484,13 +502,6 @@
             <groupId>org.apache.maven.plugins</groupId>
             <artifactId>maven-site-plugin</artifactId>
             <version>3.8.2</version>
-            <dependencies>
-              <dependency>
-                <groupId>org.asciidoctor</groupId>
-                <artifactId>asciidoctor-maven-plugin</artifactId>
-                <version>1.5.6</version>
-              </dependency>
-            </dependencies>
             <configuration>
               <!-- only build English site even on other language OS -->
               <locales>en</locales>
@@ -509,10 +520,16 @@
                 </attributes>
               </asciidoc>
             </configuration>
+            <dependencies>
+              <dependency>
+                <groupId>org.asciidoctor</groupId>
+                <artifactId>asciidoctor-maven-plugin</artifactId>
+                <version>1.5.6</version>
+              </dependency>
+            </dependencies>
           </plugin>
         </plugins>
-        </build>
+      </build>
     </profile>
   </profiles>
 </project>
-
diff --git a/src/assembly/bin.xml b/src/assembly/bin.xml
index a108121..bf5b5cd 100644
--- a/src/assembly/bin.xml
+++ b/src/assembly/bin.xml
@@ -1,24 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements.  See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
--->
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to you under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
 <assembly>
 <!-- We deliberately don't specify an ID here, because during the assembly process we don't want the
 		bin assembly to have any suffix on its name. Other assemblies need their Id suffixed, but this one
-		doesn't 
+		doesn't
 		<id>bin</id> -->
 	<id>bin</id>
     <formats>
@@ -47,5 +47,5 @@
 			</includes>
 		</fileSet>
 	</fileSets>
-	
+
 </assembly>
diff --git a/src/assembly/standalone.xml b/src/assembly/standalone.xml
index 667fb0e..7528231 100644
--- a/src/assembly/standalone.xml
+++ b/src/assembly/standalone.xml
@@ -1,21 +1,20 @@
-<?xml version="1.0"?>
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements.  See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
--->
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to you under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
 <assembly>
   <id>standalone</id>
   <formats>
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 7e1597d..e818a3a 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -1,20 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements.  See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
--->
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to you under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
 <document>
   <properties>
     <title>Apache Chainsaw&#x2122;</title>
diff --git a/src/main/java/org/apache/log4j/ULogger.java b/src/main/java/org/apache/log4j/ULogger.java
index de4c813..bc540bf 100644
--- a/src/main/java/org/apache/log4j/ULogger.java
+++ b/src/main/java/org/apache/log4j/ULogger.java
@@ -2,7 +2,7 @@
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
+ * The ASF licenses this file to you under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
  *
@@ -14,10 +14,8 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package org.apache.log4j;
 
-
 /**
  * A proxy for org.slf4j.ULogger.  In slf4j implementing builds, this
  * interface will extend org.slf4j.ULogger and add no additional methods.
@@ -27,7 +25,6 @@ package org.apache.log4j;
  */
 public interface ULogger {
 
-
     /**
      * Is the logger instance enabled for the DEBUG level?
      *
@@ -42,7 +39,6 @@ public interface ULogger {
      */
     void debug(Object msg);
 
-
     /**
      * Log a parameterized message object at the DEBUG level.
      * <p>
@@ -77,7 +73,6 @@ public interface ULogger {
      */
     void debug(Object msg, Throwable t);
 
-
     /**
      * Is the logger instance enabled for the INFO level?
      *
@@ -126,7 +121,6 @@ public interface ULogger {
      */
     void info(Object msg, Throwable t);
 
-
     /**
      * Is the logger instance enabled for the WARN level?
      *
@@ -175,7 +169,6 @@ public interface ULogger {
      */
     void warn(Object msg, Throwable t);
 
-
     /**
      * Is the logger instance enabled for the ERROR level?
      *
@@ -223,5 +216,4 @@ public interface ULogger {
      * @param t   the exception to log, including its stack trace.
      */
     void error(Object msg, Throwable t);
-
 }
diff --git a/src/main/java/org/apache/log4j/chainsaw/AbstractPreferencePanel.java b/src/main/java/org/apache/log4j/chainsaw/AbstractPreferencePanel.java
index 63bb0b9..67c6c92 100644
--- a/src/main/java/org/apache/log4j/chainsaw/AbstractPreferencePanel.java
+++ b/src/main/java/org/apache/log4j/chainsaw/AbstractPreferencePanel.java
@@ -2,7 +2,7 @@
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
+ * The ASF licenses this file to you under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
  *
@@ -14,18 +14,16 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package org.apache.log4j.chainsaw;
 
-import org.apache.log4j.chainsaw.helper.SwingHelper;
-import org.apache.log4j.chainsaw.icons.ChainsawIcons;
-
-import javax.swing.*;
-import javax.swing.tree.*;
 import java.awt.*;
 import java.awt.event.ActionListener;
 import java.util.Enumeration;
 import java.util.List;
+import javax.swing.*;
+import javax.swing.tree.*;
+import org.apache.log4j.chainsaw.helper.SwingHelper;
+import org.apache.log4j.chainsaw.icons.ChainsawIcons;
 
 /**
  * Some basic plumbing for Preference related dialogs.
@@ -97,24 +95,19 @@ public abstract class AbstractPreferencePanel extends JPanel {
 
         add(buttonBox, BorderLayout.SOUTH);
 
-        DefaultTreeSelectionModel treeSelectionModel =
-            new DefaultTreeSelectionModel();
-        treeSelectionModel.setSelectionMode(
-            TreeSelectionModel.SINGLE_TREE_SELECTION);
+        DefaultTreeSelectionModel treeSelectionModel = new DefaultTreeSelectionModel();
+        treeSelectionModel.setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
         prefTree.setSelectionModel(treeSelectionModel);
-        prefTree.addTreeSelectionListener(
-            e -> {
-                TreePath path = e.getNewLeadSelectionPath();
-                DefaultMutableTreeNode node =
-                    (DefaultMutableTreeNode) path.getLastPathComponent();
-                setDisplayedPrefPanel((JComponent) node.getUserObject());
-            });
+        prefTree.addTreeSelectionListener(e -> {
+            TreePath path = e.getNewLeadSelectionPath();
+            DefaultMutableTreeNode node = (DefaultMutableTreeNode) path.getLastPathComponent();
+            setDisplayedPrefPanel((JComponent) node.getUserObject());
+        });
 
         // ensure the first pref panel is selected and displayed
         DefaultMutableTreeNode root =
-            (DefaultMutableTreeNode) prefTree.getModel().getRoot();
-        DefaultMutableTreeNode firstNode =
-            (DefaultMutableTreeNode) root.getFirstChild();
+                (DefaultMutableTreeNode) prefTree.getModel().getRoot();
+        DefaultMutableTreeNode firstNode = (DefaultMutableTreeNode) root.getFirstChild();
         prefTree.setSelectionPath(new TreePath(firstNode.getPath()));
     }
 
diff --git a/src/main/java/org/apache/log4j/chainsaw/ApplicationPreferenceModel.java b/src/main/java/org/apache/log4j/chainsaw/ApplicationPreferenceModel.java
index 803d3d0..8623b05 100644
--- a/src/main/java/org/apache/log4j/chainsaw/ApplicationPreferenceModel.java
+++ b/src/main/java/org/apache/log4j/chainsaw/ApplicationPreferenceModel.java
@@ -2,7 +2,7 @@
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
+ * The ASF licenses this file to you under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
  *
@@ -16,15 +16,12 @@
  */
 package org.apache.log4j.chainsaw;
 
+import java.awt.*;
+import java.util.List;
+import javax.swing.*;
 import org.apache.commons.configuration2.AbstractConfiguration;
 import org.apache.commons.configuration2.event.ConfigurationEvent;
 import org.apache.commons.configuration2.event.EventListener;
-import org.apache.log4j.varia.LogFilePatternReceiver;
-
-import javax.swing.*;
-import java.awt.*;
-import java.util.Collections;
-import java.util.List;
 
 /**
  * Encapsulates the Chainsaw Application wide properties
@@ -73,8 +70,7 @@ public class ApplicationPreferenceModel {
     private final boolean isToolbarDefault = true;
     private final boolean confirmExitDefault = true;
     private final boolean showSplashDefault = true;
-    private List<String> defaultColumns = List.of("LOGGER","MARKER","TIMESTAMP","LEVEL","MESSAGE");
-
+    private List<String> defaultColumns = List.of("LOGGER", "MARKER", "TIMESTAMP", "LEVEL", "MESSAGE");
 
     public ApplicationPreferenceModel(AbstractConfiguration globalConfiguration) {
         this.globalConfiguration = globalConfiguration;
@@ -129,23 +125,26 @@ public class ApplicationPreferenceModel {
      */
     public void apply(ApplicationPreferenceModel model) {
         setIdentifierExpression(model.getIdentifierExpression());
-        setShowNoReceiverWarning(model.isShowNoReceiverWarning() || (model.getConfigurationURL() == null || model.getConfigurationURL().trim().isEmpty()));
+        setShowNoReceiverWarning(model.isShowNoReceiverWarning()
+                || (model.getConfigurationURL() == null
+                        || model.getConfigurationURL().trim().isEmpty()));
         setResponsiveness(model.getResponsiveness());
         setTabPlacement(model.getTabPlacement());
         setStatusBarVisible(model.isStatusBarVisible());
         setToolbarVisible(model.isToolbarVisible());
         setReceiversVisible(model.isReceiversVisible());
-        if (model.getLookAndFeelClassName() != null && !model.getLookAndFeelClassName().trim().isEmpty()) {
+        if (model.getLookAndFeelClassName() != null
+                && !model.getLookAndFeelClassName().trim().isEmpty()) {
             setLookAndFeelClassName(model.getLookAndFeelClassName());
         } else {
-            //ensure current look and feel is selected
+            // ensure current look and feel is selected
             setLookAndFeelClassName(UIManager.getLookAndFeel().getClass().getName());
         }
         setConfirmExit(model.isConfirmExit());
         setShowSplash(model.isShowSplash());
         setToolTipDisplayMillis(model.getToolTipDisplayMillis());
         setCyclicBufferSize(model.getCyclicBufferSize());
-        //only set current config URL if bypass is null
+        // only set current config URL if bypass is null
         if (model.getBypassConfigurationURL() == null) {
             setConfigurationURL(model.getConfigurationURL());
         }
@@ -168,21 +167,21 @@ public class ApplicationPreferenceModel {
         setBypassSearchColors(model.isBypassSearchColors());
     }
 
-    //use a lighter version of search color as the delta color
+    // use a lighter version of search color as the delta color
     public Color getDeltaColor() {
         float factor = 1.3F;
         Color search = getSearchBackgroundColor();
 
-        return new Color(boundColorValue((int) (search.getRed() * factor)),
-            boundColorValue((int) (search.getGreen() * factor)),
-            boundColorValue((int) (search.getBlue() * factor)));
+        return new Color(
+                boundColorValue((int) (search.getRed() * factor)),
+                boundColorValue((int) (search.getGreen() * factor)),
+                boundColorValue((int) (search.getBlue() * factor)));
     }
 
     private int boundColorValue(int colorValue) {
         return Math.min(Math.max(0, colorValue), 255);
     }
 
-
     /**
      * @return Returns the responsiveness.
      */
@@ -249,7 +248,6 @@ public class ApplicationPreferenceModel {
         return globalConfiguration.get(Color.class, ALTERNATING_FOREGROUND_COLOR, alternatingForegroundColorDefault);
     }
 
-
     public Color getSearchBackgroundColor() {
         return globalConfiguration.get(Color.class, SEARCH_BACKGROUND_COLOR, searchBackgroundColorDefault);
     }
@@ -340,8 +338,8 @@ public class ApplicationPreferenceModel {
     }
 
     /*
-      Set to null to un-bypass
-     */
+     Set to null to un-bypass
+    */
     public void setBypassConfigurationURL(String bypassConfigurationURL) {
         globalConfiguration.setProperty(BYPASS_CONFIGURATION_URL, bypassConfigurationURL);
     }
diff --git a/src/main/java/org/apache/log4j/chainsaw/ApplicationPreferenceModelPanel.java b/src/main/java/org/apache/log4j/chainsaw/ApplicationPreferenceModelPanel.java
index 5d96c77..38c0c34 100644
--- a/src/main/java/org/apache/log4j/chainsaw/ApplicationPreferenceModelPanel.java
+++ b/src/main/java/org/apache/log4j/chainsaw/ApplicationPreferenceModelPanel.java
@@ -2,7 +2,7 @@
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
+ * The ASF licenses this file to you under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
  *
@@ -14,24 +14,21 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package org.apache.log4j.chainsaw;
 
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-import org.apache.log4j.chainsaw.osx.OSXIntegration;
-
-import javax.swing.*;
-import javax.swing.tree.DefaultMutableTreeNode;
-import javax.swing.tree.DefaultTreeModel;
-import javax.swing.tree.TreeModel;
 import java.awt.*;
 import java.util.Dictionary;
 import java.util.Enumeration;
 import java.util.Hashtable;
 import java.util.Locale;
+import javax.swing.*;
+import javax.swing.tree.DefaultMutableTreeNode;
+import javax.swing.tree.DefaultTreeModel;
+import javax.swing.tree.TreeModel;
+import org.apache.log4j.chainsaw.osx.OSXIntegration;
 import org.apache.log4j.chainsaw.prefs.SettingsManager;
-
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 /**
  * A panel used by the user to modify any application-wide preferences.
@@ -45,14 +42,15 @@ public class ApplicationPreferenceModelPanel extends AbstractPreferencePanel {
     private JTextField toolTipDisplayMillis;
     private JTextField cyclicBufferSize;
     private GeneralAllPrefPanel generalAllPrefPanel;
-    public ApplicationPreferenceModelPanel(SettingsManager settingsManager, ApplicationPreferenceModel applicationPreferenceModel) {
+
+    public ApplicationPreferenceModelPanel(
+            SettingsManager settingsManager, ApplicationPreferenceModel applicationPreferenceModel) {
         this.applicationPreferenceModel = applicationPreferenceModel;
         initComponents();
-        getOkButton().addActionListener(
-            e -> {
-                settingsManager.saveGlobalSettings();
-                hidePanel();
-            });
+        getOkButton().addActionListener(e -> {
+            settingsManager.saveGlobalSettings();
+            hidePanel();
+        });
 
         getCancelButton().addActionListener(e -> hidePanel());
     }
@@ -61,16 +59,13 @@ public class ApplicationPreferenceModelPanel extends AbstractPreferencePanel {
      * @see org.apache.log4j.chainsaw.AbstractPreferencePanel#createTreeModel()
      */
     protected TreeModel createTreeModel() {
-        final DefaultMutableTreeNode rootNode =
-            new DefaultMutableTreeNode("Preferences");
+        final DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode("Preferences");
         DefaultTreeModel model = new DefaultTreeModel(rootNode);
 
         generalAllPrefPanel = new GeneralAllPrefPanel();
-        DefaultMutableTreeNode general =
-            new DefaultMutableTreeNode(generalAllPrefPanel);
+        DefaultMutableTreeNode general = new DefaultMutableTreeNode(generalAllPrefPanel);
 
-        DefaultMutableTreeNode visuals =
-            new DefaultMutableTreeNode(new VisualsPrefPanel());
+        DefaultMutableTreeNode visuals = new DefaultMutableTreeNode(new VisualsPrefPanel());
 
         rootNode.add(general);
         rootNode.add(visuals);
@@ -90,8 +85,8 @@ public class ApplicationPreferenceModelPanel extends AbstractPreferencePanel {
         private VisualsPrefPanel() {
             super("Visuals");
 
-            //Nimbus has major issues with colors in tables..just remove it from the list..
-            //only use this if nimbus was found..
+            // Nimbus has major issues with colors in tables..just remove it from the list..
+            // only use this if nimbus was found..
             UIManager.LookAndFeelInfo[] newLookAndFeels = new UIManager.LookAndFeelInfo[lookAndFeels.length];
             boolean useNewLookAndFeels = false;
             int j = 0;
@@ -103,7 +98,8 @@ public class ApplicationPreferenceModelPanel extends AbstractPreferencePanel {
                 }
             }
             if (useNewLookAndFeels) {
-                UIManager.LookAndFeelInfo[] replacedLookAndFeels = new UIManager.LookAndFeelInfo[lookAndFeels.length - 1];
+                UIManager.LookAndFeelInfo[] replacedLookAndFeels =
+                        new UIManager.LookAndFeelInfo[lookAndFeels.length - 1];
                 System.arraycopy(newLookAndFeels, 0, replacedLookAndFeels, 0, newLookAndFeels.length - 1);
                 lookAndFeels = replacedLookAndFeels;
             }
@@ -117,59 +113,54 @@ public class ApplicationPreferenceModelPanel extends AbstractPreferencePanel {
          *
          */
         private void setupListeners() {
-            topPlacement.addActionListener(
-                e -> applicationPreferenceModel.setTabPlacement(SwingConstants.TOP));
-            bottomPlacement.addActionListener(
-                e -> applicationPreferenceModel.setTabPlacement(SwingConstants.BOTTOM));
-
-            statusBar.addActionListener(
-                e -> applicationPreferenceModel.setStatusBarVisible(statusBar.isSelected()));
-
-            toolBar.addActionListener(
-                e -> applicationPreferenceModel.setToolbarVisible(toolBar.isSelected()));
-
-            receivers.addActionListener(
-                e -> applicationPreferenceModel.setReceiversVisible(receivers.isSelected()));
-
-//            uncommittedPreferenceModel.addPropertyChangeListener(
-//                "tabPlacement",
-//                evt -> {
-//                    int value = (Integer) evt.getNewValue();
-//
-//                    configureTabPlacement(value);
-//                });
-//
-//            uncommittedPreferenceModel.addPropertyChangeListener(
-//                "statusBar",
-//                evt -> statusBar.setSelected(
-//                    (Boolean) evt.getNewValue()));
-//
-//            uncommittedPreferenceModel.addPropertyChangeListener(
-//                "toolbar",
-//                evt -> toolBar.setSelected((Boolean) evt.getNewValue()));
-//
-//            uncommittedPreferenceModel.addPropertyChangeListener(
-//                "receivers",
-//                evt -> receivers.setSelected(
-//                    (Boolean) evt.getNewValue()));
-//
-//            uncommittedPreferenceModel.addPropertyChangeListener(
-//                "lookAndFeelClassName",
-//                evt -> {
-//                    String lf = evt.getNewValue().toString();
-//
-//                    Enumeration enumeration = lookAndFeelGroup.getElements();
-//
-//                    while (enumeration.hasMoreElements()) {
-//                        JRadioButton button = (JRadioButton) enumeration.nextElement();
-//
-//                        if (button.getName() != null && button.getName().equals(lf)) {
-//                            button.setSelected(true);
-//
-//                            break;
-//                        }
-//                    }
-//                });
+            topPlacement.addActionListener(e -> applicationPreferenceModel.setTabPlacement(SwingConstants.TOP));
+            bottomPlacement.addActionListener(e -> applicationPreferenceModel.setTabPlacement(SwingConstants.BOTTOM));
+
+            statusBar.addActionListener(e -> applicationPreferenceModel.setStatusBarVisible(statusBar.isSelected()));
+
+            toolBar.addActionListener(e -> applicationPreferenceModel.setToolbarVisible(toolBar.isSelected()));
+
+            receivers.addActionListener(e -> applicationPreferenceModel.setReceiversVisible(receivers.isSelected()));
+
+            //            uncommittedPreferenceModel.addPropertyChangeListener(
+            //                "tabPlacement",
+            //                evt -> {
+            //                    int value = (Integer) evt.getNewValue();
+            //
+            //                    configureTabPlacement(value);
+            //                });
+            //
+            //            uncommittedPreferenceModel.addPropertyChangeListener(
+            //                "statusBar",
+            //                evt -> statusBar.setSelected(
+            //                    (Boolean) evt.getNewValue()));
+            //
+            //            uncommittedPreferenceModel.addPropertyChangeListener(
+            //                "toolbar",
+            //                evt -> toolBar.setSelected((Boolean) evt.getNewValue()));
+            //
+            //            uncommittedPreferenceModel.addPropertyChangeListener(
+            //                "receivers",
+            //                evt -> receivers.setSelected(
+            //                    (Boolean) evt.getNewValue()));
+            //
+            //            uncommittedPreferenceModel.addPropertyChangeListener(
+            //                "lookAndFeelClassName",
+            //                evt -> {
+            //                    String lf = evt.getNewValue().toString();
+            //
+            //                    Enumeration enumeration = lookAndFeelGroup.getElements();
+            //
+            //                    while (enumeration.hasMoreElements()) {
+            //                        JRadioButton button = (JRadioButton) enumeration.nextElement();
+            //
+            //                        if (button.getName() != null && button.getName().equals(lf)) {
+            //                            button.setSelected(true);
+            //
+            //                            break;
+            //                        }
+            //                    }
+            //                });
         }
 
         /**
@@ -213,17 +204,15 @@ public class ApplicationPreferenceModelPanel extends AbstractPreferencePanel {
                 final JRadioButton lfItem = new JRadioButton(" " + lfInfo.getName() + " ");
                 lfItem.setName(lfInfo.getClassName());
                 lfItem.addActionListener(
-                    e -> applicationPreferenceModel.setLookAndFeelClassName(lfInfo.getClassName()));
+                        e -> applicationPreferenceModel.setLookAndFeelClassName(lfInfo.getClassName()));
                 lookAndFeelGroup.add(lfItem);
                 lfPanel.add(lfItem);
             }
 
             try {
-                final Class gtkLF =
-                    Class.forName("com.sun.java.swing.plaf.gtk.GTKLookAndFeel");
+                final Class gtkLF = Class.forName("com.sun.java.swing.plaf.gtk.GTKLookAndFeel");
                 final JRadioButton lfIGTK = new JRadioButton(" GTK+ 2.0 ");
-                lfIGTK.addActionListener(
-                    e -> applicationPreferenceModel.setLookAndFeelClassName(gtkLF.getName()));
+                lfIGTK.addActionListener(e -> applicationPreferenceModel.setLookAndFeelClassName(gtkLF.getName()));
                 lookAndFeelGroup.add(lfIGTK);
                 lfPanel.add(lfIGTK);
             } catch (Exception e) {
@@ -232,10 +221,8 @@ public class ApplicationPreferenceModelPanel extends AbstractPreferencePanel {
 
             add(lfPanel);
 
-            add(
-                new JLabel(
-                    "<html>Look and Feel change will apply the next time you start Chainsaw.<br>" +
-                        "If this value is not set, the default L&F of your system is used.</html>"));
+            add(new JLabel("<html>Look and Feel change will apply the next time you start Chainsaw.<br>"
+                    + "If this value is not set, the default L&F of your system is used.</html>"));
         }
 
         private void configureTabPlacement(int value) {
@@ -255,7 +242,7 @@ public class ApplicationPreferenceModelPanel extends AbstractPreferencePanel {
             }
         }
 
-        public void updateModel(){
+        public void updateModel() {
             statusBar.setSelected(applicationPreferenceModel.isStatusBarVisible());
             receivers.setSelected(applicationPreferenceModel.isReceiversVisible());
             toolBar.setSelected(applicationPreferenceModel.isToolbarVisible());
@@ -276,8 +263,7 @@ public class ApplicationPreferenceModelPanel extends AbstractPreferencePanel {
      */
     public class GeneralAllPrefPanel extends BasicPrefPanel {
         private final JCheckBox showSplash = new JCheckBox(" Show Splash screen at startup ");
-        private final JSlider responsiveSlider =
-            new JSlider(SwingConstants.HORIZONTAL, 1, 4, 2);
+        private final JSlider responsiveSlider = new JSlider(SwingConstants.HORIZONTAL, 1, 4, 2);
         private final JCheckBox confirmExit = new JCheckBox(" Confirm Exit ");
         Dictionary<Integer, JLabel> sliderLabelMap = new Hashtable<>();
 
@@ -337,7 +323,7 @@ public class ApplicationPreferenceModelPanel extends AbstractPreferencePanel {
 
         private void initSliderComponent() {
             responsiveSlider.setToolTipText(
-                "Adjust to set the responsiveness of the app.  How often the view is updated.");
+                    "Adjust to set the responsiveness of the app.  How often the view is updated.");
             responsiveSlider.setSnapToTicks(true);
             responsiveSlider.setLabelTable(sliderLabelMap);
             responsiveSlider.setPaintLabels(true);
@@ -347,71 +333,64 @@ public class ApplicationPreferenceModelPanel extends AbstractPreferencePanel {
         }
 
         private void setupListeners() {
-            applicationPreferenceModel.addEventListener(
-                evt -> {
-                    if( evt.getPropertyName().equals(ApplicationPreferenceModel.SHOW_SPLASH) ){
-                        boolean value = (Boolean) evt.getPropertyValue();
-                        showSplash.setSelected(value);
-                    }
-                });
-
-            applicationPreferenceModel.addEventListener(
-                evt -> {
-                    if( evt.getPropertyName().equals(ApplicationPreferenceModel.RESPONSIVENESS) ){
-                        int value = (Integer) evt.getPropertyValue();
-                        if (value >= 1000) {
-                            int newValue = (value - 750) / 1000;
-                            logger.debug("Adjusting old Responsiveness value from {} to {}", value, newValue);
-                            value = newValue;
-                        }
-
-                        responsiveSlider.setValue(value);
-                    }
-                });
+            applicationPreferenceModel.addEventListener(evt -> {
+                if (evt.getPropertyName().equals(ApplicationPreferenceModel.SHOW_SPLASH)) {
+                    boolean value = (Boolean) evt.getPropertyValue();
+                    showSplash.setSelected(value);
+                }
+            });
 
-            applicationPreferenceModel.addEventListener(
-                evt -> {
-                    if( evt.getPropertyName().equals(ApplicationPreferenceModel.TOOL_TIP_DISPLAY_MILLIS) ){
-                        toolTipDisplayMillis.setText(evt.getPropertyValue().toString());
+            applicationPreferenceModel.addEventListener(evt -> {
+                if (evt.getPropertyName().equals(ApplicationPreferenceModel.RESPONSIVENESS)) {
+                    int value = (Integer) evt.getPropertyValue();
+                    if (value >= 1000) {
+                        int newValue = (value - 750) / 1000;
+                        logger.debug("Adjusting old Responsiveness value from {} to {}", value, newValue);
+                        value = newValue;
                     }
-                });
 
-            applicationPreferenceModel.addEventListener(
-                evt -> {
-                    if( evt.getPropertyName().equals(ApplicationPreferenceModel.CYCLIC_BUFFER_SIZE) ){
-                        cyclicBufferSize.setText(evt.getPropertyValue().toString());
-                    }
-                });
+                    responsiveSlider.setValue(value);
+                }
+            });
 
-            applicationPreferenceModel.addEventListener(
-                evt -> {
-                    if( evt.getPropertyName().equals(ApplicationPreferenceModel.CONFIRM_EXIT) ){
-                        boolean value = (Boolean) evt.getPropertyValue();
-                        confirmExit.setSelected(value);
-                    }
-                });
+            applicationPreferenceModel.addEventListener(evt -> {
+                if (evt.getPropertyName().equals(ApplicationPreferenceModel.TOOL_TIP_DISPLAY_MILLIS)) {
+                    toolTipDisplayMillis.setText(evt.getPropertyValue().toString());
+                }
+            });
+
+            applicationPreferenceModel.addEventListener(evt -> {
+                if (evt.getPropertyName().equals(ApplicationPreferenceModel.CYCLIC_BUFFER_SIZE)) {
+                    cyclicBufferSize.setText(evt.getPropertyValue().toString());
+                }
+            });
+
+            applicationPreferenceModel.addEventListener(evt -> {
+                if (evt.getPropertyName().equals(ApplicationPreferenceModel.CONFIRM_EXIT)) {
+                    boolean value = (Boolean) evt.getPropertyValue();
+                    confirmExit.setSelected(value);
+                }
+            });
 
             showSplash.addActionListener(e -> applicationPreferenceModel.setShowSplash(showSplash.isSelected()));
-            responsiveSlider.getModel().addChangeListener(
-                e -> {
-                    if (responsiveSlider.getValueIsAdjusting()) {
-                        /**
-                         * We'll wait until it stops.
-                         */
-                    } else {
-                        int value = responsiveSlider.getValue();
-
-                        if (value == 0) {
-                            value = 1;
-                        }
-
-                        logger.debug("Adjust responsiveness to {}", value);
-                        applicationPreferenceModel.setResponsiveness(value);
+            responsiveSlider.getModel().addChangeListener(e -> {
+                if (responsiveSlider.getValueIsAdjusting()) {
+                    /**
+                     * We'll wait until it stops.
+                     */
+                } else {
+                    int value = responsiveSlider.getValue();
+
+                    if (value == 0) {
+                        value = 1;
                     }
-                });
 
-            confirmExit.addActionListener(
-                e -> applicationPreferenceModel.setConfirmExit(confirmExit.isSelected()));
+                    logger.debug("Adjust responsiveness to {}", value);
+                    applicationPreferenceModel.setResponsiveness(value);
+                }
+            });
+
+            confirmExit.addActionListener(e -> applicationPreferenceModel.setConfirmExit(confirmExit.isSelected()));
         }
 
         private void setupInitialValues() {
@@ -420,7 +399,6 @@ public class ApplicationPreferenceModelPanel extends AbstractPreferencePanel {
             sliderLabelMap.put(3, new JLabel(" Medium "));
             sliderLabelMap.put(4, new JLabel(" Slow "));
 
-
             confirmExit.setSelected(applicationPreferenceModel.isConfirmExit());
             showSplash.setSelected(applicationPreferenceModel.isShowSplash());
             toolTipDisplayMillis.setText(String.valueOf(applicationPreferenceModel.getToolTipDisplayMillis()));
diff --git a/src/main/java/org/apache/log4j/chainsaw/BasicPrefPanel.java b/src/main/java/org/apache/log4j/chainsaw/BasicPrefPanel.java
index fabc1d0..f62fba4 100644
--- a/src/main/java/org/apache/log4j/chainsaw/BasicPrefPanel.java
+++ b/src/main/java/org/apache/log4j/chainsaw/BasicPrefPanel.java
@@ -2,7 +2,7 @@
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
+ * The ASF licenses this file to you under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
  *
@@ -18,7 +18,6 @@ package org.apache.log4j.chainsaw;
 
 import javax.swing.*;
 
-
 /**
  * All of the Preferences panels used in this class extend from
  * this, it is used to provide standard L&amp;F required by all.
diff --git a/src/main/java/org/apache/log4j/chainsaw/ChainsawAppender.java b/src/main/java/org/apache/log4j/chainsaw/ChainsawAppender.java
index 9d41f58..2b6b47e 100755
--- a/src/main/java/org/apache/log4j/chainsaw/ChainsawAppender.java
+++ b/src/main/java/org/apache/log4j/chainsaw/ChainsawAppender.java
@@ -2,7 +2,7 @@
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
+ * The ASF licenses this file to you under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
  *
@@ -37,30 +37,30 @@ public final class ChainsawAppender extends AbstractOutputStreamAppender {
 
     @PluginFactory
     public static ChainsawAppender createAppender(@PluginAttribute("name") String name) {
-        System.out.println( "create the chainsaw appender" );
+        System.out.println("create the chainsaw appender");
 
         if (name == null) {
             LOGGER.error("No name provided for ChainsawAppender");
             return null;
         }
-        
+
         return new ChainsawAppender(name);
     }
 
     @Override
-    public void append(final LogEvent event){
+    public void append(final LogEvent event) {
         ChainsawLoggingEventBuilder builder = new ChainsawLoggingEventBuilder();
 
-        builder.setLevelFromString( event.getLevel().name() )
-                .setLogger( event.getLoggerName() )
-                .setMessage( event.getMessage().getFormattedMessage() )
-                .setThreadName( event.getThreadName() )
-                .setTimestamp( Instant.ofEpochMilli(event.getInstant().getEpochMillisecond()) );
+        builder.setLevelFromString(event.getLevel().name())
+                .setLogger(event.getLoggerName())
+                .setMessage(event.getMessage().getFormattedMessage())
+                .setThreadName(event.getThreadName())
+                .setTimestamp(Instant.ofEpochMilli(event.getInstant().getEpochMillisecond()));
 
         receiver.append(builder.create());
     }
 
-    public ChainsawReceiver getReceiver(){
+    public ChainsawReceiver getReceiver() {
         return receiver;
     }
 
diff --git a/src/main/java/org/apache/log4j/chainsaw/ChainsawColumns.java b/src/main/java/org/apache/log4j/chainsaw/ChainsawColumns.java
index 3ff83b7..2374f57 100644
--- a/src/main/java/org/apache/log4j/chainsaw/ChainsawColumns.java
+++ b/src/main/java/org/apache/log4j/chainsaw/ChainsawColumns.java
@@ -2,7 +2,7 @@
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
+ * The ASF licenses this file to you under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
  *
@@ -14,16 +14,13 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package org.apache.log4j.chainsaw;
 
-import org.apache.log4j.chainsaw.icons.ChainsawIcons;
-
-import javax.swing.*;
 import java.awt.*;
 import java.util.ArrayList;
 import java.util.List;
-
+import javax.swing.*;
+import org.apache.log4j.chainsaw.icons.ChainsawIcons;
 
 /**
  * @author Paul Smith &lt;psmith@apache.org&gt;
@@ -38,7 +35,8 @@ public class ChainsawColumns {
         columnNames.add(ChainsawConstants.LOGGER_COL_NAME);
         columnNames.add(ChainsawConstants.MESSAGE_COL_NAME);
 
-        //NOTE:  ID must ALWAYS be last field because the model adds this value itself as an identifier to the end of the consructed vector
+        // NOTE:  ID must ALWAYS be last field because the model adds this value itself as an identifier to the end of
+        // the consructed vector
         columnNames.add(ChainsawConstants.ID_COL_NAME);
     }
 
@@ -52,11 +50,11 @@ public class ChainsawColumns {
     public static final Cursor CURSOR_FOCUS_ON;
 
     static {
-        CURSOR_FOCUS_ON = Toolkit.getDefaultToolkit().createCustomCursor(new ImageIcon(ChainsawIcons.WINDOW_ICON).getImage(), new Point(3, 3), "FocusOn");
+        CURSOR_FOCUS_ON = Toolkit.getDefaultToolkit()
+                .createCustomCursor(new ImageIcon(ChainsawIcons.WINDOW_ICON).getImage(), new Point(3, 3), "FocusOn");
     }
 
-    private ChainsawColumns() {
-    }
+    private ChainsawColumns() {}
 
     public static List<String> getColumnsNames() {
         return columnNames;
diff --git a/src/main/java/org/apache/log4j/chainsaw/ChainsawConstants.java b/src/main/java/org/apache/log4j/chainsaw/ChainsawConstants.java
index 1af38f1..28ac900 100644
--- a/src/main/java/org/apache/log4j/chainsaw/ChainsawConstants.java
+++ b/src/main/java/org/apache/log4j/chainsaw/ChainsawConstants.java
@@ -2,7 +2,7 @@
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
+ * The ASF licenses this file to you under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
  *
@@ -14,7 +14,6 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package org.apache.log4j.chainsaw;
 
 import java.awt.*;
@@ -27,8 +26,7 @@ import java.net.URL;
  * @author Scott Deboy &lt;sdeboy@apache.org&gt;
  */
 public class ChainsawConstants {
-    private ChainsawConstants() {
-    }
+    private ChainsawConstants() {}
 
     public static final int MILLIS_DELTA_RENDERING_HEIGHT_MAX = 50;
     public static final float MILLIS_DELTA_RENDERING_FACTOR = .002F;
@@ -37,9 +35,9 @@ public class ChainsawConstants {
     public static final Color COLOR_DEFAULT_BACKGROUND = new Color(255, 255, 255);
     public static final Color COLOR_DEFAULT_FOREGROUND = Color.BLACK;
 
-    //top, bottom left and right border are all 2
+    // top, bottom left and right border are all 2
     public static final int TABLE_BORDER_WIDTH = 2;
-    //JTable defines its default height as 16, plus top & bottom borders
+    // JTable defines its default height as 16, plus top & bottom borders
     public static final int DEFAULT_ROW_HEIGHT = 16 + (TABLE_BORDER_WIDTH * 2);
     public static final Color FIND_LOGGER_BACKGROUND = new Color(213, 226, 235);
     public static final Color FIND_LOGGER_FOREGROUND = Color.BLACK;
@@ -52,16 +50,16 @@ public class ChainsawConstants {
     public static final Color COLOR_EVEN_ROW_BACKGROUND = COLOR_DEFAULT_BACKGROUND;
     public static final Color COLOR_EVEN_ROW_FOREGROUND = Color.BLACK;
 
-    public static final URL WELCOME_URL = ChainsawConstants.class.getClassLoader().getResource(
-        "org/apache/log4j/chainsaw/WelcomePanel.html");
+    public static final URL WELCOME_URL =
+            ChainsawConstants.class.getClassLoader().getResource("org/apache/log4j/chainsaw/WelcomePanel.html");
 
     public static final URL EXAMPLE_CONFIG_URL =
-        ChainsawConstants.class.getClassLoader().getResource("org/apache/log4j/chainsaw/log4j-receiver-sample.xml");
+            ChainsawConstants.class.getClassLoader().getResource("org/apache/log4j/chainsaw/log4j-receiver-sample.xml");
 
     public static final URL TUTORIAL_URL =
-        ChainsawConstants.class.getClassLoader().getResource("org/apache/log4j/chainsaw/help/tutorial.html");
+            ChainsawConstants.class.getClassLoader().getResource("org/apache/log4j/chainsaw/help/tutorial.html");
     public static final URL RELEASE_NOTES_URL =
-        ChainsawConstants.class.getClassLoader().getResource("org/apache/log4j/chainsaw/help/release-notes.html");
+            ChainsawConstants.class.getClassLoader().getResource("org/apache/log4j/chainsaw/help/release-notes.html");
 
     static final String MAIN_PANEL = "panel";
     static final String LOWER_PANEL = "lower";
@@ -70,7 +68,7 @@ public class ChainsawConstants {
     static final String FILTERS_EXTENSION = ".filters";
     static final String SETTINGS_EXTENSION = ".settings";
 
-    //COLUMN NAMES
+    // COLUMN NAMES
     public static final String LOGGER_COL_NAME = "LOGGER";
     public static final String LOG4J_MARKER_COL_NAME = "MARKER";
     public static final String TIMESTAMP_COL_NAME = "TIMESTAMP";
@@ -87,7 +85,7 @@ public class ChainsawConstants {
     public static final String MILLIS_DELTA_COL_NAME_LOWERCASE = "millisdelta";
     public static final String ID_COL_NAME = "ID";
 
-    //none is not a real column name, but is used by filters as a way to apply no filter for colors or display
+    // none is not a real column name, but is used by filters as a way to apply no filter for colors or display
     static final String NONE_COL_NAME = "None";
     static final String LOG4J_REMOTEHOST_KEY = "log4j.remoteSourceInfo";
     static final String UNKNOWN_TAB_NAME = "Unknown";
@@ -98,10 +96,8 @@ public class ChainsawConstants {
     static final String LEVEL_DISPLAY_ICONS = "icons";
     static final String LEVEL_DISPLAY_TEXT = "text";
 
-
     static final String DATETIME_FORMAT = "EEE MMM dd HH:mm:ss z yyyy";
 
     //  TODO come up with a better page not found url
     public static final URL URL_PAGE_NOT_FOUND = WELCOME_URL;
-
 }
diff --git a/src/main/java/org/apache/log4j/chainsaw/ChainsawCyclicBufferTableModel.java b/src/main/java/org/apache/log4j/chainsaw/ChainsawCyclicBufferTableModel.java
index 455a1a9..4f4ec2e 100644
--- a/src/main/java/org/apache/log4j/chainsaw/ChainsawCyclicBufferTableModel.java
+++ b/src/main/java/org/apache/log4j/chainsaw/ChainsawCyclicBufferTableModel.java
@@ -2,7 +2,7 @@
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
+ * The ASF licenses this file to you under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
  *
@@ -14,23 +14,8 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package org.apache.log4j.chainsaw;
 
-import org.apache.log4j.chainsaw.color.RuleColorizer;
-import org.apache.log4j.chainsaw.components.loggernamepanel.LoggerNameListener;
-import org.apache.log4j.chainsaw.components.loggernamepanel.LoggerNameModel;
-import org.apache.log4j.chainsaw.components.loggernamepanel.LoggerNameModelSupport;
-import org.apache.log4j.chainsaw.helper.SwingHelper;
-import org.apache.log4j.chainsaw.logevents.ChainsawLoggingEvent;
-import org.apache.log4j.helpers.Constants;
-import org.apache.log4j.rule.Rule;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-import javax.swing.*;
-import javax.swing.event.EventListenerList;
-import javax.swing.table.AbstractTableModel;
 import java.beans.PropertyChangeEvent;
 import java.beans.PropertyChangeListener;
 import java.beans.PropertyChangeSupport;
@@ -41,7 +26,19 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Objects;
 import java.util.Set;
-
+import javax.swing.*;
+import javax.swing.event.EventListenerList;
+import javax.swing.table.AbstractTableModel;
+import org.apache.log4j.chainsaw.color.RuleColorizer;
+import org.apache.log4j.chainsaw.components.loggernamepanel.LoggerNameListener;
+import org.apache.log4j.chainsaw.components.loggernamepanel.LoggerNameModel;
+import org.apache.log4j.chainsaw.components.loggernamepanel.LoggerNameModelSupport;
+import org.apache.log4j.chainsaw.helper.SwingHelper;
+import org.apache.log4j.chainsaw.logevents.ChainsawLoggingEvent;
+import org.apache.log4j.helpers.Constants;
+import org.apache.log4j.rule.Rule;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 /**
  * A CyclicBuffer implementation of the EventContainer.
@@ -57,14 +54,14 @@ import java.util.Set;
  * @author Stephen Pain
  */
 public class ChainsawCyclicBufferTableModel extends AbstractTableModel
-    implements EventContainer, PropertyChangeListener {
+        implements EventContainer, PropertyChangeListener {
 
-    //cyclic field used internally in this class, but not exposed via the eventcontainer
+    // cyclic field used internally in this class, but not exposed via the eventcontainer
     private boolean cyclic = true;
     private final int cyclicBufferSize;
-    //original list of LoggingEventWrapper instances
+    // original list of LoggingEventWrapper instances
     private List<LoggingEventWrapper> unfilteredList;
-    //filtered list of LoggingEventWrapper instances
+    // filtered list of LoggingEventWrapper instances
     private List<LoggingEventWrapper> filteredList;
     private boolean currentSortAscending;
     private int currentSortColumn;
@@ -78,8 +75,8 @@ public class ChainsawCyclicBufferTableModel extends AbstractTableModel
     private final LoggerNameModel loggerNameModelDelegate = new LoggerNameModelSupport();
     private final Object mutex = new Object();
 
-    //because we may be using a cyclic buffer, if an ID is not provided in the property,
-    //use and increment this row counter as the ID for each received row
+    // because we may be using a cyclic buffer, if an ID is not provided in the property,
+    // use and increment this row counter as the ID for each received row
     private int uniqueRow;
     private final Set uniquePropertyKeys = new HashSet();
     private Rule ruleMediator;
@@ -105,7 +102,7 @@ public class ChainsawCyclicBufferTableModel extends AbstractTableModel
         if (evt.getSource() instanceof Rule) {
             if (evt.getSource() == ruleMediator && evt.getPropertyName().equals("findRule")) {
                 if (((RuleMediator) evt.getSource()).isFindRuleRequired()) {
-                    //only refilter if find rule is required
+                    // only refilter if find rule is required
                     reFilter();
                 }
             } else {
@@ -136,7 +133,7 @@ public class ChainsawCyclicBufferTableModel extends AbstractTableModel
         final int previousSize;
         final int newSize;
         synchronized (mutex) {
-            //post refilter with newValue of TRUE (filtering is about to begin)
+            // post refilter with newValue of TRUE (filtering is about to begin)
             propertySupport.firePropertyChange("refilter", Boolean.FALSE, Boolean.TRUE);
             previousSize = filteredList.size();
             filteredList.clear();
@@ -169,26 +166,27 @@ public class ChainsawCyclicBufferTableModel extends AbstractTableModel
         SwingHelper.invokeOnEDT(() -> {
             if (newSize > 0) {
                 if (previousSize == newSize) {
-                    //same - update all
+                    // same - update all
                     fireTableRowsUpdated(0, newSize - 1);
                 } else if (previousSize > newSize) {
-                    //less now..update and delete difference
+                    // less now..update and delete difference
                     fireTableRowsUpdated(0, newSize - 1);
-//swing bug exposed by variable height rows when calling fireTableRowsDeleted..use tabledatacchanged
+                    // swing bug exposed by variable height rows when calling fireTableRowsDeleted..use
+                    // tabledatacchanged
                     fireTableDataChanged();
                 } else if (previousSize < newSize) {
-                    //more now..update and insert difference
+                    // more now..update and insert difference
                     if (previousSize > 0) {
                         fireTableRowsUpdated(0, previousSize - 1);
                     }
                     fireTableRowsInserted(Math.max(0, previousSize), newSize - 1);
                 }
             } else {
-                //no rows to show
+                // no rows to show
                 fireTableDataChanged();
             }
             notifyCountListeners();
-//post refilter with newValue of FALSE (filtering is complete)
+            // post refilter with newValue of FALSE (filtering is complete)
             SwingHelper.invokeOnEDT(() -> propertySupport.firePropertyChange("refilter", Boolean.TRUE, Boolean.FALSE));
         });
     }
@@ -205,7 +203,7 @@ public class ChainsawCyclicBufferTableModel extends AbstractTableModel
                     return i;
                 }
             }
-            //if there was no match, start at row zero and go to startLocation
+            // if there was no match, start at row zero and go to startLocation
             for (int i = 0; i < startLocation; i++) {
                 if (rule.evaluate((filteredListCopy.get(i)).getLoggingEvent(), null)) {
                     return i;
@@ -217,7 +215,7 @@ public class ChainsawCyclicBufferTableModel extends AbstractTableModel
                     return i;
                 }
             }
-            //if there was no match, start at row list.size() - 1 and go to startLocation
+            // if there was no match, start at row list.size() - 1 and go to startLocation
             for (int i = filteredListCopy.size() - 1; i > startLocation; i--) {
                 if (rule.evaluate((filteredListCopy.get(i)).getLoggingEvent(), null)) {
                     return i;
@@ -279,8 +277,7 @@ public class ChainsawCyclicBufferTableModel extends AbstractTableModel
             unfilteredListSize = unfilteredList.size();
         }
         for (EventCountListener listener : listeners) {
-            listener.eventCountChanged(
-                filteredListSize, unfilteredListSize);
+            listener.eventCountChanged(filteredListSize, unfilteredListSize);
         }
     }
 
@@ -316,7 +313,7 @@ public class ChainsawCyclicBufferTableModel extends AbstractTableModel
             filteredListSize = filteredList.size();
             sort = (sortEnabled && filteredListSize > 0);
             if (sort) {
-                //reset display (used to ensure row height is updated)
+                // reset display (used to ensure row height is updated)
                 LoggingEventWrapper lastEvent = null;
                 for (LoggingEventWrapper e : filteredList) {
                     e.setDisplayed(true);
@@ -324,8 +321,7 @@ public class ChainsawCyclicBufferTableModel extends AbstractTableModel
                     lastEvent = e;
                 }
                 filteredList.sort(new ColumnComparator(
-                    getColumnName(currentSortColumn), currentSortColumn,
-                    currentSortAscending));
+                        getColumnName(currentSortColumn), currentSortColumn, currentSortAscending));
             }
         }
         if (sort) {
@@ -390,7 +386,7 @@ public class ChainsawCyclicBufferTableModel extends AbstractTableModel
 
     @Override
     public void removePropertyFromEvents(String propName) {
-        //first remove the event from any displayed events, so we can fire row updated event
+        // first remove the event from any displayed events, so we can fire row updated event
         List<LoggingEventWrapper> filteredListCopy;
         List<LoggingEventWrapper> unfilteredListCopy;
         synchronized (mutex) {
@@ -404,7 +400,7 @@ public class ChainsawCyclicBufferTableModel extends AbstractTableModel
                 fireRowUpdated(i, false);
             }
         }
-        //now remove the event from all events
+        // now remove the event from all events
         for (LoggingEventWrapper loggingEventWrapper : unfilteredListCopy) {
             loggingEventWrapper.removeProperty(propName);
         }
@@ -419,7 +415,7 @@ public class ChainsawCyclicBufferTableModel extends AbstractTableModel
         }
         for (LoggingEventWrapper loggingEventWrapper : unfilteredListCopy) {
             loggingEventWrapper.evaluateSearchRule(findRule);
-            //return the count of visible search matches
+            // return the count of visible search matches
             if (loggingEventWrapper.isSearchMatch() && loggingEventWrapper.isDisplayed()) {
                 count++;
             }
@@ -436,32 +432,32 @@ public class ChainsawCyclicBufferTableModel extends AbstractTableModel
         if (searchForward) {
             for (int i = startLocation; i < filteredListCopy.size(); i++) {
                 LoggingEventWrapper event = filteredListCopy.get(i);
-                if (!event.getColorRuleBackground().equals(ChainsawConstants.COLOR_DEFAULT_BACKGROUND) ||
-                    !event.getColorRuleForeground().equals(ChainsawConstants.COLOR_DEFAULT_FOREGROUND)) {
+                if (!event.getColorRuleBackground().equals(ChainsawConstants.COLOR_DEFAULT_BACKGROUND)
+                        || !event.getColorRuleForeground().equals(ChainsawConstants.COLOR_DEFAULT_FOREGROUND)) {
                     return i;
                 }
             }
-            //searching forward, no colorized event was found - now start at row zero and go to startLocation
+            // searching forward, no colorized event was found - now start at row zero and go to startLocation
             for (int i = 0; i < startLocation; i++) {
                 LoggingEventWrapper event = filteredListCopy.get(i);
-                if (!event.getColorRuleBackground().equals(ChainsawConstants.COLOR_DEFAULT_BACKGROUND) ||
-                    !event.getColorRuleForeground().equals(ChainsawConstants.COLOR_DEFAULT_FOREGROUND)) {
+                if (!event.getColorRuleBackground().equals(ChainsawConstants.COLOR_DEFAULT_BACKGROUND)
+                        || !event.getColorRuleForeground().equals(ChainsawConstants.COLOR_DEFAULT_FOREGROUND)) {
                     return i;
                 }
             }
         } else {
             for (int i = startLocation; i > -1; i--) {
                 LoggingEventWrapper event = filteredListCopy.get(i);
-                if (!event.getColorRuleBackground().equals(ChainsawConstants.COLOR_DEFAULT_BACKGROUND) ||
-                    !event.getColorRuleForeground().equals(ChainsawConstants.COLOR_DEFAULT_FOREGROUND)) {
+                if (!event.getColorRuleBackground().equals(ChainsawConstants.COLOR_DEFAULT_BACKGROUND)
+                        || !event.getColorRuleForeground().equals(ChainsawConstants.COLOR_DEFAULT_FOREGROUND)) {
                     return i;
                 }
             }
-            //searching backward, no colorized event was found - now start at list.size() - 1 and go to startLocation
+            // searching backward, no colorized event was found - now start at list.size() - 1 and go to startLocation
             for (int i = filteredListCopy.size() - 1; i > startLocation; i--) {
                 LoggingEventWrapper event = filteredListCopy.get(i);
-                if (!event.getColorRuleBackground().equals(ChainsawConstants.COLOR_DEFAULT_BACKGROUND) ||
-                    !event.getColorRuleForeground().equals(ChainsawConstants.COLOR_DEFAULT_FOREGROUND)) {
+                if (!event.getColorRuleBackground().equals(ChainsawConstants.COLOR_DEFAULT_BACKGROUND)
+                        || !event.getColorRuleForeground().equals(ChainsawConstants.COLOR_DEFAULT_FOREGROUND)) {
                     return i;
                 }
             }
@@ -535,11 +531,11 @@ public class ChainsawCyclicBufferTableModel extends AbstractTableModel
             case ChainsawColumns.INDEX_LOG4J_MARKER_COL_NAME:
                 return event.getProperty(ChainsawConstants.LOG4J_MARKER_COL_NAME);
 
-/*
-            case ChainsawColumns.INDEX_MILLIS_DELTA_COL_NAME:
-                return event.getProperty(ChainsawConstants.MILLIS_DELTA_COL_NAME_LOWERCASE);
+                /*
+                            case ChainsawColumns.INDEX_MILLIS_DELTA_COL_NAME:
+                                return event.getProperty(ChainsawConstants.MILLIS_DELTA_COL_NAME_LOWERCASE);
 
-*/
+                */
             case ChainsawColumns.INDEX_LOGGER_COL_NAME:
                 return event.m_logger;
 
@@ -549,47 +545,48 @@ public class ChainsawCyclicBufferTableModel extends AbstractTableModel
             case ChainsawColumns.INDEX_MESSAGE_COL_NAME:
                 return event.m_message;
 
-/*
-            case ChainsawColumns.INDEX_NDC_COL_NAME:
-                return event.m_ndc;
+                /*
+                            case ChainsawColumns.INDEX_NDC_COL_NAME:
+                                return event.m_ndc;
 
-            case ChainsawColumns.INDEX_THREAD_COL_NAME:
-                return event.m_threadName;
+                            case ChainsawColumns.INDEX_THREAD_COL_NAME:
+                                return event.m_threadName;
 
-            case ChainsawColumns.INDEX_THROWABLE_COL_NAME:
-                return "IMPLEMENT ME";
+                            case ChainsawColumns.INDEX_THROWABLE_COL_NAME:
+                                return "IMPLEMENT ME";
 
-            case ChainsawColumns.INDEX_CLASS_COL_NAME:
-                return info == null ? "" : info.className;
+                            case ChainsawColumns.INDEX_CLASS_COL_NAME:
+                                return info == null ? "" : info.className;
 
-            case ChainsawColumns.INDEX_FILE_COL_NAME:
-                return info == null ? "" : info.fileName;
+                            case ChainsawColumns.INDEX_FILE_COL_NAME:
+                                return info == null ? "" : info.fileName;
 
-            case ChainsawColumns.INDEX_LINE_COL_NAME:
-                return info == null ? -1 : info.lineNumber;
+                            case ChainsawColumns.INDEX_LINE_COL_NAME:
+                                return info == null ? -1 : info.lineNumber;
 
-            case ChainsawColumns.INDEX_METHOD_COL_NAME:
-                return info == null ? "" : info.methodName;
-*/
+                            case ChainsawColumns.INDEX_METHOD_COL_NAME:
+                                return info == null ? "" : info.methodName;
+                */
 
             default:
 
-//                if (columnIndex < columnNames.size()) {
-//                    //case may not match..try case sensitive and fall back to case-insensitive
-//                    String result = event.getProperty(columnNames.get(columnIndex).toString());
-//                    if (result == null) {
-//                        String lowerColName = columnNames.get(columnIndex).toString().toLowerCase(Locale.ENGLISH);
-//                        Set<String> entrySet = event.entrySet();
-//                        for (String entry : entrySet) {
-//                            if (entry.equalsIgnoreCase(lowerColName)) {
-//                                result = thisEntry.getValue().toString();
-//                            }
-//                        }
-//                    }
-//                    if (result != null) {
-//                        return result;
-//                    }
-//                }
+                //                if (columnIndex < columnNames.size()) {
+                //                    //case may not match..try case sensitive and fall back to case-insensitive
+                //                    String result = event.getProperty(columnNames.get(columnIndex).toString());
+                //                    if (result == null) {
+                //                        String lowerColName =
+                // columnNames.get(columnIndex).toString().toLowerCase(Locale.ENGLISH);
+                //                        Set<String> entrySet = event.entrySet();
+                //                        for (String entry : entrySet) {
+                //                            if (entry.equalsIgnoreCase(lowerColName)) {
+                //                                result = thisEntry.getValue().toString();
+                //                            }
+                //                        }
+                //                    }
+                //                    if (result != null) {
+                //                        return result;
+                //                    }
+                //                }
         }
         return "";
     }
@@ -598,13 +595,15 @@ public class ChainsawCyclicBufferTableModel extends AbstractTableModel
     public boolean isAddRow(LoggingEventWrapper loggingEventWrapper) {
         Object id = loggingEventWrapper.getLoggingEvent().getProperty(Constants.LOG4J_ID_KEY);
 
-        //only set the property if it doesn't already exist
+        // only set the property if it doesn't already exist
         if (id == null) {
             id = ++uniqueRow;
             loggingEventWrapper.setProperty(Constants.LOG4J_ID_KEY, id.toString());
         }
 
-        loggingEventWrapper.updateColorRuleColors(colorizer.getBackgroundColor(loggingEventWrapper.getLoggingEvent()), colorizer.getForegroundColor(loggingEventWrapper.getLoggingEvent()));
+        loggingEventWrapper.updateColorRuleColors(
+                colorizer.getBackgroundColor(loggingEventWrapper.getLoggingEvent()),
+                colorizer.getForegroundColor(loggingEventWrapper.getLoggingEvent()));
         Rule findRule = colorizer.getFindRule();
         if (findRule != null) {
             loggingEventWrapper.evaluateSearchRule(colorizer.getFindRule());
@@ -646,11 +645,13 @@ public class ChainsawCyclicBufferTableModel extends AbstractTableModel
         return rowAdded;
     }
 
-    private void updateEventMillisDelta(LoggingEventWrapper loggingEventWrapper, LoggingEventWrapper lastLoggingEventWrapper) {
+    private void updateEventMillisDelta(
+            LoggingEventWrapper loggingEventWrapper, LoggingEventWrapper lastLoggingEventWrapper) {
         if (lastLoggingEventWrapper != null) {
-            loggingEventWrapper.setPreviousDisplayedEventTimestamp(lastLoggingEventWrapper.getLoggingEvent().m_timestamp);
+            loggingEventWrapper.setPreviousDisplayedEventTimestamp(
+                    lastLoggingEventWrapper.getLoggingEvent().m_timestamp);
         } else {
-            //delta to same event = 0
+            // delta to same event = 0
             loggingEventWrapper.setPreviousDisplayedEventTimestamp(loggingEventWrapper.getLoggingEvent().m_timestamp);
         }
     }
@@ -669,13 +670,15 @@ public class ChainsawCyclicBufferTableModel extends AbstractTableModel
             for (Object o : loggingEventWrapper.getPropertyKeySet()) {
                 String key = o.toString().toUpperCase();
 
-                //add all keys except the 'log4jid' key (columnNames is all-caps)
+                // add all keys except the 'log4jid' key (columnNames is all-caps)
                 if (!columnNames.contains(key) && !(Constants.LOG4J_ID_KEY.equalsIgnoreCase(key))) {
                     columnNames.add(key);
-                    logger.debug("Adding col '{}', columnNames={}" ,key, columnNames);
-                    fireNewKeyColumnAdded(
-                        new NewKeyEvent(
-                            this, columnNames.indexOf(key), key, loggingEventWrapper.getLoggingEvent().getProperty(key)));
+                    logger.debug("Adding col '{}', columnNames={}", key, columnNames);
+                    fireNewKeyColumnAdded(new NewKeyEvent(
+                            this,
+                            columnNames.indexOf(key),
+                            key,
+                            loggingEventWrapper.getLoggingEvent().getProperty(key)));
                 }
             }
         }
@@ -686,12 +689,12 @@ public class ChainsawCyclicBufferTableModel extends AbstractTableModel
         SwingHelper.invokeOnEDT(() -> {
             if (cyclic) {
                 if (!reachedCapacity) {
-//if we didn't loop and it's the 1st time, insert
+                    // if we didn't loop and it's the 1st time, insert
                     if ((begin + count) < cyclicBufferSize) {
                         fireTableRowsInserted(begin, end);
                     } else {
-//we did loop - insert and then update rows
-//rows are zero-indexed, subtract 1 from cyclicbuffersize for the event notification
+                        // we did loop - insert and then update rows
+                        // rows are zero-indexed, subtract 1 from cyclicbuffersize for the event notification
                         fireTableRowsInserted(begin, cyclicBufferSize - 1);
                         fireTableRowsUpdated(0, cyclicBufferSize - 1);
                         reachedCapacity = true;
@@ -709,7 +712,9 @@ public class ChainsawCyclicBufferTableModel extends AbstractTableModel
     public void fireRowUpdated(int row, boolean checkForNewColumns) {
         LoggingEventWrapper loggingEventWrapper = getRow(row);
         if (loggingEventWrapper != null) {
-            loggingEventWrapper.updateColorRuleColors(colorizer.getBackgroundColor(loggingEventWrapper.getLoggingEvent()), colorizer.getForegroundColor(loggingEventWrapper.getLoggingEvent()));
+            loggingEventWrapper.updateColorRuleColors(
+                    colorizer.getBackgroundColor(loggingEventWrapper.getLoggingEvent()),
+                    colorizer.getForegroundColor(loggingEventWrapper.getLoggingEvent()));
             Rule findRule = colorizer.getFindRule();
             if (findRule != null) {
                 loggingEventWrapper.evaluateSearchRule(colorizer.getFindRule());
@@ -717,15 +722,14 @@ public class ChainsawCyclicBufferTableModel extends AbstractTableModel
 
             fireTableRowsUpdated(row, row);
             if (checkForNewColumns) {
-                //row may have had a column added..if so, make sure a column is added
+                // row may have had a column added..if so, make sure a column is added
                 checkForNewColumn(loggingEventWrapper);
             }
         }
     }
 
     private void fireNewKeyColumnAdded(NewKeyEvent e) {
-        NewKeyListener[] listeners =
-            eventListenerList.getListeners(NewKeyListener.class);
+        NewKeyListener[] listeners = eventListenerList.getListeners(NewKeyListener.class);
 
         for (NewKeyListener listener : listeners) {
             listener.newKeyAdded(e);
@@ -763,7 +767,6 @@ public class ChainsawCyclicBufferTableModel extends AbstractTableModel
         }
 
         return columnIndex < columnNames.size() && super.isCellEditable(rowIndex, columnIndex);
-
     }
 
     /* (non-Javadoc)
@@ -792,8 +795,7 @@ public class ChainsawCyclicBufferTableModel extends AbstractTableModel
      * @see org.apache.log4j.chainsaw.EventContainer#addPropertyChangeListener(java.lang.String, java.beans.PropertyChangeListener)
      */
     @Override
-    public void addPropertyChangeListener(
-        String propertyName, PropertyChangeListener l) {
+    public void addPropertyChangeListener(String propertyName, PropertyChangeListener l) {
         propertySupport.addPropertyChangeListener(propertyName, l);
     }
 
@@ -813,58 +815,56 @@ public class ChainsawCyclicBufferTableModel extends AbstractTableModel
          */
         @Override
         public void propertyChange(PropertyChangeEvent arg0) {
-            Thread thread =
-                new Thread(
-                    () -> {
-                        ProgressMonitor monitor = null;
-
-                        int index = 0;
-
-                        try {
-                            synchronized (mutex) {
-                                monitor =
-                                    new ProgressMonitor(
-                                        null, "Switching models...",
-                                        "Transferring between data structures, please wait...", 0,
-                                        unfilteredList.size() + 1);
-                                monitor.setMillisToDecideToPopup(250);
-                                monitor.setMillisToPopup(100);
-                                logger.debug(
-                                    "Changing Model, isCyclic is now {}", cyclic);
-
-                                List newUnfilteredList;
-                                List newFilteredList;
-
-                                if (cyclic) {
-                                    newUnfilteredList = new CyclicBufferList(cyclicBufferSize);
-                                    newFilteredList = new CyclicBufferList(cyclicBufferSize);
-                                } else {
-                                    newUnfilteredList = new ArrayList(cyclicBufferSize);
-                                    newFilteredList = new ArrayList(cyclicBufferSize);
-                                }
-
-                                for (Object anUnfilteredList : unfilteredList) {
-                                    LoggingEventWrapper loggingEventWrapper = (LoggingEventWrapper) anUnfilteredList;
-                                    newUnfilteredList.add(loggingEventWrapper);
-                                    monitor.setProgress(index++);
-                                }
-
-                                unfilteredList = newUnfilteredList;
-                                filteredList = newFilteredList;
-                            }
-
-                            monitor.setNote("Refiltering...");
-                            reFilter();
+            Thread thread = new Thread(() -> {
+                ProgressMonitor monitor = null;
+
+                int index = 0;
+
+                try {
+                    synchronized (mutex) {
+                        monitor = new ProgressMonitor(
+                                null,
+                                "Switching models...",
+                                "Transferring between data structures, please wait...",
+                                0,
+                                unfilteredList.size() + 1);
+                        monitor.setMillisToDecideToPopup(250);
+                        monitor.setMillisToPopup(100);
+                        logger.debug("Changing Model, isCyclic is now {}", cyclic);
+
+                        List newUnfilteredList;
+                        List newFilteredList;
+
+                        if (cyclic) {
+                            newUnfilteredList = new CyclicBufferList(cyclicBufferSize);
+                            newFilteredList = new CyclicBufferList(cyclicBufferSize);
+                        } else {
+                            newUnfilteredList = new ArrayList(cyclicBufferSize);
+                            newFilteredList = new ArrayList(cyclicBufferSize);
+                        }
 
+                        for (Object anUnfilteredList : unfilteredList) {
+                            LoggingEventWrapper loggingEventWrapper = (LoggingEventWrapper) anUnfilteredList;
+                            newUnfilteredList.add(loggingEventWrapper);
                             monitor.setProgress(index++);
-                        } finally {
-                            if (monitor != null) {
-                                monitor.close();
-                            }
                         }
 
-                        logger.debug("Model Change completed");
-                    });
+                        unfilteredList = newUnfilteredList;
+                        filteredList = newFilteredList;
+                    }
+
+                    monitor.setNote("Refiltering...");
+                    reFilter();
+
+                    monitor.setProgress(index++);
+                } finally {
+                    if (monitor != null) {
+                        monitor.close();
+                    }
+                }
+
+                logger.debug("Model Change completed");
+            });
             thread.setPriority(Thread.MIN_PRIORITY + 1);
             thread.start();
         }
diff --git a/src/main/java/org/apache/log4j/chainsaw/ChainsawEventBatchListener.java b/src/main/java/org/apache/log4j/chainsaw/ChainsawEventBatchListener.java
index 522ca64..dcd5d7f 100644
--- a/src/main/java/org/apache/log4j/chainsaw/ChainsawEventBatchListener.java
+++ b/src/main/java/org/apache/log4j/chainsaw/ChainsawEventBatchListener.java
@@ -2,7 +2,7 @@
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
+ * The ASF licenses this file to you under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
  *
diff --git a/src/main/java/org/apache/log4j/chainsaw/ChainsawStarter.java b/src/main/java/org/apache/log4j/chainsaw/ChainsawStarter.java
index 61a6d7f..153d639 100644
--- a/src/main/java/org/apache/log4j/chainsaw/ChainsawStarter.java
+++ b/src/main/java/org/apache/log4j/chainsaw/ChainsawStarter.java
@@ -1,15 +1,21 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to you under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 package org.apache.log4j.chainsaw;
 
-import org.apache.commons.configuration2.AbstractConfiguration;
-import org.apache.log4j.chainsaw.logui.LogUI;
-import org.apache.log4j.chainsaw.osx.OSXIntegration;
-import org.apache.log4j.chainsaw.prefs.SettingsManager;
-import org.apache.log4j.chainsaw.components.splash.SplashViewer;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-import org.apache.logging.log4j.core.LoggerContext;
-
-import javax.swing.*;
 import java.awt.*;
 import java.security.AllPermission;
 import java.security.CodeSource;
@@ -17,6 +23,15 @@ import java.security.PermissionCollection;
 import java.security.Permissions;
 import java.security.Policy;
 import java.util.Locale;
+import javax.swing.*;
+import org.apache.commons.configuration2.AbstractConfiguration;
+import org.apache.log4j.chainsaw.components.splash.SplashViewer;
+import org.apache.log4j.chainsaw.logui.LogUI;
+import org.apache.log4j.chainsaw.osx.OSXIntegration;
+import org.apache.log4j.chainsaw.prefs.SettingsManager;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.core.LoggerContext;
 
 public class ChainsawStarter {
     private static final Logger logger = LogManager.getLogger(ChainsawStarter.class);
@@ -38,26 +53,26 @@ public class ChainsawStarter {
             if (lookAndFeelClassName == null || lookAndFeelClassName.trim().isEmpty()) {
                 String osName = System.getProperty("os.name");
                 if (osName.toLowerCase(Locale.ENGLISH).startsWith("mac")) {
-                    //no need to assign look and feel
+                    // no need to assign look and feel
                 } else if (osName.toLowerCase(Locale.ENGLISH).startsWith("windows")) {
                     lookAndFeelClassName = "com.sun.java.swing.plaf.windows.WindowsLookAndFeel";
-                    configuration.setProperty("lookAndFeelClassName",lookAndFeelClassName);
+                    configuration.setProperty("lookAndFeelClassName", lookAndFeelClassName);
                 } else if (osName.toLowerCase(Locale.ENGLISH).startsWith("linux")) {
                     lookAndFeelClassName = "com.sun.java.swing.plaf.gtk.GTKLookAndFeel";
-                    configuration.setProperty("lookAndFeelClassName",lookAndFeelClassName);
+                    configuration.setProperty("lookAndFeelClassName", lookAndFeelClassName);
                 }
             }
 
             if (lookAndFeelClassName != null && !(lookAndFeelClassName.trim().isEmpty())) {
-                try{
+                try {
                     UIManager.setLookAndFeel(lookAndFeelClassName);
-                } catch (Exception ex){
+                } catch (Exception ex) {
                     logger.error(ex);
                 }
-            }else{
-                try{
+            } else {
+                try {
                     UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
-                } catch (Exception ex){
+                } catch (Exception ex) {
                     logger.error(ex);
                 }
             }
@@ -104,7 +119,7 @@ public class ChainsawStarter {
          * the Plugins directory can find them (this is particularly
          * important for the Web start version of Chainsaw
          */
-        //configuration initialized here
+        // configuration initialized here
 
         Thread.setDefaultUncaughtExceptionHandler((t, e) -> {
             logger.error("Uncaught exception in thread {}", t.getName(), e);
@@ -117,6 +132,5 @@ public class ChainsawStarter {
         EventQueue.invokeLater(logUI::buildChainsawLogPanel);
 
         logger.info("SecurityManager is now: {}", System.getSecurityManager());
-
     }
 }
diff --git a/src/main/java/org/apache/log4j/chainsaw/ChainsawStatusBar.java b/src/main/java/org/apache/log4j/chainsaw/ChainsawStatusBar.java
index d872600..05b2a28 100644
--- a/src/main/java/org/apache/log4j/chainsaw/ChainsawStatusBar.java
+++ b/src/main/java/org/apache/log4j/chainsaw/ChainsawStatusBar.java
@@ -2,7 +2,7 @@
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
+ * The ASF licenses this file to you under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
  *
@@ -14,19 +14,14 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package org.apache.log4j.chainsaw;
 
-import org.apache.commons.configuration2.AbstractConfiguration;
-import org.apache.commons.configuration2.event.ConfigurationEvent;
-import org.apache.log4j.chainsaw.icons.ChainsawIcons;
-import org.apache.log4j.chainsaw.logui.LogUI;
-
-import javax.swing.*;
-import javax.swing.border.Border;
 import java.awt.*;
 import java.text.NumberFormat;
-
+import javax.swing.*;
+import javax.swing.border.Border;
+import org.apache.log4j.chainsaw.icons.ChainsawIcons;
+import org.apache.log4j.chainsaw.logui.LogUI;
 
 /**
  * A general purpose status bar for all Frame windows
@@ -46,24 +41,22 @@ public class ChainsawStatusBar extends JPanel {
     private volatile long lastReceivedConnection = System.currentTimeMillis();
     private final Thread connectionThread;
     private final Icon pausedIcon = new ImageIcon(ChainsawIcons.PAUSE);
-    private final Icon netConnectIcon =
-        new ImageIcon(ChainsawIcons.ANIM_NET_CONNECT);
+    private final Icon netConnectIcon = new ImageIcon(ChainsawIcons.ANIM_NET_CONNECT);
     private final NumberFormat nf = NumberFormat.getNumberInstance();
     private final Border statusBarComponentBorder =
-        BorderFactory.createLineBorder(statusMsg.getBackground().darker());
+            BorderFactory.createLineBorder(statusMsg.getBackground().darker());
     private final LogUI logUI;
 
     public ChainsawStatusBar(LogUI logUI, ApplicationPreferenceModel applicationPreferenceModel) {
         setLayout(new GridBagLayout());
         this.logUI = logUI;
 
-        applicationPreferenceModel.addEventListener(
-            evt -> {
-                if (evt.getPropertyName().equals(ApplicationPreferenceModel.STATUS_BAR_VISIBLE)) {
-                    boolean value = (Boolean) evt.getPropertyValue();
-                    setVisible(value);
-                }
-            });
+        applicationPreferenceModel.addEventListener(evt -> {
+            if (evt.getPropertyName().equals(ApplicationPreferenceModel.STATUS_BAR_VISIBLE)) {
+                boolean value = (Boolean) evt.getPropertyValue();
+                setVisible(value);
+            }
+        });
 
         nf.setMaximumFractionDigits(0);
         nf.setMinimumFractionDigits(0);
@@ -75,59 +68,52 @@ public class ChainsawStatusBar extends JPanel {
         statusMsgPanel.setBorder(statusBarComponentBorder);
 
         pausedLabel.setBorder(statusBarComponentBorder);
-        pausedLabel.setMinimumSize(
-            new Dimension(pausedIcon.getIconWidth(), pausedIcon.getIconHeight()));
+        pausedLabel.setMinimumSize(new Dimension(pausedIcon.getIconWidth(), pausedIcon.getIconHeight()));
 
-        pausedLabel.setToolTipText(
-            "Shows whether the current Log panel is paused or not");
+        pausedLabel.setToolTipText("Shows whether the current Log panel is paused or not");
 
         receivedEventLabel.setBorder(statusBarComponentBorder);
         receivedEventLabel.setToolTipText(
-            "Indicates whether Chainsaw is receiving events, and how fast it is processing them");
-        receivedEventLabel.setMinimumSize(
-            new Dimension(
-                receivedEventLabel.getFontMetrics(receivedEventLabel.getFont())
-                    .stringWidth("99999999999.9/s") + 5,
+                "Indicates whether Chainsaw is receiving events, and how fast it is processing them");
+        receivedEventLabel.setMinimumSize(new Dimension(
+                receivedEventLabel.getFontMetrics(receivedEventLabel.getFont()).stringWidth("99999999999.9/s") + 5,
                 (int) receivedEventLabel.getPreferredSize().getHeight()));
 
         eventCountLabel.setBorder(statusBarComponentBorder);
         eventCountLabel.setToolTipText("<# viewable events>:<# total events>");
-        eventCountLabel.setMinimumSize(
-            new Dimension(
-                eventCountLabel.getFontMetrics(eventCountLabel.getFont())
-                    .stringWidth("Filtered/Total: 999999999999:999999999999") + 5,
+        eventCountLabel.setMinimumSize(new Dimension(
+                eventCountLabel
+                                .getFontMetrics(eventCountLabel.getFont())
+                                .stringWidth("Filtered/Total: 999999999999:999999999999")
+                        + 5,
                 (int) eventCountLabel.getPreferredSize().getHeight()));
 
         searchMatchLabel.setBorder(statusBarComponentBorder);
         searchMatchLabel.setToolTipText("<# viewable events>:<# total events>");
-        searchMatchLabel.setMinimumSize(
-            new Dimension(
-                searchMatchLabel.getFontMetrics(eventCountLabel.getFont()).stringWidth("Find matches: 999999999999") + 5,
+        searchMatchLabel.setMinimumSize(new Dimension(
+                searchMatchLabel.getFontMetrics(eventCountLabel.getFont()).stringWidth("Find matches: 999999999999")
+                        + 5,
                 (int) searchMatchLabel.getPreferredSize().getHeight()));
 
         receivedConnectionlabel.setBorder(statusBarComponentBorder);
-        receivedConnectionlabel.setToolTipText(
-            "Indicates whether Chainsaw has received a remote connection");
-        receivedConnectionlabel.setMinimumSize(
-            new Dimension(
-                netConnectIcon.getIconWidth() + 4,
-                (int) receivedConnectionlabel.getPreferredSize().getHeight()));
+        receivedConnectionlabel.setToolTipText("Indicates whether Chainsaw has received a remote connection");
+        receivedConnectionlabel.setMinimumSize(new Dimension(netConnectIcon.getIconWidth() + 4, (int)
+                receivedConnectionlabel.getPreferredSize().getHeight()));
 
         lineSelectionLabel.setBorder(statusBarComponentBorder);
-        lineSelectionLabel.setMinimumSize(
-            new Dimension(
-                lineSelectionLabel.getFontMetrics(lineSelectionLabel.getFont())
-                    .stringWidth("999999999"),
+        lineSelectionLabel.setMinimumSize(new Dimension(
+                lineSelectionLabel.getFontMetrics(lineSelectionLabel.getFont()).stringWidth("999999999"),
                 (int) lineSelectionLabel.getPreferredSize().getHeight()));
-        lineSelectionLabel.setToolTipText(
-            "The current line # selected");
-
-        JComponent[] toFix =
-            new JComponent[]{
-                searchMatchLabel, eventCountLabel,
-                receivedConnectionlabel, lineSelectionLabel, receivedEventLabel,
-                pausedLabel
-            };
+        lineSelectionLabel.setToolTipText("The current line # selected");
+
+        JComponent[] toFix = new JComponent[] {
+            searchMatchLabel,
+            eventCountLabel,
+            receivedConnectionlabel,
+            lineSelectionLabel,
+            receivedEventLabel,
+            pausedLabel
+        };
 
         for (JComponent aToFix : toFix) {
             aToFix.setPreferredSize(aToFix.getMinimumSize());
@@ -181,33 +167,28 @@ public class ChainsawStatusBar extends JPanel {
 
         add(pausedLabel, c);
 
-        connectionThread =
-            new Thread(
-                () -> {
-                    while (true) {
-                        try {
-                            Thread.sleep(DELAY_PERIOD);
-                        } catch (InterruptedException e) {
-                        }
-
-                        Icon icon = null;
-
-                        if (
-                            (System.currentTimeMillis() - lastReceivedConnection) < DELAY_PERIOD) {
-                            icon = netConnectIcon;
-                        }
-
-                        final Icon theIcon = icon;
-                        SwingUtilities.invokeLater(
-                            () -> receivedConnectionlabel.setIcon(theIcon));
-                    }
-                });
+        connectionThread = new Thread(() -> {
+            while (true) {
+                try {
+                    Thread.sleep(DELAY_PERIOD);
+                } catch (InterruptedException e) {
+                }
+
+                Icon icon = null;
+
+                if ((System.currentTimeMillis() - lastReceivedConnection) < DELAY_PERIOD) {
+                    icon = netConnectIcon;
+                }
+
+                final Icon theIcon = icon;
+                SwingUtilities.invokeLater(() -> receivedConnectionlabel.setIcon(theIcon));
+            }
+        });
         connectionThread.start();
     }
 
     void setDataRate(final double dataRate) {
-        SwingUtilities.invokeLater(
-            () -> receivedEventLabel.setText(nf.format(dataRate) + "/s"));
+        SwingUtilities.invokeLater(() -> receivedEventLabel.setText(nf.format(dataRate) + "/s"));
     }
 
     /**
@@ -232,25 +213,21 @@ public class ChainsawStatusBar extends JPanel {
      */
     void setPaused(final boolean isPaused, String tabName) {
         if (tabName.equals(logUI.getActiveTabName())) {
-            Runnable runnable =
-                () -> {
-                    pausedLabel.setIcon(isPaused ? pausedIcon : null);
-                    pausedLabel.setToolTipText(
-                        isPaused ? "This Log panel is currently paused"
-                            : "This Log panel is not paused");
-                };
+            Runnable runnable = () -> {
+                pausedLabel.setIcon(isPaused ? pausedIcon : null);
+                pausedLabel.setToolTipText(
+                        isPaused ? "This Log panel is currently paused" : "This Log panel is not paused");
+            };
             SwingUtilities.invokeLater(runnable);
         }
     }
 
-    public void setSelectedLine(
-        final int selectedLine, final int lineCount, final int total, String tabName) {
+    public void setSelectedLine(final int selectedLine, final int lineCount, final int total, String tabName) {
         if (tabName.equals(logUI.getActiveTabName())) {
-            SwingUtilities.invokeLater(
-                () -> {
-                    lineSelectionLabel.setText(selectedLine + "");
-                    eventCountLabel.setText("Filtered/Total: " + lineCount + ":" + total);
-                });
+            SwingUtilities.invokeLater(() -> {
+                lineSelectionLabel.setText(selectedLine + "");
+                eventCountLabel.setText("Filtered/Total: " + lineCount + ":" + total);
+            });
         }
     }
 
@@ -265,19 +242,16 @@ public class ChainsawStatusBar extends JPanel {
     }
 
     public void setNothingSelected() {
-        SwingUtilities.invokeLater(
-            () -> lineSelectionLabel.setText(""));
+        SwingUtilities.invokeLater(() -> lineSelectionLabel.setText(""));
     }
 
     void clear() {
         setMessage(DEFAULT_MSG);
         setNothingSelected();
-        SwingUtilities.invokeLater(
-            () -> receivedEventLabel.setText(""));
+        SwingUtilities.invokeLater(() -> receivedEventLabel.setText(""));
     }
 
     public void setMessage(final String msg) {
-        SwingUtilities.invokeLater(
-            () -> statusMsg.setText(" " + msg));
+        SwingUtilities.invokeLater(() -> statusMsg.setText(" " + msg));
     }
 }
diff --git a/src/main/java/org/apache/log4j/chainsaw/ChainsawToolBarAndMenus.java b/src/main/java/org/apache/log4j/chainsaw/ChainsawToolBarAndMenus.java
index 9792426..545985e 100644
--- a/src/main/java/org/apache/log4j/chainsaw/ChainsawToolBarAndMenus.java
+++ b/src/main/java/org/apache/log4j/chainsaw/ChainsawToolBarAndMenus.java
@@ -2,7 +2,7 @@
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
+ * The ASF licenses this file to you under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
  *
@@ -16,8 +16,13 @@
  */
 package org.apache.log4j.chainsaw;
 
-import org.apache.commons.configuration2.AbstractConfiguration;
-import org.apache.commons.configuration2.event.ConfigurationEvent;
+import java.awt.*;
+import java.awt.event.ActionEvent;
+import java.awt.event.InputEvent;
+import java.awt.event.KeyEvent;
+import javax.swing.*;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
 import org.apache.log4j.chainsaw.components.elements.SmallButton;
 import org.apache.log4j.chainsaw.components.elements.SmallToggleButton;
 import org.apache.log4j.chainsaw.components.logpanel.LogPanel;
@@ -28,14 +33,6 @@ import org.apache.log4j.chainsaw.icons.ChainsawIcons;
 import org.apache.log4j.chainsaw.logui.LogUI;
 import org.apache.log4j.chainsaw.osx.OSXIntegration;
 
-import javax.swing.*;
-import javax.swing.event.ChangeEvent;
-import javax.swing.event.ChangeListener;
-import java.awt.*;
-import java.awt.event.ActionEvent;
-import java.awt.event.InputEvent;
-import java.awt.event.KeyEvent;
-
 /**
  * Encapsulates the full Toolbar, and menus and all the actions that can be performed from it.
  *
@@ -117,131 +114,135 @@ public class ChainsawToolBarAndMenus implements ChangeListener {
         createMenuBar();
         createToolbar();
 
-        applicationPreferenceModel.addEventListener(
-            evt -> {
-                if (evt.getPropertyName().equals(ApplicationPreferenceModel.TOOLBAR_VISIBLE)) {
-                    boolean value = (Boolean) evt.getPropertyValue();
-                    toolbar.setVisible(value);
-                }
-            });
+        applicationPreferenceModel.addEventListener(evt -> {
+            if (evt.getPropertyName().equals(ApplicationPreferenceModel.TOOLBAR_VISIBLE)) {
+                boolean value = (Boolean) evt.getPropertyValue();
+                toolbar.setVisible(value);
+            }
+        });
         boolean showToolbar = applicationPreferenceModel.isToolbarVisible();
         toolbar.setVisible(showToolbar);
 
-        logPanelSpecificActions =
-            new Action[]{
-                pauseAction, findNextColorizedEventAction, findPreviousColorizedEventAction,
-                findNextMarkerAction, findPreviousMarkerAction,
-                toggleMarkerAction, clearAllMarkersAction, scrollToTopAction, clearAction,
-                fileMenu.getFileSaveAction(), toggleDetailPaneAction,
-                showPreferencesAction, showColorPanelAction, undockAction,
-                toggleLogTreeAction, toggleScrollToBottomAction, changeModelAction,
-            };
-
-            applicationPreferenceModel.addEventListener(
-            evt -> {
-                if( evt.getPropertyName().equals(ApplicationPreferenceModel.STATUS_BAR_VISIBLE) ){
-                    boolean value = (Boolean) evt.getPropertyValue();
-                    toggleStatusBarCheck.setSelected(value);
-                }
-            });
-
-        applicationPreferenceModel.addEventListener(
-            evt -> {
-                if( evt.getPropertyName().equals(ApplicationPreferenceModel.RECEIVERS_VISIBLE) ){
-                    boolean value = (Boolean) evt.getPropertyValue();
-                    showReceiversButton.setSelected(value);
-                    toggleShowReceiversCheck.setSelected(value);
-                }
-            });
+        logPanelSpecificActions = new Action[] {
+            pauseAction,
+            findNextColorizedEventAction,
+            findPreviousColorizedEventAction,
+            findNextMarkerAction,
+            findPreviousMarkerAction,
+            toggleMarkerAction,
+            clearAllMarkersAction,
+            scrollToTopAction,
+            clearAction,
+            fileMenu.getFileSaveAction(),
+            toggleDetailPaneAction,
+            showPreferencesAction,
+            showColorPanelAction,
+            undockAction,
+            toggleLogTreeAction,
+            toggleScrollToBottomAction,
+            changeModelAction,
+        };
+
+        applicationPreferenceModel.addEventListener(evt -> {
+            if (evt.getPropertyName().equals(ApplicationPreferenceModel.STATUS_BAR_VISIBLE)) {
+                boolean value = (Boolean) evt.getPropertyValue();
+                toggleStatusBarCheck.setSelected(value);
+            }
+        });
+
+        applicationPreferenceModel.addEventListener(evt -> {
+            if (evt.getPropertyName().equals(ApplicationPreferenceModel.RECEIVERS_VISIBLE)) {
+                boolean value = (Boolean) evt.getPropertyValue();
+                showReceiversButton.setSelected(value);
+                toggleShowReceiversCheck.setSelected(value);
+            }
+        });
     }
 
     private Action createChangeModelAction() {
-        Action action =
-            new AbstractAction("Use Cyclic", new ImageIcon(ChainsawIcons.REFRESH)) {
-                public void actionPerformed(ActionEvent arg0) {
-                    LogPanel logPanel = logui.getCurrentLogPanel();
-                    logPanel.toggleCyclic();
-                    scanState();
-                }
-            };
+        Action action = new AbstractAction("Use Cyclic", new ImageIcon(ChainsawIcons.REFRESH)) {
+            public void actionPerformed(ActionEvent arg0) {
+                LogPanel logPanel = logui.getCurrentLogPanel();
+                logPanel.toggleCyclic();
+                scanState();
+            }
+        };
 
-        action.putValue(
-            Action.SHORT_DESCRIPTION, "Changes between Cyclic and Unlimited mode.");
+        action.putValue(Action.SHORT_DESCRIPTION, "Changes between Cyclic and Unlimited mode.");
 
         return action;
     }
 
     private Action createToggleLogTreeAction() {
-        Action action =
-            new AbstractAction("Toggle the Logger Tree Pane") {
-                public void actionPerformed(ActionEvent e) {
-                    if (logui.getCurrentLogPanel() != null) {
-                        logui.getCurrentLogPanel().toggleLogTreeVisible();
-                    }
+        Action action = new AbstractAction("Toggle the Logger Tree Pane") {
+            public void actionPerformed(ActionEvent e) {
+                if (logui.getCurrentLogPanel() != null) {
+                    logui.getCurrentLogPanel().toggleLogTreeVisible();
                 }
-            };
+            }
+        };
 
         action.putValue(Action.SHORT_DESCRIPTION, "Toggles the Logger Tree Pane");
         action.putValue("enabled", Boolean.TRUE);
         action.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_T);
         action.putValue(
-            Action.ACCELERATOR_KEY,
-            KeyStroke.getKeyStroke(KeyEvent.VK_T, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
-        action.putValue(
-            Action.SMALL_ICON, new ImageIcon(ChainsawIcons.WINDOW_ICON));
+                Action.ACCELERATOR_KEY,
+                KeyStroke.getKeyStroke(
+                        KeyEvent.VK_T, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
+        action.putValue(Action.SMALL_ICON, new ImageIcon(ChainsawIcons.WINDOW_ICON));
 
         return action;
     }
 
     private Action createScrollToBottomAction() {
-        Action action =
-            new AbstractAction("Toggle Scroll to Bottom") {
-                public void actionPerformed(ActionEvent e) {
-                    if (logui.getCurrentLogPanel() != null) {
-                        logui.getCurrentLogPanel().toggleScrollToBottom();
-                    }
+        Action action = new AbstractAction("Toggle Scroll to Bottom") {
+            public void actionPerformed(ActionEvent e) {
+                if (logui.getCurrentLogPanel() != null) {
+                    logui.getCurrentLogPanel().toggleScrollToBottom();
                 }
-            };
+            }
+        };
 
         action.putValue(Action.SHORT_DESCRIPTION, "Toggles Scroll to Bottom");
         action.putValue("enabled", Boolean.TRUE);
         action.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_B);
         action.putValue(
-            Action.ACCELERATOR_KEY,
-            KeyStroke.getKeyStroke(KeyEvent.VK_B, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
-        action.putValue(
-            Action.SMALL_ICON, new ImageIcon(ChainsawIcons.SCROLL_TO_BOTTOM));
+                Action.ACCELERATOR_KEY,
+                KeyStroke.getKeyStroke(
+                        KeyEvent.VK_B, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
+        action.putValue(Action.SMALL_ICON, new ImageIcon(ChainsawIcons.SCROLL_TO_BOTTOM));
 
         return action;
     }
 
     private Action createScrollToTopAction() {
-        Action action =
-            new AbstractAction("Scroll to top") {
-                public void actionPerformed(ActionEvent e) {
-                    if (logui.getCurrentLogPanel() != null) {
-                        logui.getCurrentLogPanel().scrollToTop();
-                    }
+        Action action = new AbstractAction("Scroll to top") {
+            public void actionPerformed(ActionEvent e) {
+                if (logui.getCurrentLogPanel() != null) {
+                    logui.getCurrentLogPanel().scrollToTop();
                 }
-            };
+            }
+        };
 
         action.putValue(Action.SHORT_DESCRIPTION, "Scroll to top");
         action.putValue("enabled", Boolean.TRUE);
         action.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_T);
-        action.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_A, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
+        action.putValue(
+                Action.ACCELERATOR_KEY,
+                KeyStroke.getKeyStroke(
+                        KeyEvent.VK_A, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
 
         return action;
     }
 
     private Action createFindNextMarkerAction() {
-        Action action =
-            new AbstractAction("Find next marker") {
-                public void actionPerformed(ActionEvent e) {
-                    if (logui.getCurrentLogPanel() != null) {
-                        logui.getCurrentLogPanel().findNextMarker();
-                    }
+        Action action = new AbstractAction("Find next marker") {
+            public void actionPerformed(ActionEvent e) {
+                if (logui.getCurrentLogPanel() != null) {
+                    logui.getCurrentLogPanel().findNextMarker();
                 }
-            };
+            }
+        };
 
         action.putValue(Action.SHORT_DESCRIPTION, "Find the next marker from the current location");
         action.putValue("enabled", Boolean.TRUE);
@@ -252,14 +253,13 @@ public class ChainsawToolBarAndMenus implements ChangeListener {
     }
 
     private Action createFindPreviousMarkerAction() {
-        Action action =
-            new AbstractAction("Find previous marker") {
-                public void actionPerformed(ActionEvent e) {
-                    if (logui.getCurrentLogPanel() != null) {
-                        logui.getCurrentLogPanel().findPreviousMarker();
-                    }
+        Action action = new AbstractAction("Find previous marker") {
+            public void actionPerformed(ActionEvent e) {
+                if (logui.getCurrentLogPanel() != null) {
+                    logui.getCurrentLogPanel().findPreviousMarker();
                 }
-            };
+            }
+        };
 
         action.putValue(Action.SHORT_DESCRIPTION, "Find the previous marker from the current location");
         action.putValue("enabled", Boolean.TRUE);
@@ -270,39 +270,41 @@ public class ChainsawToolBarAndMenus implements ChangeListener {
     }
 
     private Action createToggleMarkerAction() {
-        Action action =
-            new AbstractAction("Toggle marker") {
-                public void actionPerformed(ActionEvent e) {
-                    if (logui.getCurrentLogPanel() != null) {
-                        logui.getCurrentLogPanel().toggleMarker();
-                    }
+        Action action = new AbstractAction("Toggle marker") {
+            public void actionPerformed(ActionEvent e) {
+                if (logui.getCurrentLogPanel() != null) {
+                    logui.getCurrentLogPanel().toggleMarker();
                 }
-            };
+            }
+        };
 
         action.putValue(Action.SHORT_DESCRIPTION, "Toggle marker for selected row");
         action.putValue("enabled", Boolean.TRUE);
         action.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_T);
-        action.putValue(Action.ACCELERATOR_KEY,
-            KeyStroke.getKeyStroke(KeyEvent.VK_F2, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
+        action.putValue(
+                Action.ACCELERATOR_KEY,
+                KeyStroke.getKeyStroke(
+                        KeyEvent.VK_F2, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
 
         return action;
     }
 
     private Action createClearAllMarkersAction() {
-        Action action =
-            new AbstractAction("Clear all markers") {
-                public void actionPerformed(ActionEvent e) {
-                    if (logui.getCurrentLogPanel() != null) {
-                        logui.getCurrentLogPanel().clearAllMarkers();
-                    }
+        Action action = new AbstractAction("Clear all markers") {
+            public void actionPerformed(ActionEvent e) {
+                if (logui.getCurrentLogPanel() != null) {
+                    logui.getCurrentLogPanel().clearAllMarkers();
                 }
-            };
+            }
+        };
 
         action.putValue(Action.SHORT_DESCRIPTION, "Removes all markers");
         action.putValue("enabled", Boolean.TRUE);
         action.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_R);
-        action.putValue(Action.ACCELERATOR_KEY,
-            KeyStroke.getKeyStroke(KeyEvent.VK_F2, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask() | InputEvent.SHIFT_MASK));
+        action.putValue(
+                Action.ACCELERATOR_KEY,
+                KeyStroke.getKeyStroke(
+                        KeyEvent.VK_F2, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask() | InputEvent.SHIFT_MASK));
 
         return action;
     }
@@ -319,28 +321,28 @@ public class ChainsawToolBarAndMenus implements ChangeListener {
         return menuBar;
     }
 
-    public  JToolBar getToolbar() {
+    public JToolBar getToolbar() {
         return toolbar;
     }
 
     private Action createClearAction() {
-        final Action action =
-            new AbstractAction("Clear") {
-                public void actionPerformed(ActionEvent e) {
-                    LogPanel logPanel = logui.getCurrentLogPanel();
-
-                    if (logPanel == null) {
-                        return;
-                    }
+        final Action action = new AbstractAction("Clear") {
+            public void actionPerformed(ActionEvent e) {
+                LogPanel logPanel = logui.getCurrentLogPanel();
 
-                    logPanel.clearEvents();
+                if (logPanel == null) {
+                    return;
                 }
-            };
+
+                logPanel.clearEvents();
+            }
+        };
 
         action.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_C);
         action.putValue(
-            Action.ACCELERATOR_KEY,
-            KeyStroke.getKeyStroke(KeyEvent.VK_BACK_SPACE, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
+                Action.ACCELERATOR_KEY,
+                KeyStroke.getKeyStroke(
+                        KeyEvent.VK_BACK_SPACE, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
         action.putValue(Action.SHORT_DESCRIPTION, "Removes all the events from the current view");
         action.putValue(Action.SMALL_ICON, new ImageIcon(ChainsawIcons.DELETE));
 
@@ -348,17 +350,16 @@ public class ChainsawToolBarAndMenus implements ChangeListener {
     }
 
     private Action toggleWelcomeVisibleAction() {
-        final Action action =
-            new AbstractAction() {
-                public void actionPerformed(ActionEvent e) {
-                    toggleWelcomeVisibleAction.putValue(Action.NAME, "Welcome tab");
-                    if (menuShowWelcome.isSelected()) {
-                        logui.addWelcomePanel();
-                    } else {
-                        logui.removeWelcomePanel();
-                    }
+        final Action action = new AbstractAction() {
+            public void actionPerformed(ActionEvent e) {
+                toggleWelcomeVisibleAction.putValue(Action.NAME, "Welcome tab");
+                if (menuShowWelcome.isSelected()) {
+                    logui.addWelcomePanel();
+                } else {
+                    logui.removeWelcomePanel();
                 }
-            };
+            }
+        };
 
         action.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke("F1"));
         action.putValue(Action.SHORT_DESCRIPTION, "Toggles the Welcome tab");
@@ -370,8 +371,7 @@ public class ChainsawToolBarAndMenus implements ChangeListener {
 
     private void createMenuBar() {
         JMenuItem menuItemUseRightMouse =
-            new JMenuItem(
-                "Other options available via panel's right mouse button popup menu");
+                new JMenuItem("Other options available via panel's right mouse button popup menu");
         menuItemUseRightMouse.setEnabled(false);
 
         viewMenu.setMnemonic('V');
@@ -383,19 +383,20 @@ public class ChainsawToolBarAndMenus implements ChangeListener {
 
         JCheckBoxMenuItem pause = new JCheckBoxMenuItem(pauseAction);
         JMenuItem menuPrefs = new JMenuItem(showPreferencesAction);
-        menuPrefs.setText(showPreferencesAction.getValue(Action.SHORT_DESCRIPTION).toString());
+        menuPrefs.setText(
+                showPreferencesAction.getValue(Action.SHORT_DESCRIPTION).toString());
 
-        JMenuItem menuCustomExpressionPanel =new JMenuItem(customExpressionPanelAction);
-        menuCustomExpressionPanel.setText(customExpressionPanelAction.getValue(Action.SHORT_DESCRIPTION).toString());
+        JMenuItem menuCustomExpressionPanel = new JMenuItem(customExpressionPanelAction);
+        menuCustomExpressionPanel.setText(
+                customExpressionPanelAction.getValue(Action.SHORT_DESCRIPTION).toString());
 
         JMenuItem menuShowColor = new JMenuItem(showColorPanelAction);
         menuShowColor.setText(
-            showColorPanelAction.getValue(Action.SHORT_DESCRIPTION).toString());
+                showColorPanelAction.getValue(Action.SHORT_DESCRIPTION).toString());
 
         JMenuItem menuUndock = new JMenuItem(undockAction);
 
-        JMenuItem showAppPrefs =
-            new JMenuItem("Show Application-wide Preferences...");
+        JMenuItem showAppPrefs = new JMenuItem("Show Application-wide Preferences...");
 
         showAppPrefs.addActionListener(e -> logui.showApplicationPreferences());
 
@@ -411,13 +412,12 @@ public class ChainsawToolBarAndMenus implements ChangeListener {
 
         toggleScrollToBottomMenuItem.setAction(toggleScrollToBottomAction);
 
-        final Action toggleStatusBarAction =
-            new AbstractAction("Show Status bar") {
-                public void actionPerformed(ActionEvent arg0) {
-                    boolean isSelected = toggleStatusBarCheck.isSelected();
-                    applicationPreferenceModel.setStatusBarVisible(isSelected);
-                }
-            };
+        final Action toggleStatusBarAction = new AbstractAction("Show Status bar") {
+            public void actionPerformed(ActionEvent arg0) {
+                boolean isSelected = toggleStatusBarCheck.isSelected();
+                applicationPreferenceModel.setStatusBarVisible(isSelected);
+            }
+        };
 
         toggleStatusBarAction.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_B);
         toggleStatusBarCheck.setAction(toggleStatusBarAction);
@@ -470,15 +470,13 @@ public class ChainsawToolBarAndMenus implements ChangeListener {
         about.setMnemonic('A');
         about.addActionListener(e -> logui.showAboutBox());
 
-        Action startTutorial =
-            new AbstractAction("Tutorial...", new ImageIcon(ChainsawIcons.HELP)) {
-                public void actionPerformed(ActionEvent e) {
-                    logui.tutorialFrame.setupTutorial();
-                }
-            };
+        Action startTutorial = new AbstractAction("Tutorial...", new ImageIcon(ChainsawIcons.HELP)) {
+            public void actionPerformed(ActionEvent e) {
+                logui.tutorialFrame.setupTutorial();
+            }
+        };
 
-        startTutorial.putValue(
-            Action.SHORT_DESCRIPTION, "Starts the tutorial process");
+        startTutorial.putValue(Action.SHORT_DESCRIPTION, "Starts the tutorial process");
         helpMenu.add(startTutorial);
 
         JMenu receiverHelp = new JMenu("Receiver JavaDoc");
@@ -500,41 +498,37 @@ public class ChainsawToolBarAndMenus implements ChangeListener {
     }
 
     private Action createPauseAction() {
-        final Action action =
-            new AbstractAction("Pause") {
-                public void actionPerformed(ActionEvent evt) {
-                    LogPanel logPanel = logui.getCurrentLogPanel();
-
-                    if (logPanel == null) {
-                        return;
-                    }
+        final Action action = new AbstractAction("Pause") {
+            public void actionPerformed(ActionEvent evt) {
+                LogPanel logPanel = logui.getCurrentLogPanel();
 
-                    logPanel.setPaused(!logPanel.isPaused());
-                    scanState();
+                if (logPanel == null) {
+                    return;
                 }
-            };
+
+                logPanel.setPaused(!logPanel.isPaused());
+                scanState();
+            }
+        };
 
         action.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_P);
         action.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke("F12"));
-        action.putValue(
-            Action.SHORT_DESCRIPTION,
-            "Causes incoming events for this tab to be discarded");
+        action.putValue(Action.SHORT_DESCRIPTION, "Causes incoming events for this tab to be discarded");
         action.putValue(Action.SMALL_ICON, new ImageIcon(ChainsawIcons.PAUSE));
 
         return action;
     }
 
     private Action createShowPreferencesAction() {
-        Action showPreferences =
-            new AbstractAction("", ChainsawIcons.ICON_PREFERENCES) {
-                public void actionPerformed(ActionEvent arg0) {
-                    LogPanel logPanel = logui.getCurrentLogPanel();
-
-                    if (logPanel != null) {
-                        logPanel.showPreferences();
-                    }
+        Action showPreferences = new AbstractAction("", ChainsawIcons.ICON_PREFERENCES) {
+            public void actionPerformed(ActionEvent arg0) {
+                LogPanel logPanel = logui.getCurrentLogPanel();
+
+                if (logPanel != null) {
+                    logPanel.showPreferences();
                 }
-            };
+            }
+        };
 
         showPreferences.putValue(Action.SHORT_DESCRIPTION, "Tab Preferences...");
 
@@ -548,12 +542,11 @@ public class ChainsawToolBarAndMenus implements ChangeListener {
         dialog.setLocationRelativeTo(null);
         dialog.pack();
 
-        Action createExpressionPanel =
-            new AbstractAction("", ChainsawIcons.ICON_HELP) {
-                public void actionPerformed(ActionEvent arg0) {
-                    LogPanel.centerAndSetVisible(dialog);
-                }
-            };
+        Action createExpressionPanel = new AbstractAction("", ChainsawIcons.ICON_HELP) {
+            public void actionPerformed(ActionEvent arg0) {
+                LogPanel.centerAndSetVisible(dialog);
+            }
+        };
 
         createExpressionPanel.putValue(Action.SHORT_DESCRIPTION, "Create tab from expression...   ");
 
@@ -562,16 +555,15 @@ public class ChainsawToolBarAndMenus implements ChangeListener {
     }
 
     private Action createShowColorPanelAction() {
-        Action showColorPanel =
-            new AbstractAction("", ChainsawIcons.ICON_PREFERENCES) {
-                public void actionPerformed(ActionEvent arg0) {
-                    LogPanel logPanel = logui.getCurrentLogPanel();
-
-                    if (logPanel != null) {
-                        logPanel.showColorPreferences();
-                    }
+        Action showColorPanel = new AbstractAction("", ChainsawIcons.ICON_PREFERENCES) {
+            public void actionPerformed(ActionEvent arg0) {
+                LogPanel logPanel = logui.getCurrentLogPanel();
+
+                if (logPanel != null) {
+                    logPanel.showColorPreferences();
                 }
-            };
+            }
+        };
 
         showColorPanel.putValue(Action.SHORT_DESCRIPTION, "Color settings...");
 
@@ -580,46 +572,42 @@ public class ChainsawToolBarAndMenus implements ChangeListener {
     }
 
     private Action createShowReceiversAction() {
-        final Action action =
-            new AbstractAction("Show Receivers") {
-                public void actionPerformed(ActionEvent arg0) {
-                    // Since this action can be triggered from either a button
-                    // or a check box, get the current value and invert it.
-                    boolean currentValue = applicationPreferenceModel.isReceiversVisible();
-                    applicationPreferenceModel.setReceiversVisible(!currentValue);
-                }
-            };
+        final Action action = new AbstractAction("Show Receivers") {
+            public void actionPerformed(ActionEvent arg0) {
+                // Since this action can be triggered from either a button
+                // or a check box, get the current value and invert it.
+                boolean currentValue = applicationPreferenceModel.isReceiversVisible();
+                applicationPreferenceModel.setReceiversVisible(!currentValue);
+            }
+        };
 
         action.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_E);
-        action.putValue(
-            Action.SHORT_DESCRIPTION,
-            "Shows the currently configured Log4j Receivers");
+        action.putValue(Action.SHORT_DESCRIPTION, "Shows the currently configured Log4j Receivers");
         action.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke("F6"));
-        action.putValue(
-            Action.SMALL_ICON, new ImageIcon(ChainsawIcons.ANIM_NET_CONNECT));
+        action.putValue(Action.SMALL_ICON, new ImageIcon(ChainsawIcons.ANIM_NET_CONNECT));
         toggleShowReceiversCheck.setAction(action);
 
         return action;
     }
 
     private Action createToggleDetailPaneAction() {
-        Action action =
-            new AbstractAction("Show Detail Pane") {
-                public void actionPerformed(ActionEvent evt) {
-                    LogPanel logPanel = logui.getCurrentLogPanel();
-
-                    if (logPanel == null) {
-                        return;
-                    }
+        Action action = new AbstractAction("Show Detail Pane") {
+            public void actionPerformed(ActionEvent evt) {
+                LogPanel logPanel = logui.getCurrentLogPanel();
 
-                    logPanel.toggleDetailVisible();
+                if (logPanel == null) {
+                    return;
                 }
-            };
+
+                logPanel.toggleDetailVisible();
+            }
+        };
 
         action.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_D);
         action.putValue(
-            Action.ACCELERATOR_KEY,
-            KeyStroke.getKeyStroke(KeyEvent.VK_D, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
+                Action.ACCELERATOR_KEY,
+                KeyStroke.getKeyStroke(
+                        KeyEvent.VK_D, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
         action.putValue(Action.SHORT_DESCRIPTION, "Hides/Shows the Detail Pane");
         action.putValue(Action.SMALL_ICON, new ImageIcon(ChainsawIcons.INFO));
 
@@ -630,13 +618,12 @@ public class ChainsawToolBarAndMenus implements ChangeListener {
         /**
          * -== Begin of Show/Hide toolbar action
          */
-        final Action action =
-            new AbstractAction("Show Toolbar") {
-                public void actionPerformed(ActionEvent e) {
-                    boolean isSelected = toggleShowToolbarCheck.isSelected();
-                    applicationPreferenceModel.setToolbarVisible(isSelected);
-                }
-            };
+        final Action action = new AbstractAction("Show Toolbar") {
+            public void actionPerformed(ActionEvent e) {
+                boolean isSelected = toggleShowToolbarCheck.isSelected();
+                applicationPreferenceModel.setToolbarVisible(isSelected);
+            }
+        };
 
         action.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_T);
 
@@ -664,34 +651,41 @@ public class ChainsawToolBarAndMenus implements ChangeListener {
         pauseButton.setAction(pauseAction);
         pauseButton.setText("");
 
-        pauseButton.getActionMap().put(
-            pauseAction.getValue(Action.NAME), pauseAction);
+        pauseButton.getActionMap().put(pauseAction.getValue(Action.NAME), pauseAction);
 
         toggleCyclicButton.setAction(changeModelAction);
         toggleCyclicButton.setText(null);
 
         detailPaneButton.setAction(toggleDetailPaneAction);
         detailPaneButton.setText(null);
-        detailPaneButton.getActionMap().put(
-            toggleDetailPaneAction.getValue(Action.NAME), toggleDetailPaneAction);
-        detailPaneButton.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(
-            KeyStroke.getKeyStroke(KeyEvent.VK_D, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()),
-            toggleDetailPaneAction.getValue(Action.NAME));
+        detailPaneButton.getActionMap().put(toggleDetailPaneAction.getValue(Action.NAME), toggleDetailPaneAction);
+        detailPaneButton
+                .getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT)
+                .put(
+                        KeyStroke.getKeyStroke(
+                                KeyEvent.VK_D, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()),
+                        toggleDetailPaneAction.getValue(Action.NAME));
 
         logTreePaneButton.setAction(toggleLogTreeAction);
-        logTreePaneButton.getActionMap().put(
-            toggleLogTreeAction.getValue(Action.NAME), toggleLogTreeAction);
-        logTreePaneButton.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(
-            KeyStroke.getKeyStroke(KeyEvent.VK_T, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()),
-            toggleLogTreeAction.getValue(Action.NAME));
+        logTreePaneButton.getActionMap().put(toggleLogTreeAction.getValue(Action.NAME), toggleLogTreeAction);
+        logTreePaneButton
+                .getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT)
+                .put(
+                        KeyStroke.getKeyStroke(
+                                KeyEvent.VK_T, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()),
+                        toggleLogTreeAction.getValue(Action.NAME));
         logTreePaneButton.setText(null);
 
         scrollToBottomButton.setAction(toggleScrollToBottomAction);
-        scrollToBottomButton.getActionMap().put(
-            toggleScrollToBottomAction.getValue(Action.NAME), toggleScrollToBottomAction);
-        scrollToBottomButton.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(
-            KeyStroke.getKeyStroke(KeyEvent.VK_B, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()),
-            toggleScrollToBottomAction.getValue(Action.NAME));
+        scrollToBottomButton
+                .getActionMap()
+                .put(toggleScrollToBottomAction.getValue(Action.NAME), toggleScrollToBottomAction);
+        scrollToBottomButton
+                .getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT)
+                .put(
+                        KeyStroke.getKeyStroke(
+                                KeyEvent.VK_B, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()),
+                        toggleScrollToBottomAction.getValue(Action.NAME));
         scrollToBottomButton.setText(null);
 
         SmallButton prefsButton = new SmallButton(showPreferencesAction);
@@ -723,20 +717,17 @@ public class ChainsawToolBarAndMenus implements ChangeListener {
     }
 
     private Action createUndockAction() {
-        Action action =
-            new AbstractAction("Undock", ChainsawIcons.ICON_UNDOCK) {
-                public void actionPerformed(ActionEvent arg0) {
-                    LogPanel logPanel = logui.getCurrentLogPanel();
-
-                    if (logPanel != null) {
-                        logPanel.undock();
-                    }
+        Action action = new AbstractAction("Undock", ChainsawIcons.ICON_UNDOCK) {
+            public void actionPerformed(ActionEvent arg0) {
+                LogPanel logPanel = logui.getCurrentLogPanel();
+
+                if (logPanel != null) {
+                    logPanel.undock();
                 }
-            };
+            }
+        };
 
-        action.putValue(
-            Action.SHORT_DESCRIPTION,
-            "Undocks the current Log panel into its own window");
+        action.putValue(Action.SHORT_DESCRIPTION, "Undocks the current Log panel into its own window");
 
         //	TODO think of some mnemonics and HotKeys for this action
         return action;
@@ -746,8 +737,7 @@ public class ChainsawToolBarAndMenus implements ChangeListener {
         boolean showReceiversByDefault = applicationPreferenceModel.isReceiversVisible();
 
         toggleStatusBarCheck.setSelected(logui.isStatusBarVisible());
-        toggleShowReceiversCheck.setSelected(
-            showReceiversByDefault);
+        toggleShowReceiversCheck.setSelected(showReceiversByDefault);
 
         logTreePaneButton.setSelected(logui.isLogTreePanelVisible());
         LogPanel panel = logui.getCurrentLogPanel();
@@ -758,8 +748,7 @@ public class ChainsawToolBarAndMenus implements ChangeListener {
             scrollToBottomButton.setSelected(false);
             toggleDetailMenuItem.setSelected(false);
         }
-        showReceiversButton.setSelected(
-            showReceiversByDefault);
+        showReceiversButton.setSelected(showReceiversByDefault);
         menuShowWelcome.setSelected(logui.getTabbedPane().containsWelcomePanel());
 
         /**
@@ -794,52 +783,54 @@ public class ChainsawToolBarAndMenus implements ChangeListener {
     }
 
     private Action getFindNextColorizedEventAction() {
-        final Action action =
-            new AbstractAction("Find next colorized event") {
-                public void actionPerformed(ActionEvent e) {
-                    LogPanel p = logui.getCurrentLogPanel();
-                    if (p != null) {
-                        p.findNextColorizedEvent();
-                    }
+        final Action action = new AbstractAction("Find next colorized event") {
+            public void actionPerformed(ActionEvent e) {
+                LogPanel p = logui.getCurrentLogPanel();
+                if (p != null) {
+                    p.findNextColorizedEvent();
                 }
-            };
+            }
+        };
         action.putValue(Action.SHORT_DESCRIPTION, "Find the next colorized event from the current location");
         action.putValue("enabled", Boolean.TRUE);
         action.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_N);
-        action.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_N, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
+        action.putValue(
+                Action.ACCELERATOR_KEY,
+                KeyStroke.getKeyStroke(
+                        KeyEvent.VK_N, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
 
         return action;
     }
 
     private Action getFindPreviousColorizedEventAction() {
-        final Action action =
-            new AbstractAction("Find previous colorized event") {
-                public void actionPerformed(ActionEvent e) {
-                    LogPanel p = logui.getCurrentLogPanel();
-
-                    if (p != null) {
-                        p.findPreviousColorizedEvent();
-                    }
+        final Action action = new AbstractAction("Find previous colorized event") {
+            public void actionPerformed(ActionEvent e) {
+                LogPanel p = logui.getCurrentLogPanel();
+
+                if (p != null) {
+                    p.findPreviousColorizedEvent();
                 }
-            };
+            }
+        };
         action.putValue(Action.SHORT_DESCRIPTION, "Find the next colorized event from the current location");
         action.putValue("enabled", Boolean.TRUE);
         action.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_P);
-        action.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_P, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
+        action.putValue(
+                Action.ACCELERATOR_KEY,
+                KeyStroke.getKeyStroke(
+                        KeyEvent.VK_P, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
 
         return action;
     }
 
     private JPanel getCustomExpressionPanel() {
         final JPanel panel = new JPanel(new BorderLayout());
-        panel.add(
-            new JLabel("Enter expression for new tab:  "), BorderLayout.NORTH);
+        panel.add(new JLabel("Enter expression for new tab:  "), BorderLayout.NORTH);
 
         final JEditorPane entryField = new JEditorPane();
         entryField.setPreferredSize(new Dimension(350, 75));
         JTextComponentFormatter.applySystemFontAndSize(entryField);
-        entryField.addKeyListener(
-            new ExpressionRuleContext(new FilterModel(), entryField));
+        entryField.addKeyListener(new ExpressionRuleContext(new FilterModel(), entryField));
         panel.add(entryField, BorderLayout.CENTER);
 
         JButton ok = new JButton(" OK ");
@@ -850,22 +841,18 @@ public class ChainsawToolBarAndMenus implements ChangeListener {
         lowerPanel.add(close);
         panel.add(lowerPanel, BorderLayout.SOUTH);
 
-        ok.addActionListener(
-            new AbstractAction() {
-                public void actionPerformed(ActionEvent evt) {
-                    logui.createCustomExpressionLogPanel(entryField.getText());
-                    SwingUtilities.getAncestorOfClass(JDialog.class, panel).setVisible(
-                        false);
-                }
-            });
+        ok.addActionListener(new AbstractAction() {
+            public void actionPerformed(ActionEvent evt) {
+                logui.createCustomExpressionLogPanel(entryField.getText());
+                SwingUtilities.getAncestorOfClass(JDialog.class, panel).setVisible(false);
+            }
+        });
 
-        close.addActionListener(
-            new AbstractAction() {
-                public void actionPerformed(ActionEvent evt) {
-                    SwingUtilities.getAncestorOfClass(JDialog.class, panel).setVisible(
-                        false);
-                }
-            });
+        close.addActionListener(new AbstractAction() {
+            public void actionPerformed(ActionEvent evt) {
+                SwingUtilities.getAncestorOfClass(JDialog.class, panel).setVisible(false);
+            }
+        });
 
         return panel;
     }
diff --git a/src/main/java/org/apache/log4j/chainsaw/ChainsawViewer.java b/src/main/java/org/apache/log4j/chainsaw/ChainsawViewer.java
index a116894..06b4add 100644
--- a/src/main/java/org/apache/log4j/chainsaw/ChainsawViewer.java
+++ b/src/main/java/org/apache/log4j/chainsaw/ChainsawViewer.java
@@ -2,7 +2,7 @@
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
+ * The ASF licenses this file to you under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
  *
@@ -14,10 +14,8 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package org.apache.log4j.chainsaw;
 
-
 /**
  * Chainsaw compatible gui viewers must implement this interface
  * in order to be opened and configured by the ChainsawAppender class.
diff --git a/src/main/java/org/apache/log4j/chainsaw/CheckListCellRenderer.java b/src/main/java/org/apache/log4j/chainsaw/CheckListCellRenderer.java
index db4ca8a..1a9b0aa 100644
--- a/src/main/java/org/apache/log4j/chainsaw/CheckListCellRenderer.java
+++ b/src/main/java/org/apache/log4j/chainsaw/CheckListCellRenderer.java
@@ -2,7 +2,7 @@
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
+ * The ASF licenses this file to you under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
  *
@@ -16,11 +16,10 @@
  */
 package org.apache.log4j.chainsaw;
 
+import java.awt.*;
 import javax.swing.*;
 import javax.swing.border.Border;
 import javax.swing.table.TableColumn;
-import java.awt.*;
-
 
 /**
  * A ListCellRenderer that display a check box if the value
@@ -31,10 +30,8 @@ import java.awt.*;
  *
  * @author Paul Smith
  */
-public abstract class CheckListCellRenderer extends JCheckBox
-    implements ListCellRenderer {
-    private final Border noFocusBorder =
-        BorderFactory.createEmptyBorder(1, 1, 1, 1);
+public abstract class CheckListCellRenderer extends JCheckBox implements ListCellRenderer {
+    private final Border noFocusBorder = BorderFactory.createEmptyBorder(1, 1, 1, 1);
 
     /**
      *
@@ -49,17 +46,12 @@ public abstract class CheckListCellRenderer extends JCheckBox
      * @see javax.swing.ListCellRenderer#getListCellRendererComponent(javax.swing.JList, java.lang.Object, int, boolean, boolean)
      */
     public Component getListCellRendererComponent(
-        JList list, Object value, int index, boolean isSelected,
-        boolean cellHasFocus) {
+            JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
         setText(((TableColumn) value).getHeaderValue().toString());
-        setBackground(
-            isSelected ? list.getSelectionBackground() : list.getBackground());
-        setForeground(
-            isSelected ? list.getSelectionForeground() : list.getForeground());
+        setBackground(isSelected ? list.getSelectionBackground() : list.getBackground());
+        setForeground(isSelected ? list.getSelectionForeground() : list.getForeground());
         setFont(list.getFont());
-        setBorder(
-            cellHasFocus ? UIManager.getBorder("List.focusCellHighlightBorder")
-                : noFocusBorder);
+        setBorder(cellHasFocus ? UIManager.getBorder("List.focusCellHighlightBorder") : noFocusBorder);
 
         setSelected(isSelected(value));
         return this;
diff --git a/src/main/java/org/apache/log4j/chainsaw/ColumnComparator.java b/src/main/java/org/apache/log4j/chainsaw/ColumnComparator.java
index 018e890..90f432c 100644
--- a/src/main/java/org/apache/log4j/chainsaw/ColumnComparator.java
+++ b/src/main/java/org/apache/log4j/chainsaw/ColumnComparator.java
@@ -2,7 +2,7 @@
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
+ * The ASF licenses this file to you under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
  *
@@ -14,14 +14,11 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package org.apache.log4j.chainsaw;
 
-import org.apache.log4j.helpers.Constants;
-
 import java.util.Comparator;
 import org.apache.log4j.chainsaw.logevents.ChainsawLoggingEvent;
-
+import org.apache.log4j.helpers.Constants;
 
 /**
  * @author Claude Duguay
@@ -44,7 +41,7 @@ public class ColumnComparator implements Comparator {
 
         if (o1 instanceof LoggingEventWrapper && o2 instanceof LoggingEventWrapper) {
 
-//		TODO not everything catered for here yet...
+            //		TODO not everything catered for here yet...
 
             ChainsawLoggingEvent e1 = ((LoggingEventWrapper) o1).getLoggingEvent();
             ChainsawLoggingEvent e2 = ((LoggingEventWrapper) o2).getLoggingEvent();
@@ -61,72 +58,70 @@ public class ColumnComparator implements Comparator {
                     break;
 
                 case ChainsawColumns.INDEX_MESSAGE_COL_NAME:
-                    sort =
-                        e1.m_message.compareToIgnoreCase(
-                            e2.m_message);
-
-                    break;
-
-/*                case ChainsawColumns.INDEX_NDC_COL_NAME:
-                    if (e1.m_ndc != null && e2.m_ndc != null) {
-                        sort =
-                            e1.m_ndc.compareToIgnoreCase(
-                                e2.m_ndc);
-                    } else if (e1.m_ndc == null && e2.m_ndc == null) {
-                        sort = 0;
-                    } else if (e1.m_ndc == null) {
-                        sort = -1;
-                    } else if (e2.m_ndc == null) {
-                        sort = 1;
-                    }
-
-                    break;
-
-                case ChainsawColumns.INDEX_METHOD_COL_NAME:
-
-                    if (
-                        (e1.m_locationInfo != null)
-                            && (e2.m_locationInfo != null)) {
-                        sort =
-                            e1.m_locationInfo.methodName.compareToIgnoreCase(
-                                e2.m_locationInfo.methodName);
-                    }
-
-                    break;
-
-                case ChainsawColumns.INDEX_CLASS_COL_NAME:
-
-                    if (
-                        (e1.m_locationInfo != null)
-                            && (e2.m_locationInfo != null)) {
-                        sort =
-                            e1.m_locationInfo.className.compareToIgnoreCase(
-                                e2.m_locationInfo.className);
-                    }
+                    sort = e1.m_message.compareToIgnoreCase(e2.m_message);
 
                     break;
 
-                case ChainsawColumns.INDEX_FILE_COL_NAME:
-
-                    if (
-                        (e1.m_locationInfo != null)
-                            && (e2.m_locationInfo != null)) {
-                        sort =
-                            e1.m_locationInfo.methodName.compareToIgnoreCase(
-                                e2.m_locationInfo.methodName);
-                    }
-
-                    break;*/
+                    /*                case ChainsawColumns.INDEX_NDC_COL_NAME:
+                        if (e1.m_ndc != null && e2.m_ndc != null) {
+                            sort =
+                                e1.m_ndc.compareToIgnoreCase(
+                                    e2.m_ndc);
+                        } else if (e1.m_ndc == null && e2.m_ndc == null) {
+                            sort = 0;
+                        } else if (e1.m_ndc == null) {
+                            sort = -1;
+                        } else if (e2.m_ndc == null) {
+                            sort = 1;
+                        }
+
+                        break;
+
+                    case ChainsawColumns.INDEX_METHOD_COL_NAME:
+
+                        if (
+                            (e1.m_locationInfo != null)
+                                && (e2.m_locationInfo != null)) {
+                            sort =
+                                e1.m_locationInfo.methodName.compareToIgnoreCase(
+                                    e2.m_locationInfo.methodName);
+                        }
+
+                        break;
+
+                    case ChainsawColumns.INDEX_CLASS_COL_NAME:
+
+                        if (
+                            (e1.m_locationInfo != null)
+                                && (e2.m_locationInfo != null)) {
+                            sort =
+                                e1.m_locationInfo.className.compareToIgnoreCase(
+                                    e2.m_locationInfo.className);
+                        }
+
+                        break;
+
+                    case ChainsawColumns.INDEX_FILE_COL_NAME:
+
+                        if (
+                            (e1.m_locationInfo != null)
+                                && (e2.m_locationInfo != null)) {
+                            sort =
+                                e1.m_locationInfo.methodName.compareToIgnoreCase(
+                                    e2.m_locationInfo.methodName);
+                        }
+
+                        break;*/
 
                 case ChainsawColumns.INDEX_TIMESTAMP_COL_NAME:
                     sort = e1.m_timestamp.compareTo(e2.m_timestamp);
                     break;
 
-/*
-                case ChainsawColumns.INDEX_THREAD_COL_NAME:
-                    sort = e1.m_threadName.compareToIgnoreCase(e2.m_threadName);
-                    break;
-*/
+                    /*
+                                    case ChainsawColumns.INDEX_THREAD_COL_NAME:
+                                        sort = e1.m_threadName.compareToIgnoreCase(e2.m_threadName);
+                                        break;
+                    */
 
                 case ChainsawColumns.INDEX_ID_COL_NAME:
                     int id1 = Integer.parseInt(e1.getProperty(Constants.LOG4J_ID_KEY));
@@ -134,32 +129,32 @@ public class ColumnComparator implements Comparator {
                     sort = Integer.compare(id2, id1);
                     break;
 
-/*
-                case ChainsawColumns.INDEX_THROWABLE_COL_NAME:
-//                    if (e1.getThrowableStrRep() != null && e2.getThrowableStrRep() != null) {
-//                        String[] s1 = e1.getThrowableStrRep();
-//                        String[] s2 = e2.getThrowableStrRep();
-//                        boolean foundDiff = false;
-//                        for (int i = 0; i < s1.length; i++) {
-//                            if (foundDiff || i > s2.length) {
-//                                break;
-//                            }
-//                            sort = s1[i].compareToIgnoreCase(s2[i]);
-//                            foundDiff = sort != 0;
-//                        }
-//                    }
-                    break;
-
-                case ChainsawColumns.INDEX_LINE_COL_NAME:
-                    if (
-                        (e1.m_locationInfo != null)
-                            && (e2.m_locationInfo != null)) {
-                        sort = e1.m_locationInfo.lineNumber - e2.m_locationInfo.lineNumber;
-                    }
-                    break;
-*/
-
-                //other columns may be Property values - see if there is an Property value matching column name
+                    /*
+                                    case ChainsawColumns.INDEX_THROWABLE_COL_NAME:
+                    //                    if (e1.getThrowableStrRep() != null && e2.getThrowableStrRep() != null) {
+                    //                        String[] s1 = e1.getThrowableStrRep();
+                    //                        String[] s2 = e2.getThrowableStrRep();
+                    //                        boolean foundDiff = false;
+                    //                        for (int i = 0; i < s1.length; i++) {
+                    //                            if (foundDiff || i > s2.length) {
+                    //                                break;
+                    //                            }
+                    //                            sort = s1[i].compareToIgnoreCase(s2[i]);
+                    //                            foundDiff = sort != 0;
+                    //                        }
+                    //                    }
+                                        break;
+
+                                    case ChainsawColumns.INDEX_LINE_COL_NAME:
+                                        if (
+                                            (e1.m_locationInfo != null)
+                                                && (e2.m_locationInfo != null)) {
+                                            sort = e1.m_locationInfo.lineNumber - e2.m_locationInfo.lineNumber;
+                                        }
+                                        break;
+                    */
+
+                    // other columns may be Property values - see if there is an Property value matching column name
                 default:
                     if (e1.getProperty(columnName) != null && e2.getProperty(columnName) != null) {
                         sort = e1.getProperty(columnName).compareToIgnoreCase(e2.getProperty(columnName));
diff --git a/src/main/java/org/apache/log4j/chainsaw/CopyEventsToClipboardAction.java b/src/main/java/org/apache/log4j/chainsaw/CopyEventsToClipboardAction.java
index 42125ff..836ca73 100644
--- a/src/main/java/org/apache/log4j/chainsaw/CopyEventsToClipboardAction.java
+++ b/src/main/java/org/apache/log4j/chainsaw/CopyEventsToClipboardAction.java
@@ -1,20 +1,26 @@
 /*
- * Licensed to the Apache Software Foundation (ASF) under one or more contributor license
- * agreements. See the NOTICE file distributed with this work for additional information regarding
- * copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance with the License. You may obtain a
- * copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable
- * law or agreed to in writing, software distributed under the License is distributed on an "AS IS"
- * BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License
- * for the specific language governing permissions and limitations under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to you under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
  */
 package org.apache.log4j.chainsaw;
 
-import javax.swing.*;
 import java.awt.*;
 import java.awt.datatransfer.StringSelection;
 import java.awt.event.ActionEvent;
 import java.util.List;
+import javax.swing.*;
 import org.apache.log4j.chainsaw.logevents.ChainsawLoggingEvent;
 import org.apache.log4j.chainsaw.logui.LogUI;
 
@@ -28,19 +34,18 @@ public class CopyEventsToClipboardAction extends AbstractAction {
      * Layout pattern uses a simple but concise format that reads well and has a fixed size set of
      * useful columns before the message. Nice format for pasting into issue trackers.
      */
-//    private final Layout layout = new EnhancedPatternLayout(
-//        "[%d{ISO8601} %-5p][%20.20c][%t] %m%n");
+    //    private final Layout layout = new EnhancedPatternLayout(
+    //        "[%d{ISO8601} %-5p][%20.20c][%t] %m%n");
 
     public CopyEventsToClipboardAction(LogUI parent) {
         super("Copy events to clipboard");
         this.logUi = parent;
 
-        putValue(Action.SHORT_DESCRIPTION,
-            "Copies to the clipboard currently visible events to a human-readable, log-like format");
-
+        putValue(
+                Action.SHORT_DESCRIPTION,
+                "Copies to the clipboard currently visible events to a human-readable, log-like format");
     }
 
-
     public void actionPerformed(ActionEvent e) {
         List filteredEvents = logUi.getCurrentLogPanel().getFilteredEvents();
         StringBuilder writer = new StringBuilder(filteredEvents.size() * EVENTSIZE_FUDGE_FACTOR);
@@ -50,8 +55,6 @@ public class CopyEventsToClipboardAction extends AbstractAction {
         }
 
         StringSelection stringSelection = new StringSelection(writer.toString());
-        Toolkit.getDefaultToolkit().getSystemClipboard().setContents(stringSelection,
-            stringSelection);
+        Toolkit.getDefaultToolkit().getSystemClipboard().setContents(stringSelection, stringSelection);
     }
-
 }
diff --git a/src/main/java/org/apache/log4j/chainsaw/CyclicBufferList.java b/src/main/java/org/apache/log4j/chainsaw/CyclicBufferList.java
index 802a568..643aab2 100644
--- a/src/main/java/org/apache/log4j/chainsaw/CyclicBufferList.java
+++ b/src/main/java/org/apache/log4j/chainsaw/CyclicBufferList.java
@@ -2,7 +2,7 @@
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
+ * The ASF licenses this file to you under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
  *
@@ -14,7 +14,6 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package org.apache.log4j.chainsaw;
 
 import java.util.AbstractList;
@@ -22,7 +21,6 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 
-
 /**
  * CyclicBuffer implementation that is Object generic, and implements the List interface.
  * <p>
@@ -46,8 +44,7 @@ public class CyclicBufferList extends AbstractList implements List {
      */
     public CyclicBufferList(int maxSize) {
         if (maxSize < 1) {
-            throw new IllegalArgumentException(
-                "The maxSize argument (" + maxSize + ") is not a positive integer.");
+            throw new IllegalArgumentException("The maxSize argument (" + maxSize + ") is not a positive integer.");
         }
         this.maxSize = maxSize;
         clear();
@@ -169,8 +166,7 @@ public class CyclicBufferList extends AbstractList implements List {
      */
     public void resize(int newSize) {
         if (newSize < 0) {
-            throw new IllegalArgumentException(
-                "Negative array size [" + newSize + "] not allowed.");
+            throw new IllegalArgumentException("Negative array size [" + newSize + "] not allowed.");
         }
 
         if (newSize == numElems) {
@@ -210,7 +206,5 @@ public class CyclicBufferList extends AbstractList implements List {
         first = 0;
         last = 0;
         numElems = 0;
-
     }
-
 }
diff --git a/src/main/java/org/apache/log4j/chainsaw/DockablePanel.java b/src/main/java/org/apache/log4j/chainsaw/DockablePanel.java
index 8053efe..4372955 100644
--- a/src/main/java/org/apache/log4j/chainsaw/DockablePanel.java
+++ b/src/main/java/org/apache/log4j/chainsaw/DockablePanel.java
@@ -2,7 +2,7 @@
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
+ * The ASF licenses this file to you under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
  *
@@ -14,12 +14,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package org.apache.log4j.chainsaw;
 
-import javax.swing.*;
 import java.awt.*;
-
+import javax.swing.*;
 
 /**
  * Extends the functionality of a JPanel by providing a 'docked' state.
diff --git a/src/main/java/org/apache/log4j/chainsaw/EventContainer.java b/src/main/java/org/apache/log4j/chainsaw/EventContainer.java
index e534103..b340848 100644
--- a/src/main/java/org/apache/log4j/chainsaw/EventContainer.java
+++ b/src/main/java/org/apache/log4j/chainsaw/EventContainer.java
@@ -2,7 +2,7 @@
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
+ * The ASF licenses this file to you under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
  *
@@ -14,15 +14,12 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package org.apache.log4j.chainsaw;
 
-import org.apache.log4j.chainsaw.components.loggernamepanel.LoggerNameModel;
-import org.apache.log4j.rule.Rule;
-
 import java.beans.PropertyChangeListener;
 import java.util.List;
-
+import org.apache.log4j.chainsaw.components.loggernamepanel.LoggerNameModel;
+import org.apache.log4j.rule.Rule;
 
 /**
  * To allow pluggable TableModel implementations for Chainsaw, this interface has been factored out.
@@ -43,8 +40,7 @@ public interface EventContainer extends SortTableModel, LoggerNameModel {
 
     void addPropertyChangeListener(PropertyChangeListener l);
 
-    void addPropertyChangeListener(
-        String propertyName, PropertyChangeListener l);
+    void addPropertyChangeListener(String propertyName, PropertyChangeListener l);
 
     /**
      * Adds a NewKeyListener to be notified when unique Key (Property keys)
diff --git a/src/main/java/org/apache/log4j/chainsaw/EventCountListener.java b/src/main/java/org/apache/log4j/chainsaw/EventCountListener.java
index b28a9ae..f251c50 100644
--- a/src/main/java/org/apache/log4j/chainsaw/EventCountListener.java
+++ b/src/main/java/org/apache/log4j/chainsaw/EventCountListener.java
@@ -2,7 +2,7 @@
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
+ * The ASF licenses this file to you under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
  *
@@ -14,12 +14,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package org.apache.log4j.chainsaw;
 
 import java.util.EventListener;
 
-
 /**
  * Listeners can be notified when the # of events in a particular model
  * changes
diff --git a/src/main/java/org/apache/log4j/chainsaw/ExpressionRuleContext.java b/src/main/java/org/apache/log4j/chainsaw/ExpressionRuleContext.java
index bfabce9..a77cc86 100644
--- a/src/main/java/org/apache/log4j/chainsaw/ExpressionRuleContext.java
+++ b/src/main/java/org/apache/log4j/chainsaw/ExpressionRuleContext.java
@@ -2,7 +2,7 @@
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
+ * The ASF licenses this file to you under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
  *
@@ -16,15 +16,14 @@
  */
 package org.apache.log4j.chainsaw;
 
+import java.awt.*;
+import java.awt.event.*;
+import javax.swing.*;
+import javax.swing.text.JTextComponent;
 import org.apache.log4j.chainsaw.filter.FilterModel;
 import org.apache.log4j.rule.RuleFactory;
 import org.apache.log4j.spi.LoggingEventFieldResolver;
 
-import javax.swing.*;
-import javax.swing.text.JTextComponent;
-import java.awt.*;
-import java.awt.event.*;
-
 /**
  * A popup menu which assists in building expression rules.  Completes event keywords, operators and
  * context if available.
@@ -42,8 +41,7 @@ public class ExpressionRuleContext extends KeyAdapter {
     private final DefaultListModel<String> fieldModel = new DefaultListModel<>();
     private final DefaultListModel<String> operatorModel = new DefaultListModel<>();
 
-    public ExpressionRuleContext(
-        final FilterModel filterModel, final JTextComponent textComponent) {
+    public ExpressionRuleContext(final FilterModel filterModel, final JTextComponent textComponent) {
         this.filterModel = filterModel;
         this.textComponent = textComponent;
         fieldModel.addElement("LOGGER");
@@ -72,53 +70,50 @@ public class ExpressionRuleContext extends KeyAdapter {
         operatorModel.addElement("<=");
         operatorModel.addElement(">=");
 
-        //make long to avoid scrollbar
+        // make long to avoid scrollbar
         list.setVisibleRowCount(13);
 
         PopupListener popupListener = new PopupListener();
         textComponent.addMouseListener(popupListener);
 
-        list.addKeyListener(
-            new KeyAdapter() {
-                @Override
-                public void keyPressed(KeyEvent e) {
-                    if (e.getKeyCode() == KeyEvent.VK_ENTER) {
-                        String value = list.getSelectedValue();
-                        String contextKey = getContextKey();
-                        if (contextKey != null && (!(contextKey.endsWith(".")))) {
-                            value = "'" + value + "'";
-                        }
-
-                        updateField(value);
-                        contextMenu.setVisible(false);
+        list.addKeyListener(new KeyAdapter() {
+            @Override
+            public void keyPressed(KeyEvent e) {
+                if (e.getKeyCode() == KeyEvent.VK_ENTER) {
+                    String value = list.getSelectedValue();
+                    String contextKey = getContextKey();
+                    if (contextKey != null && (!(contextKey.endsWith(".")))) {
+                        value = "'" + value + "'";
                     }
+
+                    updateField(value);
+                    contextMenu.setVisible(false);
                 }
-            });
-
-        list.addMouseListener(
-            new MouseAdapter() {
-                @Override
-                public void mouseClicked(MouseEvent e) {
-                    if (e.getClickCount() == 2) {
-                        String value = list.getSelectedValue();
-                        String contextKey = getContextKey();
-                        if (contextKey != null && (!(contextKey.endsWith(".")))) {
-                            value = "'" + value + "'";
-                        }
-
-                        updateField(value);
-                        contextMenu.setVisible(false);
+            }
+        });
+
+        list.addMouseListener(new MouseAdapter() {
+            @Override
+            public void mouseClicked(MouseEvent e) {
+                if (e.getClickCount() == 2) {
+                    String value = list.getSelectedValue();
+                    String contextKey = getContextKey();
+                    if (contextKey != null && (!(contextKey.endsWith(".")))) {
+                        value = "'" + value + "'";
                     }
+
+                    updateField(value);
+                    contextMenu.setVisible(false);
                 }
-            });
+            }
+        });
 
         contextMenu.insert(scrollPane, 0);
     }
 
     private void updateField(String value) {
-        if (textComponent.getSelectedText() == null &&
-            !value.endsWith(".")) {
-                value = value + " ";
+        if (textComponent.getSelectedText() == null && !value.endsWith(".")) {
+            value = value + " ";
         }
 
         textComponent.replaceSelection(value);
@@ -126,8 +121,7 @@ public class ExpressionRuleContext extends KeyAdapter {
 
     @Override
     public void keyPressed(KeyEvent e) {
-        if (e.getKeyCode() == KeyEvent.VK_SPACE &&
-            e.getModifiersEx() == InputEvent.CTRL_DOWN_MASK) {
+        if (e.getKeyCode() == KeyEvent.VK_SPACE && e.getModifiersEx() == InputEvent.CTRL_DOWN_MASK) {
             displayContext();
         }
     }
@@ -151,8 +145,8 @@ public class ExpressionRuleContext extends KeyAdapter {
                 Point p = textComponent.getCaret().getMagicCaretPosition();
                 if (p == null) {
                     p = new Point(
-                        textComponent.getLocation().x,
-                        (textComponent.getLocation().y - textComponent.getHeight() + 5));
+                            textComponent.getLocation().x,
+                            (textComponent.getLocation().y - textComponent.getHeight() + 5));
                 }
 
                 contextMenu.doLayout();
@@ -204,7 +198,9 @@ public class ExpressionRuleContext extends KeyAdapter {
         }
 
         int lastFieldStartPosition = Math.max(0, text.lastIndexOf(" ", lastFieldPosition - 1));
-        String field = text.substring(lastFieldStartPosition, lastFieldPosition).toUpperCase().trim();
+        String field = text.substring(lastFieldStartPosition, lastFieldPosition)
+                .toUpperCase()
+                .trim();
 
         return resolver.isField(field);
     }
@@ -233,20 +229,21 @@ public class ExpressionRuleContext extends KeyAdapter {
         }
 
         int lastFieldStartPosition = Math.max(0, text.lastIndexOf(" ", lastFieldPosition - 1));
-        String lastSymbol = text.substring(lastFieldPosition + 1, symbolPosition).trim();
+        String lastSymbol =
+                text.substring(lastFieldPosition + 1, symbolPosition).trim();
 
-        String lastField = text.substring(lastFieldStartPosition, lastFieldPosition).trim();
+        String lastField =
+                text.substring(lastFieldStartPosition, lastFieldPosition).trim();
 
-        if (factory.isRule(lastSymbol) &&
-            filterModel.getContainer().modelExists(lastField)) {
+        if (factory.isRule(lastSymbol) && filterModel.getContainer().modelExists(lastField)) {
             return lastField;
         }
 
         return null;
     }
 
-    //subfields allow the key portion of a field to provide context menu support
-    //and are available after the fieldname and a . (for example, PROP.)
+    // subfields allow the key portion of a field to provide context menu support
+    // and are available after the fieldname and a . (for example, PROP.)
     private String getSubField() {
         int currentPosition = textComponent.getSelectionStart();
         String text = textComponent.getText();
diff --git a/src/main/java/org/apache/log4j/chainsaw/JTextComponentFormatter.java b/src/main/java/org/apache/log4j/chainsaw/JTextComponentFormatter.java
index 543c69b..d675063 100644
--- a/src/main/java/org/apache/log4j/chainsaw/JTextComponentFormatter.java
+++ b/src/main/java/org/apache/log4j/chainsaw/JTextComponentFormatter.java
@@ -2,7 +2,7 @@
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
+ * The ASF licenses this file to you under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
  *
@@ -16,11 +16,11 @@
  */
 package org.apache.log4j.chainsaw;
 
+import java.awt.*;
 import javax.swing.*;
 import javax.swing.text.Document;
 import javax.swing.text.JTextComponent;
 import javax.swing.text.html.HTMLDocument;
-import java.awt.*;
 
 /**
  * Apply system font and size (normal size + 1) rule if the JEditorPane document contains html.
@@ -30,7 +30,8 @@ public class JTextComponentFormatter {
         Document document = textComponent.getDocument();
         if (document instanceof HTMLDocument) {
             Font font = UIManager.getFont("Label.font");
-            String bodyRule = "body { font-family: " + font.getFamily() + "; font-size: " + (font.getSize() + 1) + "pt; }";
+            String bodyRule =
+                    "body { font-family: " + font.getFamily() + "; font-size: " + (font.getSize() + 1) + "pt; }";
             ((HTMLDocument) document).getStyleSheet().addRule(bodyRule);
         }
     }
diff --git a/src/main/java/org/apache/log4j/chainsaw/LogFilePatternLayoutBuilder.java b/src/main/java/org/apache/log4j/chainsaw/LogFilePatternLayoutBuilder.java
index a753495..99076cf 100644
--- a/src/main/java/org/apache/log4j/chainsaw/LogFilePatternLayoutBuilder.java
+++ b/src/main/java/org/apache/log4j/chainsaw/LogFilePatternLayoutBuilder.java
@@ -2,7 +2,7 @@
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
+ * The ASF licenses this file to you under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
  *
@@ -17,6 +17,14 @@
 package org.apache.log4j.chainsaw;
 
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.*;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
 import org.w3c.dom.Document;
 import org.w3c.dom.NamedNodeMap;
 import org.w3c.dom.Node;
@@ -24,15 +32,6 @@ import org.w3c.dom.NodeList;
 import org.xml.sax.InputSource;
 import org.xml.sax.SAXException;
 
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.*;
-
 public class LogFilePatternLayoutBuilder {
 
     public static String getTimeStampFormat(String patternLayout) {
@@ -42,7 +41,7 @@ public class LogFilePatternLayoutBuilder {
         }
 
         int index = patternLayout.indexOf("%d{");
-        //%d - default
+        // %d - default
         if (index < 0) {
             return "yyyy-MM-dd HH:mm:ss,SSS";
         }
@@ -65,18 +64,19 @@ public class LogFilePatternLayoutBuilder {
         try {
             return getXMLFileAppenderConfiguration(file);
         } catch (IOException | SAXException | ParserConfigurationException e) {
-            //ignore
+            // ignore
         }
         try {
             return getPropertiesFileAppenderConfiguration(file);
         } catch (Exception e) {
-            //ignore
+            // ignore
         }
-        //don't return null
+        // don't return null
         return new HashMap<>();
     }
 
-    public static Map<String, Map<String, String>> getPropertiesFileAppenderConfiguration(File propertyFile) throws IOException {
+    public static Map<String, Map<String, String>> getPropertiesFileAppenderConfiguration(File propertyFile)
+            throws IOException {
         Map<String, Map<String, String>> result = new HashMap<>();
         String appenderPrefix = "log4j.appender";
         Properties props = new Properties();
@@ -91,7 +91,7 @@ public class LogFilePatternLayoutBuilder {
                 if (propertyName.startsWith(appenderPrefix)) {
                     String value = propertyName.substring(appenderPrefix.length() + 1);
                     if (!value.contains(".")) {
-                        //no sub-values - this entry is the appender name & class
+                        // no sub-values - this entry is the appender name & class
                         appenders.put(value, props.getProperty(propertyName).trim());
                     }
                 }
@@ -103,7 +103,8 @@ public class LogFilePatternLayoutBuilder {
                 if (appenderClassName.toLowerCase(Locale.ENGLISH).endsWith("fileappender")) {
                     String layout = props.getProperty(appenderPrefix + "." + appenderName + ".layout");
                     if (layout != null && layout.trim().equals("org.apache.log4j.PatternLayout")) {
-                        String conversion = props.getProperty(appenderPrefix + "." + appenderName + ".layout.ConversionPattern");
+                        String conversion =
+                                props.getProperty(appenderPrefix + "." + appenderName + ".layout.ConversionPattern");
                         String file = props.getProperty(appenderPrefix + "." + appenderName + ".File");
                         if (conversion != null && file != null) {
                             Map<String, String> entry = new HashMap<>();
@@ -114,27 +115,28 @@ public class LogFilePatternLayoutBuilder {
                     }
                 }
             }
-          /*
-          example:
-          log4j.appender.R=org.apache.log4j.RollingFileAppender
-          log4j.appender.R.File=${catalina.base}/logs/tomcat.log
-          log4j.appender.R.MaxFileSize=10MB
-          log4j.appender.R.MaxBackupIndex=10
-          log4j.appender.R.layout=org.apache.log4j.PatternLayout
-          log4j.appender.R.layout.ConversionPattern=%d - %p %t %c - %m%n
-           */
+            /*
+            example:
+            log4j.appender.R=org.apache.log4j.RollingFileAppender
+            log4j.appender.R.File=${catalina.base}/logs/tomcat.log
+            log4j.appender.R.MaxFileSize=10MB
+            log4j.appender.R.MaxBackupIndex=10
+            log4j.appender.R.layout=org.apache.log4j.PatternLayout
+            log4j.appender.R.layout.ConversionPattern=%d - %p %t %c - %m%n
+             */
         } catch (IOException ioe) {
         } finally {
             if (inputStream != null) {
                 inputStream.close();
             }
         }
-        //don't return null
+        // don't return null
         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 {
+    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);
@@ -143,45 +145,64 @@ public class LogFilePatternLayoutBuilder {
             dbf.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
             DocumentBuilder docBuilder = dbf.newDocumentBuilder();
 
-//            docBuilder.setErrorHandler(new SAXErrorHandler());
-//            docBuilder.setEntityResolver(new Log4jEntityResolver());
+            //            docBuilder.setErrorHandler(new SAXErrorHandler());
+            //            docBuilder.setEntityResolver(new Log4jEntityResolver());
             Document doc = docBuilder.parse(src);
             NodeList appenders = doc.getElementsByTagName("appender");
             for (int i = 0; i < appenders.getLength(); i++) {
                 Node appender = appenders.item(i);
                 NamedNodeMap appenderAttributes = appender.getAttributes();
-//        Class appenderClass = Class.forName(map.getNamedItem("class").getNodeValue());
+                //        Class appenderClass = Class.forName(map.getNamedItem("class").getNodeValue());
                 Node appenderClass = appenderAttributes.getNamedItem("class");
-                if (appenderAttributes.getNamedItem("name") != null && appenderClass != null && appenderClass.getNodeValue() != null) {
-                    //all log4j fileappenders end in fileappender..if a custom fileappender also ends in fileappender and uses the same dom nodes to be loaded,
-                    //try to parse the nodes as well
+                if (appenderAttributes.getNamedItem("name") != null
+                        && appenderClass != null
+                        && appenderClass.getNodeValue() != null) {
+                    // all log4j fileappenders end in fileappender..if a custom fileappender also ends in fileappender
+                    // and uses the same dom nodes to be loaded,
+                    // try to parse the nodes as well
                     if (appenderClass.getNodeValue().toLowerCase(Locale.ENGLISH).endsWith("fileappender")) {
-                        String appenderName = appenderAttributes.getNamedItem("name").getNodeValue();
-                        //subclass of FileAppender - add it
+                        String appenderName =
+                                appenderAttributes.getNamedItem("name").getNodeValue();
+                        // subclass of FileAppender - add it
                         Map<String, String> entry = new HashMap<>();
                         NodeList appenderChildren = appender.getChildNodes();
                         for (int j = 0; j < appenderChildren.getLength(); j++) {
                             Node appenderChild = appenderChildren.item(j);
                             if (appenderChild.getNodeName().equals("param") && appenderChild.hasAttributes()) {
-                                Node fileNameNode = appenderChild.getAttributes().getNamedItem("name");
-                                if (fileNameNode != null && fileNameNode.getNodeValue().equalsIgnoreCase("file")) {
-                                    Node fileValueNode = appenderChild.getAttributes().getNamedItem("value");
+                                Node fileNameNode =
+                                        appenderChild.getAttributes().getNamedItem("name");
+                                if (fileNameNode != null
+                                        && fileNameNode.getNodeValue().equalsIgnoreCase("file")) {
+                                    Node fileValueNode =
+                                            appenderChild.getAttributes().getNamedItem("value");
                                     if (fileValueNode != null) {
                                         entry.put("file", fileValueNode.getNodeValue());
                                     }
                                 }
                             }
-                            if (appenderChild.getNodeName().equalsIgnoreCase("layout") && appenderChild.hasAttributes()) {
+                            if (appenderChild.getNodeName().equalsIgnoreCase("layout")
+                                    && appenderChild.hasAttributes()) {
                                 NamedNodeMap layoutAttributes = appenderChild.getAttributes();
                                 Node layoutNode = layoutAttributes.getNamedItem("class");
-                                if (layoutNode != null && layoutNode.getNodeValue() != null && layoutNode.getNodeValue().equalsIgnoreCase("org.apache.log4j.PatternLayout")) {
+                                if (layoutNode != null
+                                        && layoutNode.getNodeValue() != null
+                                        && layoutNode
+                                                .getNodeValue()
+                                                .equalsIgnoreCase("org.apache.log4j.PatternLayout")) {
                                     NodeList layoutChildren = appenderChild.getChildNodes();
                                     for (int k = 0; k < layoutChildren.getLength(); k++) {
                                         Node layoutChild = layoutChildren.item(k);
                                         if (layoutChild.getNodeName().equals("param") && layoutChild.hasAttributes()) {
-                                            Node layoutName = layoutChild.getAttributes().getNamedItem("name");
-                                            if (layoutName != null && layoutName.getNodeValue() != null && layoutName.getNodeValue().equalsIgnoreCase("conversionpattern")) {
-                                                Node conversionValue = layoutChild.getAttributes().getNamedItem("value");
+                                            Node layoutName =
+                                                    layoutChild.getAttributes().getNamedItem("name");
+                                            if (layoutName != null
+                                                    && layoutName.getNodeValue() != null
+                                                    && layoutName
+                                                            .getNodeValue()
+                                                            .equalsIgnoreCase("conversionpattern")) {
+                                                Node conversionValue = layoutChild
+                                                        .getAttributes()
+                                                        .getNamedItem("value");
                                                 if (conversionValue != null) {
                                                     entry.put("conversion", conversionValue.getNodeValue());
                                                 }
@@ -196,7 +217,7 @@ public class LogFilePatternLayoutBuilder {
                 }
             }
         }
-//        logger.info("getXMLFileAppenderConfiguration for file: " + file + ", result: " + result);
+        //        logger.info("getXMLFileAppenderConfiguration for file: " + file + ", result: " + result);
         return result;
     }
 }
diff --git a/src/main/java/org/apache/log4j/chainsaw/LoggingEventWrapper.java b/src/main/java/org/apache/log4j/chainsaw/LoggingEventWrapper.java
index 8e92bbd..0351d73 100644
--- a/src/main/java/org/apache/log4j/chainsaw/LoggingEventWrapper.java
+++ b/src/main/java/org/apache/log4j/chainsaw/LoggingEventWrapper.java
@@ -2,7 +2,7 @@
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
+ * The ASF licenses this file to you under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
  *
@@ -16,16 +16,15 @@
  */
 package org.apache.log4j.chainsaw;
 
-import org.apache.log4j.chainsaw.logevents.ChainsawLoggingEvent;
-import org.apache.log4j.helpers.Constants;
-import org.apache.log4j.rule.Rule;
-
 import java.awt.*;
 import java.time.Instant;
 import java.time.temporal.ChronoUnit;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Set;
+import org.apache.log4j.chainsaw.logevents.ChainsawLoggingEvent;
+import org.apache.log4j.helpers.Constants;
+import org.apache.log4j.rule.Rule;
 
 /**
  * Wrap access to a LoggingEvent.  All property updates need to go through this object and not through the wrapped logging event,
@@ -42,11 +41,11 @@ public class LoggingEventWrapper {
     private int markerHeight = DEFAULT_HEIGHT;
     private int msgHeight = DEFAULT_HEIGHT;
 
-    //set to the log4jid value via setId - assumed to never change
+    // set to the log4jid value via setId - assumed to never change
     private int id;
 
     private boolean searchMatch = false;
-    //a Map of event fields to Sets of string matches (can be used to render matches differently)
+    // a Map of event fields to Sets of string matches (can be used to render matches differently)
     Map eventMatches = new HashMap();
     private LoggingEventWrapper syncWrapper;
     private boolean displayed;
@@ -158,9 +157,8 @@ public class LoggingEventWrapper {
     }
 
     public void setPreviousDisplayedEventTimestamp(Instant previousDisplayedEventTimeStamp) {
-        long diffMs = ChronoUnit.MILLIS.between( previousDisplayedEventTimeStamp, loggingEvent.m_timestamp );
-        setProperty(ChainsawConstants.MILLIS_DELTA_COL_NAME_LOWERCASE,
-                String.valueOf(diffMs));
+        long diffMs = ChronoUnit.MILLIS.between(previousDisplayedEventTimeStamp, loggingEvent.m_timestamp);
+        setProperty(ChainsawConstants.MILLIS_DELTA_COL_NAME_LOWERCASE, String.valueOf(diffMs));
     }
 
     public boolean isDisplayed() {
@@ -185,6 +183,7 @@ public class LoggingEventWrapper {
     }
 
     public String toString() {
-        return "LoggingEventWrapper - id: " + id + " background: " + getBackground() + ", foreground: " + getForeground() + ", msg: " + loggingEvent.m_message;
+        return "LoggingEventWrapper - id: " + id + " background: " + getBackground() + ", foreground: "
+                + getForeground() + ", msg: " + loggingEvent.m_message;
     }
 }
diff --git a/src/main/java/org/apache/log4j/chainsaw/ModifiableListModel.java b/src/main/java/org/apache/log4j/chainsaw/ModifiableListModel.java
index 9f5a824..0cae2b2 100644
--- a/src/main/java/org/apache/log4j/chainsaw/ModifiableListModel.java
+++ b/src/main/java/org/apache/log4j/chainsaw/ModifiableListModel.java
@@ -2,7 +2,7 @@
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
+ * The ASF licenses this file to you under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
  *
@@ -25,5 +25,4 @@ public class ModifiableListModel extends DefaultListModel {
     public void fireContentsChanged() {
         fireContentsChanged(this, 0, this.size());
     }
-
 }
diff --git a/src/main/java/org/apache/log4j/chainsaw/NewKeyEvent.java b/src/main/java/org/apache/log4j/chainsaw/NewKeyEvent.java
index b83aba2..4a61837 100644
--- a/src/main/java/org/apache/log4j/chainsaw/NewKeyEvent.java
+++ b/src/main/java/org/apache/log4j/chainsaw/NewKeyEvent.java
@@ -2,7 +2,7 @@
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
+ * The ASF licenses this file to you under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
  *
diff --git a/src/main/java/org/apache/log4j/chainsaw/NewKeyListener.java b/src/main/java/org/apache/log4j/chainsaw/NewKeyListener.java
index 05120ac..8e16954 100644
--- a/src/main/java/org/apache/log4j/chainsaw/NewKeyListener.java
+++ b/src/main/java/org/apache/log4j/chainsaw/NewKeyListener.java
@@ -2,7 +2,7 @@
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
+ * The ASF licenses this file to you under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
  *
@@ -14,12 +14,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package org.apache.log4j.chainsaw;
 
 import java.util.EventListener;
 
-
 /**
  * Interested parties are notified when a MDC/Property key has arrived
  * that has not been seen before by the source Model
diff --git a/src/main/java/org/apache/log4j/chainsaw/PopupListener.java b/src/main/java/org/apache/log4j/chainsaw/PopupListener.java
index 6350735..494b356 100644
--- a/src/main/java/org/apache/log4j/chainsaw/PopupListener.java
+++ b/src/main/java/org/apache/log4j/chainsaw/PopupListener.java
@@ -2,7 +2,7 @@
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
+ * The ASF licenses this file to you under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
  *
@@ -16,9 +16,9 @@
  */
 package org.apache.log4j.chainsaw;
 
-import javax.swing.*;
 import java.awt.event.MouseAdapter;
 import java.awt.event.MouseEvent;
+import javax.swing.*;
 
 /**
  * Ensures that a specific popupMenu is displayed when the relevant
diff --git a/src/main/java/org/apache/log4j/chainsaw/ProgressPanel.java b/src/main/java/org/apache/log4j/chainsaw/ProgressPanel.java
index e5c3a5a..e5c41e9 100644
--- a/src/main/java/org/apache/log4j/chainsaw/ProgressPanel.java
+++ b/src/main/java/org/apache/log4j/chainsaw/ProgressPanel.java
@@ -2,7 +2,7 @@
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
+ * The ASF licenses this file to you under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
  *
@@ -14,12 +14,11 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package org.apache.log4j.chainsaw;
 
-import javax.swing.*;
 import java.awt.*;
 import java.lang.reflect.InvocationTargetException;
+import javax.swing.*;
 
 /**
  * A simple ProgressPanel that can be used, a little more flexible
@@ -44,8 +43,7 @@ public class ProgressPanel extends JPanel {
     }
 
     public void setMessage(final String string) {
-        SwingUtilities.invokeLater(
-            () -> messageLabel.setText(string));
+        SwingUtilities.invokeLater(() -> messageLabel.setText(string));
     }
 
     public void setProgress(final int progress) {
diff --git a/src/main/java/org/apache/log4j/chainsaw/ReceiverConfigurationPanel.java b/src/main/java/org/apache/log4j/chainsaw/ReceiverConfigurationPanel.java
index 675d419..19441a5 100644
--- a/src/main/java/org/apache/log4j/chainsaw/ReceiverConfigurationPanel.java
+++ b/src/main/java/org/apache/log4j/chainsaw/ReceiverConfigurationPanel.java
@@ -2,7 +2,7 @@
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
+ * The ASF licenses this file to you under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
  *
@@ -17,16 +17,6 @@
 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;
-import javax.swing.text.StyleConstants;
-import javax.swing.text.StyledDocument;
 import java.awt.*;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
@@ -37,7 +27,15 @@ import java.net.MalformedURLException;
 import java.net.URL;
 import java.util.List;
 import java.util.Locale;
-
+import javax.swing.*;
+import javax.swing.text.SimpleAttributeSet;
+import javax.swing.text.StyleConstants;
+import javax.swing.text.StyledDocument;
+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;
 
 /**
  * A panel providing receiver configuration options
@@ -49,17 +47,17 @@ class ReceiverConfigurationPanel extends JPanel {
 
     private final PanelModel panelModel;
 
-    //network receiver widgets
+    // network receiver widgets
     private JComboBox<String> networkReceiverPortComboBox;
     private JComboBox<String> networkReceiverClassNameComboBox;
     private DefaultComboBoxModel<String> networkReceiverClassNameComboBoxModel;
     private DefaultComboBoxModel<String> networkReceiverPortComboBoxModel;
 
-    //log4j config receiver widgets
+    // log4j config receiver widgets
     private JButton browseLog4jConfigButton;
     private JTextField log4jConfigURLTextField;
 
-    //logfile receiver widgets
+    // logfile receiver widgets
     private JButton browseLogFileButton;
     private JComboBox<String> logFileFormatTypeComboBox;
 
@@ -69,19 +67,19 @@ class ReceiverConfigurationPanel extends JPanel {
     private DefaultComboBoxModel<String> logFileFormatComboBoxModel;
     private DefaultComboBoxModel<String> logFileFormatTimestampFormatComboBoxModel;
 
-    //use existing configuration widgets
+    // use existing configuration widgets
     private JButton browseForAnExistingConfigurationButton;
     private DefaultComboBoxModel<String> existingConfigurationComboBoxModel;
     private JComboBox<String> existingConfigurationComboBox;
 
-    //don't warn again widgets
+    // don't warn again widgets
     private JCheckBox dontwarnIfNoReceiver;
 
     private JButton saveButton;
     private JButton okButton;
     private JButton cancelButton;
 
-    //radiobutton widgets
+    // radiobutton widgets
     private JRadioButton log4jConfigReceiverRadioButton;
     private JRadioButton logFileReceiverRadioButton;
     private JRadioButton networkReceiverRadioButton;
@@ -97,9 +95,9 @@ class ReceiverConfigurationPanel extends JPanel {
     private final JPanel dontWarnAndOKPanel = buildDontWarnAndOKPanel();
     private final JPanel bottomDescriptionPanel = buildBottomDescriptionPanel();
 
-    //set by LogUI to handle hiding of the dialog
+    // set by LogUI to handle hiding of the dialog
     private ActionListener completionActionListener;
-    //used as frame for file open dialogs
+    // used as frame for file open dialogs
     private Container dialog;
 
     ReceiverConfigurationPanel(SettingsManager settingsManager) {
@@ -110,7 +108,8 @@ class ReceiverConfigurationPanel extends JPanel {
         buttonGroup = new ButtonGroup();
 
         lowerPanel = new JPanel(new BorderLayout());
-        lowerPanel.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createEtchedBorder(), BorderFactory.createEmptyBorder(5, 5, 5, 5)));
+        lowerPanel.setBorder(BorderFactory.createCompoundBorder(
+                BorderFactory.createEtchedBorder(), BorderFactory.createEmptyBorder(5, 5, 5, 5)));
         lowerPanel.setPreferredSize(new Dimension(600, 200));
         lowerPanel.setMinimumSize(new Dimension(600, 200));
 
@@ -233,14 +232,19 @@ class ReceiverConfigurationPanel extends JPanel {
         okButton.addActionListener(new ActionListener() {
             public void actionPerformed(ActionEvent e) {
                 panelModel.setCancelled(false);
-                if (logFileFormatComboBox.getSelectedItem() != null && !(logFileFormatComboBox.getSelectedItem().toString().trim().isEmpty())) {
-                    panelModel.setLogFormat(logFileFormatComboBox.getSelectedItem().toString());
+                if (logFileFormatComboBox.getSelectedItem() != null
+                        && !(logFileFormatComboBox
+                                .getSelectedItem()
+                                .toString()
+                                .trim()
+                                .isEmpty())) {
+                    panelModel.setLogFormat(
+                            logFileFormatComboBox.getSelectedItem().toString());
                 }
                 completionActionListener.actionPerformed(new ActionEvent(this, -1, "ok"));
             }
         });
 
-
         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) {
@@ -294,7 +298,7 @@ class ReceiverConfigurationPanel extends JPanel {
 
         networkReceiverClassNameComboBoxModel = new DefaultComboBoxModel<>();
         networkReceiverClassNameComboBoxModel.addElement(UDPReceiver.class.getName());
-//        networkReceiverClassNameComboBoxModel.addElement(JsonReceiver.class.getName());
+        //        networkReceiverClassNameComboBoxModel.addElement(JsonReceiver.class.getName());
 
         networkReceiverClassNameComboBox = new JComboBox<>(networkReceiverClassNameComboBoxModel);
 
@@ -333,14 +337,13 @@ class ReceiverConfigurationPanel extends JPanel {
                         log4jConfigURLTextField.setText(url.toExternalForm());
                     }
                 } catch (Exception ex) {
-                    logger.error(
-                        "Error browsing for log4j config file", ex);
+                    logger.error("Error browsing for log4j config file", ex);
                 }
             }
         });
 
         browseLog4jConfigButton.setToolTipText(
-            "Shows a File Open dialog to allow you to find a log4j configuration file");
+                "Shows a File Open dialog to allow you to find a log4j configuration file");
         JPanel panel = new JPanel(new GridBagLayout());
         GridBagConstraints c = new GridBagConstraints();
         c.gridx = 0;
@@ -363,7 +366,6 @@ class ReceiverConfigurationPanel extends JPanel {
         c.fill = GridBagConstraints.HORIZONTAL;
         panel.add(log4jConfigURLTextField, c);
 
-
         return panel;
     }
 
@@ -378,8 +380,7 @@ class ReceiverConfigurationPanel extends JPanel {
                         logFileURLTextField.setText(item);
                     }
                 } catch (Exception ex) {
-                    logger.error(
-                        "Error browsing for log file", ex);
+                    logger.error("Error browsing for log file", ex);
                 }
             }
         });
@@ -510,19 +511,17 @@ class ReceiverConfigurationPanel extends JPanel {
         existingConfigurationComboBox.setToolTipText("Previously loaded configurations can be chosen here");
         existingConfigurationComboBox.setEditable(true);
 
-        existingConfigurationComboBox.getEditor().getEditorComponent().addFocusListener(
-            new FocusListener() {
-                public void focusGained(FocusEvent e) {
-                    selectAll();
-                }
+        existingConfigurationComboBox.getEditor().getEditorComponent().addFocusListener(new FocusListener() {
+            public void focusGained(FocusEvent e) {
+                selectAll();
+            }
 
-                private void selectAll() {
-                    existingConfigurationComboBox.getEditor().selectAll();
-                }
+            private void selectAll() {
+                existingConfigurationComboBox.getEditor().selectAll();
+            }
 
-                public void focusLost(FocusEvent e) {
-                }
-            });
+            public void focusLost(FocusEvent e) {}
+        });
 
         browseForAnExistingConfigurationButton = new JButton(new AbstractAction(" Open File... ") {
             public void actionPerformed(ActionEvent e) {
@@ -532,18 +531,16 @@ class ReceiverConfigurationPanel extends JPanel {
 
                     if (url != null) {
                         existingConfigurationComboBoxModel.addElement(url.toExternalForm());
-                        existingConfigurationComboBox.getModel().setSelectedItem(
-                            url);
+                        existingConfigurationComboBox.getModel().setSelectedItem(url);
                     }
                 } catch (Exception ex) {
-                    logger.error(
-                        "Error browsing for Configuration file", ex);
+                    logger.error("Error browsing for Configuration file", ex);
                 }
             }
         });
 
         browseForAnExistingConfigurationButton.setToolTipText(
-            "Shows a File Open dialog to allow you to find a configuration file");
+                "Shows a File Open dialog to allow you to find a configuration file");
         JPanel panel = new JPanel(new GridBagLayout());
         GridBagConstraints c = new GridBagConstraints();
         c.gridx = 0;
@@ -566,7 +563,6 @@ class ReceiverConfigurationPanel extends JPanel {
         c.fill = GridBagConstraints.HORIZONTAL;
         panel.add(existingConfigurationComboBox, c);
 
-
         return panel;
     }
 
@@ -613,7 +609,7 @@ class ReceiverConfigurationPanel extends JPanel {
      * or null if they cancelled.
      */
     private URL browseConfig() throws MalformedURLException {
-        //hiding and showing the dialog to avoid focus issues with 2 dialogs
+        // hiding and showing the dialog to avoid focus issues with 2 dialogs
         dialog.setVisible(false);
         File selectedFile = SwingHelper.promptForFile(dialog, null, "Choose a Chainsaw configuration file", true);
         URL result = null;
@@ -635,7 +631,7 @@ class ReceiverConfigurationPanel extends JPanel {
      * or null if they cancelled.
      */
     private URL browseFile(String title, boolean loadDialog) throws MalformedURLException {
-        //hiding and showing the dialog to avoid focus issues with 2 dialogs
+        // hiding and showing the dialog to avoid focus issues with 2 dialogs
         dialog.setVisible(false);
         File selectedFile = SwingHelper.promptForFile(dialog, null, title, loadDialog);
         URL result = null;
@@ -671,7 +667,7 @@ class ReceiverConfigurationPanel extends JPanel {
     class PanelModel {
 
         private File file;
-        //default to cancelled
+        // default to cancelled
         private boolean cancelled = true;
         private String lastLogFormat;
         private File saveConfigFile;
@@ -687,12 +683,14 @@ class ReceiverConfigurationPanel extends JPanel {
 
         int getNetworkReceiverPort() {
 
-            return Integer.parseInt(networkReceiverPortComboBoxModel.getSelectedItem().toString());
+            return Integer.parseInt(
+                    networkReceiverPortComboBoxModel.getSelectedItem().toString());
         }
 
-//        Class<? extends Receiver> getNetworkReceiverClass() throws ClassNotFoundException {
-//            return Class.forName(networkReceiverClassNameComboBoxModel.getSelectedItem().toString()).asSubclass(Receiver.class);
-//        }
+        //        Class<? extends Receiver> getNetworkReceiverClass() throws ClassNotFoundException {
+        //            return
+        // Class.forName(networkReceiverClassNameComboBoxModel.getSelectedItem().toString()).asSubclass(Receiver.class);
+        //        }
 
         boolean isLoadConfig() {
 
@@ -710,7 +708,8 @@ class ReceiverConfigurationPanel extends JPanel {
         URL getConfigToLoad() {
 
             try {
-                return new URL(existingConfigurationComboBoxModel.getSelectedItem().toString());
+                return new URL(
+                        existingConfigurationComboBoxModel.getSelectedItem().toString());
             } catch (MalformedURLException e) {
                 return null;
             }
diff --git a/src/main/java/org/apache/log4j/chainsaw/ReceiverEventListener.java b/src/main/java/org/apache/log4j/chainsaw/ReceiverEventListener.java
index 309f72a..602dbab 100644
--- a/src/main/java/org/apache/log4j/chainsaw/ReceiverEventListener.java
+++ b/src/main/java/org/apache/log4j/chainsaw/ReceiverEventListener.java
@@ -2,7 +2,7 @@
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
+ * The ASF licenses this file to you under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
  *
@@ -23,8 +23,8 @@ import org.apache.log4j.chainsaw.receiver.ChainsawReceiver;
  * as receivers being added or removed.
  */
 public interface ReceiverEventListener {
-    
+
     public void receiverAdded(ChainsawReceiver rx);
-    
+
     public void receiverRemoved(ChainsawReceiver rx);
 }
diff --git a/src/main/java/org/apache/log4j/chainsaw/RuleMediator.java b/src/main/java/org/apache/log4j/chainsaw/RuleMediator.java
index 5bf19ca..d2d2a17 100644
--- a/src/main/java/org/apache/log4j/chainsaw/RuleMediator.java
+++ b/src/main/java/org/apache/log4j/chainsaw/RuleMediator.java
@@ -2,7 +2,7 @@
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
+ * The ASF licenses this file to you under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
  *
@@ -14,17 +14,14 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package org.apache.log4j.chainsaw;
 
-import org.apache.log4j.rule.AbstractRule;
-import org.apache.log4j.rule.Rule;
-
 import java.beans.PropertyChangeEvent;
 import java.beans.PropertyChangeListener;
 import java.util.Map;
 import org.apache.log4j.chainsaw.logevents.ChainsawLoggingEvent;
-
+import org.apache.log4j.rule.AbstractRule;
+import org.apache.log4j.rule.Rule;
 
 /**
  * A mediator class that implements the Rule interface, by combining several
@@ -60,8 +57,8 @@ public class RuleMediator extends AbstractRule {
             }
         }
 
-        return (loggerRule == null || loggerRule.evaluate(e, null)) && (filterRule == null || filterRule.evaluate(e, null));
-
+        return (loggerRule == null || loggerRule.evaluate(e, null))
+                && (filterRule == null || filterRule.evaluate(e, null));
     }
 
     public boolean isFindRuleRequired() {
diff --git a/src/main/java/org/apache/log4j/chainsaw/ShutdownListener.java b/src/main/java/org/apache/log4j/chainsaw/ShutdownListener.java
index 1628052..7a2ef65 100644
--- a/src/main/java/org/apache/log4j/chainsaw/ShutdownListener.java
+++ b/src/main/java/org/apache/log4j/chainsaw/ShutdownListener.java
@@ -2,7 +2,7 @@
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
+ * The ASF licenses this file to you under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
  *
@@ -16,9 +16,8 @@
  */
 package org.apache.log4j.chainsaw;
 
-import org.apache.log4j.chainsaw.logui.LogUI;
-
 import java.util.EventListener;
+import org.apache.log4j.chainsaw.logui.LogUI;
 
 /**
  * Chainsaw notifies these Listeners when the user has requested
diff --git a/src/main/java/org/apache/log4j/chainsaw/ShutdownManager.java b/src/main/java/org/apache/log4j/chainsaw/ShutdownManager.java
index e5aa005..5619377 100644
--- a/src/main/java/org/apache/log4j/chainsaw/ShutdownManager.java
+++ b/src/main/java/org/apache/log4j/chainsaw/ShutdownManager.java
@@ -1,17 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to you under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 package org.apache.log4j.chainsaw;
 
+import java.awt.*;
+import java.awt.event.ActionEvent;
+import java.util.List;
+import javax.swing.*;
+import javax.swing.event.EventListenerList;
 import org.apache.commons.configuration2.AbstractConfiguration;
 import org.apache.log4j.chainsaw.osx.OSXIntegration;
 import org.apache.log4j.chainsaw.receiver.ChainsawReceiver;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 
-import javax.swing.*;
-import javax.swing.event.EventListenerList;
-import java.awt.*;
-import java.awt.event.ActionEvent;
-import java.util.List;
-
 public class ShutdownManager {
     private static final Logger logger = LogManager.getLogger(ShutdownManager.class);
 
@@ -27,14 +42,18 @@ public class ShutdownManager {
      */
     private Action shutdownAction = null;
 
-    public ShutdownManager(JFrame logUI, AbstractConfiguration configuration, List<ChainsawReceiver> receivers, EventListenerList shutdownListenerList) {
+    public ShutdownManager(
+            JFrame logUI,
+            AbstractConfiguration configuration,
+            List<ChainsawReceiver> receivers,
+            EventListenerList shutdownListenerList) {
         this.logUI = logUI;
         this.configuration = configuration;
         this.receivers = receivers;
         this.shutdownListenerList = shutdownListenerList;
 
         // TODO unnecessary
-        this.setShutdownAction( new AbstractAction() {
+        this.setShutdownAction(new AbstractAction() {
             public void actionPerformed(ActionEvent e) {
                 System.exit(0);
             }
@@ -47,11 +66,13 @@ public class ShutdownManager {
     public boolean shutdown() {
         boolean confirmExit = configuration.getBoolean("confirmExit", true);
         if (confirmExit) {
-            if (
-                JOptionPane.showConfirmDialog(
-                    logUI, "Are you sure you want to exit Chainsaw?",
-                    "Confirm Exit", JOptionPane.YES_NO_OPTION,
-                    JOptionPane.INFORMATION_MESSAGE) != JOptionPane.YES_OPTION) {
+            if (JOptionPane.showConfirmDialog(
+                            logUI,
+                            "Are you sure you want to exit Chainsaw?",
+                            "Confirm Exit",
+                            JOptionPane.YES_NO_OPTION,
+                            JOptionPane.INFORMATION_MESSAGE)
+                    != JOptionPane.YES_OPTION) {
                 return false;
             }
         }
@@ -66,33 +87,32 @@ public class ShutdownManager {
         progressWindow.setLocation(p);
         progressWindow.setVisible(true);
 
-        Runnable runnable =
-            () -> {
-                try {
-                    int progress = 1;
-                    final int delay = 25;
+        Runnable runnable = () -> {
+            try {
+                int progress = 1;
+                final int delay = 25;
 
-                    panel.setProgress(progress++);
+                panel.setProgress(progress++);
 
-                    Thread.sleep(delay);
+                Thread.sleep(delay);
 
-                    for( ChainsawReceiver rx : receivers){
-                        rx.shutdown();
-                    }
-                    panel.setProgress(progress++);
+                for (ChainsawReceiver rx : receivers) {
+                    rx.shutdown();
+                }
+                panel.setProgress(progress++);
 
-                    Thread.sleep(delay);
+                Thread.sleep(delay);
 
-                    panel.setProgress(progress++);
-                    Thread.sleep(delay);
-                } catch (Exception e) {
-                    logger.error(e,e);
-                }
+                panel.setProgress(progress++);
+                Thread.sleep(delay);
+            } catch (Exception e) {
+                logger.error(e, e);
+            }
 
-                fireShutdownEvent();
-                performShutdownAction();
-                progressWindow.setVisible(false);
-            };
+            fireShutdownEvent();
+            performShutdownAction();
+            progressWindow.setVisible(false);
+        };
 
         if (OSXIntegration.IS_OSX) {
             /*
@@ -134,10 +154,8 @@ public class ShutdownManager {
      * actionPerformed(...) method.
      */
     private void performShutdownAction() {
-        logger.debug(
-            "Calling the shutdown Action. Goodbye!");
+        logger.debug("Calling the shutdown Action. Goodbye!");
 
-        shutdownAction.actionPerformed(
-            new ActionEvent(this, ActionEvent.ACTION_PERFORMED, "Shutting Down"));
+        shutdownAction.actionPerformed(new ActionEvent(this, ActionEvent.ACTION_PERFORMED, "Shutting Down"));
     }
 }
diff --git a/src/main/java/org/apache/log4j/chainsaw/SortTableModel.java b/src/main/java/org/apache/log4j/chainsaw/SortTableModel.java
index 5b55a3e..bd160c0 100644
--- a/src/main/java/org/apache/log4j/chainsaw/SortTableModel.java
+++ b/src/main/java/org/apache/log4j/chainsaw/SortTableModel.java
@@ -2,7 +2,7 @@
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
+ * The ASF licenses this file to you under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
  *
@@ -14,12 +14,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package org.apache.log4j.chainsaw;
 
 import javax.swing.table.TableModel;
 
-
 /**
  * An extended TableModel interface that allows Column sorting
  *
diff --git a/src/main/java/org/apache/log4j/chainsaw/TableColorizingRenderer.java b/src/main/java/org/apache/log4j/chainsaw/TableColorizingRenderer.java
index d189d1a..8f8d673 100644
--- a/src/main/java/org/apache/log4j/chainsaw/TableColorizingRenderer.java
+++ b/src/main/java/org/apache/log4j/chainsaw/TableColorizingRenderer.java
@@ -2,7 +2,7 @@
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
+ * The ASF licenses this file to you under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
  *
@@ -14,34 +14,29 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package org.apache.log4j.chainsaw;
 
-import org.apache.log4j.chainsaw.color.RuleColorizer;
-import org.apache.log4j.chainsaw.components.logpanel.LogPanelPreferenceModel;
-import org.apache.log4j.chainsaw.icons.LevelIconFactory;
-import org.apache.log4j.helpers.Constants;
-import org.apache.log4j.rule.Rule;
-import org.apache.log4j.spi.LoggingEventFieldResolver;
-
-import javax.swing.*;
-import javax.swing.border.Border;
-import javax.swing.table.DefaultTableCellRenderer;
-import javax.swing.table.TableColumn;
-import javax.swing.text.*;
 import java.awt.*;
 import java.text.DateFormat;
 import java.text.SimpleDateFormat;
 import java.time.Instant;
 import java.time.ZoneOffset;
 import java.time.ZonedDateTime;
-import java.time.format.DateTimeFormatter;
 import java.time.temporal.ChronoUnit;
 import java.util.*;
-
+import javax.swing.*;
+import javax.swing.border.Border;
+import javax.swing.table.DefaultTableCellRenderer;
+import javax.swing.table.TableColumn;
+import javax.swing.text.*;
 import org.apache.commons.configuration2.AbstractConfiguration;
+import org.apache.log4j.chainsaw.color.RuleColorizer;
+import org.apache.log4j.chainsaw.components.logpanel.LogPanelPreferenceModel;
+import org.apache.log4j.chainsaw.icons.LevelIconFactory;
 import org.apache.log4j.chainsaw.prefs.SettingsManager;
-
+import org.apache.log4j.helpers.Constants;
+import org.apache.log4j.rule.Rule;
+import org.apache.log4j.spi.LoggingEventFieldResolver;
 
 /**
  * A specific TableCellRenderer that colourizes a particular cell based on
@@ -90,9 +85,13 @@ public class TableColorizingRenderer extends DefaultTableCellRenderer {
     /**
      * Creates a new TableColorizingRenderer object.
      */
-    public TableColorizingRenderer(SettingsManager settingsManager, RuleColorizer colorizer,
-                                   EventContainer eventContainer, LogPanelPreferenceModel logPanelPreferenceModel,
-                                   ApplicationPreferenceModel applicationPreferenceModel, boolean colorizeSearch) {
+    public TableColorizingRenderer(
+            SettingsManager settingsManager,
+            RuleColorizer colorizer,
+            EventContainer eventContainer,
+            LogPanelPreferenceModel logPanelPreferenceModel,
+            ApplicationPreferenceModel applicationPreferenceModel,
+            boolean colorizeSearch) {
         this.settingsManager = settingsManager;
         this.applicationPreferenceModel = applicationPreferenceModel;
         this.logPanelPreferenceModel = logPanelPreferenceModel;
@@ -107,7 +106,7 @@ public class TableColorizingRenderer extends DefaultTableCellRenderer {
         try {
             iconMap.putAll(LevelIconFactory.getInstance().getLevelToIconMap());
         } catch (IllegalStateException ise) {
-            //ignore
+            // ignore
         }
 
         if (UIManager.get("Table.selectionBackground") != null) {
@@ -115,18 +114,18 @@ public class TableColorizingRenderer extends DefaultTableCellRenderer {
         } else {
             borderColor = Color.BLUE;
         }
-        //define the 'bold' attributeset
+        // define the 'bold' attributeset
         boldAttributeSet = new SimpleAttributeSet();
         StyleConstants.setBold(boldAttributeSet, true);
 
         insetAttributeSet = new SimpleAttributeSet();
         StyleConstants.setLeftIndent(insetAttributeSet, 6);
-        //throwable col may have a tab..if so, render the tab as col zero
+        // throwable col may have a tab..if so, render the tab as col zero
         int pos = 0;
         int align = TabStop.ALIGN_LEFT;
         int leader = TabStop.LEAD_NONE;
         TabStop tabStop = new TabStop(pos, align, leader);
-        tabs = new TabSet(new TabStop[]{tabStop});
+        tabs = new TabSet(new TabStop[] {tabStop});
 
         levelTextPane.setOpaque(true);
         levelTextPane.setText("");
@@ -153,35 +152,34 @@ public class TableColorizingRenderer extends DefaultTableCellRenderer {
     }
 
     public Component getTableCellRendererComponent(
-        final JTable table, Object value, boolean isSelected, boolean hasFocus,
-        int row, int col) {
+            final JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int col) {
         EventContainer container = (EventContainer) table.getModel();
         LoggingEventWrapper loggingEventWrapper = container.getRow(row);
         value = formatField(value, loggingEventWrapper);
         TableColumn tableColumn = table.getColumnModel().getColumn(col);
         int width = tableColumn.getWidth();
-        JLabel label = (JLabel) super.getTableCellRendererComponent(table, value,
-            isSelected, hasFocus, row, col);
-        //chainsawcolumns uses one-based indexing
+        JLabel label = (JLabel) super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, col);
+        // chainsawcolumns uses one-based indexing
         int colIndex = tableColumn.getModelIndex() + 1;
 
-        //no event, use default renderer
+        // no event, use default renderer
         if (loggingEventWrapper == null) {
             return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, col);
         }
         long delta = 0;
         if (row > 0) {
             LoggingEventWrapper previous = eventContainer.getRow(row - 1);
-            long millisBetween = ChronoUnit.MILLIS.between( loggingEventWrapper.getLoggingEvent().m_timestamp, previous.getLoggingEvent().m_timestamp );
-            delta = Math.min(ChainsawConstants.MILLIS_DELTA_RENDERING_HEIGHT_MAX, 
-                    Math.max(0, (long) ((millisBetween) * ChainsawConstants.MILLIS_DELTA_RENDERING_FACTOR)));
+            long millisBetween = ChronoUnit.MILLIS.between(
+                    loggingEventWrapper.getLoggingEvent().m_timestamp, previous.getLoggingEvent().m_timestamp);
+            delta = Math.min(ChainsawConstants.MILLIS_DELTA_RENDERING_HEIGHT_MAX, Math.max(0, (long)
+                    ((millisBetween) * ChainsawConstants.MILLIS_DELTA_RENDERING_FACTOR)));
         }
 
         Map matches = loggingEventWrapper.getSearchMatches();
 
         JComponent component;
         switch (colIndex) {
-/*            case ChainsawColumns.INDEX_THROWABLE_COL_NAME:
+                /*            case ChainsawColumns.INDEX_THROWABLE_COL_NAME:
                 if (value instanceof String[] && ((String[]) value).length > 0) {
                     Style tabStyle = singleLineTextPane.getLogicalStyle();
                     StyleConstants.setTabSet(tabStyle, tabs);
@@ -212,48 +210,52 @@ public class TableColorizingRenderer extends DefaultTableCellRenderer {
                     }
                 }
                 singleLineTextPane.setText(logger.substring(startPos + 1));
-                setHighlightAttributesInternal(matches.get(LoggingEventFieldResolver.LOGGER_FIELD), (StyledDocument) singleLineTextPane.getDocument());
+                setHighlightAttributesInternal(matches.get(LoggingEventFieldResolver.LOGGER_FIELD), (StyledDocument)
+                        singleLineTextPane.getDocument());
                 layoutRenderingPanel(generalPanel, singleLineTextPane, delta, isSelected, width, col, table);
                 component = generalPanel;
                 break;
             case ChainsawColumns.INDEX_ID_COL_NAME:
                 singleLineTextPane.setText(value.toString());
-                setHighlightAttributesInternal(matches.get(LoggingEventFieldResolver.PROP_FIELD + "LOG4JID"), (StyledDocument) singleLineTextPane.getDocument());
-                layoutRenderingPanel(generalPanel, singleLineTextPane, delta, isSelected, width, col, table);
-                component = generalPanel;
-                break;
-/*            case ChainsawColumns.INDEX_CLASS_COL_NAME:
-                singleLineTextPane.setText(value.toString());
-                setHighlightAttributesInternal(matches.get(LoggingEventFieldResolver.CLASS_FIELD), (StyledDocument) singleLineTextPane.getDocument());
-                layoutRenderingPanel(generalPanel, singleLineTextPane, delta, isSelected, width, col, table);
-                component = generalPanel;
-                break;
-            case ChainsawColumns.INDEX_FILE_COL_NAME:
-                singleLineTextPane.setText(value.toString());
-                setHighlightAttributesInternal(matches.get(LoggingEventFieldResolver.FILE_FIELD), (StyledDocument) singleLineTextPane.getDocument());
-                layoutRenderingPanel(generalPanel, singleLineTextPane, delta, isSelected, width, col, table);
-                component = generalPanel;
-                break;
-            case ChainsawColumns.INDEX_LINE_COL_NAME:
-                singleLineTextPane.setText(value.toString());
-                setHighlightAttributesInternal(matches.get(LoggingEventFieldResolver.LINE_FIELD), (StyledDocument) singleLineTextPane.getDocument());
-                layoutRenderingPanel(generalPanel, singleLineTextPane, delta, isSelected, width, col, table);
-                component = generalPanel;
-                break;
-            case ChainsawColumns.INDEX_NDC_COL_NAME:
-                singleLineTextPane.setText(value.toString());
-                setHighlightAttributesInternal(matches.get(LoggingEventFieldResolver.NDC_FIELD), (StyledDocument) singleLineTextPane.getDocument());
+                setHighlightAttributesInternal(
+                        matches.get(LoggingEventFieldResolver.PROP_FIELD + "LOG4JID"),
+                        (StyledDocument) singleLineTextPane.getDocument());
                 layoutRenderingPanel(generalPanel, singleLineTextPane, delta, isSelected, width, col, table);
                 component = generalPanel;
                 break;
-            case ChainsawColumns.INDEX_THREAD_COL_NAME:
-                singleLineTextPane.setText(value.toString());
-                setHighlightAttributesInternal(matches.get(LoggingEventFieldResolver.THREAD_FIELD), (StyledDocument) singleLineTextPane.getDocument());
-                layoutRenderingPanel(generalPanel, singleLineTextPane, delta, isSelected, width, col, table);
-                component = generalPanel;
-                break;*/
+                /*            case ChainsawColumns.INDEX_CLASS_COL_NAME:
+                    singleLineTextPane.setText(value.toString());
+                    setHighlightAttributesInternal(matches.get(LoggingEventFieldResolver.CLASS_FIELD), (StyledDocument) singleLineTextPane.getDocument());
+                    layoutRenderingPanel(generalPanel, singleLineTextPane, delta, isSelected, width, col, table);
+                    component = generalPanel;
+                    break;
+                case ChainsawColumns.INDEX_FILE_COL_NAME:
+                    singleLineTextPane.setText(value.toString());
+                    setHighlightAttributesInternal(matches.get(LoggingEventFieldResolver.FILE_FIELD), (StyledDocument) singleLineTextPane.getDocument());
+                    layoutRenderingPanel(generalPanel, singleLineTextPane, delta, isSelected, width, col, table);
+                    component = generalPanel;
+                    break;
+                case ChainsawColumns.INDEX_LINE_COL_NAME:
+                    singleLineTextPane.setText(value.toString());
+                    setHighlightAttributesInternal(matches.get(LoggingEventFieldResolver.LINE_FIELD), (StyledDocument) singleLineTextPane.getDocument());
+                    layoutRenderingPanel(generalPanel, singleLineTextPane, delta, isSelected, width, col, table);
+                    component = generalPanel;
+                    break;
+                case ChainsawColumns.INDEX_NDC_COL_NAME:
+                    singleLineTextPane.setText(value.toString());
+                    setHighlightAttributesInternal(matches.get(LoggingEventFieldResolver.NDC_FIELD), (StyledDocument) singleLineTextPane.getDocument());
+                    layoutRenderingPanel(generalPanel, singleLineTextPane, delta, isSelected, width, col, table);
+                    component = generalPanel;
+                    break;
+                case ChainsawColumns.INDEX_THREAD_COL_NAME:
+                    singleLineTextPane.setText(value.toString());
+                    setHighlightAttributesInternal(matches.get(LoggingEventFieldResolver.THREAD_FIELD), (StyledDocument) singleLineTextPane.getDocument());
+                    layoutRenderingPanel(generalPanel, singleLineTextPane, delta, isSelected, width, col, table);
+                    component = generalPanel;
+                    break;*/
             case ChainsawColumns.INDEX_TIMESTAMP_COL_NAME:
-                //timestamp matches contain the millis..not the display text..just highlight if we have a match for the timestamp field
+                // timestamp matches contain the millis..not the display text..just highlight if we have a match for the
+                // timestamp field
                 Set timestampMatches = (Set) matches.get(LoggingEventFieldResolver.TIMESTAMP_FIELD);
                 if (timestampMatches != null && timestampMatches.size() > 0) {
                     singleLineTextPane.setText(value.toString());
@@ -264,7 +266,7 @@ public class TableColorizingRenderer extends DefaultTableCellRenderer {
                 layoutRenderingPanel(generalPanel, singleLineTextPane, delta, isSelected, width, col, table);
                 component = generalPanel;
                 break;
-/*            case ChainsawColumns.INDEX_METHOD_COL_NAME:
+                /*            case ChainsawColumns.INDEX_METHOD_COL_NAME:
                 singleLineTextPane.setText(value.toString());
                 setHighlightAttributesInternal(matches.get(LoggingEventFieldResolver.METHOD_FIELD), (StyledDocument) singleLineTextPane.getDocument());
                 layoutRenderingPanel(generalPanel, singleLineTextPane, delta, isSelected, width, col, table);
@@ -278,10 +280,13 @@ public class TableColorizingRenderer extends DefaultTableCellRenderer {
                 textPane.setText(thisString);
 
                 if (colIndex == ChainsawColumns.INDEX_LOG4J_MARKER_COL_NAME) {
-                    //property keys are set as all uppercase
-                    setHighlightAttributesInternal(matches.get(LoggingEventFieldResolver.PROP_FIELD + ChainsawConstants.LOG4J_MARKER_COL_NAME), (StyledDocument) textPane.getDocument());
+                    // property keys are set as all uppercase
+                    setHighlightAttributesInternal(
+                            matches.get(LoggingEventFieldResolver.PROP_FIELD + ChainsawConstants.LOG4J_MARKER_COL_NAME),
+                            (StyledDocument) textPane.getDocument());
                 } else {
-                    setHighlightAttributesInternal(matches.get(LoggingEventFieldResolver.MSG_FIELD), (StyledDocument) textPane.getDocument());
+                    setHighlightAttributesInternal(
+                            matches.get(LoggingEventFieldResolver.MSG_FIELD), (StyledDocument) textPane.getDocument());
                 }
                 textPaneContainer.removeAll();
                 if (delta > 0 && logPanelPreferenceModel.isShowMillisDeltaAsGap()) {
@@ -316,19 +321,18 @@ public class TableColorizingRenderer extends DefaultTableCellRenderer {
                 boolean setHeight = false;
 
                 if (wrap) {
-            /*
-            calculating the height -would- be the correct thing to do, but setting the size to screen size works as well and
-            doesn't incur massive overhead, like calculateHeight does
-            Map paramMap = new HashMap();
-            paramMap.put(TextAttribute.FONT, multiLineTextPane.getFont());
-
-            int calculatedHeight = calculateHeight(thisString, width, paramMap);
-             */
-                    //instead, set size to max height
+                    /*
+                    calculating the height -would- be the correct thing to do, but setting the size to screen size works as well and
+                    doesn't incur massive overhead, like calculateHeight does
+                    Map paramMap = new HashMap();
+                    paramMap.put(TextAttribute.FONT, multiLineTextPane.getFont());
+
+                    int calculatedHeight = calculateHeight(thisString, width, paramMap);
+                     */
+                    // instead, set size to max height
                     textPane.setSize(new Dimension(width, maxHeight));
                     int multiLinePanelPrefHeight = textPaneContainer.getPreferredSize().height;
                     newRowHeight = Math.max(ChainsawConstants.DEFAULT_ROW_HEIGHT, multiLinePanelPrefHeight);
-
                 }
                 if (!wrap && logPanelPreferenceModel.isShowMillisDeltaAsGap()) {
                     textPane.setSize(new Dimension(Integer.MAX_VALUE, ChainsawConstants.DEFAULT_ROW_HEIGHT));
@@ -363,7 +367,8 @@ public class TableColorizingRenderer extends DefaultTableCellRenderer {
                     }
                 } else {
                     levelTextPane.setText(value.toString());
-                    setHighlightAttributesInternal(matches.get(LoggingEventFieldResolver.LEVEL_FIELD), (StyledDocument) levelTextPane.getDocument());
+                    setHighlightAttributesInternal(matches.get(LoggingEventFieldResolver.LEVEL_FIELD), (StyledDocument)
+                            levelTextPane.getDocument());
                     if (!toolTipsVisible) {
                         levelTextPane.setToolTipText(null);
                     }
@@ -377,12 +382,12 @@ public class TableColorizingRenderer extends DefaultTableCellRenderer {
                 component = levelPanel;
                 break;
 
-            //remaining entries are properties
+                // remaining entries are properties
             default:
                 Set propertySet = loggingEventWrapper.getPropertyKeySet();
                 String headerName = tableColumn.getHeaderValue().toString().toLowerCase();
                 String thisProp = null;
-                //find the property in the property set...case-sensitive
+                // find the property in the property set...case-sensitive
                 for (Object aPropertySet : propertySet) {
                     String entry = aPropertySet.toString();
                     if (entry.equalsIgnoreCase(headerName)) {
@@ -393,7 +398,8 @@ public class TableColorizingRenderer extends DefaultTableCellRenderer {
                 if (thisProp != null) {
                     String propKey = LoggingEventFieldResolver.PROP_FIELD + thisProp.toUpperCase();
                     Set propKeyMatches = (Set) matches.get(propKey);
-                    singleLineTextPane.setText(loggingEventWrapper.getLoggingEvent().getProperty(thisProp));
+                    singleLineTextPane.setText(
+                            loggingEventWrapper.getLoggingEvent().getProperty(thisProp));
                     setHighlightAttributesInternal(propKeyMatches, (StyledDocument) singleLineTextPane.getDocument());
                 } else {
                     singleLineTextPane.setText("");
@@ -407,14 +413,22 @@ public class TableColorizingRenderer extends DefaultTableCellRenderer {
         Color foreground;
         Rule loggerRule = colorizer.getLoggerRule();
         AbstractConfiguration configuration = settingsManager.getGlobalConfiguration();
-        //use logger colors in table instead of event colors if event passes logger rule
+        // use logger colors in table instead of event colors if event passes logger rule
         if (loggerRule != null && loggerRule.evaluate(loggingEventWrapper.getLoggingEvent(), null)) {
-            background = configuration.get(Color.class, "searchBackgroundColor", ChainsawConstants.FIND_LOGGER_BACKGROUND);
-            foreground = configuration.get(Color.class, "searchForegroundColor", ChainsawConstants.FIND_LOGGER_FOREGROUND);
+            background =
+                    configuration.get(Color.class, "searchBackgroundColor", ChainsawConstants.FIND_LOGGER_BACKGROUND);
+            foreground =
+                    configuration.get(Color.class, "searchForegroundColor", ChainsawConstants.FIND_LOGGER_FOREGROUND);
         } else {
             if (colorizeSearch && !configuration.getBoolean("bypassSearchColors", false)) {
-                background = loggingEventWrapper.isSearchMatch() ? configuration.get(Color.class, "searchBackgroundColor", ChainsawConstants.FIND_LOGGER_BACKGROUND) : loggingEventWrapper.getBackground();
-                foreground = loggingEventWrapper.isSearchMatch() ? configuration.get(Color.class, "searchForegroundColor", ChainsawConstants.FIND_LOGGER_FOREGROUND) : loggingEventWrapper.getForeground();
+                background = loggingEventWrapper.isSearchMatch()
+                        ? configuration.get(
+                                Color.class, "searchBackgroundColor", ChainsawConstants.FIND_LOGGER_BACKGROUND)
+                        : loggingEventWrapper.getBackground();
+                foreground = loggingEventWrapper.isSearchMatch()
+                        ? configuration.get(
+                                Color.class, "searchForegroundColor", ChainsawConstants.FIND_LOGGER_FOREGROUND)
+                        : loggingEventWrapper.getForeground();
             } else {
                 background = loggingEventWrapper.getBackground();
                 foreground = loggingEventWrapper.getForeground();
@@ -424,15 +438,19 @@ public class TableColorizingRenderer extends DefaultTableCellRenderer {
         /**
          * Colourize background based on row striping if the event still has default foreground and background color
          */
-        if (background.equals(ChainsawConstants.COLOR_DEFAULT_BACKGROUND) && foreground.equals(ChainsawConstants.COLOR_DEFAULT_FOREGROUND) && (row % 2) != 0) {
-            background = configuration.get(Color.class, "alternatingColorBackground", ChainsawConstants.COLOR_ODD_ROW_BACKGROUND);
-            foreground = configuration.get(Color.class, "alternatingColorForeground", ChainsawConstants.COLOR_ODD_ROW_FOREGROUND);
+        if (background.equals(ChainsawConstants.COLOR_DEFAULT_BACKGROUND)
+                && foreground.equals(ChainsawConstants.COLOR_DEFAULT_FOREGROUND)
+                && (row % 2) != 0) {
+            background = configuration.get(
+                    Color.class, "alternatingColorBackground", ChainsawConstants.COLOR_ODD_ROW_BACKGROUND);
+            foreground = configuration.get(
+                    Color.class, "alternatingColorForeground", ChainsawConstants.COLOR_ODD_ROW_FOREGROUND);
         }
 
         component.setBackground(background);
         component.setForeground(foreground);
 
-        //update the background & foreground of the jtextpane using styles
+        // update the background & foreground of the jtextpane using styles
         if (multiLineTextPane != null) {
             updateColors(multiLineTextPane, background, foreground);
         }
@@ -442,8 +460,14 @@ public class TableColorizingRenderer extends DefaultTableCellRenderer {
         return component;
     }
 
-    private void layoutRenderingPanel(JComponent container, JComponent bottomComponent, long delta, boolean isSelected,
-                                      int width, int col, JTable table) {
+    private void layoutRenderingPanel(
+            JComponent container,
+            JComponent bottomComponent,
+            long delta,
+            boolean isSelected,
+            int width,
+            int col,
+            JTable table) {
         container.removeAll();
         if (delta == 0 || !logPanelPreferenceModel.isShowMillisDeltaAsGap()) {
             if (col == 0) {
@@ -479,7 +503,8 @@ public class TableColorizingRenderer extends DefaultTableCellRenderer {
         if (delta == 0 || !wrap || !logPanelPreferenceModel.isShowMillisDeltaAsGap()) {
             return innerBorder;
         } else {
-            Border outerBorder = BorderFactory.createMatteBorder((int) Math.max(borderWidth, delta), 0, 0, 0, applicationPreferenceModel.getDeltaColor());
+            Border outerBorder = BorderFactory.createMatteBorder(
+                    (int) Math.max(borderWidth, delta), 0, 0, 0, applicationPreferenceModel.getDeltaColor());
             return BorderFactory.createCompoundBorder(outerBorder, innerBorder);
         }
     }
@@ -491,7 +516,8 @@ public class TableColorizingRenderer extends DefaultTableCellRenderer {
         if (delta == 0 || !wrap || !logPanelPreferenceModel.isShowMillisDeltaAsGap()) {
             return innerBorder;
         } else {
-            Border outerBorder = BorderFactory.createMatteBorder((int) Math.max(borderWidth, delta), 0, 0, 0, applicationPreferenceModel.getDeltaColor());
+            Border outerBorder = BorderFactory.createMatteBorder(
+                    (int) Math.max(borderWidth, delta), 0, 0, 0, applicationPreferenceModel.getDeltaColor());
             return BorderFactory.createCompoundBorder(outerBorder, innerBorder);
         }
     }
@@ -503,7 +529,8 @@ public class TableColorizingRenderer extends DefaultTableCellRenderer {
         if (delta == 0 || !wrap || !logPanelPreferenceModel.isShowMillisDeltaAsGap()) {
             return innerBorder;
         } else {
-            Border outerBorder = BorderFactory.createMatteBorder((int) Math.max(borderWidth, delta), 0, 0, 0, applicationPreferenceModel.getDeltaColor());
+            Border outerBorder = BorderFactory.createMatteBorder(
+                    (int) Math.max(borderWidth, delta), 0, 0, 0, applicationPreferenceModel.getDeltaColor());
             return BorderFactory.createCompoundBorder(outerBorder, innerBorder);
         }
     }
@@ -553,7 +580,7 @@ public class TableColorizingRenderer extends DefaultTableCellRenderer {
             return (field == null ? "" : field);
         }
 
-        //handle date field
+        // handle date field
         if (useRelativeTimesToFixedTime) {
             ZonedDateTime dt = ((Instant) field).atZone(ZoneOffset.UTC);
             return "" + ChronoUnit.MILLIS.between(dt, relativeTimestampBase);
@@ -562,7 +589,7 @@ public class TableColorizingRenderer extends DefaultTableCellRenderer {
             return loggingEventWrapper.getLoggingEvent().getProperty(ChainsawConstants.MILLIS_DELTA_COL_NAME_LOWERCASE);
         }
 
-        return dateFormatInUse.format(Date.from((Instant)field));
+        return dateFormatInUse.format(Date.from((Instant) field));
     }
 
     /**
@@ -600,9 +627,9 @@ public class TableColorizingRenderer extends DefaultTableCellRenderer {
     public void setUseRelativeTimes(ZonedDateTime timeStamp) {
         useRelativeTimesToFixedTime = true;
         useRelativeTimesToPrevious = false;
-        if( timeStamp != null ){
+        if (timeStamp != null) {
             relativeTimestampBase = timeStamp;
-        }else{
+        } else {
             relativeTimestampBase = ZonedDateTime.now();
         }
     }
@@ -617,24 +644,24 @@ public class TableColorizingRenderer extends DefaultTableCellRenderer {
         useRelativeTimesToPrevious = false;
     }
 
-  /*
-   private int calculateHeight(String string, int width, Map paramMap) {
-     if (string.trim().length() == 0) {
-         return ChainsawConstants.DEFAULT_ROW_HEIGHT;
+    /*
+    private int calculateHeight(String string, int width, Map paramMap) {
+      if (string.trim().length() == 0) {
+          return ChainsawConstants.DEFAULT_ROW_HEIGHT;
+      }
+      AttributedCharacterIterator paragraph = new AttributedString(string, paramMap).getIterator();
+      LineBreakMeasurer lineMeasurer = new LineBreakMeasurer(paragraph, new FontRenderContext(null, true, true));
+      float height = 0;
+      lineMeasurer.setPosition(paragraph.getBeginIndex());
+      TextLayout layout;
+      while (lineMeasurer.getPosition() < paragraph.getEndIndex()) {
+        layout = lineMeasurer.nextLayout(width);
+          float layoutHeight = layout.getAscent() + layout.getDescent() + layout.getLeading();
+          height += layoutHeight;
+      }
+      return Math.max(ChainsawConstants.DEFAULT_ROW_HEIGHT, (int) height);
      }
-     AttributedCharacterIterator paragraph = new AttributedString(string, paramMap).getIterator();
-     LineBreakMeasurer lineMeasurer = new LineBreakMeasurer(paragraph, new FontRenderContext(null, true, true));
-     float height = 0;
-     lineMeasurer.setPosition(paragraph.getBeginIndex());
-     TextLayout layout;
-     while (lineMeasurer.getPosition() < paragraph.getEndIndex()) {
-       layout = lineMeasurer.nextLayout(width);
-         float layoutHeight = layout.getAscent() + layout.getDescent() + layout.getLeading();
-         height += layoutHeight;
-     }
-     return Math.max(ChainsawConstants.DEFAULT_ROW_HEIGHT, (int) height);
-    }
-    */
+     */
 
     private void setHighlightAttributesInternal(Object matchSet, StyledDocument styledDocument) {
         if (!highlightSearchMatchText) {
@@ -662,7 +689,8 @@ public class TableColorizingRenderer extends DefaultTableCellRenderer {
 
     private void bold(String textToBold, StyledDocument styledDocument) {
         try {
-            String lowerInput = styledDocument.getText(0, styledDocument.getLength()).toLowerCase();
+            String lowerInput =
+                    styledDocument.getText(0, styledDocument.getLength()).toLowerCase();
             String lowerTextToBold = textToBold.toLowerCase();
             int textToBoldLength = textToBold.length();
             int firstIndex = 0;
@@ -672,7 +700,7 @@ public class TableColorizingRenderer extends DefaultTableCellRenderer {
                 firstIndex = currentIndex + textToBoldLength;
             }
         } catch (BadLocationException e) {
-            //ignore
+            // ignore
         }
     }
 
@@ -714,7 +742,7 @@ public class TableColorizingRenderer extends DefaultTableCellRenderer {
             super(elem);
         }
 
-        //this is the main fix - set the flow span to be max val
+        // this is the main fix - set the flow span to be max val
         public int getFlowSpan(int index) {
             return Integer.MAX_VALUE;
         }
diff --git a/src/main/java/org/apache/log4j/chainsaw/color/ColorPanel.java b/src/main/java/org/apache/log4j/chainsaw/color/ColorPanel.java
index f3ac3b3..6077b97 100644
--- a/src/main/java/org/apache/log4j/chainsaw/color/ColorPanel.java
+++ b/src/main/java/org/apache/log4j/chainsaw/color/ColorPanel.java
@@ -2,7 +2,7 @@
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
+ * The ASF licenses this file to you under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
  *
@@ -14,22 +14,8 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package org.apache.log4j.chainsaw.color;
 
-import org.apache.log4j.chainsaw.ChainsawConstants;
-import org.apache.log4j.chainsaw.ExpressionRuleContext;
-import org.apache.log4j.chainsaw.filter.FilterModel;
-import org.apache.log4j.chainsaw.helper.SwingHelper;
-import org.apache.log4j.chainsaw.icons.ChainsawIcons;
-import org.apache.log4j.rule.ColorRule;
-import org.apache.log4j.rule.ExpressionRule;
-import org.apache.log4j.rule.Rule;
-
-import javax.swing.*;
-import javax.swing.border.Border;
-import javax.swing.table.DefaultTableModel;
-import javax.swing.table.TableCellRenderer;
 import java.awt.*;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
@@ -38,16 +24,26 @@ import java.awt.event.ItemListener;
 import java.awt.event.MouseEvent;
 import java.util.*;
 import java.util.List;
+import javax.swing.*;
+import javax.swing.border.Border;
 import javax.swing.table.AbstractTableModel;
+import javax.swing.table.DefaultTableModel;
 import javax.swing.table.TableCellEditor;
-
+import javax.swing.table.TableCellRenderer;
 import org.apache.commons.configuration2.AbstractConfiguration;
+import org.apache.log4j.chainsaw.ChainsawConstants;
+import org.apache.log4j.chainsaw.ExpressionRuleContext;
 import org.apache.log4j.chainsaw.components.logpanel.LogPanel;
+import org.apache.log4j.chainsaw.filter.FilterModel;
+import org.apache.log4j.chainsaw.helper.SwingHelper;
+import org.apache.log4j.chainsaw.icons.ChainsawIcons;
 import org.apache.log4j.chainsaw.prefs.SettingsManager;
+import org.apache.log4j.rule.ColorRule;
+import org.apache.log4j.rule.ExpressionRule;
+import org.apache.log4j.rule.Rule;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 
-
 /**
  * Panel which updates a RuleColorizer, allowing the user to build expression-based
  * color rules.
@@ -84,10 +80,12 @@ public class ColorPanel extends JPanel {
     private JLabel rulesLabel;
     private SettingsManager settingsManager;
 
-    public ColorPanel(SettingsManager settingsManager, final RuleColorizer globalColorizer,
-                      final FilterModel filterModel,
-                      final Map<String, RuleColorizer> allLogPanelColorizers,
-                      final LogPanel parent) {
+    public ColorPanel(
+            SettingsManager settingsManager,
+            final RuleColorizer globalColorizer,
+            final FilterModel filterModel,
+            final Map<String, RuleColorizer> allLogPanelColorizers,
+            final LogPanel parent) {
         super(new BorderLayout());
         this.settingsManager = settingsManager;
 
@@ -98,15 +96,12 @@ public class ColorPanel extends JPanel {
         this.globalColorizer = globalColorizer;
         this.parentLogPanel = parent;
 
-        parentLogPanel.getCurrentRuleColorizer().addPropertyChangeListener(
-            "colorrule",
-            evt -> updateColors());
+        parentLogPanel.getCurrentRuleColorizer().addPropertyChangeListener("colorrule", evt -> updateColors());
 
         rulesTableModel = new RulesTableModel();
         rulesTable = new JTable(rulesTableModel);
         rulesTable.setRowHeight(ChainsawConstants.DEFAULT_ROW_HEIGHT);
-        rulesTable.getColumnModel().getColumn(0)
-                .setCellEditor(new RulesTableCellEditor());
+        rulesTable.getColumnModel().getColumn(0).setCellEditor(new RulesTableCellEditor());
 
         searchTableModel = new DefaultTableModel();
         searchTable = new JTable(searchTableModel);
@@ -122,18 +117,22 @@ public class ColorPanel extends JPanel {
         searchColumns.add("Background");
         searchColumns.add("Foreground");
 
-        //searchtable contains only a single-entry vector containing a two-item vector (foreground, background)
+        // searchtable contains only a single-entry vector containing a two-item vector (foreground, background)
         Vector<Vector<Color>> searchDataVector = new Vector<>();
         searchDataVectorEntry = new Vector<>();
-        searchDataVectorEntry.add(configuration.get(Color.class, "searchBackgroundColor", ChainsawConstants.FIND_LOGGER_BACKGROUND));
-        searchDataVectorEntry.add(configuration.get(Color.class, "searchForegroundColor", ChainsawConstants.FIND_LOGGER_FOREGROUND));
+        searchDataVectorEntry.add(
+                configuration.get(Color.class, "searchBackgroundColor", ChainsawConstants.FIND_LOGGER_BACKGROUND));
+        searchDataVectorEntry.add(
+                configuration.get(Color.class, "searchForegroundColor", ChainsawConstants.FIND_LOGGER_FOREGROUND));
         searchDataVector.add(searchDataVectorEntry);
         searchTableModel.setDataVector(searchDataVector, searchColumns);
 
         Vector<Vector<Color>> alternatingColorDataVector = new Vector<>();
         alternatingColorDataVectorEntry = new Vector<>();
-        alternatingColorDataVectorEntry.add(configuration.get(Color.class, "alternatingColorBackground", ChainsawConstants.COLOR_ODD_ROW_BACKGROUND));
-        alternatingColorDataVectorEntry.add(configuration.get(Color.class, "alternatingColorForeground", ChainsawConstants.COLOR_ODD_ROW_FOREGROUND));
+        alternatingColorDataVectorEntry.add(configuration.get(
+                Color.class, "alternatingColorBackground", ChainsawConstants.COLOR_ODD_ROW_BACKGROUND));
+        alternatingColorDataVectorEntry.add(configuration.get(
+                Color.class, "alternatingColorForeground", ChainsawConstants.COLOR_ODD_ROW_FOREGROUND));
         alternatingColorDataVector.add(alternatingColorDataVectorEntry);
 
         Vector<String> alternatingColorColumns = new Vector<>();
@@ -156,7 +155,7 @@ public class ColorPanel extends JPanel {
         searchTable.getColumnModel().getColumn(1).setPreferredWidth(80);
         searchTable.getColumnModel().getColumn(0).setMaxWidth(80);
         searchTable.getColumnModel().getColumn(1).setMaxWidth(80);
-        //building color choosers needs to be done on the EDT
+        // building color choosers needs to be done on the EDT
         SwingHelper.invokeOnEDT(() -> configureSingleEntryColorTable(searchTable));
 
         alternatingColorTable.sizeColumnsToFit(0);
@@ -164,7 +163,7 @@ public class ColorPanel extends JPanel {
         alternatingColorTable.getColumnModel().getColumn(1).setPreferredWidth(80);
         alternatingColorTable.getColumnModel().getColumn(0).setMaxWidth(80);
         alternatingColorTable.getColumnModel().getColumn(1).setMaxWidth(80);
-        //building color choosers needs to be done on the EDT
+        // building color choosers needs to be done on the EDT
         SwingHelper.invokeOnEDT(() -> configureSingleEntryColorTable(alternatingColorTable));
 
         configureTable();
@@ -174,8 +173,7 @@ public class ColorPanel extends JPanel {
         JPanel rightPanel = new JPanel(new BorderLayout());
 
         JPanel rightOuterPanel = new JPanel();
-        rightOuterPanel.setLayout(
-            new BoxLayout(rightOuterPanel, BoxLayout.X_AXIS));
+        rightOuterPanel.setLayout(new BoxLayout(rightOuterPanel, BoxLayout.X_AXIS));
         rightOuterPanel.add(Box.createHorizontalStrut(10));
 
         JPanel southPanel = new JPanel();
@@ -233,9 +231,9 @@ public class ColorPanel extends JPanel {
                     newColorizer.setRules(sourceColorizer.getRules());
                     parent.setRuleColorizer(newColorizer);
                     updateColors();
-                    parentLogPanel.getCurrentRuleColorizer().addPropertyChangeListener(
-                        "colorrule",
-                        evt -> updateColors());
+                    parentLogPanel
+                            .getCurrentRuleColorizer()
+                            .addPropertyChangeListener("colorrule", evt -> updateColors());
                 }
             }
         };
@@ -267,28 +265,38 @@ public class ColorPanel extends JPanel {
         }
         RuleColorizer currentLogPanelColorizer = parentLogPanel.getCurrentRuleColorizer();
         for (Map.Entry<String, RuleColorizer> entry : allLogPanelColorizers.entrySet()) {
-            if (!entry.getValue().equals(currentLogPanelColorizer) && (logPanelColorizersModel.getIndexOf(entry.getKey()) == -1)) {
+            if (!entry.getValue().equals(currentLogPanelColorizer)
+                    && (logPanelColorizersModel.getIndexOf(entry.getKey()) == -1)) {
                 logPanelColorizersModel.addElement(entry.getKey());
             }
         }
 
         AbstractConfiguration configuration = settingsManager.getGlobalConfiguration();
-        //update search and alternating colors, since they may have changed from another color panel
-        searchDataVectorEntry.set(0, configuration.get(Color.class, "searchBackgroundColor", ChainsawConstants.FIND_LOGGER_BACKGROUND));
-        searchDataVectorEntry.set(1, configuration.get(Color.class, "searchForegroundColor", ChainsawConstants.FIND_LOGGER_FOREGROUND));
-        alternatingColorDataVectorEntry.set(0, configuration.get(Color.class, "alternatingColorBackground", ChainsawConstants.COLOR_ODD_ROW_BACKGROUND));
-        alternatingColorDataVectorEntry.set(1, configuration.get(Color.class, "alternatingColorForeground", ChainsawConstants.COLOR_ODD_ROW_FOREGROUND));
+        // update search and alternating colors, since they may have changed from another color panel
+        searchDataVectorEntry.set(
+                0, configuration.get(Color.class, "searchBackgroundColor", ChainsawConstants.FIND_LOGGER_BACKGROUND));
+        searchDataVectorEntry.set(
+                1, configuration.get(Color.class, "searchForegroundColor", ChainsawConstants.FIND_LOGGER_FOREGROUND));
+        alternatingColorDataVectorEntry.set(
+                0,
+                configuration.get(
+                        Color.class, "alternatingColorBackground", ChainsawConstants.COLOR_ODD_ROW_BACKGROUND));
+        alternatingColorDataVectorEntry.set(
+                1,
+                configuration.get(
+                        Color.class, "alternatingColorForeground", ChainsawConstants.COLOR_ODD_ROW_FOREGROUND));
     }
 
-    public void componentChanged(){
-        logger.debug( "Color panel changed. Current colorizer: {} Global colorizer: {}",
+    public void componentChanged() {
+        logger.debug(
+                "Color panel changed. Current colorizer: {} Global colorizer: {}",
                 parentLogPanel.getCurrentRuleColorizer(),
-            globalColorizer);
+                globalColorizer);
 
-        if( globalColorizer == parentLogPanel.getCurrentRuleColorizer() ){
+        if (globalColorizer == parentLogPanel.getCurrentRuleColorizer()) {
             globalRulesCheckbox.setSelected(true);
             rulesLabel.setText("Global rules:");
-        }else{
+        } else {
             globalRulesCheckbox.setSelected(false);
             rulesLabel.setText("Rules:");
         }
@@ -341,27 +349,21 @@ public class ColorPanel extends JPanel {
     }
 
     private void configureTable() {
-        prepareTable(rulesTable, 1,2);
+        prepareTable(rulesTable, 1, 2);
 
         JTextField textField = new JTextField();
         textField.addKeyListener(new ExpressionRuleContext(filterModel, textField));
 
-
-        rulesTable.getColumnModel().getColumn(0).setCellRenderer(
-            new ExpressionTableCellRenderer());
-        rulesTable.getColumnModel().getColumn(1).setCellRenderer(
-            new ColorTableCellRenderer());
-        rulesTable.getColumnModel().getColumn(2).setCellRenderer(
-            new ColorTableCellRenderer());
+        rulesTable.getColumnModel().getColumn(0).setCellRenderer(new ExpressionTableCellRenderer());
+        rulesTable.getColumnModel().getColumn(1).setCellRenderer(new ColorTableCellRenderer());
+        rulesTable.getColumnModel().getColumn(2).setCellRenderer(new ColorTableCellRenderer());
     }
 
     private void configureSingleEntryColorTable(JTable thisTable) {
         prepareTable(thisTable, 0, 1);
 
-        thisTable.getColumnModel().getColumn(0).setCellRenderer(
-            new ColorTableCellRenderer());
-        thisTable.getColumnModel().getColumn(1).setCellRenderer(
-            new ColorTableCellRenderer());
+        thisTable.getColumnModel().getColumn(0).setCellRenderer(new ColorTableCellRenderer());
+        thisTable.getColumnModel().getColumn(1).setCellRenderer(new ColorTableCellRenderer());
     }
 
     private JTable prepareTable(JTable table, int backgroundEditorPosition, int foregroundEditorPosition) {
@@ -407,7 +409,7 @@ public class ColorPanel extends JPanel {
         rulesTable.getColumnModel().getColumn(0).getCellEditor().stopCellEditing();
 
         ((ExpressionTableCellRenderer) rulesTable.getColumnModel().getColumn(0).getCellRenderer())
-            .setToolTipText(LABEL_DOUBLE_CLICK_TO_EDIT);
+                .setToolTipText(LABEL_DOUBLE_CLICK_TO_EDIT);
         statusBar.setText(DEFAULT_STATUS);
 
         applyingColorizer.setRules(rulesTableModel.rules());
@@ -420,25 +422,23 @@ public class ColorPanel extends JPanel {
 
         JButton applyButton = new JButton(" Apply ");
 
-        applyButton.addActionListener(
-            new AbstractAction() {
-                public void actionPerformed(ActionEvent evt) {
-                    applyRules(parentLogPanel.getCurrentRuleColorizer());
-                    saveSearchColors();
-                }
-            });
+        applyButton.addActionListener(new AbstractAction() {
+            public void actionPerformed(ActionEvent evt) {
+                applyRules(parentLogPanel.getCurrentRuleColorizer());
+                saveSearchColors();
+            }
+        });
 
         panel.add(Box.createHorizontalStrut(10));
         panel.add(applyButton);
 
         JButton closeButton = new JButton(" Close ");
 
-        closeButton.addActionListener(
-            new AbstractAction() {
-                public void actionPerformed(ActionEvent evt) {
-                    hidePanel();
-                }
-            });
+        closeButton.addActionListener(new AbstractAction() {
+            public void actionPerformed(ActionEvent evt) {
+                hidePanel();
+            }
+        });
         panel.add(Box.createHorizontalStrut(10));
         panel.add(closeButton);
 
@@ -465,29 +465,28 @@ public class ColorPanel extends JPanel {
         upButton.setEnabled(false);
         downButton.setEnabled(false);
 
-        rulesTable.getSelectionModel().addListSelectionListener(
-            e -> {
-                if (!e.getValueIsAdjusting()) {
-                    int index = rulesTable.getSelectionModel().getMaxSelectionIndex();
-
-                    if (index < 0) {
-                        downButton.setEnabled(false);
-                        upButton.setEnabled(false);
-                    } else if ((index == 0) && (rulesTableModel.getRowCount() == 1)) {
-                        downButton.setEnabled(false);
-                        upButton.setEnabled(false);
-                    } else if ((index == 0) && (rulesTableModel.getRowCount() > 1)) {
-                        downButton.setEnabled(true);
-                        upButton.setEnabled(false);
-                    } else if (index == (rulesTableModel.getRowCount() - 1)) {
-                        downButton.setEnabled(false);
-                        upButton.setEnabled(true);
-                    } else {
-                        downButton.setEnabled(true);
-                        upButton.setEnabled(true);
-                    }
+        rulesTable.getSelectionModel().addListSelectionListener(e -> {
+            if (!e.getValueIsAdjusting()) {
+                int index = rulesTable.getSelectionModel().getMaxSelectionIndex();
+
+                if (index < 0) {
+                    downButton.setEnabled(false);
+                    upButton.setEnabled(false);
+                } else if ((index == 0) && (rulesTableModel.getRowCount() == 1)) {
+                    downButton.setEnabled(false);
+                    upButton.setEnabled(false);
+                } else if ((index == 0) && (rulesTableModel.getRowCount() > 1)) {
+                    downButton.setEnabled(true);
+                    upButton.setEnabled(false);
+                } else if (index == (rulesTableModel.getRowCount() - 1)) {
+                    downButton.setEnabled(false);
+                    upButton.setEnabled(true);
+                } else {
+                    downButton.setEnabled(true);
+                    upButton.setEnabled(true);
                 }
-            });
+            }
+        });
 
         JPanel upPanel = new JPanel();
 
@@ -502,21 +501,19 @@ public class ColorPanel extends JPanel {
         innerPanel.add(downPanel);
         panel.add(innerPanel, BorderLayout.CENTER);
 
-        upButton.addActionListener(
-            new AbstractAction() {
-                public void actionPerformed(ActionEvent evt) {
-                    int index = rulesTable.getSelectionModel().getMaxSelectionIndex();
-                    rulesTableModel.moveRowAtIndexUp(index);
-                }
-            });
+        upButton.addActionListener(new AbstractAction() {
+            public void actionPerformed(ActionEvent evt) {
+                int index = rulesTable.getSelectionModel().getMaxSelectionIndex();
+                rulesTableModel.moveRowAtIndexUp(index);
+            }
+        });
 
-        downButton.addActionListener(
-            new AbstractAction() {
-                public void actionPerformed(ActionEvent evt) {
-                    int index = rulesTable.getSelectionModel().getMaxSelectionIndex();
-                    rulesTableModel.moveRowAtIndexDown(index);
-                }
-            });
+        downButton.addActionListener(new AbstractAction() {
+            public void actionPerformed(ActionEvent evt) {
+                int index = rulesTable.getSelectionModel().getMaxSelectionIndex();
+                rulesTableModel.moveRowAtIndexDown(index);
+            }
+        });
 
         return panel;
     }
@@ -531,26 +528,23 @@ public class ColorPanel extends JPanel {
         rulesLabel = new JLabel("Rules:");
         globalRulesCheckbox = new JCheckBox("Use global rules");
 
-        if( globalColorizer == parentLogPanel.getCurrentRuleColorizer() ){
+        if (globalColorizer == parentLogPanel.getCurrentRuleColorizer()) {
             globalRulesCheckbox.setSelected(true);
             rulesLabel.setText("Global rules:");
         }
 
-        globalRulesCheckbox.addActionListener(
-                new AbstractAction() {
-                    @Override
-                    public void actionPerformed(ActionEvent ae) {
-                        if( globalRulesCheckbox.isSelected() ){
-                            parentLogPanel.setRuleColorizer(globalColorizer);
-                        }else{
-                            parentLogPanel.setRuleColorizer(new RuleColorizer());
-                        }
-                        componentChanged();
-                        parentLogPanel.getCurrentRuleColorizer().addPropertyChangeListener(
-                            "colorrule",
-                            evt -> updateColors());
-                    }
-                });
+        globalRulesCheckbox.addActionListener(new AbstractAction() {
+            @Override
+            public void actionPerformed(ActionEvent ae) {
+                if (globalRulesCheckbox.isSelected()) {
+                    parentLogPanel.setRuleColorizer(globalColorizer);
+                } else {
+                    parentLogPanel.setRuleColorizer(new RuleColorizer());
+                }
+                componentChanged();
+                parentLogPanel.getCurrentRuleColorizer().addPropertyChangeListener("colorrule", evt -> updateColors());
+            }
+        });
 
         panel.add(globalRulesCheckbox);
         panel.add(rulesLabel);
@@ -560,12 +554,11 @@ public class ColorPanel extends JPanel {
 
         JPanel newPanel = new JPanel();
         JButton newButton = new JButton(" New ");
-        newButton.addActionListener(
-            new AbstractAction() {
-                public void actionPerformed(ActionEvent evt) {
-                    rulesTableModel.addNewRule();
-                }
-            });
+        newButton.addActionListener(new AbstractAction() {
+            public void actionPerformed(ActionEvent evt) {
+                rulesTableModel.addNewRule();
+            }
+        });
 
         newPanel.add(newButton);
 
@@ -573,21 +566,19 @@ public class ColorPanel extends JPanel {
         final JButton deleteButton = new JButton(" Delete ");
         deleteButton.setEnabled(false);
 
-        deleteButton.addActionListener(
-            new AbstractAction() {
-                public void actionPerformed(ActionEvent evt) {
-                    int index = rulesTable.getSelectionModel().getMaxSelectionIndex();
-                    rulesTableModel.deleteRuleAtIndex(index);
-                }
-            });
+        deleteButton.addActionListener(new AbstractAction() {
+            public void actionPerformed(ActionEvent evt) {
+                int index = rulesTable.getSelectionModel().getMaxSelectionIndex();
+                rulesTableModel.deleteRuleAtIndex(index);
+            }
+        });
 
-        rulesTable.getSelectionModel().addListSelectionListener(
-            e -> {
-                if (!e.getValueIsAdjusting()) {
-                    int index = rulesTable.getSelectionModel().getMaxSelectionIndex();
-                    deleteButton.setEnabled(index >= 0);
-                }
-            });
+        rulesTable.getSelectionModel().addListSelectionListener(e -> {
+            if (!e.getValueIsAdjusting()) {
+                int index = rulesTable.getSelectionModel().getMaxSelectionIndex();
+                deleteButton.setEnabled(index >= 0);
+            }
+        });
 
         deletePanel.add(deleteButton);
 
@@ -612,8 +603,7 @@ public class ColorPanel extends JPanel {
         }
 
         public Component getListCellRendererComponent(
-            JList list, Object value, int index, boolean isSelected,
-            boolean cellHasFocus) {
+                JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
             setText(" ");
 
             if (isSelected && (index > -1)) {
@@ -645,15 +635,16 @@ public class ColorPanel extends JPanel {
         ColorItemListener(final JComboBox box) {
             this.box = box;
             colorChooser = new JColorChooser();
-            dialog =
-                JColorChooser.createDialog(
-                    box, "Pick a Color", true, //modal
+            dialog = JColorChooser.createDialog(
+                    box,
+                    "Pick a Color",
+                    true, // modal
                     colorChooser,
                     e -> {
                         box.insertItemAt(colorChooser.getColor(), 0);
                         box.setSelectedIndex(0);
-                    }, //OK button handler
-                    e -> box.setSelectedItem(lastColor)); //CANCEL button handler
+                    }, // OK button handler
+                    e -> box.setSelectedItem(lastColor)); // CANCEL button handler
             dialog.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
         }
 
@@ -690,8 +681,7 @@ public class ColorPanel extends JPanel {
         }
 
         public Component getTableCellRendererComponent(
-            JTable thisTable, Object value, boolean isSelected, boolean hasFocus, int row,
-            int column) {
+                JTable thisTable, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
             if (value instanceof Color) {
                 panel.setBackground((Color) value);
             }
@@ -725,8 +715,7 @@ public class ColorPanel extends JPanel {
         }
 
         public Component getTableCellRendererComponent(
-            JTable thisTable, Object value, boolean isSelected, boolean hasFocus, int row,
-            int column) {
+                JTable thisTable, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
             if (value == null) {
                 return panel;
             }
@@ -795,58 +784,57 @@ public class ColorPanel extends JPanel {
         }
     }
 
-    private class RulesTableModel extends AbstractTableModel{
-        
+    private class RulesTableModel extends AbstractTableModel {
+
         private final List<ColorRule> colorRules;
 
-        RulesTableModel(){
+        RulesTableModel() {
             colorRules = new ArrayList<>();
             addColorRules();
         }
 
-        List<ColorRule> rules(){
+        List<ColorRule> rules() {
             return colorRules;
         }
 
-        void clear(){
+        void clear() {
             colorRules.clear();
             fireTableDataChanged();
         }
 
-        void addNewRule(){
+        void addNewRule() {
             Rule expressionRule = ExpressionRule.getRule("msg=='sample'");
-            ColorRule newRule =
-                    new ColorRule("msg=='sample'", expressionRule, Color.WHITE, Color.BLACK);
+            ColorRule newRule = new ColorRule("msg=='sample'", expressionRule, Color.WHITE, Color.BLACK);
             colorRules.add(newRule);
             fireTableRowsInserted(colorRules.size() - 1, colorRules.size() - 1);
         }
-        
-        void deleteRuleAtIndex(int i){
+
+        void deleteRuleAtIndex(int i) {
             colorRules.remove(i);
             fireTableRowsDeleted(i, i);
         }
 
-        void moveRowAtIndexDown(int row){
-            if( row <= colorRules.size() - 2 && row >= 0){
+        void moveRowAtIndexDown(int row) {
+            if (row <= colorRules.size() - 2 && row >= 0) {
                 Collections.swap(colorRules, row, row + 1);
                 fireTableRowsUpdated(row, row + 1);
             }
         }
 
-        void moveRowAtIndexUp(int row){
-            if( row <= colorRules.size() && row > 0 ){
+        void moveRowAtIndexUp(int row) {
+            if (row <= colorRules.size() && row > 0) {
                 Collections.swap(colorRules, row, row - 1);
-                fireTableRowsUpdated(row - 1, row );
+                fireTableRowsUpdated(row - 1, row);
             }
         }
 
-        void addColorRules(){
-            colorRules.addAll( parentLogPanel.getCurrentRuleColorizer().getRules() );
+        void addColorRules() {
+            colorRules.addAll(parentLogPanel.getCurrentRuleColorizer().getRules());
         }
 
         @Override
         public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
-            if( rowIndex >= colorRules.size() ){
+            if (rowIndex >= colorRules.size()) {
                 return;
             }
             String expression = colorRules.get(rowIndex).getExpression();
@@ -854,20 +842,20 @@ public class ColorPanel extends JPanel {
             Color backgroundColor = colorRules.get(rowIndex).getBackgroundColor();
             Color foregroundColor = colorRules.get(rowIndex).getForegroundColor();
 
-            switch( columnIndex ){
+            switch (columnIndex) {
                 case 0:
                     expression = aValue.toString();
                     rule = ExpressionRule.getRule(expression);
                     break;
                 case 1:
-                    backgroundColor = (Color)aValue;
+                    backgroundColor = (Color) aValue;
                     break;
                 case 2:
-                    foregroundColor = (Color)aValue;
+                    foregroundColor = (Color) aValue;
                     break;
             }
 
-            colorRules.set(rowIndex, new ColorRule(expression, rule, backgroundColor, foregroundColor) );
+            colorRules.set(rowIndex, new ColorRule(expression, rule, backgroundColor, foregroundColor));
             // Since the value has been set, resize all of the rows(if required)
             rulesTable.setRowHeight(ChainsawConstants.DEFAULT_ROW_HEIGHT);
             fireTableRowsUpdated(rowIndex, rowIndex);
@@ -886,7 +874,7 @@ public class ColorPanel extends JPanel {
         @Override
         public Object getValueAt(int row, int col) {
             ColorRule rule = colorRules.get(row);
-            switch (col){
+            switch (col) {
                 case 0:
                     return rule.getExpression();
                 case 1:
@@ -900,7 +888,7 @@ public class ColorPanel extends JPanel {
 
         @Override
         public String getColumnName(int col) {
-            switch (col){
+            switch (col) {
                 case 0:
                     return "Expression";
                 case 1:
@@ -913,13 +901,12 @@ public class ColorPanel extends JPanel {
         }
 
         @Override
-        public boolean isCellEditable(int row, int col){
+        public boolean isCellEditable(int row, int col) {
             return true;
         }
     }
 
-    private class RulesTableCellEditor extends AbstractCellEditor
-        implements TableCellEditor{
+    private class RulesTableCellEditor extends AbstractCellEditor implements TableCellEditor {
 
         private final DefaultCellEditor defaultEditor = new DefaultCellEditor(new JTextField());
 
@@ -929,16 +916,15 @@ public class ColorPanel extends JPanel {
         }
 
         @Override
-        public Component getTableCellEditorComponent(JTable table, Object value,
-                                                     boolean isSelected, int row, int column) {
-            Component component = defaultEditor.getTableCellEditorComponent(table, value,
-                isSelected, row, column);
-            table.setRowHeight( row, component.getPreferredSize().height );
+        public Component getTableCellEditorComponent(
+                JTable table, Object value, boolean isSelected, int row, int column) {
+            Component component = defaultEditor.getTableCellEditorComponent(table, value, isSelected, row, column);
+            table.setRowHeight(row, component.getPreferredSize().height);
             return component;
         }
 
         @Override
-        public boolean isCellEditable(EventObject event){
+        public boolean isCellEditable(EventObject event) {
             if (event instanceof MouseEvent) {
                 MouseEvent mouseEvent = (MouseEvent) event;
                 return mouseEvent.getClickCount() >= 2;
diff --git a/src/main/java/org/apache/log4j/chainsaw/color/Colorizer.java b/src/main/java/org/apache/log4j/chainsaw/color/Colorizer.java
index ea95b70..d31056b 100644
--- a/src/main/java/org/apache/log4j/chainsaw/color/Colorizer.java
+++ b/src/main/java/org/apache/log4j/chainsaw/color/Colorizer.java
@@ -2,7 +2,7 @@
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
+ * The ASF licenses this file to you under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
  *
@@ -14,7 +14,6 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package org.apache.log4j.chainsaw.color;
 
 import java.awt.Color;
diff --git a/src/main/java/org/apache/log4j/chainsaw/color/RuleColorizer.java b/src/main/java/org/apache/log4j/chainsaw/color/RuleColorizer.java
index fdf7867..af8f74d 100644
--- a/src/main/java/org/apache/log4j/chainsaw/color/RuleColorizer.java
+++ b/src/main/java/org/apache/log4j/chainsaw/color/RuleColorizer.java
@@ -2,7 +2,7 @@
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
+ * The ASF licenses this file to you under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
  *
@@ -14,27 +14,21 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package org.apache.log4j.chainsaw.color;
 
-import org.apache.commons.configuration2.AbstractConfiguration;
-import org.apache.commons.configuration2.DataConfiguration;
+import java.awt.*;
+import java.beans.PropertyChangeListener;
+import java.beans.PropertyChangeSupport;
+import java.util.ArrayList;
+import java.util.List;
 import org.apache.log4j.chainsaw.ChainsawConstants;
 import org.apache.log4j.chainsaw.logevents.ChainsawLoggingEvent;
-import org.apache.log4j.chainsaw.prefs.SettingsManager;
 import org.apache.log4j.rule.ColorRule;
 import org.apache.log4j.rule.ExpressionRule;
 import org.apache.log4j.rule.Rule;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 
-import java.awt.*;
-import java.beans.PropertyChangeListener;
-import java.beans.PropertyChangeSupport;
-import java.util.ArrayList;
-import java.util.List;
-
-
 /**
  * A colorizer supporting an ordered collection of ColorRules, including support for notification of
  * color rule changes via a propertyChangeListener and the 'colorrule' property.
@@ -46,8 +40,7 @@ public class RuleColorizer implements Colorizer {
     public static final String PROPERTY_CHANGED_COLORRULE = "colorrule";
 
     private final List<ColorRule> rules;
-    private final PropertyChangeSupport colorChangeSupport =
-        new PropertyChangeSupport(this);
+    private final PropertyChangeSupport colorChangeSupport = new PropertyChangeSupport(this);
 
     private Rule findRule;
     private Rule loggerRule;
@@ -57,28 +50,21 @@ public class RuleColorizer implements Colorizer {
     private static final Color MARKER_DEFAULT_COLOR = new Color(153, 255, 153);
 
     private static final String DEFAULT_WARN_EXPRESSION = "level == WARN";
-    private static final String DEFAULT_FATAL_ERROR_EXCEPTION_EXPRESSION = "level == FATAL || level == ERROR || exception exists";
+    private static final String DEFAULT_FATAL_ERROR_EXCEPTION_EXPRESSION =
+            "level == FATAL || level == ERROR || exception exists";
     private static final String DEFAULT_MARKER_EXPRESSION = "prop.marker exists";
 
-    public static List<ColorRule> defaultRules(){
+    public static List<ColorRule> defaultRules() {
         List<ColorRule> rulesList = new ArrayList<>();
 
         String expression = DEFAULT_FATAL_ERROR_EXCEPTION_EXPRESSION;
-        rulesList.add(
-            new ColorRule(
-                expression, ExpressionRule.getRule(expression), FATAL_OR_ERROR_DEFAULT_COLOR,
-                Color.black));
+        rulesList.add(new ColorRule(
+                expression, ExpressionRule.getRule(expression), FATAL_OR_ERROR_DEFAULT_COLOR, Color.black));
         expression = DEFAULT_WARN_EXPRESSION;
-        rulesList.add(
-            new ColorRule(
-                expression, ExpressionRule.getRule(expression), WARN_DEFAULT_COLOR,
-                Color.black));
+        rulesList.add(new ColorRule(expression, ExpressionRule.getRule(expression), WARN_DEFAULT_COLOR, Color.black));
 
         expression = DEFAULT_MARKER_EXPRESSION;
-        rulesList.add(
-            new ColorRule(
-                expression, ExpressionRule.getRule(expression), MARKER_DEFAULT_COLOR,
-                Color.black));
+        rulesList.add(new ColorRule(expression, ExpressionRule.getRule(expression), MARKER_DEFAULT_COLOR, Color.black));
 
         return rulesList;
     }
@@ -159,16 +145,12 @@ public class RuleColorizer implements Colorizer {
      * @param propertyName
      * @param listener
      */
-    public void addPropertyChangeListener(
-        String propertyName, PropertyChangeListener listener) {
+    public void addPropertyChangeListener(String propertyName, PropertyChangeListener listener) {
         colorChangeSupport.addPropertyChangeListener(propertyName, listener);
     }
 
-    public static String colorToRGBString( Color c ){
-        return String.format( "#%02x%02x%02x",
-                c.getRed(),
-                c.getGreen(),
-                c.getBlue());
+    public static String colorToRGBString(Color c) {
+        return String.format("#%02x%02x%02x", c.getRed(), c.getGreen(), c.getBlue());
     }
 
     public static List<Color> getDefaultColors() {
@@ -176,7 +158,7 @@ public class RuleColorizer implements Colorizer {
 
         vec.add(Color.white);
         vec.add(Color.black);
-        //add default alternating color & search backgrounds (both foreground are black)
+        // add default alternating color & search backgrounds (both foreground are black)
         vec.add(ChainsawConstants.COLOR_ODD_ROW_BACKGROUND);
         vec.add(ChainsawConstants.FIND_LOGGER_BACKGROUND);
 
@@ -205,17 +187,16 @@ public class RuleColorizer implements Colorizer {
     }
 
     @Override
-    public String toString(){
+    public String toString() {
         StringBuilder sb = new StringBuilder();
-        sb.append( String.format( "RuleColorizer - %d rules", rules.size() ) );
-        for( ColorRule rule : rules ){
-            sb.append( System.lineSeparator() );
-            sb.append( "  " );
-            sb.append( rule.getRule().toString() );
+        sb.append(String.format("RuleColorizer - %d rules", rules.size()));
+        for (ColorRule rule : rules) {
+            sb.append(System.lineSeparator());
+            sb.append("  ");
+            sb.append(rule.getRule().toString());
         }
-        sb.append( System.lineSeparator() );
+        sb.append(System.lineSeparator());
 
         return sb.toString();
     }
-
 }
diff --git a/src/main/java/org/apache/log4j/chainsaw/components/about/ChainsawAbout.java b/src/main/java/org/apache/log4j/chainsaw/components/about/ChainsawAbout.java
index 50ae52e..f3d68f8 100644
--- a/src/main/java/org/apache/log4j/chainsaw/components/about/ChainsawAbout.java
+++ b/src/main/java/org/apache/log4j/chainsaw/components/about/ChainsawAbout.java
@@ -2,7 +2,7 @@
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
+ * The ASF licenses this file to you under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
  *
@@ -16,15 +16,12 @@
  */
 package org.apache.log4j.chainsaw.components.about;
 
-import org.apache.log4j.chainsaw.JTextComponentFormatter;
-import org.apache.log4j.chainsaw.help.HelpManager;
-
-import javax.swing.*;
-import javax.swing.event.HyperlinkEvent;
 import java.awt.*;
 import java.io.IOException;
 import java.net.URL;
-
+import javax.swing.*;
+import javax.swing.event.HyperlinkEvent;
+import org.apache.log4j.chainsaw.help.HelpManager;
 import org.apache.log4j.chainsaw.logui.LogUI;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
@@ -58,20 +55,19 @@ public class ChainsawAbout extends JDialog {
         }
 
         JScrollPane scrollPane = new JScrollPane(
-            editPane,
-            ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
-            ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
+                editPane,
+                ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
+                ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
 
         getContentPane().add(scrollPane, BorderLayout.CENTER);
         getContentPane().add(closeButton, BorderLayout.SOUTH);
 
         editPane.setEditable(false);
-        editPane.addHyperlinkListener(
-            e -> {
-                if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
-                    HelpManager.getInstance().setHelpURL(e.getURL());
-                }
-            });
+        editPane.addHyperlinkListener(e -> {
+            if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
+                HelpManager.getInstance().setHelpURL(e.getURL());
+            }
+        });
 
         calculateDimentions();
         scrollPane.getViewport().setViewPosition(new Point(0, 0));
@@ -93,7 +89,6 @@ public class ChainsawAbout extends JDialog {
         if (width > 400) {
             width = width - (width * 0.10);
         }
-        setSize((int)width, (int)height);
-
+        setSize((int) width, (int) height);
     }
 }
diff --git a/src/main/java/org/apache/log4j/chainsaw/components/elements/SmallButton.java b/src/main/java/org/apache/log4j/chainsaw/components/elements/SmallButton.java
index 96c5901..38ec030 100644
--- a/src/main/java/org/apache/log4j/chainsaw/components/elements/SmallButton.java
+++ b/src/main/java/org/apache/log4j/chainsaw/components/elements/SmallButton.java
@@ -2,7 +2,7 @@
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
+ * The ASF licenses this file to you under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
  *
@@ -16,16 +16,16 @@
  */
 package org.apache.log4j.chainsaw.components.elements;
 
-import javax.swing.*;
-import javax.swing.border.BevelBorder;
-import javax.swing.border.Border;
-import javax.swing.border.EmptyBorder;
-import javax.swing.border.SoftBevelBorder;
 import java.awt.*;
 import java.awt.event.ActionEvent;
 import java.awt.event.MouseEvent;
 import java.awt.event.MouseListener;
 import java.net.URL;
+import javax.swing.*;
+import javax.swing.border.BevelBorder;
+import javax.swing.border.Border;
+import javax.swing.border.EmptyBorder;
+import javax.swing.border.SoftBevelBorder;
 
 /**
  * A better button class that has nice roll over effects.
@@ -69,7 +69,7 @@ public class SmallButton extends JButton implements MouseListener {
     }
 
     public KeyStroke getActionAcceleratorKey() {
-        return (KeyStroke)getAction().getValue(Action.ACCELERATOR_KEY);
+        return (KeyStroke) getAction().getValue(Action.ACCELERATOR_KEY);
     }
 
     /**
@@ -105,8 +105,7 @@ public class SmallButton extends JButton implements MouseListener {
      * is called with an action.
      */
     @Override
-    public void mouseClicked(MouseEvent e) {
-    }
+    public void mouseClicked(MouseEvent e) {}
 
     /**
      * {@inheritDoc}
@@ -148,7 +147,7 @@ public class SmallButton extends JButton implements MouseListener {
         setBorder(inactiveBorder);
     }
 
-    static public class Builder {
+    public static class Builder {
         Runnable action;
         String name = "";
 
@@ -168,6 +167,7 @@ public class SmallButton extends JButton implements MouseListener {
             this.action = action;
             return this;
         }
+
         public Builder name(String name) {
             this.name = name;
             return this;
@@ -182,22 +182,27 @@ public class SmallButton extends JButton implements MouseListener {
             this.enabled = true;
             return this;
         }
+
         public Builder disabled() {
             this.enabled = false;
             return this;
         }
+
         public Builder icon(Icon icon) {
             this.icon = icon;
             return this;
         }
+
         public Builder iconUrl(URL iconUrl) {
             this.iconUrl = iconUrl;
             return this;
         }
+
         public Builder smallIconUrl(URL smallIconUrl) {
             this.smallIconUrl = smallIconUrl;
             return this;
         }
+
         public Builder shortDescription(String shortDescription) {
             this.shortDescription = shortDescription;
             return this;
@@ -230,7 +235,7 @@ public class SmallButton extends JButton implements MouseListener {
             }
             if (icon != null) {
                 button.setIcon(icon);
-            } else  if (iconUrl != null) {
+            } else if (iconUrl != null) {
                 button.setIcon(new ImageIcon(iconUrl));
             }
             if (name != null) {
diff --git a/src/main/java/org/apache/log4j/chainsaw/components/elements/SmallToggleButton.java b/src/main/java/org/apache/log4j/chainsaw/components/elements/SmallToggleButton.java
index 34ec925..d290c4b 100644
--- a/src/main/java/org/apache/log4j/chainsaw/components/elements/SmallToggleButton.java
+++ b/src/main/java/org/apache/log4j/chainsaw/components/elements/SmallToggleButton.java
@@ -2,7 +2,7 @@
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
+ * The ASF licenses this file to you under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
  *
@@ -16,16 +16,15 @@
  */
 package org.apache.log4j.chainsaw.components.elements;
 
-import javax.swing.*;
-import javax.swing.border.BevelBorder;
-import javax.swing.border.Border;
-import javax.swing.border.SoftBevelBorder;
 import java.awt.*;
 import java.awt.event.ItemEvent;
 import java.awt.event.ItemListener;
 import java.awt.event.MouseEvent;
 import java.awt.event.MouseListener;
-
+import javax.swing.*;
+import javax.swing.border.BevelBorder;
+import javax.swing.border.Border;
+import javax.swing.border.SoftBevelBorder;
 
 /**
  * A better button class that has nice roll over effects.
@@ -38,8 +37,7 @@ import java.awt.event.MouseListener;
  * @author Pavel Vorobeiv
  * @author Paul Smith &lt;psmith@apache.org&gt;
  */
-public class SmallToggleButton extends JToggleButton implements ItemListener,
-    MouseListener {
+public class SmallToggleButton extends JToggleButton implements ItemListener, MouseListener {
     protected Border m_highlighted = new SoftBevelBorder(BevelBorder.RAISED);
     protected Border m_raised = BorderFactory.createEmptyBorder(3, 3, 3, 3);
     protected Border m_inactive = m_raised;
@@ -104,8 +102,7 @@ public class SmallToggleButton extends JToggleButton implements ItemListener,
      *
      * @param e DOCUMENT ME!
      */
-    public void mouseClicked(MouseEvent e) {
-    }
+    public void mouseClicked(MouseEvent e) {}
 
     /**
      * DOCUMENT ME!
diff --git a/src/main/java/org/apache/log4j/chainsaw/components/elements/TabIconHandler.java b/src/main/java/org/apache/log4j/chainsaw/components/elements/TabIconHandler.java
index 0662f91..014a6db 100644
--- a/src/main/java/org/apache/log4j/chainsaw/components/elements/TabIconHandler.java
+++ b/src/main/java/org/apache/log4j/chainsaw/components/elements/TabIconHandler.java
@@ -1,17 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to you under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 package org.apache.log4j.chainsaw.components.elements;
 
+import javax.swing.*;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
 import org.apache.log4j.chainsaw.EventCountListener;
 import org.apache.log4j.chainsaw.components.tabbedpane.ChainsawTabbedPane;
 import org.apache.log4j.chainsaw.icons.ChainsawIcons;
 import org.apache.log4j.chainsaw.icons.LineIconFactory;
 
-import javax.swing.*;
-import javax.swing.event.ChangeEvent;
-import javax.swing.event.ChangeListener;
-
-public  class TabIconHandler implements EventCountListener, ChangeListener {
-    //the tabIconHandler is associated with a new tab, and a new tab always
-    //shows the 'new events' icon
+public class TabIconHandler implements EventCountListener, ChangeListener {
+    // the tabIconHandler is associated with a new tab, and a new tab always
+    // shows the 'new events' icon
     private boolean newEvents = true;
     private boolean seenEvents = false;
     private final String ident;
@@ -24,36 +39,32 @@ public  class TabIconHandler implements EventCountListener, ChangeListener {
         ident = identifier;
         this.tabbedPane = tabbedPane;
 
-        new Thread(
-            () -> {
-                while (true) {
-                    //if this tab is active, remove the icon
-                    //don't process undocked tabs
-                    if (tabbedPane.indexOfTab(ident) > -1 &&
-                        tabbedPane.getSelectedIndex() == tabbedPane
-                            .indexOfTab(ident)) {
-                        tabbedPane.setIconAt(
-                            tabbedPane.indexOfTab(ident), SELECTED);
-                        newEvents = false;
-                        seenEvents = true;
-                    } else if (tabbedPane.indexOfTab(ident) > -1) {
-                        if (newEvents) {
-                            tabbedPane.setIconAt(
-                                tabbedPane.indexOfTab(ident), NEW_EVENTS);
+        new Thread(() -> {
+                    while (true) {
+                        // if this tab is active, remove the icon
+                        // don't process undocked tabs
+                        if (tabbedPane.indexOfTab(ident) > -1
+                                && tabbedPane.getSelectedIndex() == tabbedPane.indexOfTab(ident)) {
+                            tabbedPane.setIconAt(tabbedPane.indexOfTab(ident), SELECTED);
                             newEvents = false;
-                            seenEvents = false;
-                        } else if (!seenEvents) {
-                            tabbedPane.setIconAt(
-                                tabbedPane.indexOfTab(ident), HAS_EVENTS);
+                            seenEvents = true;
+                        } else if (tabbedPane.indexOfTab(ident) > -1) {
+                            if (newEvents) {
+                                tabbedPane.setIconAt(tabbedPane.indexOfTab(ident), NEW_EVENTS);
+                                newEvents = false;
+                                seenEvents = false;
+                            } else if (!seenEvents) {
+                                tabbedPane.setIconAt(tabbedPane.indexOfTab(ident), HAS_EVENTS);
+                            }
                         }
-                    }
 
-                    try {
-                        Thread.sleep(1000);
-                    } catch (InterruptedException ie) {
+                        try {
+                            Thread.sleep(1000);
+                        } catch (InterruptedException ie) {
+                        }
                     }
-                }
-            }).start();
+                })
+                .start();
     }
 
     @Override
@@ -63,8 +74,7 @@ public  class TabIconHandler implements EventCountListener, ChangeListener {
 
     @Override
     public void stateChanged(ChangeEvent event) {
-        if (
-            tabbedPane.indexOfTab(ident) > -1 && tabbedPane.indexOfTab(ident) == tabbedPane.getSelectedIndex()) {
+        if (tabbedPane.indexOfTab(ident) > -1 && tabbedPane.indexOfTab(ident) == tabbedPane.getSelectedIndex()) {
             tabbedPane.setIconAt(tabbedPane.indexOfTab(ident), SELECTED);
         }
     }
diff --git a/src/main/java/org/apache/log4j/chainsaw/components/elements/sorttable/JSortTable.java b/src/main/java/org/apache/log4j/chainsaw/components/elements/sorttable/JSortTable.java
index fc0b760..15f2f83 100644
--- a/src/main/java/org/apache/log4j/chainsaw/components/elements/sorttable/JSortTable.java
+++ b/src/main/java/org/apache/log4j/chainsaw/components/elements/sorttable/JSortTable.java
@@ -2,7 +2,7 @@
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
+ * The ASF licenses this file to you under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
  *
@@ -14,21 +14,18 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package org.apache.log4j.chainsaw.components.elements.sorttable;
 
-import org.apache.log4j.chainsaw.ChainsawColumns;
-import org.apache.log4j.chainsaw.SortTableModel;
-import org.apache.log4j.chainsaw.helper.SwingHelper;
-
-import javax.swing.JTable;
-import javax.swing.table.JTableHeader;
-import javax.swing.table.TableColumnModel;
 import java.awt.Color;
 import java.awt.event.InputEvent;
 import java.awt.event.MouseEvent;
 import java.awt.event.MouseListener;
-
+import javax.swing.JTable;
+import javax.swing.table.JTableHeader;
+import javax.swing.table.TableColumnModel;
+import org.apache.log4j.chainsaw.ChainsawColumns;
+import org.apache.log4j.chainsaw.SortTableModel;
+import org.apache.log4j.chainsaw.helper.SwingHelper;
 
 /**
  * A Sortable JTable implementation that allows a user to click on a
@@ -49,9 +46,9 @@ public class JSortTable extends JTable implements MouseListener {
     }
 
     public void changeSelection(int rowIndex, int columnIndex, boolean toggle, boolean extend) {
-        //selection of the msg field causes rendering to flash...skip over it
+        // selection of the msg field causes rendering to flash...skip over it
         int colToSelect = columnIndex;
-        //CHAINSAW columns are 1-based indexes
+        // CHAINSAW columns are 1-based indexes
         if (columnIndex + 1 == ChainsawColumns.INDEX_MESSAGE_COL_NAME) {
             colToSelect = lastSelectedColumn < columnIndex ? columnIndex + 1 : columnIndex - 1;
             super.changeSelection(rowIndex, colToSelect, toggle, extend);
@@ -77,7 +74,7 @@ public class JSortTable extends JTable implements MouseListener {
             try {
                 sortedColumnIndex = columnModel.getColumnIndex(sortedColumn);
                 getTableHeader().resizeAndRepaint();
-            } catch (IllegalArgumentException ie) {//nothing...column is not in the model
+            } catch (IllegalArgumentException ie) { // nothing...column is not in the model
                 setSortedColumnIndex(-1);
             }
         }
@@ -92,14 +89,15 @@ public class JSortTable extends JTable implements MouseListener {
         getTableHeader().resizeAndRepaint();
     }
 
-    //Allow synchronous updates if already on the EDT
+    // Allow synchronous updates if already on the EDT
     private void scrollTo(final int row, final int col) {
         SwingHelper.invokeOnEDT(() -> {
             final int currentRow = getSelectedRow();
             if ((row > -1) && (row < getRowCount())) {
                 try {
-                    //get the requested row off of the bottom and top of the screen by making the 5 rows around the requested row visible
-                    //if new past current row, scroll to display the 20th row past new selected row
+                    // get the requested row off of the bottom and top of the screen by making the 5 rows around the
+                    // requested row visible
+                    // if new past current row, scroll to display the 20th row past new selected row
                     scrollRectToVisible(getCellRect(row, col, true));
                     if (row > currentRow) {
                         scrollRectToVisible(getCellRect(row + 5, col, true));
@@ -110,7 +108,7 @@ public class JSortTable extends JTable implements MouseListener {
                     scrollRectToVisible(getCellRect(row, col, true));
                     setRowSelectionInterval(row, row);
                 } catch (IllegalArgumentException iae) {
-                    //ignore..out of bounds
+                    // ignore..out of bounds
                 }
             }
         });
@@ -150,15 +148,11 @@ public class JSortTable extends JTable implements MouseListener {
         }
     }
 
-    public void mousePressed(MouseEvent event) {
-    }
+    public void mousePressed(MouseEvent event) {}
 
-    public void mouseReleased(MouseEvent event) {
-    }
+    public void mouseReleased(MouseEvent event) {}
 
-    public void mouseEntered(MouseEvent event) {
-    }
+    public void mouseEntered(MouseEvent event) {}
 
-    public void mouseExited(MouseEvent event) {
-    }
+    public void mouseExited(MouseEvent event) {}
 }
diff --git a/src/main/java/org/apache/log4j/chainsaw/components/elements/sorttable/SortArrowIcon.java b/src/main/java/org/apache/log4j/chainsaw/components/elements/sorttable/SortArrowIcon.java
index 2642ecc..9861f17 100644
--- a/src/main/java/org/apache/log4j/chainsaw/components/elements/sorttable/SortArrowIcon.java
+++ b/src/main/java/org/apache/log4j/chainsaw/components/elements/sorttable/SortArrowIcon.java
@@ -2,7 +2,7 @@
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
+ * The ASF licenses this file to you under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
  *
@@ -14,12 +14,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package org.apache.log4j.chainsaw.components.elements.sorttable;
 
-import javax.swing.*;
 import java.awt.*;
-
+import javax.swing.*;
 
 /**
  * An Icon that is a Nice arrow to be used for displaying which
diff --git a/src/main/java/org/apache/log4j/chainsaw/components/elements/sorttable/SortHeaderRenderer.java b/src/main/java/org/apache/log4j/chainsaw/components/elements/sorttable/SortHeaderRenderer.java
index c5bc87a..7dc0729 100644
--- a/src/main/java/org/apache/log4j/chainsaw/components/elements/sorttable/SortHeaderRenderer.java
+++ b/src/main/java/org/apache/log4j/chainsaw/components/elements/sorttable/SortHeaderRenderer.java
@@ -2,7 +2,7 @@
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
+ * The ASF licenses this file to you under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
  *
@@ -14,14 +14,12 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package org.apache.log4j.chainsaw.components.elements.sorttable;
 
+import java.awt.*;
 import javax.swing.*;
 import javax.swing.table.DefaultTableCellRenderer;
 import javax.swing.table.JTableHeader;
-import java.awt.*;
-
 
 /**
  * A Table Column header renederer that displays a nice Up/Down arrow
@@ -42,7 +40,7 @@ public class SortHeaderRenderer extends DefaultTableCellRenderer {
 
     @Override
     public Component getTableCellRendererComponent(
-        JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int col) {
+            JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int col) {
         int index = -1;
         boolean ascending = true;
 
diff --git a/src/main/java/org/apache/log4j/chainsaw/components/loggernamepanel/LoggerNameListener.java b/src/main/java/org/apache/log4j/chainsaw/components/loggernamepanel/LoggerNameListener.java
index 97bd7a6..3a040fd 100644
--- a/src/main/java/org/apache/log4j/chainsaw/components/loggernamepanel/LoggerNameListener.java
+++ b/src/main/java/org/apache/log4j/chainsaw/components/loggernamepanel/LoggerNameListener.java
@@ -2,7 +2,7 @@
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
+ * The ASF licenses this file to you under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
  *
@@ -14,7 +14,6 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package org.apache.log4j.chainsaw.components.loggernamepanel;
 
 import java.util.EventListener;
diff --git a/src/main/java/org/apache/log4j/chainsaw/components/loggernamepanel/LoggerNameModel.java b/src/main/java/org/apache/log4j/chainsaw/components/loggernamepanel/LoggerNameModel.java
index bca69da..fcbc257 100644
--- a/src/main/java/org/apache/log4j/chainsaw/components/loggernamepanel/LoggerNameModel.java
+++ b/src/main/java/org/apache/log4j/chainsaw/components/loggernamepanel/LoggerNameModel.java
@@ -2,7 +2,7 @@
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
+ * The ASF licenses this file to you under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
  *
@@ -14,9 +14,6 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
-/*
- */
 package org.apache.log4j.chainsaw.components.loggernamepanel;
 
 import java.util.Collection;
diff --git a/src/main/java/org/apache/log4j/chainsaw/components/loggernamepanel/LoggerNameModelSupport.java b/src/main/java/org/apache/log4j/chainsaw/components/loggernamepanel/LoggerNameModelSupport.java
index f628771..e3090e0 100644
--- a/src/main/java/org/apache/log4j/chainsaw/components/loggernamepanel/LoggerNameModelSupport.java
+++ b/src/main/java/org/apache/log4j/chainsaw/components/loggernamepanel/LoggerNameModelSupport.java
@@ -2,7 +2,7 @@
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
+ * The ASF licenses this file to you under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
  *
@@ -14,16 +14,13 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
-/*
- */
 package org.apache.log4j.chainsaw.components.loggernamepanel;
 
-import javax.swing.event.EventListenerList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashSet;
 import java.util.Set;
+import javax.swing.event.EventListenerList;
 
 /**
  * An implementation of LoggerNameModel which can be used as a delegate
diff --git a/src/main/java/org/apache/log4j/chainsaw/components/loggernamepanel/LoggerNameTreePanel.java b/src/main/java/org/apache/log4j/chainsaw/components/loggernamepanel/LoggerNameTreePanel.java
index 7ff2c91..8f89cbb 100644
--- a/src/main/java/org/apache/log4j/chainsaw/components/loggernamepanel/LoggerNameTreePanel.java
+++ b/src/main/java/org/apache/log4j/chainsaw/components/loggernamepanel/LoggerNameTreePanel.java
@@ -2,7 +2,7 @@
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
+ * The ASF licenses this file to you under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
  *
@@ -14,39 +14,35 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-/*
- */
 package org.apache.log4j.chainsaw.components.loggernamepanel;
 
+import java.awt.*;
+import java.awt.event.*;
+import java.util.*;
+import java.util.List;
+import javax.swing.*;
+import javax.swing.event.*;
+import javax.swing.tree.*;
 import org.apache.log4j.chainsaw.ChainsawConstants;
 import org.apache.log4j.chainsaw.ExpressionRuleContext;
 import org.apache.log4j.chainsaw.JTextComponentFormatter;
 import org.apache.log4j.chainsaw.PopupListener;
+import org.apache.log4j.chainsaw.color.RuleColorizer;
 import org.apache.log4j.chainsaw.components.elements.SmallButton;
 import org.apache.log4j.chainsaw.components.elements.SmallToggleButton;
 import org.apache.log4j.chainsaw.components.logpanel.LogPanel;
 import org.apache.log4j.chainsaw.components.logpanel.LogPanelLoggerTreeModel;
 import org.apache.log4j.chainsaw.components.logpanel.LogPanelPreferenceModel;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-import org.apache.log4j.chainsaw.color.RuleColorizer;
 import org.apache.log4j.chainsaw.filter.FilterModel;
 import org.apache.log4j.chainsaw.icons.ChainsawIcons;
 import org.apache.log4j.chainsaw.icons.LineIconFactory;
+import org.apache.log4j.chainsaw.logevents.ChainsawLoggingEvent;
 import org.apache.log4j.rule.AbstractRule;
 import org.apache.log4j.rule.ColorRule;
 import org.apache.log4j.rule.ExpressionRule;
 import org.apache.log4j.rule.Rule;
-
-import javax.swing.*;
-import javax.swing.event.*;
-import javax.swing.tree.*;
-import java.awt.*;
-import java.awt.event.*;
-import java.util.*;
-import java.util.List;
-
-import org.apache.log4j.chainsaw.logevents.ChainsawLoggingEvent;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 /**
  * A panel that encapsulates the Logger Name tree, with associated actions
@@ -101,7 +97,6 @@ public final class LoggerNameTreePanel extends JPanel implements LoggerNameListe
     private final EventListenerList listenerList = new EventListenerList();
     private final JTree logTree;
 
-
     //  private final EventListenerList focusOnActionListeners =
     //    new EventListenerList();
     private final LogPanelLoggerTreeModel logTreeModel;
@@ -123,7 +118,8 @@ public final class LoggerNameTreePanel extends JPanel implements LoggerNameListe
      *
      * @param logTreeModel
      */
-    public LoggerNameTreePanel(LogPanelLoggerTreeModel logTreeModel,
+    public LoggerNameTreePanel(
+            LogPanelLoggerTreeModel logTreeModel,
             LogPanelPreferenceModel logPanelPreferenceModel,
             LogPanel logPanel,
             RuleColorizer colorizer,
@@ -145,40 +141,41 @@ public final class LoggerNameTreePanel extends JPanel implements LoggerNameListe
         JTextComponentFormatter.applySystemFontAndSize(alwaysDisplayExpressionEntryField);
 
         visibilityRuleDelegate = new VisibilityRuleDelegate();
-        colorRuleDelegate =
-            new AbstractRule() {
-                @Override
-                public boolean evaluate(ChainsawLoggingEvent e, Map matches) {
-                    boolean hiddenLogger = e.m_logger != null && isHiddenLogger(e.m_logger);
-                    boolean hiddenExpression = (ignoreExpressionRule != null && ignoreExpressionRule.evaluate(e, null));
-                    boolean alwaysDisplayExpression = (alwaysDisplayExpressionRule != null && alwaysDisplayExpressionRule.evaluate(e, null));
-                    boolean hidden = (!alwaysDisplayExpression) && (hiddenLogger || hiddenExpression);
-
-                    String selectedLoggerName = getCurrentlySelectedLoggerName();
-                    return !isFocusOnSelected() && !hidden && selectedLoggerName != null &&
-                           !"".equals(selectedLoggerName) &&
-                           (e.m_logger.startsWith(selectedLoggerName + ".") ||
-                           e.m_logger.endsWith(selectedLoggerName));
-                }
-            };
+        colorRuleDelegate = new AbstractRule() {
+            @Override
+            public boolean evaluate(ChainsawLoggingEvent e, Map matches) {
+                boolean hiddenLogger = e.m_logger != null && isHiddenLogger(e.m_logger);
+                boolean hiddenExpression = (ignoreExpressionRule != null && ignoreExpressionRule.evaluate(e, null));
+                boolean alwaysDisplayExpression =
+                        (alwaysDisplayExpressionRule != null && alwaysDisplayExpressionRule.evaluate(e, null));
+                boolean hidden = (!alwaysDisplayExpression) && (hiddenLogger || hiddenExpression);
+
+                String selectedLoggerName = getCurrentlySelectedLoggerName();
+                return !isFocusOnSelected()
+                        && !hidden
+                        && selectedLoggerName != null
+                        && !"".equals(selectedLoggerName)
+                        && (e.m_logger.startsWith(selectedLoggerName + ".") || e.m_logger.endsWith(selectedLoggerName));
+            }
+        };
 
         logTree = new JTree(logTreeModel) {
-                @Override
-                public String getToolTipText(MouseEvent ev) {
-                    if (ev == null) {
-                        return null;
-                    }
-
-                    TreePath path = logTree.getPathForLocation(ev.getX(), ev.getY());
-                    String loggerName = getLoggerName(path);
+            @Override
+            public String getToolTipText(MouseEvent ev) {
+                if (ev == null) {
+                    return null;
+                }
 
-                    if (hiddenSet.contains(loggerName)) {
-                        loggerName += " (you are ignoring this logger)";
-                    }
+                TreePath path = logTree.getPathForLocation(ev.getX(), ev.getY());
+                String loggerName = getLoggerName(path);
 
-                    return loggerName;
+                if (hiddenSet.contains(loggerName)) {
+                    loggerName += " (you are ignoring this logger)";
                 }
-            };
+
+                return loggerName;
+            }
+        };
 
         ToolTipManager.sharedInstance().registerComponent(logTree);
         logTree.setCellRenderer(cellRenderer);
@@ -186,8 +183,7 @@ public final class LoggerNameTreePanel extends JPanel implements LoggerNameListe
         //	============================================
         logTreeModel.addTreeModelListener(new TreeModelListener() {
             @Override
-            public void treeNodesChanged(TreeModelEvent e) {
-            }
+            public void treeNodesChanged(TreeModelEvent e) {}
 
             @Override
             public void treeNodesInserted(TreeModelEvent e) {
@@ -198,12 +194,10 @@ public final class LoggerNameTreePanel extends JPanel implements LoggerNameListe
             }
 
             @Override
-            public void treeNodesRemoved(TreeModelEvent e) {
-            }
+            public void treeNodesRemoved(TreeModelEvent e) {}
 
             @Override
-            public void treeStructureChanged(TreeModelEvent e) {
-            }
+            public void treeStructureChanged(TreeModelEvent e) {}
         });
 
         logTree.setEditable(false);
@@ -258,9 +252,10 @@ public final class LoggerNameTreePanel extends JPanel implements LoggerNameListe
         ignoreSummaryPanel.add(ignoreSummary);
 
         JButton btnShowIgnoreDialog = new SmallButton.Builder()
-            .name("...")
-            .shortDescription("Click to view and manage your hidden/ignored loggers")
-            .action(() -> LogPanel.centerAndSetVisible(ignoreDialog)).build();
+                .name("...")
+                .shortDescription("Click to view and manage your hidden/ignored loggers")
+                .action(() -> LogPanel.centerAndSetVisible(ignoreDialog))
+                .build();
 
         ignoreSummaryPanel.add(btnShowIgnoreDialog);
         ignorePanel.add(ignoreSummaryPanel);
@@ -270,9 +265,10 @@ public final class LoggerNameTreePanel extends JPanel implements LoggerNameListe
         ignoreExpressionPanel.add(ignoreExpressionSummary);
 
         JButton btnShowIgnoreExpressionDialog = new SmallButton.Builder()
-            .name("...")
-            .shortDescription("Click to view and manage your hidden/ignored expression")
-            .action(() ->  LogPanel.centerAndSetVisible(ignoreExpressionDialog)).build();
+                .name("...")
+                .shortDescription("Click to view and manage your hidden/ignored expression")
+                .action(() -> LogPanel.centerAndSetVisible(ignoreExpressionDialog))
+                .build();
         ignoreExpressionPanel.add(btnShowIgnoreExpressionDialog);
 
         ignorePanel.add(ignoreExpressionPanel);
@@ -281,11 +277,11 @@ public final class LoggerNameTreePanel extends JPanel implements LoggerNameListe
         alwaysDisplayExpressionPanel.setLayout(new BoxLayout(alwaysDisplayExpressionPanel, BoxLayout.X_AXIS));
         alwaysDisplayExpressionPanel.add(alwaysDisplayExpressionSummary);
 
-        JButton btnShowAlwaysDisplayExpressionDialog =
-            new SmallButton.Builder()
-            .name("...")
-            .shortDescription("Click to view and manage your always-displayed expression")
-            .action(() -> LogPanel.centerAndSetVisible(alwaysDisplayExpressionDialog)).build();
+        JButton btnShowAlwaysDisplayExpressionDialog = new SmallButton.Builder()
+                .name("...")
+                .shortDescription("Click to view and manage your always-displayed expression")
+                .action(() -> LogPanel.centerAndSetVisible(alwaysDisplayExpressionDialog))
+                .build();
 
         alwaysDisplayExpressionPanel.add(btnShowAlwaysDisplayExpressionDialog);
 
@@ -301,7 +297,8 @@ public final class LoggerNameTreePanel extends JPanel implements LoggerNameListe
                     int index = ignoreList.locationToIndex(e.getPoint());
 
                     if (index >= 0) {
-                        String string = ignoreList.getModel().getElementAt(index).toString();
+                        String string =
+                                ignoreList.getModel().getElementAt(index).toString();
                         toggleHiddenLogger(string);
                         fireChangeEvent();
 
@@ -309,7 +306,7 @@ public final class LoggerNameTreePanel extends JPanel implements LoggerNameListe
                          * TODO this needs to get the node that has this logger and fire a visual update
                          */
                         LoggerNameTreePanel.this.logTreeModel.nodeStructureChanged(
-                            (TreeNode) LoggerNameTreePanel.this.logTreeModel.getRoot());
+                                (TreeNode) LoggerNameTreePanel.this.logTreeModel.getRoot());
                     }
                 }
             }
@@ -317,7 +314,8 @@ public final class LoggerNameTreePanel extends JPanel implements LoggerNameListe
 
         JPanel ignoreListPanel = new JPanel(new BorderLayout());
         JScrollPane ignoreListScroll = new JScrollPane(ignoreList);
-        ignoreListScroll.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "Double click an entry to unhide it"));
+        ignoreListScroll.setBorder(BorderFactory.createTitledBorder(
+                BorderFactory.createEtchedBorder(), "Double click an entry to unhide it"));
         ignoreListPanel.add(ignoreListScroll, BorderLayout.CENTER);
 
         JPanel ignoreExpressionDialogPanel = new JPanel(new BorderLayout());
@@ -334,9 +332,9 @@ public final class LoggerNameTreePanel extends JPanel implements LoggerNameListe
             }
         });
 
-
         JPanel alwaysDisplayExpressionDialogPanel = new JPanel(new BorderLayout());
-        alwaysDisplayExpressionEntryField.addKeyListener(new ExpressionRuleContext(filterModel, alwaysDisplayExpressionEntryField));
+        alwaysDisplayExpressionEntryField.addKeyListener(
+                new ExpressionRuleContext(filterModel, alwaysDisplayExpressionEntryField));
 
         alwaysDisplayExpressionDialogPanel.add(new JScrollPane(alwaysDisplayExpressionEntryField), BorderLayout.CENTER);
         JButton alwaysDisplayExpressionCloseButton = new JButton(new AbstractAction(ACTION_NAME_CLOSE) {
@@ -363,7 +361,6 @@ public final class LoggerNameTreePanel extends JPanel implements LoggerNameListe
 
             public void actionPerformed(final ActionEvent e) {
                 SwingUtilities.invokeLater(() -> clearIgnoreListAction.actionPerformed(e));
-
             }
         });
         ignoreListButtonPanel.add(unhideAll);
@@ -373,7 +370,6 @@ public final class LoggerNameTreePanel extends JPanel implements LoggerNameListe
 
             public void actionPerformed(ActionEvent e) {
                 ignoreDialog.setVisible(false);
-
             }
         });
         ignoreListButtonPanel.add(ignoreCloseButton);
@@ -644,8 +640,8 @@ public final class LoggerNameTreePanel extends JPanel implements LoggerNameListe
         };
 
         action.putValue(
-            Action.SHORT_DESCRIPTION,
-            "Removes all entries from the Ignore list so you can see their events in the view");
+                Action.SHORT_DESCRIPTION,
+                "Removes all entries from the Ignore list so you can see their events in the view");
 
         return action;
     }
@@ -680,9 +676,7 @@ public final class LoggerNameTreePanel extends JPanel implements LoggerNameListe
 
         action.putValue(Action.SMALL_ICON, LineIconFactory.createCollapseIcon());
         action.putValue(Action.NAME, "Collapse Branch");
-        action.putValue(
-            Action.SHORT_DESCRIPTION,
-            "Collapses all the children of the currently selected node");
+        action.putValue(Action.SHORT_DESCRIPTION, "Collapses all the children of the currently selected node");
         action.setEnabled(false);
 
         return action;
@@ -700,9 +694,7 @@ public final class LoggerNameTreePanel extends JPanel implements LoggerNameListe
         action.putValue("enabled", Boolean.FALSE);
 
         action.putValue(Action.NAME, "Edit filters/colors");
-        action.putValue(
-            Action.SHORT_DESCRIPTION,
-            "Allows you to specify filters and coloring for this Logger");
+        action.putValue(Action.SHORT_DESCRIPTION, "Allows you to specify filters and coloring for this Logger");
         action.putValue(Action.SMALL_ICON, new ImageIcon(ChainsawIcons.ICON_EDIT_RECEIVER));
         action.setEnabled(false);
 
@@ -726,8 +718,7 @@ public final class LoggerNameTreePanel extends JPanel implements LoggerNameListe
         action.putValue(Action.SMALL_ICON, LineIconFactory.createExpandIcon());
         action.putValue(Action.NAME, "Expand branch");
         action.putValue(
-            Action.SHORT_DESCRIPTION,
-            "Expands all the child nodes of the currently selected node, recursively");
+                Action.SHORT_DESCRIPTION, "Expands all the child nodes of the currently selected node, recursively");
         action.setEnabled(false);
 
         return action;
@@ -748,9 +739,7 @@ public final class LoggerNameTreePanel extends JPanel implements LoggerNameListe
         };
 
         action.putValue(Action.NAME, "Find next");
-        action.putValue(
-            Action.SHORT_DESCRIPTION,
-            "Find using the selected node");
+        action.putValue(Action.SHORT_DESCRIPTION, "Find using the selected node");
         action.setEnabled(false);
 
         return action;
@@ -765,9 +754,7 @@ public final class LoggerNameTreePanel extends JPanel implements LoggerNameListe
         };
 
         action.putValue(Action.NAME, "Set 'refine focus' to selected logger");
-        action.putValue(
-            Action.SHORT_DESCRIPTION,
-            "Refine focus on the selected node");
+        action.putValue(Action.SHORT_DESCRIPTION, "Refine focus on the selected node");
         action.setEnabled(false);
 
         return action;
@@ -781,9 +768,7 @@ public final class LoggerNameTreePanel extends JPanel implements LoggerNameListe
         };
 
         action.putValue(Action.NAME, "Update 'refine focus' to include selected logger");
-        action.putValue(
-            Action.SHORT_DESCRIPTION,
-            "Add selected node to 'refine focus' field");
+        action.putValue(Action.SHORT_DESCRIPTION, "Add selected node to 'refine focus' field");
         action.setEnabled(false);
 
         return action;
@@ -797,9 +782,7 @@ public final class LoggerNameTreePanel extends JPanel implements LoggerNameListe
         };
 
         action.putValue(Action.NAME, "Update 'find' to include selected logger");
-        action.putValue(
-            Action.SHORT_DESCRIPTION,
-            "Add selected node to 'find' field");
+        action.putValue(Action.SHORT_DESCRIPTION, "Add selected node to 'find' field");
         action.setEnabled(false);
 
         return action;
@@ -850,16 +833,17 @@ public final class LoggerNameTreePanel extends JPanel implements LoggerNameListe
                 Color c = JColorChooser.showDialog(getRootPane(), "Choose a color", Color.red);
                 if (c != null) {
                     String expression = "logger like '^" + selectedLogger + ".*'";
-                    colorizer.addRule(new ColorRule(expression,
-                        ExpressionRule.getRule(expression), c, ChainsawConstants.COLOR_DEFAULT_FOREGROUND));
+                    colorizer.addRule(new ColorRule(
+                            expression,
+                            ExpressionRule.getRule(expression),
+                            c,
+                            ChainsawConstants.COLOR_DEFAULT_FOREGROUND));
                 }
             }
         };
 
         action.putValue(Action.NAME, "Define color rule for selected logger");
-        action.putValue(
-            Action.SHORT_DESCRIPTION,
-            "Define color rule for logger");
+        action.putValue(Action.SHORT_DESCRIPTION, "Define color rule for logger");
         action.setEnabled(false);
         return action;
     }
@@ -879,9 +863,7 @@ public final class LoggerNameTreePanel extends JPanel implements LoggerNameListe
         };
 
         action.putValue(Action.NAME, "Clear find field");
-        action.putValue(
-            Action.SHORT_DESCRIPTION,
-            "Clear the find field");
+        action.putValue(Action.SHORT_DESCRIPTION, "Clear the find field");
         action.setEnabled(false);
 
         return action;
@@ -896,9 +878,7 @@ public final class LoggerNameTreePanel extends JPanel implements LoggerNameListe
         };
 
         action.putValue(Action.NAME, "Clear 'refine focus' field");
-        action.putValue(
-            Action.SHORT_DESCRIPTION,
-            "Clear the refine focus field");
+        action.putValue(Action.SHORT_DESCRIPTION, "Clear the refine focus field");
         action.setEnabled(false);
 
         return action;
@@ -914,10 +894,9 @@ public final class LoggerNameTreePanel extends JPanel implements LoggerNameListe
 
         action.putValue(Action.NAME, "Focus");
         action.putValue(
-            Action.SHORT_DESCRIPTION,
-            "Allows you to Focus on the selected logger by setting a filter that discards all but this Logger");
-        action.putValue(
-            Action.SMALL_ICON, new ImageIcon(ChainsawIcons.WINDOW_ICON));
+                Action.SHORT_DESCRIPTION,
+                "Allows you to Focus on the selected logger by setting a filter that discards all but this Logger");
+        action.putValue(Action.SMALL_ICON, new ImageIcon(ChainsawIcons.WINDOW_ICON));
 
         action.setEnabled(false);
 
@@ -925,80 +904,79 @@ public final class LoggerNameTreePanel extends JPanel implements LoggerNameListe
     }
 
     private Action createIgnoreAllAction() {
-        Action action =
-            new AbstractAction("Ignore loggers below selection") {
-                @Override
-                public void actionPerformed(ActionEvent e) {
-                    //add all top level loggers as hidden loggers
-                    TreePath[] paths = logTree.getSelectionPaths();
-
-                    StringBuilder parentPathString = new StringBuilder();
-                    DefaultMutableTreeNode root;
-
-                    if ((paths == null) || (paths.length == 0)) {
-                        root = (DefaultMutableTreeNode) logTreeModel.getRoot();
-                    } else {
-                        root = (DefaultMutableTreeNode) logTree.getSelectionPath().getLastPathComponent();
-                        TreeNode[] path = root.getPath();
-                        //don't add 'root logger' to path string
-                        for (int i = 1; i < path.length; i++) {
-                            if (i > 1) {
-                                parentPathString.append(".");
-                            }
-                            parentPathString.append(path[i].toString());
-                        }
-                        if (!(parentPathString.toString().isEmpty())) {
+        Action action = new AbstractAction("Ignore loggers below selection") {
+            @Override
+            public void actionPerformed(ActionEvent e) {
+                // add all top level loggers as hidden loggers
+                TreePath[] paths = logTree.getSelectionPaths();
+
+                StringBuilder parentPathString = new StringBuilder();
+                DefaultMutableTreeNode root;
+
+                if ((paths == null) || (paths.length == 0)) {
+                    root = (DefaultMutableTreeNode) logTreeModel.getRoot();
+                } else {
+                    root = (DefaultMutableTreeNode) logTree.getSelectionPath().getLastPathComponent();
+                    TreeNode[] path = root.getPath();
+                    // don't add 'root logger' to path string
+                    for (int i = 1; i < path.length; i++) {
+                        if (i > 1) {
                             parentPathString.append(".");
                         }
+                        parentPathString.append(path[i].toString());
                     }
-                    Enumeration<TreeNode> topLevelLoggersEnumeration = root.children();
-                    Set<String> topLevelLoggersSet = new HashSet<>();
-                    while (topLevelLoggersEnumeration.hasMoreElements()) {
-                        String thisLogger = topLevelLoggersEnumeration.nextElement().toString();
-                        topLevelLoggersSet.add(parentPathString + thisLogger);
-                    }
-
-                    if (!topLevelLoggersSet.isEmpty()) {
-                        ignore(topLevelLoggersSet);
+                    if (!(parentPathString.toString().isEmpty())) {
+                        parentPathString.append(".");
                     }
+                }
+                Enumeration<TreeNode> topLevelLoggersEnumeration = root.children();
+                Set<String> topLevelLoggersSet = new HashSet<>();
+                while (topLevelLoggersEnumeration.hasMoreElements()) {
+                    String thisLogger = topLevelLoggersEnumeration.nextElement().toString();
+                    topLevelLoggersSet.add(parentPathString + thisLogger);
+                }
 
-                    logTreeModel.nodeChanged(root);
-                    ignoreLoggerButton.setSelected(false);
-                    focusOnAction.setEnabled(false);
-                    popupMenu.hideCheck.setSelected(false);
-                    fireChangeEvent();
+                if (!topLevelLoggersSet.isEmpty()) {
+                    ignore(topLevelLoggersSet);
                 }
-            };
+
+                logTreeModel.nodeChanged(root);
+                ignoreLoggerButton.setSelected(false);
+                focusOnAction.setEnabled(false);
+                popupMenu.hideCheck.setSelected(false);
+                fireChangeEvent();
+            }
+        };
 
         action.putValue(
-            Action.SHORT_DESCRIPTION,
-            "Adds all loggers to your Ignore list (unhide loggers you want to see in the view)");
+                Action.SHORT_DESCRIPTION,
+                "Adds all loggers to your Ignore list (unhide loggers you want to see in the view)");
 
         return action;
     }
 
     private Action createIgnoreAction() {
-        Action action =
-            new AbstractAction("Ignore this Logger", new ImageIcon(ChainsawIcons.ICON_COLLAPSE)) {
-                @Override
-                public void actionPerformed(ActionEvent e) {
-                    String selectedLoggerName = getCurrentlySelectedLoggerName();
-
-                    if (selectedLoggerName != null) {
-                        toggleHiddenLogger(selectedLoggerName);
-                        logTreeModel.nodeChanged((TreeNode)logTree.getSelectionPath().getLastPathComponent());
-                        ignoreLoggerButton.setSelected(hiddenSet.contains(selectedLoggerName));
-                        focusOnAction.setEnabled(!hiddenSet.contains(selectedLoggerName));
-                        popupMenu.hideCheck.setSelected(hiddenSet.contains(selectedLoggerName));
-                    }
-
-                    fireChangeEvent();
+        Action action = new AbstractAction("Ignore this Logger", new ImageIcon(ChainsawIcons.ICON_COLLAPSE)) {
+            @Override
+            public void actionPerformed(ActionEvent e) {
+                String selectedLoggerName = getCurrentlySelectedLoggerName();
+
+                if (selectedLoggerName != null) {
+                    toggleHiddenLogger(selectedLoggerName);
+                    logTreeModel.nodeChanged(
+                            (TreeNode) logTree.getSelectionPath().getLastPathComponent());
+                    ignoreLoggerButton.setSelected(hiddenSet.contains(selectedLoggerName));
+                    focusOnAction.setEnabled(!hiddenSet.contains(selectedLoggerName));
+                    popupMenu.hideCheck.setSelected(hiddenSet.contains(selectedLoggerName));
                 }
-            };
+
+                fireChangeEvent();
+            }
+        };
 
         action.putValue(
-            Action.SHORT_DESCRIPTION,
-            "Adds the selected Logger to your Ignore list, filtering those events from view");
+                Action.SHORT_DESCRIPTION,
+                "Adds the selected Logger to your Ignore list, filtering those events from view");
 
         return action;
     }
@@ -1156,11 +1134,11 @@ public final class LoggerNameTreePanel extends JPanel implements LoggerNameListe
             boolean focusOnSelected = isFocusOnSelected();
             //          editLoggerAction.setEnabled(path != null);
             currentlySelectedLoggerName = getCurrentlySelectedLoggerName();
-            focusOnAction.setEnabled(
-                (path != null) && (node != null) && (node.getParent() != null)
+            focusOnAction.setEnabled((path != null)
+                    && (node != null)
+                    && (node.getParent() != null)
                     && !hiddenSet.contains(currentlySelectedLoggerName));
-            hideAction.setEnabled(
-                (path != null) && (node != null) && (node.getParent() != null));
+            hideAction.setEnabled((path != null) && (node != null) && (node.getParent() != null));
             if (!focusOnAction.isEnabled()) {
                 setFocusOnSelected(false);
             }
@@ -1186,11 +1164,11 @@ public final class LoggerNameTreePanel extends JPanel implements LoggerNameListe
             if (isFocusOnSelected()) {
                 fireChangeEvent();
             }
-            //fire change event if we toggled focus off
+            // fire change event if we toggled focus off
             if (focusOnSelected && !isFocusOnSelected()) {
                 fireChangeEvent();
             }
-            //trigger a table repaint
+            // trigger a table repaint
             logPanel.repaint();
         });
 
@@ -1206,15 +1184,13 @@ public final class LoggerNameTreePanel extends JPanel implements LoggerNameListe
             focusOnLoggerButton.setSelected(isFocusOnSelected());
 
             if (logTree.getSelectionPath() != null) {
-                logTreeModel.nodeChanged(
-                    (TreeNode) logTree.getSelectionPath().getLastPathComponent());
+                logTreeModel.nodeChanged((TreeNode) logTree.getSelectionPath().getLastPathComponent());
             }
         });
 
         hideAction.addPropertyChangeListener(evt -> {
             if (logTree.getSelectionPath() != null) {
-                logTreeModel.nodeChanged(
-                    (TreeNode) logTree.getSelectionPath().getLastPathComponent());
+                logTreeModel.nodeChanged((TreeNode) logTree.getSelectionPath().getLastPathComponent());
             }
         });
 
@@ -1283,7 +1259,8 @@ public final class LoggerNameTreePanel extends JPanel implements LoggerNameListe
     }
 
     private void updateAlwaysDisplayExpressionSummary() {
-        alwaysDisplayExpressionSummary.setText(alwaysDisplayExpressionRule != null ? "Always displayed (set)" : "Always displayed (unset)");
+        alwaysDisplayExpressionSummary.setText(
+                alwaysDisplayExpressionRule != null ? "Always displayed (set)" : "Always displayed (unset)");
     }
 
     private void toggleFocusOnState() {
@@ -1322,18 +1299,18 @@ public final class LoggerNameTreePanel extends JPanel implements LoggerNameListe
     }
 
     public void loggerNameAdded(String loggerName) {
-        //no-op
+        // no-op
     }
 
     public void reset() {
         expandRootLatch = false;
-        //keep track if focuson was active when we were reset
+        // keep track if focuson was active when we were reset
         final boolean focusOnSelected = isFocusOnSelected();
         if (currentlySelectedLoggerName == null || !focusOnSelected) {
             return;
         }
 
-        //loggernameAdded runs on EDT
+        // loggernameAdded runs on EDT
         logTreeModel.loggerNameAdded(currentlySelectedLoggerName);
         EventQueue.invokeLater(() -> setFocusOn(currentlySelectedLoggerName));
     }
@@ -1354,10 +1331,14 @@ public final class LoggerNameTreePanel extends JPanel implements LoggerNameListe
          */
         @Override
         public Component getTreeCellRendererComponent(
-            JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean focus) {
-            JLabel component = (JLabel)super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, focus);
+                JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean focus) {
+            JLabel component =
+                    (JLabel) super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, focus);
 
-            Font originalFont = new Font(component.getFont().getName(), component.getFont().getStyle(), component.getFont().getSize());
+            Font originalFont = new Font(
+                    component.getFont().getName(),
+                    component.getFont().getStyle(),
+                    component.getFont().getSize());
 
             int style = Font.PLAIN;
 
@@ -1378,7 +1359,6 @@ public final class LoggerNameTreePanel extends JPanel implements LoggerNameListe
                 //        component.setEnabled(true);
             }
 
-
             Font font2 = originalFont.deriveFont(style);
             if (font2 != null) {
                 component.setFont(font2);
@@ -1442,14 +1422,13 @@ public final class LoggerNameTreePanel extends JPanel implements LoggerNameListe
          */
         @Override
         public void mouseClicked(MouseEvent e) {
-            if (e.getClickCount() > 1 &&
-                ((e.getModifiersEx() & InputEvent.CTRL_DOWN_MASK) > 0) &&
-                ((e.getModifiersEx() & InputEvent.SHIFT_DOWN_MASK) > 0)) {
+            if (e.getClickCount() > 1
+                    && ((e.getModifiersEx() & InputEvent.CTRL_DOWN_MASK) > 0)
+                    && ((e.getModifiersEx() & InputEvent.SHIFT_DOWN_MASK) > 0)) {
                 ignoreLoggerAtPoint(e.getPoint());
                 e.consume();
                 fireChangeEvent();
-            } else if (e.getClickCount() > 1 &&
-                ((e.getModifiersEx() & InputEvent.CTRL_DOWN_MASK) > 0)) {
+            } else if (e.getClickCount() > 1 && ((e.getModifiersEx() & InputEvent.CTRL_DOWN_MASK) > 0)) {
                 focusAnLoggerAtPoint(e.getPoint());
                 e.consume();
                 fireChangeEvent();
@@ -1483,19 +1462,18 @@ public final class LoggerNameTreePanel extends JPanel implements LoggerNameListe
     }
 
     private final class MouseKeyIconListener extends MouseMotionAdapter implements MouseMotionListener {
-        Cursor focusOnCursor =
-            Toolkit.getDefaultToolkit().createCustomCursor(
-                ChainsawIcons.FOCUS_ON_ICON.getImage(), new Point(10, 10), "");
-        Cursor ignoreCursor =
-            Toolkit.getDefaultToolkit().createCustomCursor(
-                ChainsawIcons.IGNORE_ICON.getImage(), new Point(10, 10), "");
+        Cursor focusOnCursor = Toolkit.getDefaultToolkit()
+                .createCustomCursor(ChainsawIcons.FOCUS_ON_ICON.getImage(), new Point(10, 10), "");
+        Cursor ignoreCursor = Toolkit.getDefaultToolkit()
+                .createCustomCursor(ChainsawIcons.IGNORE_ICON.getImage(), new Point(10, 10), "");
 
         /* (non-Javadoc)
          * @see java.awt.event.MouseMotionListener#mouseMoved(java.awt.event.MouseEvent)
          */
         @Override
         public void mouseMoved(MouseEvent e) {
-            if (((e.getModifiersEx() & InputEvent.CTRL_DOWN_MASK) > 0) && ((e.getModifiersEx() & InputEvent.SHIFT_DOWN_MASK) > 0)) {
+            if (((e.getModifiersEx() & InputEvent.CTRL_DOWN_MASK) > 0)
+                    && ((e.getModifiersEx() & InputEvent.SHIFT_DOWN_MASK) > 0)) {
                 logTree.setCursor(ignoreCursor);
             } else if ((e.getModifiersEx() & InputEvent.CTRL_DOWN_MASK) > 0) {
                 logTree.setCursor(focusOnCursor);
@@ -1511,17 +1489,20 @@ public final class LoggerNameTreePanel extends JPanel implements LoggerNameListe
             String selectedLoggerName = getCurrentlySelectedLoggerName();
             boolean hiddenLogger = event.m_logger != null && isHiddenLogger(event.m_logger);
             boolean hiddenExpression = (ignoreExpressionRule != null && ignoreExpressionRule.evaluate(event, null));
-            boolean alwaysDisplayExpression = (alwaysDisplayExpressionRule != null && alwaysDisplayExpressionRule.evaluate(event, null));
+            boolean alwaysDisplayExpression =
+                    (alwaysDisplayExpressionRule != null && alwaysDisplayExpressionRule.evaluate(event, null));
             boolean hidden = (!alwaysDisplayExpression) && (hiddenLogger || hiddenExpression);
             if (selectedLoggerName == null) {
-                //if there is no selected logger, pass if not hidden
+                // if there is no selected logger, pass if not hidden
                 return !hidden;
             }
 
             boolean result = (event.m_logger != null) && !hidden;
 
             if (result && isFocusOnSelected()) {
-                result = (event.m_logger != null && (event.m_logger.startsWith(selectedLoggerName + ".") || event.m_logger.endsWith(selectedLoggerName)));
+                result = (event.m_logger != null
+                        && (event.m_logger.startsWith(selectedLoggerName + ".")
+                                || event.m_logger.endsWith(selectedLoggerName)));
             }
 
             return result;
@@ -1532,5 +1513,4 @@ public final class LoggerNameTreePanel extends JPanel implements LoggerNameListe
             super.firePropertyChange(propertyName, oldVal, newVal);
         }
     }
-
 }
diff --git a/src/main/java/org/apache/log4j/chainsaw/components/logpanel/AutoFilterComboBox.java b/src/main/java/org/apache/log4j/chainsaw/components/logpanel/AutoFilterComboBox.java
index 5e5d5b6..185c997 100644
--- a/src/main/java/org/apache/log4j/chainsaw/components/logpanel/AutoFilterComboBox.java
+++ b/src/main/java/org/apache/log4j/chainsaw/components/logpanel/AutoFilterComboBox.java
@@ -2,7 +2,7 @@
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
+ * The ASF licenses this file to you under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
  *
@@ -16,18 +16,17 @@
  */
 package org.apache.log4j.chainsaw.components.logpanel;
 
-import javax.swing.*;
-import javax.swing.event.DocumentEvent;
-import javax.swing.event.DocumentListener;
-import javax.swing.event.PopupMenuEvent;
-import javax.swing.event.PopupMenuListener;
 import java.awt.*;
 import java.awt.event.ActionListener;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Locale;
 import java.util.Vector;
-
+import javax.swing.*;
+import javax.swing.event.DocumentEvent;
+import javax.swing.event.DocumentListener;
+import javax.swing.event.PopupMenuEvent;
+import javax.swing.event.PopupMenuListener;
 
 public class AutoFilterComboBox extends JComboBox {
     private boolean bypassFiltering;
@@ -35,7 +34,7 @@ public class AutoFilterComboBox extends JComboBox {
     private List displayedEntries = new ArrayList();
 
     AutoFilterComboBoxModel model = new AutoFilterComboBoxModel();
-    //editor component
+    // editor component
     private final JTextField textField = new JTextField();
     private String lastTextToMatch;
 
@@ -43,13 +42,15 @@ public class AutoFilterComboBox extends JComboBox {
         textField.setPreferredSize(getPreferredSize());
         setModel(model);
         setEditor(new AutoFilterEditor());
-        ((JTextField) getEditor().getEditorComponent()).getDocument().addDocumentListener(new AutoFilterDocumentListener());
+        ((JTextField) getEditor().getEditorComponent())
+                .getDocument()
+                .addDocumentListener(new AutoFilterDocumentListener());
         setEditable(true);
         addPopupMenuListener(new PopupMenuListenerImpl());
     }
 
     public Vector getModelData() {
-        //reverse the model order, because it will be un-reversed when we reload it from saved settings
+        // reverse the model order, because it will be un-reversed when we reload it from saved settings
         Vector vector = new Vector();
         for (Object allEntry : allEntries) {
             vector.insertElementAt(allEntry, 0);
@@ -58,7 +59,7 @@ public class AutoFilterComboBox extends JComboBox {
     }
 
     void refilter() {
-        //only refilter if we're not bypassing filtering AND the text has changed since the last call to refilter
+        // only refilter if we're not bypassing filtering AND the text has changed since the last call to refilter
         String textToMatch = getEditor().getItem().toString();
         if (bypassFiltering || (lastTextToMatch != null && lastTextToMatch.equals(textToMatch))) {
             return;
@@ -74,18 +75,19 @@ public class AutoFilterComboBox extends JComboBox {
             }
         }
         bypassFiltering = false;
-        //TODO: on no-match, don't filter at all (show the popup?)
+        // TODO: on no-match, don't filter at all (show the popup?)
         if (displayedEntries.size() > 0 && !textToMatch.isEmpty()) {
             showPopup();
         } else {
             hidePopup();
         }
     }
+
     class AutoFilterComboBoxModel extends AbstractListModel implements MutableComboBoxModel {
         private Object selectedItem;
 
         public void addElement(Object obj) {
-            //assuming add is to displayed list...add to full list (only if not a dup)
+            // assuming add is to displayed list...add to full list (only if not a dup)
             bypassFiltering = true;
 
             boolean entryExists = !allEntries.contains(obj);
@@ -107,7 +109,7 @@ public class AutoFilterComboBox extends JComboBox {
         }
 
         public void insertElementAt(Object obj, int index) {
-            //assuming add is to displayed list...add to full list (only if not a dup)
+            // assuming add is to displayed list...add to full list (only if not a dup)
             if (allEntries.contains(obj)) {
                 return;
             }
@@ -121,7 +123,7 @@ public class AutoFilterComboBox extends JComboBox {
 
         public void removeElementAt(int index) {
             bypassFiltering = true;
-            //assuming removal is from displayed list..remove from full list
+            // assuming removal is from displayed list..remove from full list
             Object obj = displayedEntries.get(index);
             allEntries.remove(obj);
             displayedEntries.remove(obj);
@@ -157,14 +159,15 @@ public class AutoFilterComboBox extends JComboBox {
             int displayedEntrySize = displayedEntries.size();
             if (displayedEntrySize > 0) {
                 displayedEntries.clear();
-                //if firecontentschaned is used, the combobox resizes..use fireintervalremoved instead, which doesn't do that..
+                // if firecontentschaned is used, the combobox resizes..use fireintervalremoved instead, which doesn't
+                // do that..
                 fireIntervalRemoved(this, 0, displayedEntrySize - 1);
             }
             bypassFiltering = false;
         }
 
         public void showAllElements() {
-            //first remove whatever is there and fire necessary events then add events
+            // first remove whatever is there and fire necessary events then add events
             removeAllElements();
             bypassFiltering = true;
             displayedEntries.addAll(allEntries);
@@ -224,7 +227,6 @@ public class AutoFilterComboBox extends JComboBox {
         }
     }
 
-
     private class PopupMenuListenerImpl implements PopupMenuListener {
         private boolean willBecomeVisible = false;
 
@@ -233,13 +235,13 @@ public class AutoFilterComboBox extends JComboBox {
             ((JComboBox) e.getSource()).setSelectedIndex(-1);
             bypassFiltering = false;
             if (!willBecomeVisible) {
-                //we already have a match but we're showing the popup - unfilter
+                // we already have a match but we're showing the popup - unfilter
                 if (displayedEntries.contains(textField.getText())) {
                     model.showAllElements();
                 }
 
-                //workaround for bug http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4743225
-                //the height of the popup after updating entries in this listener was not updated..
+                // workaround for bug http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4743225
+                // the height of the popup after updating entries in this listener was not updated..
                 JComboBox list = (JComboBox) e.getSource();
                 willBecomeVisible = true; // the flag is needed to prevent a loop
                 try {
@@ -251,11 +253,11 @@ public class AutoFilterComboBox extends JComboBox {
         }
 
         public void popupMenuWillBecomeInvisible(PopupMenuEvent e) {
-            //no-op
+            // no-op
         }
 
         public void popupMenuCanceled(PopupMenuEvent e) {
-            //no-op
+            // no-op
         }
     }
 }
diff --git a/src/main/java/org/apache/log4j/chainsaw/components/logpanel/ColumnNameKeywordMapper.java b/src/main/java/org/apache/log4j/chainsaw/components/logpanel/ColumnNameKeywordMapper.java
index 1db8364..41257e4 100644
--- a/src/main/java/org/apache/log4j/chainsaw/components/logpanel/ColumnNameKeywordMapper.java
+++ b/src/main/java/org/apache/log4j/chainsaw/components/logpanel/ColumnNameKeywordMapper.java
@@ -2,7 +2,7 @@
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
+ * The ASF licenses this file to you under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
  *
@@ -16,13 +16,12 @@
  */
 package org.apache.log4j.chainsaw.components.logpanel;
 
+import java.util.HashMap;
+import java.util.Map;
 import org.apache.log4j.chainsaw.ChainsawConstants;
 import org.apache.log4j.helpers.Constants;
 import org.apache.log4j.spi.LoggingEventFieldResolver;
 
-import java.util.HashMap;
-import java.util.Map;
-
 public class ColumnNameKeywordMapper {
 
     final Map<String, String> columnNameKeywordMap = new HashMap<>();
@@ -38,9 +37,15 @@ public class ColumnNameKeywordMapper {
         columnNameKeywordMap.put(ChainsawConstants.THREAD_COL_NAME, LoggingEventFieldResolver.THREAD_FIELD);
         columnNameKeywordMap.put(ChainsawConstants.THROWABLE_COL_NAME, LoggingEventFieldResolver.EXCEPTION_FIELD);
         columnNameKeywordMap.put(ChainsawConstants.TIMESTAMP_COL_NAME, LoggingEventFieldResolver.TIMESTAMP_FIELD);
-        columnNameKeywordMap.put(ChainsawConstants.ID_COL_NAME.toUpperCase(), LoggingEventFieldResolver.PROP_FIELD + Constants.LOG4J_ID_KEY);
-        columnNameKeywordMap.put(ChainsawConstants.LOG4J_MARKER_COL_NAME, LoggingEventFieldResolver.PROP_FIELD + ChainsawConstants.LOG4J_MARKER_COL_NAME);
-        columnNameKeywordMap.put(ChainsawConstants.MILLIS_DELTA_COL_NAME_LOWERCASE.toUpperCase(), LoggingEventFieldResolver.PROP_FIELD + ChainsawConstants.MILLIS_DELTA_COL_NAME_LOWERCASE);
+        columnNameKeywordMap.put(
+                ChainsawConstants.ID_COL_NAME.toUpperCase(),
+                LoggingEventFieldResolver.PROP_FIELD + Constants.LOG4J_ID_KEY);
+        columnNameKeywordMap.put(
+                ChainsawConstants.LOG4J_MARKER_COL_NAME,
+                LoggingEventFieldResolver.PROP_FIELD + ChainsawConstants.LOG4J_MARKER_COL_NAME);
+        columnNameKeywordMap.put(
+                ChainsawConstants.MILLIS_DELTA_COL_NAME_LOWERCASE.toUpperCase(),
+                LoggingEventFieldResolver.PROP_FIELD + ChainsawConstants.MILLIS_DELTA_COL_NAME_LOWERCASE);
     }
 
     public boolean contains(String key) {
diff --git a/src/main/java/org/apache/log4j/chainsaw/components/logpanel/ElementFactory.java b/src/main/java/org/apache/log4j/chainsaw/components/logpanel/ElementFactory.java
index 9c19e5a..19c3876 100644
--- a/src/main/java/org/apache/log4j/chainsaw/components/logpanel/ElementFactory.java
+++ b/src/main/java/org/apache/log4j/chainsaw/components/logpanel/ElementFactory.java
@@ -2,7 +2,7 @@
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
+ * The ASF licenses this file to you under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
  *
@@ -16,43 +16,42 @@
  */
 package org.apache.log4j.chainsaw.components.logpanel;
 
-import org.apache.log4j.chainsaw.components.elements.SmallButton;
-import org.apache.log4j.chainsaw.icons.ChainsawIcons;
-
-import javax.swing.*;
 import java.awt.event.InputEvent;
 import java.awt.event.KeyEvent;
+import javax.swing.*;
+import org.apache.log4j.chainsaw.components.elements.SmallButton;
+import org.apache.log4j.chainsaw.icons.ChainsawIcons;
 
 public class ElementFactory {
     public static SmallButton createFindNextButton(Runnable action) {
         SmallButton button = new SmallButton.Builder()
-            .action(action)
-            .name("Find next")
-            .text("")
-            .smallIconUrl(ChainsawIcons.DOWN)
-            .shortDescription("Find the next occurrence of the rule from the current row")
-            .keyStroke(KeyStroke.getKeyStroke("F3"))
-            .build();
+                .action(action)
+                .name("Find next")
+                .text("")
+                .smallIconUrl(ChainsawIcons.DOWN)
+                .shortDescription("Find the next occurrence of the rule from the current row")
+                .keyStroke(KeyStroke.getKeyStroke("F3"))
+                .build();
 
         button.getActionMap().put(button.getActionName(), button.getAction());
         button.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW)
-            .put(button.getActionAcceleratorKey(), button.getActionName());
+                .put(button.getActionAcceleratorKey(), button.getActionName());
         return button;
     }
 
     public static SmallButton createFindPreviousButton(Runnable action) {
         SmallButton button = new SmallButton.Builder()
-            .action(action)
-            .name("Find previous")
-            .text("")
-            .smallIconUrl(ChainsawIcons.UP)
-            .shortDescription("Find the previous occurrence of the rule from the current row")
-            .keyStroke(KeyStroke.getKeyStroke(KeyEvent.VK_F3, InputEvent.SHIFT_MASK))
-            .build();
+                .action(action)
+                .name("Find previous")
+                .text("")
+                .smallIconUrl(ChainsawIcons.UP)
+                .shortDescription("Find the previous occurrence of the rule from the current row")
+                .keyStroke(KeyStroke.getKeyStroke(KeyEvent.VK_F3, InputEvent.SHIFT_MASK))
+                .build();
 
         button.getActionMap().put(button.getActionName(), button.getAction());
         button.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW)
-            .put(button.getActionAcceleratorKey(), button.getActionName());
+                .put(button.getActionAcceleratorKey(), button.getActionName());
         return button;
     }
 }
diff --git a/src/main/java/org/apache/log4j/chainsaw/components/logpanel/LogPanel.java b/src/main/java/org/apache/log4j/chainsaw/components/logpanel/LogPanel.java
index f8a646e..9925edf 100644
--- a/src/main/java/org/apache/log4j/chainsaw/components/logpanel/LogPanel.java
+++ b/src/main/java/org/apache/log4j/chainsaw/components/logpanel/LogPanel.java
@@ -2,7 +2,7 @@
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
  * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
+ * The ASF licenses this file to you under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
  *
@@ -14,15 +14,34 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package org.apache.log4j.chainsaw.components.logpanel;
 
+import java.awt.*;
+import java.awt.datatransfer.Clipboard;
+import java.awt.datatransfer.StringSelection;
+import java.awt.event.*;
+import java.beans.PropertyChangeEvent;
+import java.beans.PropertyChangeListener;
+import java.io.*;
+import java.text.DateFormat;
+import java.text.NumberFormat;
+import java.text.SimpleDateFormat;
+import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
+import java.util.*;
+import java.util.List;
+import javax.swing.*;
+import javax.swing.event.*;
+import javax.swing.table.TableCellEditor;
+import javax.swing.table.TableColumn;
+import javax.swing.table.TableColumnModel;
+import javax.swing.text.Document;
 import org.apache.log4j.chainsaw.*;
 import org.apache.log4j.chainsaw.color.ColorPanel;
 import org.apache.log4j.chainsaw.color.RuleColorizer;
-import org.apache.log4j.chainsaw.components.elements.sorttable.JSortTable;
 import org.apache.log4j.chainsaw.components.elements.SmallButton;
 import org.apache.log4j.chainsaw.components.elements.SmallToggleButton;
+import org.apache.log4j.chainsaw.components.elements.sorttable.JSortTable;
 import org.apache.log4j.chainsaw.components.loggernamepanel.LoggerNameTreePanel;
 import org.apache.log4j.chainsaw.filter.FilterModel;
 import org.apache.log4j.chainsaw.helper.SwingHelper;
@@ -31,6 +50,8 @@ import org.apache.log4j.chainsaw.icons.LineIconFactory;
 import org.apache.log4j.chainsaw.layout.DefaultLayoutFactory;
 import org.apache.log4j.chainsaw.layout.EventDetailLayout;
 import org.apache.log4j.chainsaw.layout.LayoutEditorPane;
+import org.apache.log4j.chainsaw.logevents.ChainsawLoggingEvent;
+import org.apache.log4j.chainsaw.logevents.Level;
 import org.apache.log4j.chainsaw.prefs.Profileable;
 import org.apache.log4j.chainsaw.prefs.SettingsManager;
 import org.apache.log4j.chainsaw.receiver.ChainsawReceiver;
@@ -38,34 +59,9 @@ import org.apache.log4j.helpers.Constants;
 import org.apache.log4j.rule.ColorRule;
 import org.apache.log4j.rule.ExpressionRule;
 import org.apache.log4j.rule.Rule;
-
-import javax.swing.*;
-import javax.swing.event.*;
-import javax.swing.table.TableCellEditor;
-import javax.swing.table.TableColumn;
-import javax.swing.table.TableColumnModel;
-import javax.swing.text.Document;
-import java.awt.*;
-import java.awt.datatransfer.Clipboard;
-import java.awt.datatransfer.StringSelection;
-import java.awt.event.*;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-import java.io.*;
-import java.text.DateFormat;
-import java.text.NumberFormat;
-import java.text.SimpleDateFormat;
-import java.time.ZoneId;
-import java.time.format.DateTimeFormatter;
-import java.util.*;
-import java.util.List;
-
-import org.apache.log4j.chainsaw.logevents.ChainsawLoggingEvent;
-import org.apache.log4j.chainsaw.logevents.Level;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 
-
 /**
  * A LogPanel provides a view to a collection of LoggingEvents.<br>
  * <br>
@@ -164,7 +160,7 @@ public class LogPanel extends DockablePanel implements ChainsawEventBatchListene
     private ToggleToolTips searchToggleToolTips;
     private JScrollPane detailPane;
     private JScrollPane searchPane;
-    //only one tableCellEditor, shared by both tables
+    // only one tableCellEditor, shared by both tables
     private TableCellEditor markerCellEditor;
     private JToolBar detailToolbar;
     private boolean searchResultsDisplayed;
@@ -181,12 +177,13 @@ public class LogPanel extends DockablePanel implements ChainsawEventBatchListene
      * @param statusBar       shared status bar, provided by main application
      * @param identifier      used to load and save settings
      */
-    public LogPanel(SettingsManager settingsManager,
-                    ApplicationPreferenceModel applicationPreferenceModel,
-                    final ChainsawStatusBar statusBar,
-                    final String identifier,
-                    Map<String, RuleColorizer> allColorizers,
-                    RuleColorizer globalRuleColorizer) {
+    public LogPanel(
+            SettingsManager settingsManager,
+            ApplicationPreferenceModel applicationPreferenceModel,
+            final ChainsawStatusBar statusBar,
+            final String identifier,
+            Map<String, RuleColorizer> allColorizers,
+            RuleColorizer globalRuleColorizer) {
 
         this.identifier = identifier;
         this.applicationPreferenceModel = applicationPreferenceModel;
@@ -215,14 +212,12 @@ public class LogPanel extends DockablePanel implements ChainsawEventBatchListene
         ColumnNameKeywordMapper columnNameKeywordMapper = new ColumnNameKeywordMapper();
 
         logPanelPreferencesFrame.setTitle("'" + identifier + "' Log Panel Preferences");
-        logPanelPreferencesFrame.setIconImage(
-            ((ImageIcon) ChainsawIcons.ICON_PREFERENCES).getImage());
+        logPanelPreferencesFrame.setIconImage(((ImageIcon) ChainsawIcons.ICON_PREFERENCES).getImage());
         logPanelPreferencesFrame.getContentPane().add(new JScrollPane(logPanelPreferencePanel));
 
         logPanelPreferencesFrame.setSize(740, 520);
 
-        logPanelPreferencePanel.setOkCancelActionListener(
-            e -> logPanelPreferencesFrame.setVisible(false));
+        logPanelPreferencePanel.setOkCancelActionListener(e -> logPanelPreferencesFrame.setVisible(false));
 
         KeyStroke escape = KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0, false);
         Action closeLogPanelPreferencesFrameAction = new AbstractAction() {
@@ -230,34 +225,30 @@ public class LogPanel extends DockablePanel implements ChainsawEventBatchListene
                 logPanelPreferencesFrame.setVisible(false);
             }
         };
-        logPanelPreferencesFrame.getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(escape, "ESCAPE");
-        logPanelPreferencesFrame.getRootPane().
-            getActionMap().put("ESCAPE", closeLogPanelPreferencesFrameAction);
+        logPanelPreferencesFrame
+                .getRootPane()
+                .getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW)
+                .put(escape, "ESCAPE");
+        logPanelPreferencesFrame.getRootPane().getActionMap().put("ESCAPE", closeLogPanelPreferencesFrameAction);
 
-
-        setDetailPaneConversionPattern(
-            DefaultLayoutFactory.getDefaultPatternLayout());
-        detailLayout.setConversionPattern(
-            DefaultLayoutFactory.getDefaultPatternLayout());
+        setDetailPaneConversionPattern(DefaultLayoutFactory.getDefaultPatternLayout());
+        detailLayout.setConversionPattern(DefaultLayoutFactory.getDefaultPatternLayout());
 
         undockedFrame = new JFrame(identifier);
-        undockedFrame.setDefaultCloseOperation(
-            WindowConstants.DO_NOTHING_ON_CLOSE);
+        undockedFrame.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
 
         if (ChainsawIcons.UNDOCKED_ICON != null) {
-            undockedFrame.setIconImage(
-                new ImageIcon(ChainsawIcons.UNDOCKED_ICON).getImage());
+            undockedFrame.setIconImage(new ImageIcon(ChainsawIcons.UNDOCKED_ICON).getImage());
         }
 
         externalPanel = new DockablePanel();
         externalPanel.setLayout(new BorderLayout());
 
-        undockedFrame.addWindowListener(
-            new WindowAdapter() {
-                public void windowClosing(WindowEvent e) {
-                    dock();
-                }
-            });
+        undockedFrame.addWindowListener(new WindowAdapter() {
+            public void windowClosing(WindowEvent e) {
+                dock();
+            }
+        });
 
         undockedToolbar = createDockwindowToolbar();
         externalPanel.add(undockedToolbar, BorderLayout.NORTH);
@@ -265,15 +256,14 @@ public class LogPanel extends DockablePanel implements ChainsawEventBatchListene
         undockedFrame.setSize(new Dimension(1024, 768));
         undockedFrame.pack();
 
-        logPanelPreferenceModel.addEventListener(
-            evt -> {
-                if (evt.getPropertyName().equals(LogPanelPreferenceModel.SCROLL_TO_BOTTOM)) {
-                    boolean value = (Boolean) evt.getPropertyValue();
-                    if (value) {
-                        scrollToBottom();
-                    }
+        logPanelPreferenceModel.addEventListener(evt -> {
+            if (evt.getPropertyName().equals(LogPanelPreferenceModel.SCROLL_TO_BOTTOM)) {
+                boolean value = (Boolean) evt.getPropertyValue();
+                if (value) {
+                    scrollToBottom();
                 }
-            });
+            }
+        });
         /*
          * Menus on which the preferencemodels rely
          */
@@ -283,20 +273,16 @@ public class LogPanel extends DockablePanel implements ChainsawEventBatchListene
          * format changes
          */
         final JPopupMenu dateFormatChangePopup = new JPopupMenu();
-        final JRadioButtonMenuItem isoButton =
-            new JRadioButtonMenuItem(
-                new AbstractAction("Use ISO8601Format") {
-                    public void actionPerformed(ActionEvent e) {
-                        logPanelPreferenceModel.setDateFormatPattern("ISO8601");
-                    }
-                });
-        final JRadioButtonMenuItem simpleTimeButton =
-            new JRadioButtonMenuItem(
-                new AbstractAction("Use simple time") {
-                    public void actionPerformed(ActionEvent e) {
-                        logPanelPreferenceModel.setDateFormatPattern("HH:mm:ss");
-                    }
-                });
+        final JRadioButtonMenuItem isoButton = new JRadioButtonMenuItem(new AbstractAction("Use ISO8601Format") {
+            public void actionPerformed(ActionEvent e) {
+                logPanelPreferenceModel.setDateFormatPattern("ISO8601");
+            }
+        });
+        final JRadioButtonMenuItem simpleTimeButton = new JRadioButtonMenuItem(new AbstractAction("Use simple time") {
+            public void actionPerformed(ActionEvent e) {
+                logPanelPreferenceModel.setDateFormatPattern("HH:mm:ss");
+            }
+        });
 
         ButtonGroup dfBG = new ButtonGroup();
         dfBG.add(isoButton);
@@ -305,99 +291,91 @@ public class LogPanel extends DockablePanel implements ChainsawEventBatchListene
         dateFormatChangePopup.add(isoButton);
         dateFormatChangePopup.add(simpleTimeButton);
 
-        final JCheckBoxMenuItem menuItemLoggerTree =
-            new JCheckBoxMenuItem("Show Logger Tree");
+        final JCheckBoxMenuItem menuItemLoggerTree = new JCheckBoxMenuItem("Show Logger Tree");
         menuItemLoggerTree.addActionListener(
-            e -> logPanelPreferenceModel.setLogTreePanelVisible(menuItemLoggerTree.isSelected()));
+                e -> logPanelPreferenceModel.setLogTreePanelVisible(menuItemLoggerTree.isSelected()));
         menuItemLoggerTree.setIcon(new ImageIcon(ChainsawIcons.WINDOW_ICON));
 
-        final JCheckBoxMenuItem menuItemToggleDetails =
-            new JCheckBoxMenuItem("Show Detail Pane");
+        final JCheckBoxMenuItem menuItemToggleDetails = new JCheckBoxMenuItem("Show Detail Pane");
         menuItemToggleDetails.addActionListener(
-            e -> logPanelPreferenceModel.setDetailPaneVisible(menuItemToggleDetails.isSelected()));
+                e -> logPanelPreferenceModel.setDetailPaneVisible(menuItemToggleDetails.isSelected()));
 
         menuItemToggleDetails.setIcon(new ImageIcon(ChainsawIcons.INFO));
 
         /*
          * add preferencemodel listeners
          */
-        logPanelPreferenceModel.addEventListener(
-                evt -> {
-                    if (evt.getPropertyName().equals(LogPanelPreferenceModel.WRAP_MSG)) {
-                        boolean wrap = (Boolean) evt.getPropertyValue();
-                        renderer.setWrapMessage(wrap);
-                        table.tableChanged(new TableModelEvent(tableModel));
-                        searchRenderer.setWrapMessage(wrap);
-                        searchTable.tableChanged(new TableModelEvent(searchModel));
-                    }
-                });
+        logPanelPreferenceModel.addEventListener(evt -> {
+            if (evt.getPropertyName().equals(LogPanelPreferenceModel.WRAP_MSG)) {
+                boolean wrap = (Boolean) evt.getPropertyValue();
+                renderer.setWrapMessage(wrap);
+                table.tableChanged(new TableModelEvent(tableModel));
+                searchRenderer.setWrapMessage(wrap);
+                searchTable.tableChanged(new TableModelEvent(searchModel));
+            }
+        });
 
-        logPanelPreferenceModel.addEventListener(
-                evt -> {
-                    if (evt.getPropertyName().equals(LogPanelPreferenceModel.SEARCH_RESULTS_VISIBLE)) {
-                        boolean displaySearchResultsInDetailsIfAvailable = (Boolean) evt.getPropertyValue();
-                        if (displaySearchResultsInDetailsIfAvailable) {
-                            showSearchResults();
-                        } else {
-                            hideSearchResults();
-                        }
-                    }
-                });
+        logPanelPreferenceModel.addEventListener(evt -> {
+            if (evt.getPropertyName().equals(LogPanelPreferenceModel.SEARCH_RESULTS_VISIBLE)) {
+                boolean displaySearchResultsInDetailsIfAvailable = (Boolean) evt.getPropertyValue();
+                if (displaySearchResultsInDetailsIfAvailable) {
+                    showSearchResults();
+                } else {
+                    hideSearchResults();
+                }
+            }
+        });
 
-        logPanelPreferenceModel.addEventListener(
-                evt -> {
-                    if (evt.getPropertyName().equals(LogPanelPreferenceModel.HIGHLIGHT_SEARCH_MATCH_TEXT)) {
-                        boolean highlightText = (Boolean) evt.getPropertyValue();
-                        renderer.setHighlightSearchMatchText(highlightText);
-                        table.tableChanged(new TableModelEvent(tableModel));
-                        searchRenderer.setHighlightSearchMatchText(highlightText);
-                        searchTable.tableChanged(new TableModelEvent(searchModel));
-                    }
-                });
+        logPanelPreferenceModel.addEventListener(evt -> {
+            if (evt.getPropertyName().equals(LogPanelPreferenceModel.HIGHLIGHT_SEARCH_MATCH_TEXT)) {
+                boolean highlightText = (Boolean) evt.getPropertyValue();
+                renderer.setHighlightSearchMatchText(highlightText);
+                table.tableChanged(new TableModelEvent(tableModel));
+                searchRenderer.setHighlightSearchMatchText(highlightText);
+                searchTable.tableChanged(new TableModelEvent(searchModel));
+            }
+        });
 
-        logPanelPreferenceModel.addEventListener(
-                evt -> {
-                    if (evt.getPropertyName().equals(LogPanelPreferenceModel.DETAIL_PANE_VISIBLE)) {
-                        boolean detailPaneVisible = (Boolean) evt.getPropertyValue();
-                        if (detailPaneVisible) {
-                            showDetailPane();
-                        } else {
-                            //don't hide the detail pane if search results are being displayed
-                            if (!searchResultsDisplayed) {
-                                hideDetailPane();
-                            }
-                        }
+        logPanelPreferenceModel.addEventListener(evt -> {
+            if (evt.getPropertyName().equals(LogPanelPreferenceModel.DETAIL_PANE_VISIBLE)) {
+                boolean detailPaneVisible = (Boolean) evt.getPropertyValue();
+                if (detailPaneVisible) {
+                    showDetailPane();
+                } else {
+                    // don't hide the detail pane if search results are being displayed
+                    if (!searchResultsDisplayed) {
+                        hideDetailPane();
                     }
-                });
+                }
+            }
+        });
 
-        logPanelPreferenceModel.addEventListener(
-                evt -> {
-                    if (evt.getPropertyName().equals(LogPanelPreferenceModel.LOG_TREE_PANEL_VISIBLE)) {
-                        boolean newValue = (Boolean) evt.getPropertyValue();
-                        if (newValue) {
-                            showLogTreePanel();
-                        } else {
-                            hideLogTreePanel();
-                        }
-                    }
-                });
+        logPanelPreferenceModel.addEventListener(evt -> {
+            if (evt.getPropertyName().equals(LogPanelPreferenceModel.LOG_TREE_PANEL_VISIBLE)) {
+                boolean newValue = (Boolean) evt.getPropertyValue();
+                if (newValue) {
+                    showLogTreePanel();
+                } else {
+                    hideLogTreePanel();
+                }
+            }
+        });
 
-        logPanelPreferenceModel.addEventListener(
-                evt -> {
-                    if (evt.getPropertyName().equals(LogPanelPreferenceModel.TOOL_TIPS_VISIBLE)) {
-                        boolean toolTips = (Boolean) evt.getPropertyValue();
-                        renderer.setToolTipsVisible(toolTips);
-                        searchRenderer.setToolTipsVisible(toolTips);
-                        searchToggleToolTips.setSelected(toolTips);
-                        mainToggleToolTips.setSelected(toolTips);
-                    }
-                });
+        logPanelPreferenceModel.addEventListener(evt -> {
+            if (evt.getPropertyName().equals(LogPanelPreferenceModel.TOOL_TIPS_VISIBLE)) {
+                boolean toolTips = (Boolean) evt.getPropertyValue();
+                renderer.setToolTipsVisible(toolTips);
+                searchRenderer.setToolTipsVisible(toolTips);
+                searchToggleToolTips.setSelected(toolTips);
+                mainToggleToolTips.setSelected(toolTips);
+            }
+        });
 
-        logPanelPreferenceModel.addEventListener(
-            evt -> {
+        logPanelPreferenceModel.addEventListener(evt -> {
             if (evt.getPropertyName().equals(LogPanelPreferenceModel.DATE_FORMAT_TIME_ZONE)) {
                 isoButton.setSelected(logPanelPreferenceModel.isUseISO8601Format());
-                simpleTimeButton.setSelected(!logPanelPreferenceModel.isUseISO8601Format() && !logPanelPreferenceModel.isCustomDateFormat());
+                simpleTimeButton.setSelected(
+                        !logPanelPreferenceModel.isUseISO8601Format() && !logPanelPreferenceModel.isCustomDateFormat());
 
                 if (logPanelPreferenceModel.getDateFormatTimeZone() != null) {
                     renderer.setTimeZone(logPanelPreferenceModel.getDateFormatTimeZone());
@@ -415,7 +393,8 @@ public class LogPanel extends DockablePanel implements ChainsawEventBatchListene
                         renderer.setDateFormatter(new SimpleDateFormat(Constants.ISO8601_PATTERN));
                     }
                     try {
-                        searchRenderer.setDateFormatter(new SimpleDateFormat(logPanelPreferenceModel.getDateFormatPattern()));
+                        searchRenderer.setDateFormatter(
+                                new SimpleDateFormat(logPanelPreferenceModel.getDateFormatPattern()));
                     } catch (IllegalArgumentException iae) {
                         logPanelPreferenceModel.setDefaultDatePatternFormat();
                         searchRenderer.setDateFormatter(new SimpleDateFormat(Constants.ISO8601_PATTERN));
@@ -427,102 +406,103 @@ public class LogPanel extends DockablePanel implements ChainsawEventBatchListene
             }
         });
 
-        logPanelPreferenceModel.addEventListener(
-            evt -> {
-                if (evt.getPropertyName().equals(LogPanelPreferenceModel.CLEAR_TABLE_EXPRESSION)) {
-                    String expression = evt.getPropertyValue().toString();
-                    try {
-                        clearTableExpressionRule = ExpressionRule.getRule(expression);
-                        logger.info("clearTableExpressionRule set to: " + expression);
-                    } catch (Exception e) {
-                        logger.info("clearTableExpressionRule invalid - ignoring: " + expression);
-                        clearTableExpressionRule = null;
-                    }
+        logPanelPreferenceModel.addEventListener(evt -> {
+            if (evt.getPropertyName().equals(LogPanelPreferenceModel.CLEAR_TABLE_EXPRESSION)) {
+                String expression = evt.getPropertyValue().toString();
+                try {
+                    clearTableExpressionRule = ExpressionRule.getRule(expression);
+                    logger.info("clearTableExpressionRule set to: " + expression);
+                } catch (Exception e) {
+                    logger.info("clearTableExpressionRule invalid - ignoring: " + expression);
+                    clearTableExpressionRule = null;
                 }
-            });
+            }
+        });
 
         logPanelPreferenceModel.addEventListener(evt -> {
-                if (!evt.isBeforeUpdate() && evt.getPropertyName().equals(LogPanelPreferenceModel.DATE_FORMAT_PATTERN) ||
-                    evt.getPropertyName().equals(LogPanelPreferenceModel.DATE_FORMAT_TIME_ZONE)) {
+            if (!evt.isBeforeUpdate() && evt.getPropertyName().equals(LogPanelPreferenceModel.DATE_FORMAT_PATTERN)
+                    || evt.getPropertyName().equals(LogPanelPreferenceModel.DATE_FORMAT_TIME_ZONE)) {
 
-            isoButton.setSelected(logPanelPreferenceModel.isUseISO8601Format());
-            simpleTimeButton.setSelected(!logPanelPreferenceModel.isUseISO8601Format() && !logPanelPreferenceModel.isCustomDateFormat());
+                isoButton.setSelected(logPanelPreferenceModel.isUseISO8601Format());
+                simpleTimeButton.setSelected(
+                        !logPanelPreferenceModel.isUseISO8601Format() && !logPanelPreferenceModel.isCustomDateFormat());
 
-            if (logPanelPreferenceModel.getDateFormatTimeZone() != null && !logPanelPreferenceModel.getDateFormatTimeZone().isEmpty()) {
-                renderer.setTimeZone(logPanelPreferenceModel.getDateFormatTimeZone());
-                searchRenderer.setTimeZone(logPanelPreferenceModel.getDateFormatTimeZone());
-            }
+                if (logPanelPreferenceModel.getDateFormatTimeZone() != null
+                        && !logPanelPreferenceModel.getDateFormatTimeZone().isEmpty()) {
+                    renderer.setTimeZone(logPanelPreferenceModel.getDateFormatTimeZone());
+                    searchRenderer.setTimeZone(logPanelPreferenceModel.getDateFormatTimeZone());
+                }
 
-            if (logPanelPreferenceModel.isUseISO8601Format()) {
-                renderer.setDateFormatter(new SimpleDateFormat(Constants.ISO8601_PATTERN));
-                searchRenderer.setDateFormatter(new SimpleDateFormat(Constants.ISO8601_PATTERN));
-            } else {
-                try {
-                    renderer.setDateFormatter(new SimpleDateFormat(logPanelPreferenceModel.getDateFormatPattern()));
-                } catch (IllegalArgumentException iae) {
-                    logPanelPreferenceModel.setDefaultDatePatternFormat();
+                if (logPanelPreferenceModel.isUseISO8601Format()) {
                     renderer.setDateFormatter(new SimpleDateFormat(Constants.ISO8601_PATTERN));
-                }
-                try {
-                    searchRenderer.setDateFormatter(new SimpleDateFormat(logPanelPreferenceModel.getDateFormatPattern()));
-                } catch (IllegalArgumentException iae) {
-                    logPanelPreferenceModel.setDefaultDatePatternFormat();
                     searchRenderer.setDateFormatter(new SimpleDateFormat(Constants.ISO8601_PATTERN));
+                } else {
+                    try {
+                        renderer.setDateFormatter(new SimpleDateFormat(logPanelPreferenceModel.getDateFormatPattern()));
+                    } catch (IllegalArgumentException iae) {
+                        logPanelPreferenceModel.setDefaultDatePatternFormat();
+                        renderer.setDateFormatter(new SimpleDateFormat(Constants.ISO8601_PATTERN));
+                    }
+                    try {
+                        searchRenderer.setDateFormatter(
+                                new SimpleDateFormat(logPanelPreferenceModel.getDateFormatPattern()));
+                    } catch (IllegalArgumentException iae) {
+                        logPanelPreferenceModel.setDefaultDatePatternFormat();
+                        searchRenderer.setDateFormatter(new SimpleDateFormat(Constants.ISO8601_PATTERN));
+                    }
                 }
-            }
 
-            table.tableChanged(new TableModelEvent(tableModel));
-            searchTable.tableChanged(new TableModelEvent(searchModel));
-        }});
+                table.tableChanged(new TableModelEvent(tableModel));
+                searchTable.tableChanged(new TableModelEvent(searchModel));
+            }
+        });
 
-        logPanelPreferenceModel.addEventListener(
-            evt -> {
-                if (evt.getPropertyName().equals(LogPanelPreferenceModel.LOGGER_PRECISION)) {
-                    renderer.setLoggerPrecision(logPanelPreferenceModel.getLoggerPrecision());
-                    table.tableChanged(new TableModelEvent(tableModel));
+        logPanelPreferenceModel.addEventListener(evt -> {
+            if (evt.getPropertyName().equals(LogPanelPreferenceModel.LOGGER_PRECISION)) {
+                renderer.setLoggerPrecision(logPanelPreferenceModel.getLoggerPrecision());
+                table.tableChanged(new TableModelEvent(tableModel));
 
-                    searchRenderer.setLoggerPrecision(logPanelPreferenceModel.getLoggerPrecision());
-                    searchTable.tableChanged(new TableModelEvent(searchModel));
-                }
-            });
+                searchRenderer.setLoggerPrecision(logPanelPreferenceModel.getLoggerPrecision());
+                searchTable.tableChanged(new TableModelEvent(searchModel));
+            }
+        });
 
-        logPanelPreferenceModel.addEventListener(
-            evt -> {
-                if (evt.getPropertyName().equals(LogPanelPreferenceModel.LOG_TREE_PANEL_VISIBLE)) {
-                    boolean value = (Boolean) evt.getPropertyValue();
-                    menuItemLoggerTree.setSelected(value);
-                }
-            });
+        logPanelPreferenceModel.addEventListener(evt -> {
+            if (evt.getPropertyName().equals(LogPanelPreferenceModel.LOG_TREE_PANEL_VISIBLE)) {
+                boolean value = (Boolean) evt.getPropertyValue();
+                menuItemLoggerTree.setSelected(value);
+            }
+        });
 
-        logPanelPreferenceModel.addEventListener(
-            evt -> {
-                if (evt.getPropertyName().equals(LogPanelPreferenceModel.DETAIL_PANE_VISIBLE)) {
-                    boolean value = (Boolean) evt.getPropertyValue();
-                    menuItemToggleDetails.setSelected(value);
-                }
-            });
+        logPanelPreferenceModel.addEventListener(evt -> {
+            if (evt.getPropertyName().equals(LogPanelPreferenceModel.DETAIL_PANE_VISIBLE)) {
+                boolean value = (Boolean) evt.getPropertyValue();
+                menuItemToggleDetails.setSelected(value);
+            }
+        });
 
-//        applicationPreferenceModel.addPropertyChangeListener("searchColor", new PropertyChangeListener() {
-//            public void propertyChange(PropertyChangeEvent evt) {
-//                if (table != null) {
-//                    table.repaint();
-//                }
-//                if (searchTable != null) {
-//                    searchTable.repaint();
-//                }
-//            }
-//        });
-//
-//        applicationPreferenceModel.addPropertyChangeListener("alternatingColor", new PropertyChangeListener() {
-//            public void propertyChange(PropertyChangeEvent evt) {
-//                if (table != null) {
-//                    table.repaint();
-//                }
-//                if (searchTable != null) {
-//                    searchTable.repaint();
-//                }
-//            }
-//        });
+        //        applicationPreferenceModel.addPropertyChangeListener("searchColor", new PropertyChangeListener() {
+        //            public void propertyChange(PropertyChangeEvent evt) {
+        //                if (table != null) {
+        //                    table.repaint();
+        //                }
+        //                if (searchTable != null) {
+        //                    searchTable.repaint();
+        //                }
+        //            }
+        //        });
+        //
+        //        applicationPreferenceModel.addPropertyChangeListener("alternatingColor", new PropertyChangeListener()
+        // {
+        //            public void propertyChange(PropertyChangeEvent evt) {
+        //                if (table != null) {
+        //                    table.repaint();
+        //                }
+        //                if (searchTable != null) {
+        //                    searchTable.repaint();
+        //                }
+        //            }
+        //        });
 
         /*
          *End of preferenceModel listeners
@@ -544,24 +524,58 @@ public class LogPanel extends DockablePanel implements ChainsawEventBatchListene
         searchTable.setColumnSelectionAllowed(false);
         searchTable.setRowSelectionAllowed(true);
 
-        //we've mapped f2, shift f2 and ctrl-f2 to marker-related actions, unmap them from the table
+        // we've mapped f2, shift f2 and ctrl-f2 to marker-related actions, unmap them from the table
         table.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(KeyStroke.getKeyStroke("F2"), "none");
-        table.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(KeyStroke.getKeyStroke(KeyEvent.VK_F2, InputEvent.SHIFT_MASK), "none");
-        table.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(KeyStroke.getKeyStroke(KeyEvent.VK_F2, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()), "none");
-        table.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(KeyStroke.getKeyStroke(KeyEvent.VK_F2, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask() | InputEvent.SHIFT_MASK), "none");
-
-        //we're also mapping ctrl-a to scroll-to-top, unmap from the table
-        table.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(KeyStroke.getKeyStroke(KeyEvent.VK_A, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()), "none");
-
-        searchTable.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(KeyStroke.getKeyStroke("F2"), "none");
-        searchTable.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(KeyStroke.getKeyStroke(KeyEvent.VK_F2, InputEvent.SHIFT_MASK), "none");
-        searchTable.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(KeyStroke.getKeyStroke(KeyEvent.VK_F2, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()), "none");
-        searchTable.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(KeyStroke.getKeyStroke(KeyEvent.VK_F2, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask() | InputEvent.SHIFT_MASK), "none");
-
-        //we're also mapping ctrl-a to scroll-to-top, unmap from the table
-        searchTable.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(KeyStroke.getKeyStroke(KeyEvent.VK_A, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()), "none");
-
-        //add a listener to update the 'refine focus'
+        table.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT)
+                .put(KeyStroke.getKeyStroke(KeyEvent.VK_F2, InputEvent.SHIFT_MASK), "none");
+        table.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT)
+                .put(
+                        KeyStroke.getKeyStroke(
+                                KeyEvent.VK_F2, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()),
+                        "none");
+        table.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT)
+                .put(
+                        KeyStroke.getKeyStroke(
+                                KeyEvent.VK_F2,
+                                Toolkit.getDefaultToolkit().getMenuShortcutKeyMask() | InputEvent.SHIFT_MASK),
+                        "none");
+
+        // we're also mapping ctrl-a to scroll-to-top, unmap from the table
+        table.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT)
+                .put(
+                        KeyStroke.getKeyStroke(
+                                KeyEvent.VK_A, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()),
+                        "none");
+
+        searchTable
+                .getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT)
+                .put(KeyStroke.getKeyStroke("F2"), "none");
+        searchTable
+                .getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT)
+                .put(KeyStroke.getKeyStroke(KeyEvent.VK_F2, InputEvent.SHIFT_MASK), "none");
+        searchTable
+                .getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT)
+                .put(
+                        KeyStroke.getKeyStroke(
+                                KeyEvent.VK_F2, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()),
+                        "none");
+        searchTable
+                .getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT)
+                .put(
+                        KeyStroke.getKeyStroke(
+                                KeyEvent.VK_F2,
+                                Toolkit.getDefaultToolkit().getMenuShortcutKeyMask() | InputEvent.SHIFT_MASK),
+                        "none");
+
+        // we're also mapping ctrl-a to scroll-to-top, unmap from the table
+        searchTable
+                .getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT)
+                .put(
+                        KeyStroke.getKeyStroke(
+                                KeyEvent.VK_A, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()),
+                        "none");
+
+        // add a listener to update the 'refine focus'
         tableModel.addNewKeyListener(e -> columnNameKeywordMapper.put(e.getKey().toString(), "PROP." + e.getKey()));
 
         /*
@@ -571,50 +585,44 @@ public class LogPanel extends DockablePanel implements ChainsawEventBatchListene
         tableModel.setRuleMediator(tableRuleMediator);
         searchModel.setRuleMediator(searchRuleMediator);
 
-        tableModel.addEventCountListener(
-            (currentCount, totalCount) -> {
-                if (LogPanel.this.isVisible()) {
-                    statusBar.setSelectedLine(
-                        table.getSelectedRow() + 1, currentCount, totalCount, getIdentifier());
-                }
-            });
+        tableModel.addEventCountListener((currentCount, totalCount) -> {
+            if (LogPanel.this.isVisible()) {
+                statusBar.setSelectedLine(table.getSelectedRow() + 1, currentCount, totalCount, getIdentifier());
+            }
+        });
 
-        tableModel.addEventCountListener(
-            new EventCountListener() {
-                final NumberFormat formatter = NumberFormat.getPercentInstance();
-                boolean warning75 = false;
-                boolean warning100 = false;
-
-                public void eventCountChanged(int currentCount, int totalCount) {
-                    if (logPanelPreferenceModel.isCyclic()) {
-                        double percent =
-                            ((double) totalCount) / tableModel.getMaxSize();
-                        String msg;
-                        boolean wasWarning = warning75 || warning100;
-                        if ((percent > 0.75) && (percent < 1.0) && !warning75) {
-                            msg =
-                                "Warning :: " + formatter.format(percent) + " of the '"
-                                    + getIdentifier() + "' buffer has been used";
-                            warning75 = true;
-                        } else if ((percent >= 1.0) && !warning100) {
-                            msg =
-                                "Warning :: " + formatter.format(percent) + " of the '"
-                                    + getIdentifier()
-                                    + "' buffer has been used.  Older events are being discarded.";
-                            warning100 = true;
-                        } else {
-                            //clear msg
-                            msg = "";
-                            warning75 = false;
-                            warning100 = false;
-                        }
+        tableModel.addEventCountListener(new EventCountListener() {
+            final NumberFormat formatter = NumberFormat.getPercentInstance();
+            boolean warning75 = false;
+            boolean warning100 = false;
+
+            public void eventCountChanged(int currentCount, int totalCount) {
+                if (logPanelPreferenceModel.isCyclic()) {
+                    double percent = ((double) totalCount) / tableModel.getMaxSize();
+                    String msg;
+                    boolean wasWarning = warning75 || warning100;
+                    if ((percent > 0.75) && (percent < 1.0) && !warning75) {
+                        msg = "Warning :: " + formatter.format(percent) + " of the '" + getIdentifier()
+                                + "' buffer has been used";
+                        warning75 = true;
+                    } else if ((percent >= 1.0) && !warning100) {
+                        msg = "Warning :: " + formatter.format(percent) + " of the '"
+                                + getIdentifier()
+                                + "' buffer has been used.  Older events are being discarded.";
+                        warning100 = true;
+                    } else {
+                        // clear msg
+                        msg = "";
+                        warning75 = false;
+                        warning100 = false;
+                    }
 
-                        if (msg != null && wasWarning) {
-                            statusBar.setMessage(msg);
-                        }
+                    if (msg != null && wasWarning) {
+                        statusBar.setMessage(msg);
                     }
                 }
-            });
+            }
+        });
 
         /*
          * Logger tree panel
@@ -637,8 +645,7 @@ public class LogPanel extends DockablePanel implements ChainsawEventBatchListene
          * Color rule frame and panel
          */
         colorFrame.setTitle("'" + identifier + "' color settings");
-        colorFrame.setIconImage(
-            ((ImageIcon) ChainsawIcons.ICON_PREFERENCES).getImage());
+        colorFrame.setIconImage(((ImageIcon) ChainsawIcons.ICON_PREFERENCES).getImage());
 
         allColorizers.put(identifier, currentColorizer);
         colorPanel = new ColorPanel(settingsManager, globalColorizer, filterModel, allColorizers, this);
@@ -651,35 +658,35 @@ public class LogPanel extends DockablePanel implements ChainsawEventBatchListene
             }
         };
         colorFrame.getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(escape, "ESCAPE");
-        colorFrame.getRootPane().
-            getActionMap().put("ESCAPE", closeColorPanelAction);
-
-        colorPanel.setCloseActionListener(
-            e -> colorFrame.setVisible(false));
-
-        currentColorizer.addPropertyChangeListener(
-            "colorrule",
-            new PropertyChangeListener() {
-                public void propertyChange(PropertyChangeEvent evt) {
-                    for (Object o : tableModel.getAllEvents()) {
-                        LoggingEventWrapper loggingEventWrapper = (LoggingEventWrapper) o;
-                        loggingEventWrapper.updateColorRuleColors(currentColorizer.getBackgroundColor(loggingEventWrapper.getLoggingEvent()), currentColorizer.getForegroundColor(loggingEventWrapper.getLoggingEvent()));
-                    }
-//          no need to update searchmodel events since tablemodel and searchmodel share all events, and color rules aren't different between the two
-//          if that changes, un-do the color syncing in loggingeventwrapper & re-enable this code
-//
-//          for (Iterator iter = searchModel.getAllEvents().iterator();iter.hasNext();) {
-//             LoggingEventWrapper loggingEventWrapper = (LoggingEventWrapper)iter.next();
-//             loggingEventWrapper.updateColorRuleColors(colorizer.getBackgroundColor(loggingEventWrapper.getLoggingEvent()), colorizer.getForegroundColor(loggingEventWrapper.getLoggingEvent()));
-//           }
-                    colorizedEventAndSearchMatchThumbnail.configureColors();
-                    lowerPanel.revalidate();
-                    lowerPanel.repaint();
-
-                    searchTable.revalidate();
-                    searchTable.repaint();
-                }
-            });
+        colorFrame.getRootPane().getActionMap().put("ESCAPE", closeColorPanelAction);
+
+        colorPanel.setCloseActionListener(e -> colorFrame.setVisible(false));
+
+        currentColorizer.addPropertyChangeListener("colorrule", new PropertyChangeListener() {
+            public void propertyChange(PropertyChangeEvent evt) {
+                for (Object o : tableModel.getAllEvents()) {
+                    LoggingEventWrapper loggingEventWrapper = (LoggingEventWrapper) o;
+                    loggingEventWrapper.updateColorRuleColors(
+                            currentColorizer.getBackgroundColor(loggingEventWrapper.getLoggingEvent()),
+                            currentColorizer.getForegroundColor(loggingEventWrapper.getLoggingEvent()));
+                }
+                //          no need to update searchmodel events since tablemodel and searchmodel share all events, and
+                // color rules aren't different between the two
+                //          if that changes, un-do the color syncing in loggingeventwrapper & re-enable this code
+                //
+                //          for (Iterator iter = searchModel.getAllEvents().iterator();iter.hasNext();) {
+                //             LoggingEventWrapper loggingEventWrapper = (LoggingEventWrapper)iter.next();
+                //
+                // loggingEventWrapper.updateColorRuleColors(colorizer.getBackgroundColor(loggingEventWrapper.getLoggingEvent()), colorizer.getForegroundColor(loggingEventWrapper.getLoggingEvent()));
+                //           }
+                colorizedEventAndSearchMatchThumbnail.configureColors();
+                lowerPanel.revalidate();
+                lowerPanel.repaint();
+
+                searchTable.revalidate();
+                searchTable.repaint();
+            }
+        });
 
         /*
          * Table definition.  Actual construction is above (next to tablemodel)
@@ -704,105 +711,117 @@ public class LogPanel extends DockablePanel implements ChainsawEventBatchListene
         searchTable.addMouseListener(new TableMarkerListener(searchTable, searchModel, tableModel));
         searchTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
 
+        // set valueisadjusting if holding down a key - don't process setdetail events
+        table.addKeyListener(new KeyListener() {
+            public void keyTyped(KeyEvent e) {}
 
-        //set valueisadjusting if holding down a key - don't process setdetail events
-        table.addKeyListener(
-            new KeyListener() {
-                public void keyTyped(KeyEvent e) {
-                }
-
-                public void keyPressed(KeyEvent e) {
-                    synchronized (detail) {
-                        table.getSelectionModel().setValueIsAdjusting(true);
-                        detail.notify();
-                    }
+            public void keyPressed(KeyEvent e) {
+                synchronized (detail) {
+                    table.getSelectionModel().setValueIsAdjusting(true);
+                    detail.notify();
                 }
+            }
 
-                public void keyReleased(KeyEvent e) {
-                    synchronized (detail) {
-                        table.getSelectionModel().setValueIsAdjusting(false);
-                        detail.notify();
-                    }
+            public void keyReleased(KeyEvent e) {
+                synchronized (detail) {
+                    table.getSelectionModel().setValueIsAdjusting(false);
+                    detail.notify();
                 }
-            });
+            }
+        });
 
         table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
         searchTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
 
         table.getSelectionModel().addListSelectionListener(evt -> {
+            if (((evt.getFirstIndex() == evt.getLastIndex()) && (evt.getFirstIndex() > 0) && previousLastIndex != -1)
+                    || (evt.getValueIsAdjusting())) {
+                return;
+            }
+            boolean lastIndexOnLastRow = (evt.getLastIndex() == (table.getRowCount() - 1));
+            boolean lastIndexSame = (previousLastIndex == evt.getLastIndex());
+
+            /*
+             * when scroll-to-bottom is active, here is what events look like:
+             * rowcount-1: 227, last: 227, previous last: 191..first: 191
+             *
+             * when the user has unselected the bottom row, here is what the events look like:
+             * rowcount-1: 227, last: 227, previous last: 227..first: 222
+             *
+             * note: previouslast is set after it is evaluated in the bypass scroll check
+             */
+            // System.out.println("rowcount: " + (table.getRowCount() - 1) + ", last: " + evt.getLastIndex() +",
+            // previous last: " + previousLastIndex + "..first: " + evt.getFirstIndex() + ", isadjusting: " +
+            // evt.getValueIsAdjusting());
+
+            boolean disableScrollToBottom =
+                    (lastIndexOnLastRow && lastIndexSame && previousLastIndex != evt.getFirstIndex());
+            if (disableScrollToBottom && isScrollToBottom() && table.getRowCount() > 0) {
+                logPanelPreferenceModel.setScrollToBottom(false);
+            }
+            previousLastIndex = evt.getLastIndex();
+        });
+
+        table.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
+            public void valueChanged(ListSelectionEvent evt) {
                 if (((evt.getFirstIndex() == evt.getLastIndex())
-                    && (evt.getFirstIndex() > 0) && previousLastIndex != -1) || (evt.getValueIsAdjusting())) {
+                                && (evt.getFirstIndex() > 0)
+                                && previousLastIndex != -1)
+                        || (evt.getValueIsAdjusting())) {
                     return;
                 }
-                boolean lastIndexOnLastRow = (evt.getLastIndex() == (table.getRowCount() - 1));
-                boolean lastIndexSame = (previousLastIndex == evt.getLastIndex());
-
-                /*
-                 * when scroll-to-bottom is active, here is what events look like:
-                 * rowcount-1: 227, last: 227, previous last: 191..first: 191
-                 *
-                 * when the user has unselected the bottom row, here is what the events look like:
-                 * rowcount-1: 227, last: 227, previous last: 227..first: 222
-                 *
-                 * note: previouslast is set after it is evaluated in the bypass scroll check
-                 */
-                //System.out.println("rowcount: " + (table.getRowCount() - 1) + ", last: " + evt.getLastIndex() +", previous last: " + previousLastIndex + "..first: " + evt.getFirstIndex() + ", isadjusting: " + evt.getValueIsAdjusting());
-
-                boolean disableScrollToBottom = (lastIndexOnLastRow && lastIndexSame && previousLastIndex != evt.getFirstIndex());
-                if (disableScrollToBottom && isScrollToBottom() && table.getRowCount() > 0) {
-                    logPanelPreferenceModel.setScrollToBottom(false);
-                }
-                previousLastIndex = evt.getLastIndex();
-            }
-        );
-
-        table.getSelectionModel().addListSelectionListener(
-            new ListSelectionListener() {
-                public void valueChanged(ListSelectionEvent evt) {
-                    if (((evt.getFirstIndex() == evt.getLastIndex())
-                        && (evt.getFirstIndex() > 0) && previousLastIndex != -1) || (evt.getValueIsAdjusting())) {
-                        return;
+
+                final ListSelectionModel lsm = (ListSelectionModel) evt.getSource();
+
+                if (lsm.isSelectionEmpty()) {
+                    if (isVisible()) {
+                        statusBar.setNothingSelected();
                     }
 
-                    final ListSelectionModel lsm = (ListSelectionModel) evt.getSource();
+                    if (detail.getDocument().getDefaultRootElement() != null) {
+                        detailPaneUpdater.setSelectedRow(-1);
+                    }
+                } else {
+                    if (table.getSelectedRow() > -1) {
+                        int selectedRow = table.getSelectedRow();
 
-                    if (lsm.isSelectionEmpty()) {
                         if (isVisible()) {
-                            statusBar.setNothingSelected();
-                        }
-
-                        if (detail.getDocument().getDefaultRootElement() != null) {
-                            detailPaneUpdater.setSelectedRow(-1);
+                            updateStatusBar();
                         }
-                    } else {
-                        if (table.getSelectedRow() > -1) {
-                            int selectedRow = table.getSelectedRow();
-
-                            if (isVisible()) {
-                                updateStatusBar();
-                            }
 
-                            try {
-                                if (tableModel.getRowCount() >= selectedRow) {
-                                    detailPaneUpdater.setSelectedRow(table.getSelectedRow());
-                                } else {
-                                    detailPaneUpdater.setSelectedRow(-1);
-                                }
-                            } catch (Exception e) {
-                                e.printStackTrace();
+                        try {
+                            if (tableModel.getRowCount() >= selectedRow) {
+                                detailPaneUpdater.setSelectedRow(table.getSelectedRow());
+                            } else {
                                 detailPaneUpdater.setSelectedRow(-1);
                             }
+                        } catch (Exception e) {
+                            e.printStackTrace();
+                            detailPaneUpdater.setSelectedRow(-1);
                         }
                     }
                 }
-            });
+            }
+        });
 
-        renderer = new TableColorizingRenderer(settingsManager, currentColorizer, tableModel, logPanelPreferenceModel, applicationPreferenceModel, true);
+        renderer = new TableColorizingRenderer(
+                settingsManager,
+                currentColorizer,
+                tableModel,
+                logPanelPreferenceModel,
+                applicationPreferenceModel,
+                true);
         renderer.setToolTipsVisible(logPanelPreferenceModel.isToolTipsVisible());
 
         table.setDefaultRenderer(Object.class, renderer);
 
-        searchRenderer = new TableColorizingRenderer(settingsManager, currentColorizer, searchModel, logPanelPreferenceModel, applicationPreferenceModel, false);
+        searchRenderer = new TableColorizingRenderer(
+                settingsManager,
+                currentColorizer,
+                searchModel,
+                logPanelPreferenceModel,
+                applicationPreferenceModel,
+                false);
         searchRenderer.setToolTipsVisible(logPanelPreferenceModel.isToolTipsVisible());
 
         searchTable.setDefaultRenderer(Object.class, searchRenderer);
@@ -813,13 +832,14 @@ public class LogPanel extends DockablePanel implements ChainsawEventBatchListene
         table.addMouseListener(new ThrowableDisplayMouseAdapter(table, tableModel));
         searchTable.addMouseListener(new ThrowableDisplayMouseAdapter(searchTable, searchModel));
 
-        //select a row in the main table when a row in the search table is selected
+        // select a row in the main table when a row in the search table is selected
         searchTable.addMouseListener(new MouseAdapter() {
             public void mouseClicked(MouseEvent e) {
                 LoggingEventWrapper loggingEventWrapper = searchModel.getRow(searchTable.getSelectedRow());
                 if (loggingEventWrapper != null) {
-                    int id = Integer.parseInt(loggingEventWrapper.getLoggingEvent().getProperty("log4jid"));
-                    //preserve the table's viewble column
+                    int id = Integer.parseInt(
+                            loggingEventWrapper.getLoggingEvent().getProperty("log4jid"));
+                    // preserve the table's viewble column
                     setSelectedEvent(id);
                 }
             }
@@ -829,41 +849,41 @@ public class LogPanel extends DockablePanel implements ChainsawEventBatchListene
          * We listen for new Key's coming in so we can get them automatically
          * added as columns
          */
-        tableModel.addNewKeyListener(
-            e -> SwingHelper.invokeOnEDT(() -> {
-// don't add the column if we already know about it, this could be if we've seen it before and saved the column preferences
-//this may throw an illegalargexception - ignore it because we need to add only if not already added
-                //if the column is already added, don't add again
+        tableModel.addNewKeyListener(e -> SwingHelper.invokeOnEDT(() -> {
+            // don't add the column if we already know about it, this could be if we've seen it before and saved the
+            // column preferences
+            // this may throw an illegalargexception - ignore it because we need to add only if not already added
+            // if the column is already added, don't add again
 
-                try {
-                    if (table.getColumn(e.getKey()) != null) {
-                        return;
-                    }
-//no need to check search table - we use the same columns
-                } catch (IllegalArgumentException iae) {
+            try {
+                if (table.getColumn(e.getKey()) != null) {
+                    return;
                 }
-                TableColumn col = new TableColumn(e.getNewModelIndex());
-                col.setHeaderValue(e.getKey());
+                // no need to check search table - we use the same columns
+            } catch (IllegalArgumentException iae) {
+            }
+            TableColumn col = new TableColumn(e.getNewModelIndex());
+            col.setHeaderValue(e.getKey());
 
-                if (logPanelPreferenceModel.addColumn(col)) {
-                    if (logPanelPreferenceModel.isColumnVisible(col)) {
-                        table.addColumn(col);
-                        searchTable.addColumn(col);
-                        logPanelPreferenceModel.setColumnVisible(e.getKey().toString(), true);
-                    }
+            if (logPanelPreferenceModel.addColumn(col)) {
+                if (logPanelPreferenceModel.isColumnVisible(col)) {
+                    table.addColumn(col);
+                    searchTable.addColumn(col);
+                    logPanelPreferenceModel.setColumnVisible(e.getKey().toString(), true);
                 }
-            }));
+            }
+        }));
 
-        //if the table is refiltered, try to reselect the last selected row
-        //refilter with a newValue of TRUE means refiltering is about to begin
-        //refilter with a newValue of FALSE means refiltering is complete
-        //assuming notification is called on the EDT so we can in the current EDT call update the scroll & selection
+        // if the table is refiltered, try to reselect the last selected row
+        // refilter with a newValue of TRUE means refiltering is about to begin
+        // refilter with a newValue of FALSE means refiltering is complete
+        // assuming notification is called on the EDT so we can in the current EDT call update the scroll & selection
         tableModel.addPropertyChangeListener("refilter", new PropertyChangeListener() {
             private LoggingEventWrapper currentEvent;
 
             public void propertyChange(PropertyChangeEvent evt) {
-                //if new value is true, filtering is about to begin
-                //if new value is false, filtering is complete
+                // if new value is true, filtering is about to begin
+                // if new value is false, filtering is complete
                 if (evt.getNewValue().equals(Boolean.TRUE)) {
                     int currentRow = table.getSelectedRow();
                     if (currentRow > -1) {
@@ -877,32 +897,31 @@ public class LogPanel extends DockablePanel implements ChainsawEventBatchListene
             }
         });
 
-        table.getTableHeader().addMouseListener(
-            new MouseAdapter() {
-                public void mouseClicked(MouseEvent e) {
-                    checkEvent(e);
-                }
+        table.getTableHeader().addMouseListener(new MouseAdapter() {
+            public void mouseClicked(MouseEvent e) {
+                checkEvent(e);
+            }
 
-                public void mousePressed(MouseEvent e) {
-                    checkEvent(e);
-                }
+            public void mousePressed(MouseEvent e) {
+                checkEvent(e);
+            }
 
-                public void mouseReleased(MouseEvent e) {
-                    checkEvent(e);
-                }
+            public void mouseReleased(MouseEvent e) {
+                checkEvent(e);
+            }
 
-                private void checkEvent(MouseEvent e) {
-                    if (e.isPopupTrigger()) {
-                        TableColumnModel colModel = table.getColumnModel();
-                        int index = colModel.getColumnIndexAtX(e.getX());
-                        int modelIndex = colModel.getColumn(index).getModelIndex();
+            private void checkEvent(MouseEvent e) {
+                if (e.isPopupTrigger()) {
+                    TableColumnModel colModel = table.getColumnModel();
+                    int index = colModel.getColumnIndexAtX(e.getX());
+                    int modelIndex = colModel.getColumn(index).getModelIndex();
 
-                        if ((modelIndex + 1) == ChainsawColumns.INDEX_TIMESTAMP_COL_NAME) {
-                            dateFormatChangePopup.show(e.getComponent(), e.getX(), e.getY());
-                        }
+                    if ((modelIndex + 1) == ChainsawColumns.INDEX_TIMESTAMP_COL_NAME) {
+                        dateFormatChangePopup.show(e.getComponent(), e.getX(), e.getY());
                     }
                 }
-            });
+            }
+        });
 
         final JTextField filterText = (JTextField) filterCombo.getEditor().getEditorComponent();
         final JTextField findText = (JTextField) findCombo.getEditor().getEditorComponent();
@@ -917,23 +936,21 @@ public class LogPanel extends DockablePanel implements ChainsawEventBatchListene
 
         detailPaneUpdater = new DetailPaneUpdater();
 
-        //if the panel gets focus, update the detail pane
+        // if the panel gets focus, update the detail pane
         addFocusListener(new FocusListener() {
 
             public void focusGained(FocusEvent e) {
                 detailPaneUpdater.updateDetailPane();
             }
 
-            public void focusLost(FocusEvent e) {
-
-            }
+            public void focusLost(FocusEvent e) {}
         });
         findMarkerRule = ExpressionRule.getRule("prop." + ChainsawConstants.LOG4J_MARKER_COL_NAME + " exists");
 
         tableModel.addTableModelListener(e -> {
             int currentRow = table.getSelectedRow();
             if (e.getFirstRow() <= currentRow && e.getLastRow() >= currentRow) {
-//current row has changed - update
+                // current row has changed - update
                 detailPaneUpdater.setAndUpdateSelectedRow(table.getSelectedRow());
             }
         });
@@ -944,7 +961,8 @@ public class LogPanel extends DockablePanel implements ChainsawEventBatchListene
         searchPane.getVerticalScrollBar().setUnitIncrement(ChainsawConstants.DEFAULT_ROW_HEIGHT * 2);
         searchPane.setPreferredSize(new Dimension(900, 50));
 
-        //default detail panel to contain detail panel - if searchResultsVisible is true, when a search if triggered, update detail pane to contain search results
+        // default detail panel to contain detail panel - if searchResultsVisible is true, when a search if triggered,
+        // update detail pane to contain search results
         detailPane = new JScrollPane(detail);
         detailPane.setPreferredSize(new Dimension(900, 50));
 
@@ -970,7 +988,7 @@ public class LogPanel extends DockablePanel implements ChainsawEventBatchListene
         rightThumbNailPanel.add(colorizedEventAndSearchMatchThumbnail);
         rightThumbNailPanel.add(Box.createVerticalStrut(height));
         rightPanel.add(rightThumbNailPanel);
-        //set thumbnail width to be a bit narrower than scrollbar width
+        // set thumbnail width to be a bit narrower than scrollbar width
         rightThumbNailPanel.setPreferredSize(new Dimension(scrollBarWidth - 4, -1));
         eventsAndStatusPanel.add(rightPanel, BorderLayout.EAST);
 
@@ -985,7 +1003,7 @@ public class LogPanel extends DockablePanel implements ChainsawEventBatchListene
         leftThumbNailPanel.add(Box.createVerticalStrut(height));
         leftPanel.add(leftThumbNailPanel);
 
-        //set thumbnail width to be a bit narrower than scrollbar width
+        // set thumbnail width to be a bit narrower than scrollbar width
         leftThumbNailPanel.setPreferredSize(new Dimension(scrollBarWidth - 4, -1));
         eventsAndStatusPanel.add(leftPanel, BorderLayout.WEST);
 
@@ -1002,27 +1020,23 @@ public class LogPanel extends DockablePanel implements ChainsawEventBatchListene
         detailToolbar.setFloatable(false);
 
         final LayoutEditorPane layoutEditorPane = new LayoutEditorPane();
-        final JDialog layoutEditorDialog =
-            new JDialog((JFrame) null, "Pattern Editor");
+        final JDialog layoutEditorDialog = new JDialog((JFrame) null, "Pattern Editor");
         layoutEditorDialog.getContentPane().add(layoutEditorPane);
         layoutEditorDialog.setSize(640, 480);
 
-        layoutEditorPane.addCancelActionListener(
-            e -> layoutEditorDialog.setVisible(false));
+        layoutEditorPane.addCancelActionListener(e -> layoutEditorDialog.setVisible(false));
 
-        layoutEditorPane.addOkActionListener(
-            e -> {
-                setDetailPaneConversionPattern(
-                    layoutEditorPane.getConversionPattern());
-                setDetailPaneDatetimeFormat(layoutEditorPane.getDatetimeFormatter());
-                layoutEditorDialog.setVisible(false);
-            });
+        layoutEditorPane.addOkActionListener(e -> {
+            setDetailPaneConversionPattern(layoutEditorPane.getConversionPattern());
+            setDetailPaneDatetimeFormat(layoutEditorPane.getDatetimeFormatter());
+            layoutEditorDialog.setVisible(false);
+        });
 
         Action copyToRefineFocusAction = new AbstractAction("Set 'refine focus' field") {
             public void actionPerformed(ActionEvent e) {
                 String selectedText = detail.getSelectedText();
                 if (selectedText == null || selectedText.isEmpty()) {
-                    //no-op empty searches
+                    // no-op empty searches
                     return;
                 }
                 filterText.setText("msg ~= '" + selectedText + "'");
@@ -1033,7 +1047,7 @@ public class LogPanel extends DockablePanel implements ChainsawEventBatchListene
             public void actionPerformed(ActionEvent e) {
                 String selectedText = detail.getSelectedText();
                 if (selectedText == null || selectedText.isEmpty()) {
-                    //no-op empty searches
+                    // no-op empty searches
                     return;
                 }
                 findCombo.setSelectedItem("msg ~= '" + selectedText + "'");
@@ -1041,30 +1055,24 @@ public class LogPanel extends DockablePanel implements ChainsawEventBatchListene
             }
         };
 
-        Action editDetailAction =
-            new AbstractAction(
-                "Edit...", new ImageIcon(ChainsawIcons.ICON_EDIT_RECEIVER)) {
-                public void actionPerformed(ActionEvent e) {
-                    layoutEditorPane.setConversionPattern(
-                        getDetailPaneConversionPattern());
-                    layoutEditorPane.setDatetimeFormatter(getDetailPaneDatetimeFormat());
-
-                    Dimension size = Toolkit.getDefaultToolkit().getScreenSize();
... 17164 lines suppressed ...