1.1 --- a/org/sonews/daemon/AbstractDaemon.java Sun Aug 29 17:04:25 2010 +0200
1.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
1.3 @@ -1,101 +0,0 @@
1.4 -/*
1.5 - * SONEWS News Server
1.6 - * see AUTHORS for the list of contributors
1.7 - *
1.8 - * This program is free software: you can redistribute it and/or modify
1.9 - * it under the terms of the GNU General Public License as published by
1.10 - * the Free Software Foundation, either version 3 of the License, or
1.11 - * (at your option) any later version.
1.12 - *
1.13 - * This program is distributed in the hope that it will be useful,
1.14 - * but WITHOUT ANY WARRANTY; without even the implied warranty of
1.15 - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1.16 - * GNU General Public License for more details.
1.17 - *
1.18 - * You should have received a copy of the GNU General Public License
1.19 - * along with this program. If not, see <http://www.gnu.org/licenses/>.
1.20 - */
1.21 -
1.22 -package org.sonews.daemon;
1.23 -
1.24 -import java.sql.SQLException;
1.25 -import org.sonews.storage.StorageManager;
1.26 -import org.sonews.util.Log;
1.27 -
1.28 -/**
1.29 - * Base class of all sonews threads.
1.30 - * Instances of this class will be automatically registered at the ShutdownHook
1.31 - * to be cleanly exited when the server is forced to exit.
1.32 - * @author Christian Lins
1.33 - * @since sonews/0.5.0
1.34 - */
1.35 -public abstract class AbstractDaemon extends Thread
1.36 -{
1.37 -
1.38 - /** This variable is write synchronized through setRunning */
1.39 - private boolean isRunning = false;
1.40 -
1.41 - /**
1.42 - * Protected constructor. Will be called by derived classes.
1.43 - */
1.44 - protected AbstractDaemon()
1.45 - {
1.46 - setDaemon(true); // VM will exit when all threads are daemons
1.47 - setName(getClass().getSimpleName());
1.48 - }
1.49 -
1.50 - /**
1.51 - * @return true if shutdown() was not yet called.
1.52 - */
1.53 - public boolean isRunning()
1.54 - {
1.55 - synchronized(this)
1.56 - {
1.57 - return this.isRunning;
1.58 - }
1.59 - }
1.60 -
1.61 - /**
1.62 - * Marks this thread to exit soon. Closes the associated JDBCDatabase connection
1.63 - * if available.
1.64 - * @throws java.sql.SQLException
1.65 - */
1.66 - public void shutdownNow()
1.67 - throws SQLException
1.68 - {
1.69 - synchronized(this)
1.70 - {
1.71 - this.isRunning = false;
1.72 - StorageManager.disableProvider();
1.73 - }
1.74 - }
1.75 -
1.76 - /**
1.77 - * Calls shutdownNow() but catches SQLExceptions if occurring.
1.78 - */
1.79 - public void shutdown()
1.80 - {
1.81 - try
1.82 - {
1.83 - shutdownNow();
1.84 - }
1.85 - catch(SQLException ex)
1.86 - {
1.87 - Log.get().warning(ex.toString());
1.88 - }
1.89 - }
1.90 -
1.91 - /**
1.92 - * Starts this daemon.
1.93 - */
1.94 - @Override
1.95 - public void start()
1.96 - {
1.97 - synchronized(this)
1.98 - {
1.99 - this.isRunning = true;
1.100 - }
1.101 - super.start();
1.102 - }
1.103 -
1.104 -}