You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4j-dev@logging.apache.org by sd...@apache.org on 2004/03/28 12:04:31 UTC

cvs commit: logging-log4j/src/java/org/apache/log4j/chainsaw/prefs default.properties

sdeboy      2004/03/28 02:04:31

  Modified:    src/java/org/apache/log4j/chainsaw/receivers
                        ReceiverTreeCellRenderer.java ReceiversHelper.java
                        ReceiversPanel.java
               src/java/org/apache/log4j/chainsaw/icons
                        LineIconFactory.java
               src/java/org/apache/log4j/chainsaw
                        ChainsawToolBarAndMenus.java
                        LogPanelLoggerTreeModel.java
                        AbstractPreferencePanel.java LogPanel.java
                        LoggerNameTreePanel.java
                        ApplicationPreferenceModel.java
                        ThresholdSlider.java
                        ChainsawCyclicBufferTableModel.java LogUI.java
                        SortHeaderRenderer.java ChainsawStatusBar.java
                        NoReceiversWarningPanel.java
                        ThrowableRenderPanel.java
               src/java/org/apache/log4j/chainsaw/messages
                        MessageCenter.java
               src/java/org/apache/log4j/varia LogFilePatternReceiver.java
               src/java/org/apache/log4j/xml UtilLoggingXMLDecoder.java
                        XMLDecoder.java
               src/java/org/apache/log4j/chainsaw/filter FilterModel.java
               src/java/org/apache/log4j/chainsaw/layout
                        DefaultLayoutFactory.java
               src/java/org/apache/log4j/net UDPAppender.java
                        XMLSocketReceiver.java
               src/java/org/apache/log4j/chainsaw/favourites
                        FavouritesRegistry.java
               src/java/org/apache/log4j/chainsaw/prefs default.properties
  Log:
  - receiver panel now in a jsplitpane and can be resized
  - replaced 'logger tree' button in menu with magnify icon
  - modified menu item descriptions and order in log panel's context menu
  - renamed any variables named 'enum' (a keyword as of java 1.5)
  - removed dead variables and methods
  - changed default settings - tooltips are no longer enabled by default
  - replaced SHIFT_DOWN_MASK with SHIFT_MASK in logpanel's find shortcut to maintain jdk1.3 compatibility
  - corrected shutdown behavior - now setting default close operation to DO_NOTHING 
  	(previously when prompted to shut down, if user chose 'no', UI would go away but 
  	app would continue to run)
  - closing stream in logfilepatternreceiver 
  - added null check in utilloggingxmldecoder.parse
  
  Revision  Changes    Path
  1.3       +3 -7      logging-log4j/src/java/org/apache/log4j/chainsaw/receivers/ReceiverTreeCellRenderer.java
  
  Index: ReceiverTreeCellRenderer.java
  ===================================================================
  RCS file: /home/cvs/logging-log4j/src/java/org/apache/log4j/chainsaw/receivers/ReceiverTreeCellRenderer.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- ReceiverTreeCellRenderer.java	27 Feb 2004 16:47:31 -0000	1.2
  +++ ReceiverTreeCellRenderer.java	28 Mar 2004 10:04:30 -0000	1.3
  @@ -41,10 +41,6 @@
    * @author Paul Smith <ps...@apache.org>
    */
   public class ReceiverTreeCellRenderer extends DefaultTreeCellRenderer {
  -  private Icon activeReceiverIcon =
  -    new ImageIcon(ChainsawIcons.ICON_ACTIVE_RECEIVER);
  -  private Icon inactiveReceiverIcon =
  -    new ImageIcon(ChainsawIcons.ICON_INACTIVE_RECEIVER);
     private Icon rootIcon = new ImageIcon(ChainsawIcons.ANIM_NET_CONNECT);
     private JPanel panel = new JPanel();
     private JLabel levelLabel = new JLabel();
  @@ -58,10 +54,10 @@
     }
   
     public Component getTreeCellRendererComponent(
  -    JTree tree, Object value, boolean selected, boolean expanded, boolean leaf,
  -    int row, boolean hasFocus) {
  +    JTree tree, Object value, boolean sel, boolean expanded, boolean leaf,
  +    int row, boolean focus) {
       super.getTreeCellRendererComponent(
  -      tree, value, selected, expanded, leaf, row, hasFocus);
  +      tree, value, sel, expanded, leaf, row, focus);
   
       DefaultMutableTreeNode node = (DefaultMutableTreeNode) value;
       Object o = node.getUserObject();
  
  
  
  1.4       +11 -2     logging-log4j/src/java/org/apache/log4j/chainsaw/receivers/ReceiversHelper.java
  
  Index: ReceiversHelper.java
  ===================================================================
  RCS file: /home/cvs/logging-log4j/src/java/org/apache/log4j/chainsaw/receivers/ReceiversHelper.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- ReceiversHelper.java	6 Mar 2004 16:36:37 -0000	1.3
  +++ ReceiversHelper.java	28 Mar 2004 10:04:30 -0000	1.4
  @@ -16,6 +16,7 @@
   package org.apache.log4j.chainsaw.receivers;
   
   
  +import java.io.IOException;
   import java.io.InputStreamReader;
   import java.io.LineNumberReader;
   import java.net.URL;
  @@ -48,9 +49,10 @@
           URL url = this.getClass().getClassLoader().getResource(
               this.getClass().getPackage().getName().replace('.','/') + "/known.receivers");
   
  +        LineNumberReader stream = null;
           try {
   
  -            LineNumberReader stream = new LineNumberReader(new InputStreamReader(url.openStream()));
  +            stream = new LineNumberReader(new InputStreamReader(url.openStream()));
               String line;
   
               while ((line = stream.readLine()) != null) {
  @@ -68,8 +70,15 @@
               }
           } catch (Exception e) {
               e.printStackTrace();
  +        } finally {
  +            if (stream != null) {
  +                try {
  +                    stream.close();
  +                } catch (IOException ioe) {
  +                    ioe.printStackTrace();
  +                }
  +            }
           }
  -
       }
   
   
  
  
  
  1.12      +2 -40     logging-log4j/src/java/org/apache/log4j/chainsaw/receivers/ReceiversPanel.java
  
  Index: ReceiversPanel.java
  ===================================================================
  RCS file: /home/cvs/logging-log4j/src/java/org/apache/log4j/chainsaw/receivers/ReceiversPanel.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- ReceiversPanel.java	27 Feb 2004 16:47:31 -0000	1.11
  +++ ReceiversPanel.java	28 Mar 2004 10:04:30 -0000	1.12
  @@ -19,7 +19,6 @@
   import java.awt.BorderLayout;
   import java.awt.Component;
   import java.awt.Container;
  -import java.awt.Dimension;
   import java.awt.event.ActionEvent;
   import java.awt.event.ActionListener;
   import java.awt.event.KeyEvent;
  @@ -96,21 +95,15 @@
     private final NewReceiverPopupMenu newReceiverPopup =
       new NewReceiverPopupMenu();
     private final ReceiverToolbar buttonPanel;
  -  private final Runnable updateReceiverTree;
     private final JSplitPane splitter = new JSplitPane();
     private final PluginPropertyEditorPanel pluginEditorPanel =
       new PluginPropertyEditorPanel();
     
   
     public ReceiversPanel() {
  -    super();
  -    setLayout(new BorderLayout());
  +    super(new BorderLayout());
       setBorder(BorderFactory.createEtchedBorder());
   
  -    setPreferredSize(new Dimension(200, 400));
  -    setMinimumSize(getPreferredSize());
  -    setMaximumSize(getPreferredSize());
  -
       final ReceiversTreeModel model = new ReceiversTreeModel();
       PluginRegistry.addPluginListener(model);
       receiversTree.setModel(model);
  @@ -303,23 +296,6 @@
         Action.SHORT_DESCRIPTION,
         "Ensures that any Receiver that isn't active, is started.");
   
  -    /**
  -     * We need to setup a runnable that updates the tree
  -     * any time a Socket event happens (opening/closing of a socket).
  -     *
  -     * We do this by installing a SocketNodeEventListener in ALL the
  -     * registered SocketReceivers
  -     */
  -    updateReceiverTree =
  -      new Runnable() {
  -          public void run() {
  -            ReceiversTreeModel model =
  -              (ReceiversTreeModel) receiversTree.getModel();
  -
  -            model.refresh();
  -          }
  -        };
  -
       receiversTree.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
   
       receiversTree.setCellRenderer(new ReceiverTreeCellRenderer());
  @@ -638,7 +614,7 @@
   
                     panel.getOkPanel().getOkButton().addActionListener(
                       new ActionListener() {
  -                      public void actionPerformed(ActionEvent e) {
  +                      public void actionPerformed(ActionEvent e2) {
                           dialog.dispose();
                           Plugin plugin = panel.getPlugin();
                           PluginRegistry.startPlugin(plugin);
  @@ -712,13 +688,6 @@
        * Receiver node in the Tree.
        */
       private void buildForReceiverNode() {
  -      final Action pauseReceiver =
  -        new AbstractAction(
  -          "Pause this Receiver", new ImageIcon(ChainsawIcons.PAUSE)) {
  -          public void actionPerformed(ActionEvent e) {
  -            pauseCurrentlySelectedReceiver();
  -          }
  -        };
   
         add(playReceiverButtonAction);
         add(pauseReceiverButtonAction);
  @@ -770,13 +739,6 @@
   
         addSeparator();
         add(startAll);
  -    }
  -
  -    private JMenuItem createNotDoneYet() {
  -      final JMenuItem notDoneYet = new JMenuItem("Not Implemented Yet, sorry");
  -      notDoneYet.setEnabled(false);
  -
  -      return notDoneYet;
       }
     }
   
  
  
  
  1.4       +2 -6      logging-log4j/src/java/org/apache/log4j/chainsaw/icons/LineIconFactory.java
  
  Index: LineIconFactory.java
  ===================================================================
  RCS file: /home/cvs/logging-log4j/src/java/org/apache/log4j/chainsaw/icons/LineIconFactory.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- LineIconFactory.java	27 Feb 2004 16:47:31 -0000	1.3
  +++ LineIconFactory.java	28 Mar 2004 10:04:30 -0000	1.4
  @@ -111,7 +111,7 @@
     }
   
     public static final Icon createBlankIcon() {
  -    return new BlankIcon(16, 0, 0);
  +    return new BlankIcon(16);
     }
   
     /**
  @@ -122,13 +122,9 @@
        */
     private static class BlankIcon implements Icon {
       int size;
  -    int xOffSet;
  -    int yOffSet;
   
  -    public BlankIcon(int size, int xOffSet, int yOffSet) {
  +    public BlankIcon(int size) {
         this.size = size;
  -      this.xOffSet = xOffSet;
  -      this.yOffSet = yOffSet;
       }
   
       public int getIconHeight() {
  
  
  
  1.38      +6 -10     logging-log4j/src/java/org/apache/log4j/chainsaw/ChainsawToolBarAndMenus.java
  
  Index: ChainsawToolBarAndMenus.java
  ===================================================================
  RCS file: /home/cvs/logging-log4j/src/java/org/apache/log4j/chainsaw/ChainsawToolBarAndMenus.java,v
  retrieving revision 1.37
  retrieving revision 1.38
  diff -u -r1.37 -r1.38
  --- ChainsawToolBarAndMenus.java	25 Mar 2004 08:21:04 -0000	1.37
  +++ ChainsawToolBarAndMenus.java	28 Mar 2004 10:04:30 -0000	1.38
  @@ -188,7 +188,7 @@
     */
     private Action createToggleLogTreeAction() {
       Action action =
  -      new AbstractAction() {
  +      new AbstractAction("Toggle the Logger Tree Pane") {
           public void actionPerformed(ActionEvent e) {
             if (logui.getCurrentLogPanel() != null) {
               logui.getCurrentLogPanel().toggleLogTreeVisible();
  @@ -196,15 +196,15 @@
           }
         };
   
  -    action.putValue(Action.NAME, "Logger Tree");
  -    action.putValue(Action.SHORT_DESCRIPTION, "Toggles the Log Tree panel");
  +    action.putValue(Action.SHORT_DESCRIPTION, "Toggles the Logger Tree Pane");
       action.putValue("enabled", Boolean.TRUE);
       action.putValue(Action.MNEMONIC_KEY, new Integer(KeyEvent.VK_T));
       action.putValue(
         Action.ACCELERATOR_KEY,
         KeyStroke.getKeyStroke(KeyEvent.VK_T, InputEvent.ALT_MASK));
  +      action.putValue(
  +        Action.SMALL_ICON, new ImageIcon(ChainsawIcons.WINDOW_ICON));
   
  -    //		TODO find an icon
       return action;
     }
   
  @@ -513,8 +513,6 @@
     private Action createToggleDetailPaneAction() {
       Action action =
         new AbstractAction("Show Detail Pane") {
  -        boolean enabled = true;
  -
           public void actionPerformed(ActionEvent evt) {
             LogPanel logPanel = logui.getCurrentLogPanel();
   
  @@ -592,14 +590,12 @@
         toggleDetailPaneAction.getValue(Action.NAME));
   
       logTreePaneButton.setAction(toggleLogTreeAction);
  -
  -    //	logTreePaneButton.setText(null);
       logTreePaneButton.getActionMap().put(
         toggleLogTreeAction.getValue(Action.NAME), toggleLogTreeAction);
       logTreePaneButton.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(
         KeyStroke.getKeyStroke(KeyEvent.VK_T, InputEvent.ALT_MASK),
  -      toggleDetailPaneAction.getValue(Action.NAME));
  -
  +      toggleLogTreeAction.getValue(Action.NAME));
  +    logTreePaneButton.setText(null);
       SmallButton prefsButton = new SmallButton(showPreferencesAction);
       SmallButton undockButton = new SmallButton(undockAction);
       undockButton.setText("");
  
  
  
  1.9       +3 -3      logging-log4j/src/java/org/apache/log4j/chainsaw/LogPanelLoggerTreeModel.java
  
  Index: LogPanelLoggerTreeModel.java
  ===================================================================
  RCS file: /home/cvs/logging-log4j/src/java/org/apache/log4j/chainsaw/LogPanelLoggerTreeModel.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- LogPanelLoggerTreeModel.java	27 Feb 2004 16:47:29 -0000	1.8
  +++ LogPanelLoggerTreeModel.java	28 Mar 2004 10:04:30 -0000	1.9
  @@ -78,11 +78,11 @@
   outerFor: 
       for (int i = 0; i < packages.length; i++) {
         String packageName = packages[i];
  -      Enumeration enum = current.children();
  +      Enumeration enumeration = current.children();
   
  -      while (enum.hasMoreElements()) {
  +      while (enumeration.hasMoreElements()) {
           DefaultMutableTreeNode child =
  -          (DefaultMutableTreeNode) enum.nextElement();
  +          (DefaultMutableTreeNode) enumeration.nextElement();
           String childName = child.getUserObject().toString();
   
           if (childName.equals(packageName)) {
  
  
  
  1.4       +6 -4      logging-log4j/src/java/org/apache/log4j/chainsaw/AbstractPreferencePanel.java
  
  Index: AbstractPreferencePanel.java
  ===================================================================
  RCS file: /home/cvs/logging-log4j/src/java/org/apache/log4j/chainsaw/AbstractPreferencePanel.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- AbstractPreferencePanel.java	27 Feb 2004 16:47:29 -0000	1.3
  +++ AbstractPreferencePanel.java	28 Mar 2004 10:04:30 -0000	1.4
  @@ -12,7 +12,9 @@
    * 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;
  + */
  + 
  +package org.apache.log4j.chainsaw;
   
   import java.awt.BorderLayout;
   import java.awt.Color;
  @@ -165,9 +167,9 @@
     public void notifyOfLookAndFeelChange() {
       SwingUtilities.updateComponentTreeUI(this);
       
  -    Enumeration enum = ((DefaultMutableTreeNode)prefTree.getModel().getRoot()).breadthFirstEnumeration();
  -    while (enum.hasMoreElements()) {
  -      DefaultMutableTreeNode node = (DefaultMutableTreeNode) enum.nextElement();
  +    Enumeration enumeration = ((DefaultMutableTreeNode)prefTree.getModel().getRoot()).breadthFirstEnumeration();
  +    while (enumeration.hasMoreElements()) {
  +      DefaultMutableTreeNode node = (DefaultMutableTreeNode) enumeration.nextElement();
         if (node.getUserObject() instanceof Component) {
           Component c = (Component) node.getUserObject();
           SwingUtilities.updateComponentTreeUI(c);
  
  
  
  1.60      +18 -16    logging-log4j/src/java/org/apache/log4j/chainsaw/LogPanel.java
  
  Index: LogPanel.java
  ===================================================================
  RCS file: /home/cvs/logging-log4j/src/java/org/apache/log4j/chainsaw/LogPanel.java,v
  retrieving revision 1.59
  retrieving revision 1.60
  diff -u -r1.59 -r1.60
  --- LogPanel.java	25 Mar 2004 08:21:04 -0000	1.59
  +++ LogPanel.java	28 Mar 2004 10:04:30 -0000	1.60
  @@ -190,8 +190,8 @@
     private final JEditorPane detail;
     private final JSplitPane lowerPanel;
     private final DetailPaneUpdater detailPaneUpdater;
  -  private final double DEFAULT_DETAIL_SPLIT_LOCATION = .5;
  -  private final double DEFAULT_LOG_TREE_SPLIT_LOCATION = .25;
  +  private static final double DEFAULT_DETAIL_SPLIT_LOCATION = .5;
  +  private static final double DEFAULT_LOG_TREE_SPLIT_LOCATION = .25;
     private final JPanel detailPanel = new JPanel(new BorderLayout());
     private final int dividerSize;
     private final JSplitPane nameTreeAndMainPanelSplit;
  @@ -346,7 +346,7 @@
       menuItemToggleToolTips.setIcon(new ImageIcon(ChainsawIcons.TOOL_TIP));
   
       final JCheckBoxMenuItem menuItemLoggerTree =
  -      new JCheckBoxMenuItem("Logger Tree panel");
  +      new JCheckBoxMenuItem("Show Logger Tree panel");
       menuItemLoggerTree.addActionListener(
         new ActionListener() {
           public void actionPerformed(ActionEvent e) {
  @@ -354,7 +354,8 @@
               menuItemLoggerTree.isSelected());
           }
         });
  -
  +      menuItemLoggerTree.setIcon(new ImageIcon(ChainsawIcons.WINDOW_ICON));
  +      
       final JCheckBoxMenuItem menuItemScrollBottom =
         new JCheckBoxMenuItem("Scroll to bottom");
       menuItemScrollBottom.addActionListener(
  @@ -734,7 +735,7 @@
       /*
        * Throwable popup
        */
  -    throwableRenderPanel = new ThrowableRenderPanel(table);
  +    throwableRenderPanel = new ThrowableRenderPanel();
   
       final JDialog detailDialog = new JDialog((JFrame) null, true);
       Container container = detailDialog.getContentPane();
  @@ -1093,7 +1094,7 @@
         });
       menuItemLogPanelPreferences.setIcon(ChainsawIcons.ICON_PREFERENCES);
   
  -    final JMenuItem menuItemFocusOn = new JMenuItem("Focus on");
  +    final JMenuItem menuItemFocusOn = new JMenuItem("Set 'refine focus' field");
       menuItemFocusOn.addActionListener(
         new ActionListener() {
           public void actionPerformed(ActionEvent evt) {
  @@ -1133,7 +1134,7 @@
           }
         });
   
  -    final JMenuItem menuDefineAddCustomFilter = new JMenuItem("Add to focus");
  +    final JMenuItem menuDefineAddCustomFilter = new JMenuItem("Add to 'refine focus' field");
       menuDefineAddCustomFilter.addActionListener(
         new ActionListener() {
           public void actionPerformed(ActionEvent evt) {
  @@ -1175,7 +1176,7 @@
       final JPopupMenu p = new JPopupMenu();
   
       final Action clearFocusAction =
  -      new AbstractAction("Clear focus") {
  +      new AbstractAction("Clear 'refine focus' field") {
           public void actionPerformed(ActionEvent e) {
             filterText.setText(null);
             ruleMediator.setRefinementRule(null);
  @@ -1207,11 +1208,13 @@
       p.add(new JSeparator());
   
       p.add(menuItemBestFit);
  +    p.add(new JSeparator());
   
       p.add(menuItemToggleDetails);
  +    p.add(menuItemLoggerTree);
       p.add(menuItemToggleToolTips);
  +    p.add(new JSeparator());
       p.add(menuItemScrollBottom);
  -    p.add(menuItemLoggerTree);
   
       p.add(new JSeparator());
       p.add(menuItemToggleDock);
  @@ -1742,7 +1745,7 @@
       undockedFindPreviousButton.getActionMap().put(
       undockedFindPreviousAction.getValue(Action.NAME), undockedFindPreviousAction);
       undockedFindPreviousButton.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(
  -      KeyStroke.getKeyStroke(KeyEvent.VK_F3, KeyEvent.SHIFT_DOWN_MASK), undockedFindPreviousAction.getValue(Action.NAME));
  +      KeyStroke.getKeyStroke(KeyEvent.VK_F3, KeyEvent.SHIFT_MASK), undockedFindPreviousAction.getValue(Action.NAME));
   
       Dimension findSize = new Dimension(132, 24);
       Dimension findPanelSize = new Dimension(144, 26);
  @@ -2167,14 +2170,13 @@
      */
     private void updateOtherModels(ChainsawEventBatchEntry entry) {
       LoggingEvent event = entry.getEvent();
  -    String eventType = entry.getEventType();
   
       /*
        * EventContainer is a LoggerNameModel imp, use that for notifing
        */
       tableModel.addLoggerName(event.getLoggerName());
   
  -    filterModel.processNewLoggingEvent(eventType, event);
  +    filterModel.processNewLoggingEvent(event);
     }
     
     /**
  @@ -2190,7 +2192,7 @@
       private final JTextField filterText;
       private long lastTimeStamp = System.currentTimeMillis();
       private final Thread delayThread;
  -    private final long CHECK_PERIOD = 1000;
  +    private static final long CHECK_PERIOD = 1000;
       private final String defaultToolTip;
       private String lastFilterText = null;
   
  @@ -2424,10 +2426,10 @@
        * @param e 
        */
       public void columnAdded(TableColumnModelEvent e) {
  -      Enumeration enum = table.getColumnModel().getColumns();
  +      Enumeration enumeration = table.getColumnModel().getColumns();
   
  -      while (enum.hasMoreElements()) {
  -        TableColumn column = (TableColumn) enum.nextElement();
  +      while (enumeration.hasMoreElements()) {
  +        TableColumn column = (TableColumn) enumeration.nextElement();
   
           if (
             (column.getModelIndex() + 1) == ChainsawColumns.INDEX_THROWABLE_COL_NAME) {
  
  
  
  1.26      +13 -22    logging-log4j/src/java/org/apache/log4j/chainsaw/LoggerNameTreePanel.java
  
  Index: LoggerNameTreePanel.java
  ===================================================================
  RCS file: /home/cvs/logging-log4j/src/java/org/apache/log4j/chainsaw/LoggerNameTreePanel.java,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- LoggerNameTreePanel.java	10 Mar 2004 08:32:38 -0000	1.25
  +++ LoggerNameTreePanel.java	28 Mar 2004 10:04:30 -0000	1.26
  @@ -17,17 +17,9 @@
    */
   package org.apache.log4j.chainsaw;
   
  -import org.apache.log4j.chainsaw.icons.ChainsawIcons;
  -import org.apache.log4j.chainsaw.icons.LineIconFactory;
  -import org.apache.log4j.helpers.LogLog;
  -import org.apache.log4j.rule.AbstractRule;
  -import org.apache.log4j.rule.Rule;
  -import org.apache.log4j.spi.LoggingEvent;
  -
   import java.awt.BorderLayout;
   import java.awt.Component;
   import java.awt.Cursor;
  -import java.awt.Dimension;
   import java.awt.Font;
   import java.awt.Point;
   import java.awt.Toolkit;
  @@ -37,10 +29,8 @@
   import java.awt.event.MouseEvent;
   import java.awt.event.MouseMotionAdapter;
   import java.awt.event.MouseMotionListener;
  -
   import java.beans.PropertyChangeEvent;
   import java.beans.PropertyChangeListener;
  -
   import java.util.ArrayList;
   import java.util.Collection;
   import java.util.Collections;
  @@ -56,7 +46,6 @@
   import javax.swing.Box;
   import javax.swing.BoxLayout;
   import javax.swing.DefaultListModel;
  -import javax.swing.Icon;
   import javax.swing.ImageIcon;
   import javax.swing.JButton;
   import javax.swing.JCheckBoxMenuItem;
  @@ -83,6 +72,13 @@
   import javax.swing.tree.TreePath;
   import javax.swing.tree.TreeSelectionModel;
   
  +import org.apache.log4j.chainsaw.icons.ChainsawIcons;
  +import org.apache.log4j.chainsaw.icons.LineIconFactory;
  +import org.apache.log4j.helpers.LogLog;
  +import org.apache.log4j.rule.AbstractRule;
  +import org.apache.log4j.rule.Rule;
  +import org.apache.log4j.spi.LoggingEvent;
  +
   
   /**
    * A panel that encapsulates the Logger Name tree, with associated actions
  @@ -217,7 +213,6 @@
   
       logTree.setBorder(BorderFactory.createEmptyBorder(3, 3, 3, 3));
       scrollTree = new JScrollPane(logTree);
  -    scrollTree.setMinimumSize(new Dimension(150, 400));
       toolbar.setLayout(new BoxLayout(toolbar, BoxLayout.X_AXIS));
   
       expandAction = createExpandAction();
  @@ -239,7 +234,7 @@
   
       add(ignoreListScroll, BorderLayout.SOUTH);
   
  -    CheckListCellRenderer cellRenderer = new CheckListCellRenderer()
  +    CheckListCellRenderer ignoreCellRenderer = new CheckListCellRenderer()
         {
           protected boolean isSelected(Object value)
           {
  @@ -247,7 +242,7 @@
           }
         };
   
  -    ignoreList.setCellRenderer(cellRenderer);
  +    ignoreList.setCellRenderer(ignoreCellRenderer);
   
       ignoreList.addMouseListener(new MouseAdapter()
         {
  @@ -1045,10 +1040,6 @@
       {
         super();
   
  -      //      panel.setBackground(UIManager.getColor("Tree.textBackground"));
  -      Icon leafIcon = getDefaultLeafIcon();
  -      Icon icon = new ImageIcon(ChainsawIcons.WINDOW_ICON);
  -
         //      panel.setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0));
         //      panel.add(this);
         setLeafIcon(null);
  @@ -1069,17 +1060,17 @@
        * @param expanded DOCUMENT ME!
        * @param leaf DOCUMENT ME!
        * @param row DOCUMENT ME!
  -     * @param hasFocus DOCUMENT ME!
  +     * @param focus DOCUMENT ME!
        *
        * @return DOCUMENT ME!
        */
       public Component getTreeCellRendererComponent(
         JTree tree, Object value, boolean sel, boolean expanded, boolean leaf,
  -      int row, boolean hasFocus)
  +      int row, boolean focus)
       {
         JLabel component =
           (JLabel) super.getTreeCellRendererComponent(
  -          tree, value, sel, expanded, leaf, row, hasFocus);
  +          tree, value, sel, expanded, leaf, row, focus);
   
         Font originalFont = component.getFont();
   
  
  
  
  1.16      +0 -1      logging-log4j/src/java/org/apache/log4j/chainsaw/ApplicationPreferenceModel.java
  
  Index: ApplicationPreferenceModel.java
  ===================================================================
  RCS file: /home/cvs/logging-log4j/src/java/org/apache/log4j/chainsaw/ApplicationPreferenceModel.java,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- ApplicationPreferenceModel.java	27 Feb 2004 16:47:29 -0000	1.15
  +++ ApplicationPreferenceModel.java	28 Mar 2004 10:04:30 -0000	1.16
  @@ -15,7 +15,6 @@
    */
   package org.apache.log4j.chainsaw;
   
  -import java.beans.PropertyChangeEvent;
   import java.beans.PropertyChangeListener;
   import java.beans.PropertyChangeSupport;
   
  
  
  
  1.5       +0 -3      logging-log4j/src/java/org/apache/log4j/chainsaw/ThresholdSlider.java
  
  Index: ThresholdSlider.java
  ===================================================================
  RCS file: /home/cvs/logging-log4j/src/java/org/apache/log4j/chainsaw/ThresholdSlider.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- ThresholdSlider.java	27 Feb 2004 16:47:29 -0000	1.4
  +++ ThresholdSlider.java	28 Mar 2004 10:04:30 -0000	1.5
  @@ -67,9 +67,6 @@
           }
         });
   
  -    Level min = (Level) priorityList.get(0);
  -    Level max = (Level) priorityList.get(priorityList.size() - 1);
  -
       setModel(
         new DefaultBoundedRangeModel(
           priorityList.indexOf(Level.DEBUG), 0, 0, priorityList.size() - 1));
  
  
  
  1.25      +1 -1      logging-log4j/src/java/org/apache/log4j/chainsaw/ChainsawCyclicBufferTableModel.java
  
  Index: ChainsawCyclicBufferTableModel.java
  ===================================================================
  RCS file: /home/cvs/logging-log4j/src/java/org/apache/log4j/chainsaw/ChainsawCyclicBufferTableModel.java,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- ChainsawCyclicBufferTableModel.java	23 Mar 2004 07:00:22 -0000	1.24
  +++ ChainsawCyclicBufferTableModel.java	28 Mar 2004 10:04:30 -0000	1.25
  @@ -54,7 +54,7 @@
   class ChainsawCyclicBufferTableModel extends AbstractTableModel
     implements EventContainer, PropertyChangeListener {
     private boolean cyclic = true;
  -  private final int DEFAULT_CAPACITY = 5000;
  +  private static final int DEFAULT_CAPACITY = 5000;
     private int capacity = DEFAULT_CAPACITY;
     private static final String PANEL_CAPACITY = "CHAINSAW_CAPACITY";
     List unfilteredList;
  
  
  
  1.78      +73 -23    logging-log4j/src/java/org/apache/log4j/chainsaw/LogUI.java
  
  Index: LogUI.java
  ===================================================================
  RCS file: /home/cvs/logging-log4j/src/java/org/apache/log4j/chainsaw/LogUI.java,v
  retrieving revision 1.77
  retrieving revision 1.78
  diff -u -r1.77 -r1.78
  --- LogUI.java	27 Feb 2004 16:47:29 -0000	1.77
  +++ LogUI.java	28 Mar 2004 10:04:30 -0000	1.78
  @@ -61,6 +61,7 @@
   import javax.swing.JPanel;
   import javax.swing.JPopupMenu;
   import javax.swing.JScrollPane;
  +import javax.swing.JSplitPane;
   import javax.swing.JToolBar;
   import javax.swing.JWindow;
   import javax.swing.KeyStroke;
  @@ -141,6 +142,11 @@
     private ChainsawAbout aboutBox;
     private final SettingsManager sm = SettingsManager.getInstance();
     private final JFrame tutorialFrame = new JFrame("Chainsaw Tutorial");
  +  private JSplitPane mainReceiverSplitPane;
  +  private static final double DEFAULT_MAIN_RECEIVER_SPLIT_LOCATION = .8d;
  +  private int previousMainReceiverSplitLocation;
  +  private double lastMainReceiverSplitLocation = DEFAULT_MAIN_RECEIVER_SPLIT_LOCATION;
  +  private int dividerSize;
   
     /**
      * Set to true, if and only if the GUI has completed it's full
  @@ -156,12 +162,7 @@
      * by default this exits the VM, but a developer may replace this action with
      * something that better suits their needs
      */
  -  private Action shutdownAction =
  -    new AbstractAction() {
  -      public void actionPerformed(ActionEvent e) {
  -        System.exit(0);
  -      }
  -    };
  +  private Action shutdownAction = null;
   
     /**
      * Clients can register a ShutdownListener to be notified when the user has
  @@ -176,7 +177,7 @@
      */
     public LogUI() {
       super("Chainsaw v2 - Log Viewer");
  -
  +    setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
       if (ChainsawIcons.WINDOW_ICON != null) {
         setIconImage(new ImageIcon(ChainsawIcons.WINDOW_ICON).getImage());
       }
  @@ -242,7 +243,7 @@
      *                    DOCUMENT ME!
      */
     public static void createChainsawGUI(ApplicationPreferenceModel model,
  -    Action shutdownAction) {
  +    Action newShutdownAction) {
       LogUI logUI = new LogUI();
   
       if (model.isShowSplash()) {
  @@ -256,8 +257,14 @@
   
       logUI.getApplicationPreferenceModel().apply(model);
       
  -    if (shutdownAction != null) {
  -      logUI.setShutdownAction(shutdownAction);
  +    if (newShutdownAction != null) {
  +      logUI.setShutdownAction(newShutdownAction);
  +    } else {
  +      logUI.setShutdownAction(new AbstractAction() {
  +        public void actionPerformed(ActionEvent e) {
  +          System.exit(0);
  +        }
  +      });
       }
     }
   
  @@ -298,8 +305,6 @@
       setJMenuBar(getToolBarAndMenus().getMenubar());
       setTabbedPane(new ChainsawTabbedPane());
   
  -    
  -    
       applicationPreferenceModelPanel.setOkCancelActionListener(
           new ActionListener() {
             public void actionPerformed(ActionEvent e) {
  @@ -401,7 +406,7 @@
       setSize(
         event.asInt(LogUI.MAIN_WINDOW_WIDTH),
         event.asInt(LogUI.MAIN_WINDOW_HEIGHT));
  -    
  +
       getToolBarAndMenus().stateChange();
     }
   
  @@ -601,10 +606,19 @@
       initPlugins();
   
       getContentPane().add(toolbar, BorderLayout.NORTH);
  -    getContentPane().add(panePanel, BorderLayout.CENTER);
       getContentPane().add(statusBar, BorderLayout.SOUTH);
  -    receiversPanel.setVisible(false);
  -    getContentPane().add(receiversPanel, BorderLayout.EAST);
  +    
  +    mainReceiverSplitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);
  +    mainReceiverSplitPane.add(panePanel);
  +    mainReceiverSplitPane.add(receiversPanel);
  +    mainReceiverSplitPane.setDividerLocation(-1);
  +    
  +    dividerSize = mainReceiverSplitPane.getDividerSize() + 5;
  +    mainReceiverSplitPane.setDividerLocation(-1);
  +
  +    getContentPane().add(mainReceiverSplitPane, BorderLayout.CENTER);
  +
  +    mainReceiverSplitPane.setOneTouchExpandable(true);
   
       addWindowListener(
         new WindowAdapter() {
  @@ -727,6 +741,12 @@
   
       setVisible(true);
   
  +    if (applicationPreferenceModel.isReceivers()) {
  +        showReceiverPanel();
  +    } else {
  +        receiversPanel.setVisible(false);
  +    }
  +
       removeSplash();
   
       synchronized (initializationLock) {
  @@ -813,7 +833,7 @@
         new PropertyChangeListener() {
           public void propertyChange(PropertyChangeEvent evt) {
             stopTutorial.setEnabled(
  -            ((Boolean) startTutorial.getValue("TutorialStarted")) == Boolean.TRUE);
  +            ((Boolean) startTutorial.getValue("TutorialStarted")).equals(Boolean.TRUE));
             startButton.setSelected(stopTutorial.isEnabled());
           }
         };
  @@ -861,6 +881,37 @@
         });
     }
   
  +  /**
  +   * Display the log tree pane, using the last known divider location
  +   */
  +  private void showReceiverPanel() {
  +    mainReceiverSplitPane.setDividerSize(dividerSize);
  +    mainReceiverSplitPane.setDividerLocation(lastMainReceiverSplitLocation);
  +    mainReceiverSplitPane.setLastDividerLocation(previousMainReceiverSplitLocation);
  +    receiversPanel.setVisible(true);
  +  }
  +
  +  /**
  +   * Hide the log tree pane, holding the current divider location for later use
  +   */
  +  private void hideReceiverPanel() {
  +    //subtract one to make sizes match
  +    int currentSize = mainReceiverSplitPane.getWidth() - dividerSize;
  +
  +    if (currentSize > 0) {
  +      if ((mainReceiverSplitPane.getDividerLocation() + 1 == currentSize) || (mainReceiverSplitPane.getDividerLocation() - 1 == 0)) {
  +      //if hiding when receiver is minimized or maximized, use last location
  +        previousMainReceiverSplitLocation = mainReceiverSplitPane.getLastDividerLocation();
  +        mainReceiverSplitPane.setLastDividerLocation(mainReceiverSplitPane.getLastDividerLocation());
  +      } else {
  +          lastMainReceiverSplitLocation = ((double)mainReceiverSplitPane.getDividerLocation() / currentSize);
  +      }
  +    }
  +
  +    mainReceiverSplitPane.setDividerSize(0);
  +    receiversPanel.setVisible(false);
  +  }
  +
     private void initSocketConnectionListener() {
       final SocketNodeEventListener socketListener =
         new SocketNodeEventListener() {
  @@ -979,9 +1030,12 @@
   
         public void propertyChange(PropertyChangeEvent evt) {
           boolean value = ((Boolean)evt.getNewValue()).booleanValue();
  -        receiversPanel.setVisible(value);
  +        if (value) {
  +            showReceiverPanel();
  +        } else {
  +            hideReceiverPanel();
  +        }
         }});
  -    receiversPanel.setVisible(applicationPreferenceModel.isReceivers());
       
       applicationPreferenceModel.addPropertyChangeListener("toolbar", new PropertyChangeListener() {
   
  @@ -1140,10 +1194,6 @@
         getTabbedPane().remove(
           getTabbedPane().getComponentAt(getTabbedPane().indexOfTab("Welcome")));
       }
  -  }
  -
  -  boolean isReceiverPanelVisible() {
  -    return receiversPanel.isVisible();
     }
   
     ChainsawStatusBar getStatusBar() {
  
  
  
  1.3       +3 -3      logging-log4j/src/java/org/apache/log4j/chainsaw/SortHeaderRenderer.java
  
  Index: SortHeaderRenderer.java
  ===================================================================
  RCS file: /home/cvs/logging-log4j/src/java/org/apache/log4j/chainsaw/SortHeaderRenderer.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- SortHeaderRenderer.java	27 Feb 2004 16:47:29 -0000	1.2
  +++ SortHeaderRenderer.java	28 Mar 2004 10:04:30 -0000	1.3
  @@ -29,9 +29,9 @@
    * @author Claude Duguay
   */
   public class SortHeaderRenderer extends DefaultTableCellRenderer {
  -  public static Icon NONSORTED = new SortArrowIcon(SortArrowIcon.NONE);
  -  public static Icon ASCENDING = new SortArrowIcon(SortArrowIcon.ASCENDING);
  -  public static Icon DECENDING = new SortArrowIcon(SortArrowIcon.DECENDING);
  +  public static final Icon NONSORTED = new SortArrowIcon(SortArrowIcon.NONE);
  +  public static final Icon ASCENDING = new SortArrowIcon(SortArrowIcon.ASCENDING);
  +  public static final Icon DECENDING = new SortArrowIcon(SortArrowIcon.DECENDING);
   
     public SortHeaderRenderer() {
       setHorizontalTextPosition(LEFT);
  
  
  
  1.12      +1 -1      logging-log4j/src/java/org/apache/log4j/chainsaw/ChainsawStatusBar.java
  
  Index: ChainsawStatusBar.java
  ===================================================================
  RCS file: /home/cvs/logging-log4j/src/java/org/apache/log4j/chainsaw/ChainsawStatusBar.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- ChainsawStatusBar.java	27 Feb 2004 16:47:29 -0000	1.11
  +++ ChainsawStatusBar.java	28 Mar 2004 10:04:30 -0000	1.12
  @@ -44,7 +44,7 @@
    */
   public class ChainsawStatusBar extends JPanel {
     private static final int DELAY_PERIOD = 5000;
  -  private final String DEFAULT_MSG = "Welcome to Chainsaw v2!";
  +  private static final String DEFAULT_MSG = "Welcome to Chainsaw v2!";
     private final JLabel statusMsg = new JLabel(DEFAULT_MSG);
     private final JLabel pausedLabel = new JLabel("", JLabel.CENTER);
     private final JLabel lineSelectionLabel = new JLabel("", JLabel.CENTER);
  
  
  
  1.9       +2 -3      logging-log4j/src/java/org/apache/log4j/chainsaw/NoReceiversWarningPanel.java
  
  Index: NoReceiversWarningPanel.java
  ===================================================================
  RCS file: /home/cvs/logging-log4j/src/java/org/apache/log4j/chainsaw/NoReceiversWarningPanel.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- NoReceiversWarningPanel.java	27 Feb 2004 16:47:29 -0000	1.8
  +++ NoReceiversWarningPanel.java	28 Mar 2004 10:04:30 -0000	1.9
  @@ -335,11 +335,11 @@
                       if (value instanceof Class) {
   
                           Class receiverClass = (Class) value;
  -                        JLabel label = (JLabel) c;
  +                        JLabel cellLabel = (JLabel) c;
                           String shortenedName = receiverClass.getName()
                               .substring(
                                   receiverClass.getName().lastIndexOf('.') + 1);
  -                        label.setText(shortenedName);
  +                        cellLabel.setText(shortenedName);
                       }
   
                       return c;
  @@ -528,7 +528,6 @@
        */
       class PanelModel {
   
  -        private URL fileUrl;
           private URL configUrl;
   
           boolean isLoadLogFile() {
  
  
  
  1.6       +1 -7      logging-log4j/src/java/org/apache/log4j/chainsaw/ThrowableRenderPanel.java
  
  Index: ThrowableRenderPanel.java
  ===================================================================
  RCS file: /home/cvs/logging-log4j/src/java/org/apache/log4j/chainsaw/ThrowableRenderPanel.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- ThrowableRenderPanel.java	27 Feb 2004 16:47:29 -0000	1.5
  +++ ThrowableRenderPanel.java	28 Mar 2004 10:04:30 -0000	1.6
  @@ -52,9 +52,8 @@
     private Color background = new Color(255, 255, 254);
     private final Color COLOR_ODD = new Color(230, 230, 230);
     private final Action showStackTraceAction;
  -  private JTable table;
   
  -  ThrowableRenderPanel(JTable table) {
  +  ThrowableRenderPanel() {
       panel.setLayout(new BorderLayout());
       panel.add(lbl, BorderLayout.CENTER);
       panel.add(btn, BorderLayout.EAST);
  @@ -65,7 +64,6 @@
             public void actionPerformed(ActionEvent e) {
             }
           };
  -    this.table = table;
       showStackTraceAction.putValue(
         Action.SHORT_DESCRIPTION, "Display the full stack trace in a popup");
       btn.setAction(showStackTraceAction);
  @@ -75,10 +73,6 @@
   		btn.addActionListener(l);
   	}
   	
  -  private void setText(String text) {
  -    lbl.setText(text);
  -  }
  -
     /* (non-Javadoc)
      * @see javax.swing.table.TableCellEditor#getTableCellEditorComponent(javax.swing.JTable, java.lang.Object, boolean, int, int)
      */
  
  
  
  1.5       +2 -2      logging-log4j/src/java/org/apache/log4j/chainsaw/messages/MessageCenter.java
  
  Index: MessageCenter.java
  ===================================================================
  RCS file: /home/cvs/logging-log4j/src/java/org/apache/log4j/chainsaw/messages/MessageCenter.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- MessageCenter.java	27 Feb 2004 16:47:31 -0000	1.4
  +++ MessageCenter.java	28 Mar 2004 10:04:31 -0000	1.5
  @@ -129,8 +129,8 @@
         "layout",
         new PropertyChangeListener() {
           public void propertyChange(PropertyChangeEvent evt) {
  -          Layout layout = (Layout) evt.getNewValue();
  -          messageList.setCellRenderer(new LayoutListCellRenderer(layout));
  +          Layout newLayout = (Layout) evt.getNewValue();
  +          messageList.setCellRenderer(new LayoutListCellRenderer(newLayout));
           }
         });
       messageList.addMouseListener(popupListener);
  
  
  
  1.6       +7 -0      logging-log4j/src/java/org/apache/log4j/varia/LogFilePatternReceiver.java
  
  Index: LogFilePatternReceiver.java
  ===================================================================
  RCS file: /home/cvs/logging-log4j/src/java/org/apache/log4j/varia/LogFilePatternReceiver.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- LogFilePatternReceiver.java	26 Mar 2004 04:51:27 -0000	1.5
  +++ LogFilePatternReceiver.java	28 Mar 2004 10:04:31 -0000	1.6
  @@ -394,6 +394,13 @@
         } catch (InterruptedException ie) {
         }
       } while (tailing);
  +    try {
  +      if (reader != null) {
  +          reader.close();
  +      }
  +    } catch (IOException ioe) {
  +      ioe.printStackTrace();
  +    }
     }
   
     /**
  
  
  
  1.7       +3 -4      logging-log4j/src/java/org/apache/log4j/xml/UtilLoggingXMLDecoder.java
  
  Index: UtilLoggingXMLDecoder.java
  ===================================================================
  RCS file: /home/cvs/logging-log4j/src/java/org/apache/log4j/xml/UtilLoggingXMLDecoder.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- UtilLoggingXMLDecoder.java	27 Feb 2004 16:47:35 -0000	1.6
  +++ UtilLoggingXMLDecoder.java	28 Mar 2004 10:04:31 -0000	1.7
  @@ -95,7 +95,7 @@
      * @return
      */
     private Document parse(String data) {
  -    if (docBuilder == null) {
  +    if (docBuilder == null || data == null) {
         return null;
       }
   
  @@ -111,9 +111,7 @@
          * resetting the length of the StringBuffer is dangerous, particularly
          * on some JDK 1.4 impls, there's a known Bug that causes a memory leak
          */
  -      if (data != null) {
  -        data = data.trim();
  -      }
  +      data = data.trim();
   
         StringBuffer buf = new StringBuffer(1024);
   
  @@ -164,6 +162,7 @@
             reader.close();
           }
         } catch (Exception e) {
  +        e.printStackTrace();
         }
       }
   
  
  
  
  1.9       +3 -3      logging-log4j/src/java/org/apache/log4j/xml/XMLDecoder.java
  
  Index: XMLDecoder.java
  ===================================================================
  RCS file: /home/cvs/logging-log4j/src/java/org/apache/log4j/xml/XMLDecoder.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- XMLDecoder.java	27 Feb 2004 16:47:35 -0000	1.8
  +++ XMLDecoder.java	28 Mar 2004 10:04:31 -0000	1.9
  @@ -58,7 +58,6 @@
       "<?xml version=\"1.0\" encoding=\"UTF-8\" ?><!DOCTYPE log4j:eventSet SYSTEM \"log4j.dtd\"><log4j:eventSet version=\"1.2\" xmlns:log4j=\"http://jakarta.apache.org/log4j/\">";
     private static final String ENDPART = "</log4j:eventSet>";
     private static final String RECORD_END = "</log4j:event>";
  -  private StringBuffer buf = new StringBuffer();
     private DocumentBuilderFactory dbf;
     private DocumentBuilder docBuilder;
     private Map additionalProperties = Collections.EMPTY_MAP;
  @@ -95,7 +94,7 @@
      * @return
      */
     private Document parse(String data) {
  -    if (docBuilder == null) {
  +    if (docBuilder == null || data == null) {
         return null;
       }
   
  @@ -112,7 +111,7 @@
          * resetting the length of the StringBuffer is dangerous, particularly
          * on some JDK 1.4 impls, there's a known Bug that causes a memory leak
          */
  -      buf = new StringBuffer(1024);
  +      StringBuffer buf = new StringBuffer(1024);
   
         buf.append(BEGINPART);
         buf.append(data);
  @@ -155,6 +154,7 @@
             reader.close();
           }
         } catch (Exception e) {
  +        e.printStackTrace();
         }
       }
   
  
  
  
  1.7       +9 -13     logging-log4j/src/java/org/apache/log4j/chainsaw/filter/FilterModel.java
  
  Index: FilterModel.java
  ===================================================================
  RCS file: /home/cvs/logging-log4j/src/java/org/apache/log4j/chainsaw/filter/FilterModel.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- FilterModel.java	27 Feb 2004 16:47:31 -0000	1.6
  +++ FilterModel.java	28 Mar 2004 10:04:31 -0000	1.7
  @@ -30,20 +30,19 @@
     private EventTypeEntryContainer eventContainer =
       new EventTypeEntryContainer();
   
  -  public void processNewLoggingEvent(String eventType, LoggingEvent event) {
  -    EventTypeEntryContainer container = getContainer(eventType);
  +  public void processNewLoggingEvent(LoggingEvent event) {
   
  -    container.addLevel(event.getLevel());
  -    container.addLogger(event.getLoggerName());
  -    container.addThread(event.getThreadName());
  -    container.addNDC(event.getNDC());
  -    container.addMDCKeys(event.getMDCKeySet());
  +    eventContainer.addLevel(event.getLevel());
  +    eventContainer.addLogger(event.getLoggerName());
  +    eventContainer.addThread(event.getThreadName());
  +    eventContainer.addNDC(event.getNDC());
  +    eventContainer.addMDCKeys(event.getMDCKeySet());
   
       if (event.locationInformationExists()) {
         LocationInfo info = event.getLocationInformation();
  -      container.addClass(info.getClassName());
  -      container.addMethod(info.getMethodName());
  -      container.addFileName(info.getFileName());
  +      eventContainer.addClass(info.getClassName());
  +      eventContainer.addMethod(info.getMethodName());
  +      eventContainer.addFileName(info.getFileName());
       }
     }
   
  @@ -51,7 +50,4 @@
       return eventContainer;
     }
   
  -  EventTypeEntryContainer getContainer(String eventType) {
  -    return this.eventContainer;
  -  }
   }
  
  
  
  1.3       +1 -1      logging-log4j/src/java/org/apache/log4j/chainsaw/layout/DefaultLayoutFactory.java
  
  Index: DefaultLayoutFactory.java
  ===================================================================
  RCS file: /home/cvs/logging-log4j/src/java/org/apache/log4j/chainsaw/layout/DefaultLayoutFactory.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- DefaultLayoutFactory.java	27 Feb 2004 16:47:31 -0000	1.2
  +++ DefaultLayoutFactory.java	28 Mar 2004 10:04:31 -0000	1.3
  @@ -31,7 +31,7 @@
    * @author Paul Smith <ps...@apache.org>
    */
   public class DefaultLayoutFactory {
  -  private static String defaultPatternLayout = null;
  +  private volatile static String defaultPatternLayout = null;
   
     private DefaultLayoutFactory() {
     }
  
  
  
  1.6       +0 -1      logging-log4j/src/java/org/apache/log4j/net/UDPAppender.java
  
  Index: UDPAppender.java
  ===================================================================
  RCS file: /home/cvs/logging-log4j/src/java/org/apache/log4j/net/UDPAppender.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- UDPAppender.java	27 Feb 2004 16:47:32 -0000	1.5
  +++ UDPAppender.java	28 Mar 2004 10:04:31 -0000	1.6
  @@ -75,7 +75,6 @@
     int port = DEFAULT_PORT;
     DatagramSocket outSocket;
     int reconnectionDelay = DEFAULT_RECONNECTION_DELAY;
  -  boolean locationInfo = false;
     int count = 0;
     private Connector connector;
   
  
  
  
  1.8       +2 -2      logging-log4j/src/java/org/apache/log4j/net/XMLSocketReceiver.java
  
  Index: XMLSocketReceiver.java
  ===================================================================
  RCS file: /home/cvs/logging-log4j/src/java/org/apache/log4j/net/XMLSocketReceiver.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- XMLSocketReceiver.java	27 Feb 2004 16:47:32 -0000	1.7
  +++ XMLSocketReceiver.java	28 Mar 2004 10:04:31 -0000	1.8
  @@ -44,7 +44,6 @@
       @since 1.3
   */
   public class XMLSocketReceiver extends Receiver implements Runnable, PortBased, Pauseable {
  -  protected int port;
     protected boolean active = false;
     private boolean paused;
     //default to log4j xml decoder
  @@ -52,7 +51,8 @@
     private ServerSocket serverSocket;
     private List socketList = new Vector();
     private Thread rThread;
  -  public static int DEFAULT_PORT = 4448;
  +  public static final int DEFAULT_PORT = 4448;
  +  protected int port = DEFAULT_PORT;
   
     public XMLSocketReceiver() {
     }
  
  
  
  1.2       +0 -1      logging-log4j/src/java/org/apache/log4j/chainsaw/favourites/FavouritesRegistry.java
  
  Index: FavouritesRegistry.java
  ===================================================================
  RCS file: /home/cvs/logging-log4j/src/java/org/apache/log4j/chainsaw/favourites/FavouritesRegistry.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- FavouritesRegistry.java	24 Dec 2003 04:08:44 -0000	1.1
  +++ FavouritesRegistry.java	28 Mar 2004 10:04:31 -0000	1.2
  @@ -14,7 +14,6 @@
    */
   public class FavouritesRegistry{
     
  -  private final FavouritesRegistry instance = new FavouritesRegistry();
     private final List favourites = new ArrayList();
     
     /**
  
  
  
  1.14      +1 -1      logging-log4j/src/java/org/apache/log4j/chainsaw/prefs/default.properties
  
  Index: default.properties
  ===================================================================
  RCS file: /home/cvs/logging-log4j/src/java/org/apache/log4j/chainsaw/prefs/default.properties,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- default.properties	31 Dec 2003 09:54:40 -0000	1.13
  +++ default.properties	28 Mar 2004 10:04:31 -0000	1.14
  @@ -29,7 +29,7 @@
   dateFormatPattern=ISO8601
   levelIcons=true
   loggerPrecision=
  -toolTips=true
  +toolTips=false
   scrollToBottom=true
   logTreePanelVisible=true
   detailPaneVisible=true
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-dev-help@logging.apache.org