Make all threads daemon and remove System.exit calls

git-svn-id: http://svn.code.sf.net/p/davmail/code/trunk@566 3d1905a2-6b24-0410-a738-b14d5a86fcbd
This commit is contained in:
mguessan 2009-05-17 22:24:43 +00:00
parent dc82440cc0
commit a08ebb6732
8 changed files with 63 additions and 23 deletions

View File

@ -33,6 +33,7 @@ public class AbstractConnection extends Thread {
public AbstractConnection(String name, Socket clientSocket) { public AbstractConnection(String name, Socket clientSocket) {
super(name); super(name);
this.client = clientSocket; this.client = clientSocket;
setDaemon(true);
} }
// Initialize the streams and set thread name // Initialize the streams and set thread name

View File

@ -42,6 +42,7 @@ public abstract class AbstractServer extends Thread {
*/ */
public AbstractServer(String name, int port, int defaultPort) { public AbstractServer(String name, int port, int defaultPort) {
super(name); super(name);
setDaemon(true);
if (port == 0) { if (port == 0) {
this.port = defaultPort; this.port = defaultPort;
} else { } else {

View File

@ -306,7 +306,7 @@ public final class DavGatewayHttpClientFacade {
if (multiThreadedHttpConnectionManager == null) { if (multiThreadedHttpConnectionManager == null) {
multiThreadedHttpConnectionManager = new MultiThreadedHttpConnectionManager(); multiThreadedHttpConnectionManager = new MultiThreadedHttpConnectionManager();
multiThreadedHttpConnectionManager.getParams().setDefaultMaxConnectionsPerHost(100); multiThreadedHttpConnectionManager.getParams().setDefaultMaxConnectionsPerHost(100);
httpConnectionManagerThread = new Thread(HttpConnectionManager.class.getName()) { httpConnectionManagerThread = new Thread(HttpConnectionManager.class.getSimpleName()) {
@Override public void run() { @Override public void run() {
boolean terminated = false; boolean terminated = false;
while (!terminated) { while (!terminated) {
@ -321,6 +321,7 @@ public final class DavGatewayHttpClientFacade {
} }
} }
}; };
httpConnectionManagerThread.setDaemon(true);
httpConnectionManagerThread.start(); httpConnectionManagerThread.start();
} }
} }

View File

@ -2,6 +2,7 @@ package davmail.ui.tray;
import davmail.Settings; import davmail.Settings;
import davmail.BundleMessage; import davmail.BundleMessage;
import davmail.DavGateway;
import davmail.ui.AboutFrame; import davmail.ui.AboutFrame;
import davmail.ui.SettingsFrame; import davmail.ui.SettingsFrame;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
@ -33,6 +34,7 @@ public class AwtGatewayTray implements DavGatewayTrayInterface {
private static Image image; private static Image image;
private static Image image2; private static Image image2;
private static Image inactiveImage; private static Image inactiveImage;
protected static LogBrokerMonitor logBrokerMonitor;
private boolean isActive = true; private boolean isActive = true;
public Image getFrameIcon() { public Image getFrameIcon() {
@ -168,11 +170,13 @@ public class AwtGatewayTray implements DavGatewayTrayInterface {
Logger rootLogger = Logger.getRootLogger(); Logger rootLogger = Logger.getRootLogger();
LF5Appender lf5Appender = (LF5Appender) rootLogger.getAppender("LF5Appender"); LF5Appender lf5Appender = (LF5Appender) rootLogger.getAppender("LF5Appender");
if (lf5Appender == null) { if (lf5Appender == null) {
lf5Appender = new LF5Appender(new LogBrokerMonitor(LogLevel.getLog4JLevels()) { logBrokerMonitor = new LogBrokerMonitor(LogLevel.getLog4JLevels()) {
@Override protected void closeAfterConfirm() { @Override
protected void closeAfterConfirm() {
hide(); hide();
} }
}); };
lf5Appender = new LF5Appender(logBrokerMonitor);
lf5Appender.setName("LF5Appender"); lf5Appender.setName("LF5Appender");
rootLogger.addAppender(lf5Appender); rootLogger.addAppender(lf5Appender);
} }
@ -184,9 +188,15 @@ public class AwtGatewayTray implements DavGatewayTrayInterface {
// create an action exitListener to listen for exit action executed on the tray icon // create an action exitListener to listen for exit action executed on the tray icon
ActionListener exitListener = new ActionListener() { ActionListener exitListener = new ActionListener() {
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
DavGateway.stop();
SystemTray.getSystemTray().remove(trayIcon); SystemTray.getSystemTray().remove(trayIcon);
//noinspection CallToSystemExit
System.exit(0); // dispose frames
settingsFrame.dispose();
aboutFrame.dispose();
if (logBrokerMonitor != null) {
logBrokerMonitor.dispose();
}
} }
}; };
// create menu item for the exit action // create menu item for the exit action

View File

@ -2,6 +2,7 @@ package davmail.ui.tray;
import davmail.Settings; import davmail.Settings;
import davmail.BundleMessage; import davmail.BundleMessage;
import davmail.DavGateway;
import davmail.ui.AboutFrame; import davmail.ui.AboutFrame;
import davmail.ui.SettingsFrame; import davmail.ui.SettingsFrame;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
@ -25,6 +26,7 @@ public class FrameGatewayTray implements DavGatewayTrayInterface {
protected static JFrame mainFrame; protected static JFrame mainFrame;
protected static AboutFrame aboutFrame; protected static AboutFrame aboutFrame;
protected static SettingsFrame settingsFrame; protected static SettingsFrame settingsFrame;
protected static LogBrokerMonitor logBrokerMonitor;
private static JEditorPane errorArea; private static JEditorPane errorArea;
private static JLabel errorLabel; private static JLabel errorLabel;
private static JEditorPane messageArea; private static JEditorPane messageArea;
@ -113,12 +115,13 @@ public class FrameGatewayTray implements DavGatewayTrayInterface {
Logger rootLogger = Logger.getRootLogger(); Logger rootLogger = Logger.getRootLogger();
LF5Appender lf5Appender = (LF5Appender) rootLogger.getAppender("LF5Appender"); LF5Appender lf5Appender = (LF5Appender) rootLogger.getAppender("LF5Appender");
if (lf5Appender == null) { if (lf5Appender == null) {
lf5Appender = new LF5Appender(new LogBrokerMonitor(LogLevel.getLog4JLevels()) { logBrokerMonitor = new LogBrokerMonitor(LogLevel.getLog4JLevels()) {
@Override @Override
protected void closeAfterConfirm() { protected void closeAfterConfirm() {
hide(); hide();
} }
}); };
lf5Appender = new LF5Appender(logBrokerMonitor);
lf5Appender.setName("LF5Appender"); lf5Appender.setName("LF5Appender");
rootLogger.addAppender(lf5Appender); rootLogger.addAppender(lf5Appender);
} }
@ -174,8 +177,13 @@ public class FrameGatewayTray implements DavGatewayTrayInterface {
// create an action exitListener to listen for exit action executed on the tray icon // create an action exitListener to listen for exit action executed on the tray icon
ActionListener exitListener = new ActionListener() { ActionListener exitListener = new ActionListener() {
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
//noinspection CallToSystemExit DavGateway.stop();
System.exit(0); // dispose frames
settingsFrame.dispose();
aboutFrame.dispose();
if (logBrokerMonitor != null) {
logBrokerMonitor.dispose();
}
} }
}; };
// create menu item for the exit action // create menu item for the exit action

View File

@ -2,6 +2,7 @@ package davmail.ui.tray;
import davmail.ui.OSXAdapter; import davmail.ui.OSXAdapter;
import davmail.BundleMessage; import davmail.BundleMessage;
import davmail.DavGateway;
/** /**
* Extended Awt tray with OSX extensions. * Extended Awt tray with OSX extensions.
@ -9,6 +10,13 @@ import davmail.BundleMessage;
public class OSXAwtGatewayTray extends AwtGatewayTray { public class OSXAwtGatewayTray extends AwtGatewayTray {
@SuppressWarnings({"SameReturnValue"}) @SuppressWarnings({"SameReturnValue"})
public boolean quit() { public boolean quit() {
DavGateway.stop();
// dispose frames
settingsFrame.dispose();
aboutFrame.dispose();
if (logBrokerMonitor != null) {
logBrokerMonitor.dispose();
}
return true; return true;
} }

View File

@ -2,6 +2,7 @@ package davmail.ui.tray;
import davmail.ui.OSXAdapter; import davmail.ui.OSXAdapter;
import davmail.BundleMessage; import davmail.BundleMessage;
import davmail.DavGateway;
import javax.swing.*; import javax.swing.*;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
@ -14,6 +15,13 @@ public class OSXFrameGatewayTray extends FrameGatewayTray {
@SuppressWarnings({"SameReturnValue"}) @SuppressWarnings({"SameReturnValue"})
public boolean quit() { public boolean quit() {
DavGateway.stop();
// dispose frames
settingsFrame.dispose();
aboutFrame.dispose();
if (logBrokerMonitor != null) {
logBrokerMonitor.dispose();
}
return true; return true;
} }

View File

@ -2,6 +2,7 @@ package davmail.ui.tray;
import davmail.Settings; import davmail.Settings;
import davmail.BundleMessage; import davmail.BundleMessage;
import davmail.DavGateway;
import davmail.ui.AboutFrame; import davmail.ui.AboutFrame;
import davmail.ui.SettingsFrame; import davmail.ui.SettingsFrame;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
@ -31,6 +32,7 @@ public class SwtGatewayTray implements DavGatewayTrayInterface {
private static Image inactiveImage; private static Image inactiveImage;
private static Display display; private static Display display;
private static Shell shell; private static Shell shell;
private static LogBrokerMonitor logBrokerMonitor;
private boolean isActive = true; private boolean isActive = true;
private boolean isReady; private boolean isReady;
@ -221,12 +223,13 @@ public class SwtGatewayTray implements DavGatewayTrayInterface {
Logger rootLogger = Logger.getRootLogger(); Logger rootLogger = Logger.getRootLogger();
LF5Appender lf5Appender = (LF5Appender) rootLogger.getAppender("LF5Appender"); LF5Appender lf5Appender = (LF5Appender) rootLogger.getAppender("LF5Appender");
if (lf5Appender == null) { if (lf5Appender == null) {
lf5Appender = new LF5Appender(new LogBrokerMonitor(LogLevel.getLog4JLevels()) { logBrokerMonitor = new LogBrokerMonitor(LogLevel.getLog4JLevels()) {
@Override @Override
protected void closeAfterConfirm() { protected void closeAfterConfirm() {
hide(); hide();
} }
}); };
lf5Appender = new LF5Appender(logBrokerMonitor);
lf5Appender.setName("LF5Appender"); lf5Appender.setName("LF5Appender");
rootLogger.addAppender(lf5Appender); rootLogger.addAppender(lf5Appender);
} }
@ -240,18 +243,8 @@ public class SwtGatewayTray implements DavGatewayTrayInterface {
exitItem.setText(BundleMessage.format("UI_EXIT")); exitItem.setText(BundleMessage.format("UI_EXIT"));
exitItem.addListener(SWT.Selection, new Listener() { exitItem.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event event) { public void handleEvent(Event event) {
DavGateway.stop();
shell.dispose(); shell.dispose();
if (image != null) {
image.dispose();
}
if (image2 != null) {
image2.dispose();
}
display.dispose();
//noinspection CallToSystemExit
System.exit(0);
} }
}); });
@ -271,6 +264,10 @@ public class SwtGatewayTray implements DavGatewayTrayInterface {
} }
} }
if (trayItem != null) {
trayItem.dispose();
}
if (image != null) { if (image != null) {
image.dispose(); image.dispose();
} }
@ -278,6 +275,12 @@ public class SwtGatewayTray implements DavGatewayTrayInterface {
image2.dispose(); image2.dispose();
} }
display.dispose(); display.dispose();
// dispose AWT frames
settingsFrame.dispose();
aboutFrame.dispose();
if (logBrokerMonitor != null) {
logBrokerMonitor.dispose();
}
} }
} }
}.start(); }.start();