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) {
super(name);
this.client = clientSocket;
setDaemon(true);
}
// 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) {
super(name);
setDaemon(true);
if (port == 0) {
this.port = defaultPort;
} else {

View File

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

View File

@ -2,6 +2,7 @@ package davmail.ui.tray;
import davmail.Settings;
import davmail.BundleMessage;
import davmail.DavGateway;
import davmail.ui.AboutFrame;
import davmail.ui.SettingsFrame;
import org.apache.log4j.Logger;
@ -33,6 +34,7 @@ public class AwtGatewayTray implements DavGatewayTrayInterface {
private static Image image;
private static Image image2;
private static Image inactiveImage;
protected static LogBrokerMonitor logBrokerMonitor;
private boolean isActive = true;
public Image getFrameIcon() {
@ -168,11 +170,13 @@ public class AwtGatewayTray implements DavGatewayTrayInterface {
Logger rootLogger = Logger.getRootLogger();
LF5Appender lf5Appender = (LF5Appender) rootLogger.getAppender("LF5Appender");
if (lf5Appender == null) {
lf5Appender = new LF5Appender(new LogBrokerMonitor(LogLevel.getLog4JLevels()) {
@Override protected void closeAfterConfirm() {
logBrokerMonitor = new LogBrokerMonitor(LogLevel.getLog4JLevels()) {
@Override
protected void closeAfterConfirm() {
hide();
}
});
};
lf5Appender = new LF5Appender(logBrokerMonitor);
lf5Appender.setName("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
ActionListener exitListener = new ActionListener() {
public void actionPerformed(ActionEvent e) {
DavGateway.stop();
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

View File

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

View File

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

View File

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

View File

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