diff -r ed84c8bdd87b -r 74139325d305 src/org/sonews/Main.java --- a/src/org/sonews/Main.java Sun Aug 29 17:28:58 2010 +0200 +++ b/src/org/sonews/Main.java Sun Aug 29 18:17:37 2010 +0200 @@ -44,155 +44,123 @@ */ public final class Main { - - private Main() - { - } - /** Version information of the sonews daemon */ - public static final String VERSION = "sonews/1.1.0"; - public static final Date STARTDATE = new Date(); - - /** - * The main entrypoint. - * @param args - * @throws Exception - */ - public static void main(String[] args) throws Exception - { - System.out.println(VERSION); - Thread.currentThread().setName("Mainthread"); + /** Version information of the sonews daemon */ + public static final String VERSION = "sonews/1.1.0"; + public static final Date STARTDATE = new Date(); - // Command line arguments - boolean feed = false; // Enable feeding? - boolean mlgw = false; // Enable Mailinglist gateway? - int port = -1; - - for(int n = 0; n < args.length; n++) - { - if(args[n].equals("-c") || args[n].equals("-config")) - { - Config.inst().set(Config.LEVEL_CLI, Config.CONFIGFILE, args[++n]); - System.out.println("Using config file " + args[n]); - } - else if(args[n].equals("-dumpjdbcdriver")) - { - System.out.println("Available JDBC drivers:"); - Enumeration drvs = DriverManager.getDrivers(); - while(drvs.hasMoreElements()) - { - System.out.println(drvs.nextElement()); - } - return; - } - else if(args[n].equals("-feed")) - { - feed = true; - } - else if(args[n].equals("-h") || args[n].equals("-help")) - { - printArguments(); - return; - } - else if(args[n].equals("-mlgw")) - { - mlgw = true; - } - else if(args[n].equals("-p")) - { - port = Integer.parseInt(args[++n]); - } - else if(args[n].equals("-plugin")) - { - System.out.println("Warning: -plugin-storage is not implemented!"); - } - else if(args[n].equals("-plugin-command")) - { - try - { - CommandSelector.addCommandHandler(args[++n]); - } - catch(Exception ex) - { - Log.get().warning("Could not load command plugin: " + args[n]); - Log.get().log(Level.INFO, "Main.java", ex); - } - } - else if(args[n].equals("-plugin-storage")) - { - System.out.println("Warning: -plugin-storage is not implemented!"); - } - else if(args[n].equals("-v") || args[n].equals("-version")) - { - // Simply return as the version info is already printed above - return; - } - } - - // Try to load the JDBCDatabase; - // Do NOT USE BackendConfig or Log classes before this point because they require - // a working JDBCDatabase connection. - try - { - StorageProvider sprov = - StorageManager.loadProvider("org.sonews.storage.impl.JDBCDatabaseProvider"); - StorageManager.enableProvider(sprov); - - // Make sure some elementary groups are existing - if(!StorageManager.current().isGroupExisting("control")) - { - StorageManager.current().addGroup("control", 0); - Log.get().info("Group 'control' created."); - } - } - catch(StorageBackendException ex) - { - ex.printStackTrace(); - System.err.println("Database initialization failed with " + ex.toString()); - System.err.println("Make sure you have specified the correct database" + - " settings in sonews.conf!"); - return; - } - - ChannelLineBuffers.allocateDirect(); - - // Add shutdown hook - Runtime.getRuntime().addShutdownHook(new ShutdownHook()); - - // Start the listening daemon - if(port <= 0) - { - port = Config.inst().get(Config.PORT, 119); - } - final NNTPDaemon daemon = NNTPDaemon.createInstance(port); - daemon.start(); - - // Start Connections purger thread... - Connections.getInstance().start(); - - // Start mailinglist gateway... - if(mlgw) - { - new MailPoller().start(); - } - - // Start feeds - if(feed) - { - FeedManager.startFeeding(); - } + /** + * The main entrypoint. + * @param args + * @throws Exception + */ + public static void main(String[] args) throws Exception + { + System.out.println(VERSION); + Thread.currentThread().setName("Mainthread"); - Purger purger = new Purger(); - purger.start(); - - // Wait for main thread to exit (setDaemon(false)) - daemon.join(); - } - - private static void printArguments() - { - String usage = Resource.getAsString("helpers/usage", true); - System.out.println(usage); - } + // Command line arguments + boolean feed = false; // Enable feeding? + boolean mlgw = false; // Enable Mailinglist gateway? + int port = -1; + for (int n = 0; n < args.length; n++) { + if (args[n].equals("-c") || args[n].equals("-config")) { + Config.inst().set(Config.LEVEL_CLI, Config.CONFIGFILE, args[++n]); + System.out.println("Using config file " + args[n]); + } else if (args[n].equals("-dumpjdbcdriver")) { + System.out.println("Available JDBC drivers:"); + Enumeration drvs = DriverManager.getDrivers(); + while (drvs.hasMoreElements()) { + System.out.println(drvs.nextElement()); + } + return; + } else if (args[n].equals("-feed")) { + feed = true; + } else if (args[n].equals("-h") || args[n].equals("-help")) { + printArguments(); + return; + } else if (args[n].equals("-mlgw")) { + mlgw = true; + } else if (args[n].equals("-p")) { + port = Integer.parseInt(args[++n]); + } else if (args[n].equals("-plugin")) { + System.out.println("Warning: -plugin-storage is not implemented!"); + } else if (args[n].equals("-plugin-command")) { + try { + CommandSelector.addCommandHandler(args[++n]); + } catch (Exception ex) { + Log.get().warning("Could not load command plugin: " + args[n]); + Log.get().log(Level.INFO, "Main.java", ex); + } + } else if (args[n].equals("-plugin-storage")) { + System.out.println("Warning: -plugin-storage is not implemented!"); + } else if (args[n].equals("-v") || args[n].equals("-version")) { + // Simply return as the version info is already printed above + return; + } + } + + // Try to load the JDBCDatabase; + // Do NOT USE BackendConfig or Log classes before this point because they require + // a working JDBCDatabase connection. + try { + StorageProvider sprov = + StorageManager.loadProvider("org.sonews.storage.impl.JDBCDatabaseProvider"); + StorageManager.enableProvider(sprov); + + // Make sure some elementary groups are existing + if (!StorageManager.current().isGroupExisting("control")) { + StorageManager.current().addGroup("control", 0); + Log.get().info("Group 'control' created."); + } + } catch (StorageBackendException ex) { + ex.printStackTrace(); + System.err.println("Database initialization failed with " + ex.toString()); + System.err.println("Make sure you have specified the correct database" + + " settings in sonews.conf!"); + return; + } + + ChannelLineBuffers.allocateDirect(); + + // Add shutdown hook + Runtime.getRuntime().addShutdownHook(new ShutdownHook()); + + // Start the listening daemon + if (port <= 0) { + port = Config.inst().get(Config.PORT, 119); + } + final NNTPDaemon daemon = NNTPDaemon.createInstance(port); + daemon.start(); + + // Start Connections purger thread... + Connections.getInstance().start(); + + // Start mailinglist gateway... + if (mlgw) { + new MailPoller().start(); + } + + // Start feeds + if (feed) { + FeedManager.startFeeding(); + } + + Purger purger = new Purger(); + purger.start(); + + // Wait for main thread to exit (setDaemon(false)) + daemon.join(); + } + + private static void printArguments() + { + String usage = Resource.getAsString("helpers/usage", true); + System.out.println(usage); + } + + private Main() + { + } }