psmith 2003/06/17 18:35:25 Modified: src/java/org/apache/log4j/chainsaw LogUI.java Log: During the exiting of the application, there was no effort expended to letting Log4j shutdown correctly. Modified to shutdown the PluginRepository and LogManager (I assume I need to explicit call both?). Also placed a simple progress bar to indicate that something IS actually happening, as sometimes shutting down some receivers could take a little while if there is any network related things going on. Revision Changes Path 1.102 +74 -28 jakarta-log4j-sandbox/src/java/org/apache/log4j/chainsaw/LogUI.java Index: LogUI.java =================================================================== RCS file: /home/cvs/jakarta-log4j-sandbox/src/java/org/apache/log4j/chainsaw/LogUI.java,v retrieving revision 1.101 retrieving revision 1.102 diff -u -r1.101 -r1.102 --- LogUI.java 17 Jun 2003 17:26:56 -0000 1.101 +++ LogUI.java 18 Jun 2003 01:35:25 -0000 1.102 @@ -132,6 +132,7 @@ import javax.swing.JTable; import javax.swing.JTextField; import javax.swing.JToolBar; +import javax.swing.JWindow; import javax.swing.KeyStroke; import javax.swing.ListSelectionModel; import javax.swing.SwingUtilities; @@ -517,7 +518,7 @@ } } - System.exit(0); + shutdown(); } void addWelcomePanel() { @@ -547,7 +548,40 @@ * Shutsdown by ensuring the Appender gets a chance to close. */ private void shutdown() { - handler.close(); + JWindow progress = new JWindow(); + final ProgressPanel panel = new ProgressPanel(1, 3, "Shutting down"); + progress.getContentPane().add(panel); + progress.pack(); + progress.setLocationRelativeTo(this); + progress.setVisible(true); + + Runnable runnable = + new Runnable() { + public void run() { + try { + int progress = 1; + handler.close(); + panel.setProgress(progress++); + + Thread.sleep(250); + + PluginRegistry.stopAllPlugins(); + panel.setProgress(progress++); + + Thread.sleep(250); + + LogManager.shutdown(); + panel.setProgress(progress++); + Thread.sleep(250); + } catch (Exception e) { + e.printStackTrace(); + } + + System.exit(0); + } + }; + + new Thread(runnable).start(); } /** @@ -756,23 +790,26 @@ new File( SettingsManager.getInstance().getSettingsDirectory() + File.separator + ident + ChainsawConstants.SETTINGS_EXTENSION); - if (f.exists()) { - try { - s = new ObjectInputStream( - new BufferedInputStream(new FileInputStream(f))); - d = (DisplayFilter) s.readObject(); - } catch (IOException ioe) {ioe.printStackTrace(); - } catch (ClassNotFoundException cnfe) { - cnfe.printStackTrace(); - } - finally { - if (s != null) { - try { - s.close(); - } catch (IOException ioe) {ioe.printStackTrace();} + + if (f.exists()) { + try { + s = new ObjectInputStream( + new BufferedInputStream(new FileInputStream(f))); + d = (DisplayFilter) s.readObject(); + } catch (IOException ioe) { + ioe.printStackTrace(); + } catch (ClassNotFoundException cnfe) { + cnfe.printStackTrace(); + } finally { + if (s != null) { + try { + s.close(); + } catch (IOException ioe) { + ioe.printStackTrace(); } } } + } if (d == null) { d = new DisplayFilter(ident); @@ -967,6 +1004,7 @@ UIManager.setLookAndFeel(lookAndFeelClassName); SwingUtilities.updateComponentTreeUI(this); tbms.lookAndFeelUpdated(); + if (tbms != null) { tbms.stateChange(); } @@ -1858,15 +1896,18 @@ } o.flush(); - } catch (FileNotFoundException fnfe) {fnfe.printStackTrace(); - } catch (IOException ioe) {ioe.printStackTrace(); - } - finally { + } catch (FileNotFoundException fnfe) { + fnfe.printStackTrace(); + } catch (IOException ioe) { + ioe.printStackTrace(); + } finally { try { if (o != null) { o.close(); } - } catch (IOException ioe) {ioe.printStackTrace();} + } catch (IOException ioe) { + ioe.printStackTrace(); + } } } @@ -1965,7 +2006,7 @@ + File.separator + ident + COLUMNS_EXTENSION); if (f.exists()) { - ArrayList newColumns = new ArrayList(); + ArrayList newColumns = new ArrayList(); TableColumnData temp = null; ObjectInputStream s = null; @@ -1981,17 +2022,21 @@ tc.setHeaderValue(temp.getColName()); newColumns.add(tc); } - } catch (EOFException eof) {//end of file - ignore.. - } catch (IOException ioe) {ioe.printStackTrace(); - } catch (ClassNotFoundException cnfe) {cnfe.printStackTrace(); + } catch (EOFException eof) { //end of file - ignore.. + }catch (IOException ioe) { + ioe.printStackTrace(); + } catch (ClassNotFoundException cnfe) { + cnfe.printStackTrace(); } finally { if (s != null) { try { s.close(); - } catch (IOException ioe) {ioe.printStackTrace(); + } catch (IOException ioe) { + ioe.printStackTrace(); } } } + //only remove columns and add serialized columns if //at least one column was read from the file if (newColumns.size() > 0) { @@ -1999,8 +2044,9 @@ for (int i = model.getColumnCount() - 1; i > -1; i--) { model.removeColumn(model.getColumn(i)); } - for (Iterator iter=newColumns.iterator();iter.hasNext();) { - model.addColumn((TableColumn)iter.next()); + + for (Iterator iter = newColumns.iterator(); iter.hasNext();) { + model.addColumn((TableColumn) iter.next()); } } }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]