Return-Path: Delivered-To: apmail-directory-commits-archive@www.apache.org Received: (qmail 12847 invoked from network); 28 Jul 2006 11:51:21 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 28 Jul 2006 11:51:21 -0000 Received: (qmail 9616 invoked by uid 500); 28 Jul 2006 11:51:20 -0000 Delivered-To: apmail-directory-commits-archive@directory.apache.org Received: (qmail 9452 invoked by uid 500); 28 Jul 2006 11:51:19 -0000 Mailing-List: contact commits-help@directory.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@directory.apache.org Delivered-To: mailing list commits@directory.apache.org Received: (qmail 9389 invoked by uid 99); 28 Jul 2006 11:51:19 -0000 Received: from asf.osuosl.org (HELO asf.osuosl.org) (140.211.166.49) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 28 Jul 2006 04:51:19 -0700 X-ASF-Spam-Status: No, hits=-9.4 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received-SPF: pass (asf.osuosl.org: local policy) Received: from [140.211.166.113] (HELO eris.apache.org) (140.211.166.113) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 28 Jul 2006 04:51:12 -0700 Received: by eris.apache.org (Postfix, from userid 65534) id 8635F1A981C; Fri, 28 Jul 2006 04:50:52 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r426483 [1/5] - in /directory/trunks/apacheds/server-tools/src: main/java/org/apache/directory/server/tools/ main/java/org/apache/directory/server/tools/commands/ main/java/org/apache/directory/server/tools/commands/diagnosticcmd/ main/java... Date: Fri, 28 Jul 2006 11:50:43 -0000 To: commits@directory.apache.org From: elecharny@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20060728115052.8635F1A981C@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N Author: elecharny Date: Fri Jul 28 04:50:40 2006 New Revision: 426483 URL: http://svn.apache.org/viewvc?rev=426483&view=rev Log: applying Pierre-Arnaud Marcelot patch DIRSERVER_679 Added: directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/BaseToolCommand.java directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/ToolCommandListener.java directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/commands/ directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/commands/diagnosticcmd/ directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/commands/diagnosticcmd/DiagnosticCommandCL.java directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/commands/diagnosticcmd/DiagnosticCommandExecutor.java directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/commands/diagnosticcmd/DiagnosticCommandExecutorSkeleton.java directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/commands/diagnosticcmd/DiagnosticCommandExecutorStub.java directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/commands/disconnectnotificationcmd/ directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/commands/disconnectnotificationcmd/DisconnectNotificationCommandCL.java directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/commands/disconnectnotificationcmd/DisconnectNotificationCommandExecutor.java directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/commands/disconnectnotificationcmd/DisconnectNotificationCommandExecutorSkeleton.java directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/commands/disconnectnotificationcmd/DisconnectNotificationCommandExecutorStub.java directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/commands/dumpcmd/ directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/commands/dumpcmd/DumpCommandCL.java directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/commands/dumpcmd/DumpCommandExecutor.java directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/commands/dumpcmd/DumpCommandExecutorSkeleton.java directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/commands/dumpcmd/DumpCommandExecutorStub.java directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/commands/exportcmd/ directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/commands/exportcmd/ExportCommandCL.java directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/commands/exportcmd/ExportCommandExecutor.java directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/commands/exportcmd/ExportCommandExecutorSkeleton.java directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/commands/exportcmd/ExportCommandExecutorStub.java directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/commands/gracefulshutdowncmd/ directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/commands/gracefulshutdowncmd/GracefulShutdownCommandCL.java directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/commands/gracefulshutdowncmd/GracefulShutdownCommandExecutor.java directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/commands/gracefulshutdowncmd/GracefulShutdownCommandExecutorSkeleton.java directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/commands/gracefulshutdowncmd/GracefulShutdownCommandExecutorStub.java directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/commands/importcmd/ directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/commands/importcmd/ImportCommandCL.java directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/commands/importcmd/ImportCommandExecutor.java directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/commands/importcmd/ImportCommandExecutorSkeleton.java directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/commands/importcmd/ImportCommandExecutorStub.java directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/commands/storedprocedurecmd/ directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/commands/storedprocedurecmd/StoredProcedureCommandCL.java directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/commands/storedprocedurecmd/StoredProcedureCommandExecutor.java directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/commands/storedprocedurecmd/StoredProcedureCommandExecutorStub.java directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/commands/storedprocedurecmd/StoredProcedureExecutorSkeleton.java directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/execution/ directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/execution/BaseToolCommandExecutor.java directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/execution/ToolCommandExecutor.java directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/execution/ToolCommandExecutorSkeleton.java directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/execution/ToolCommandExecutorStub.java directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/listeners/ directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/listeners/ExceptionListener.java directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/listeners/SysErrListener.java directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/listeners/SysOutListener.java directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/request/ directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/request/BaseToolCommandCL.java directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/request/BaseToolCommandGui.java directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/request/ToolCommandCL.java directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/request/ToolCommandGui.java directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/util/ directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/util/ListenerParameter.java directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/util/Parameter.java directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/util/ToolCommandException.java directory/trunks/apacheds/server-tools/src/test/java/org/apache/directory/server/tools/commands/ directory/trunks/apacheds/server-tools/src/test/java/org/apache/directory/server/tools/commands/AbstractTestCase.java directory/trunks/apacheds/server-tools/src/test/java/org/apache/directory/server/tools/commands/exportcmd/ directory/trunks/apacheds/server-tools/src/test/java/org/apache/directory/server/tools/commands/exportcmd/ExportCommandTest.java directory/trunks/apacheds/server-tools/src/test/java/org/apache/directory/server/tools/commands/gracefulshutdowncmd/ directory/trunks/apacheds/server-tools/src/test/java/org/apache/directory/server/tools/commands/gracefulshutdowncmd/GracefulShutdownCommandTest.java directory/trunks/apacheds/server-tools/src/test/java/org/apache/directory/server/tools/commands/importcmd/ directory/trunks/apacheds/server-tools/src/test/java/org/apache/directory/server/tools/commands/importcmd/ImportCommandTest.java directory/trunks/apacheds/server-tools/src/test/resources/ directory/trunks/apacheds/server-tools/src/test/resources/org/ directory/trunks/apacheds/server-tools/src/test/resources/org/apache/ directory/trunks/apacheds/server-tools/src/test/resources/org/apache/directory/ directory/trunks/apacheds/server-tools/src/test/resources/org/apache/directory/server/ directory/trunks/apacheds/server-tools/src/test/resources/org/apache/directory/server/tools/ directory/trunks/apacheds/server-tools/src/test/resources/org/apache/directory/server/tools/commands/ directory/trunks/apacheds/server-tools/src/test/resources/org/apache/directory/server/tools/commands/exportcmd/ directory/trunks/apacheds/server-tools/src/test/resources/org/apache/directory/server/tools/commands/exportcmd/10_entries.ldif directory/trunks/apacheds/server-tools/src/test/resources/org/apache/directory/server/tools/commands/importcmd/ directory/trunks/apacheds/server-tools/src/test/resources/org/apache/directory/server/tools/commands/importcmd/RFC2849Sample1.ldif directory/trunks/apacheds/server-tools/src/test/resources/org/apache/directory/server/tools/commands/importcmd/RFC2849Sample2.ldif directory/trunks/apacheds/server-tools/src/test/resources/org/apache/directory/server/tools/commands/importcmd/RFC2849Sample3.ldif directory/trunks/apacheds/server-tools/src/test/resources/org/apache/directory/server/tools/commands/importcmd/RFC2849Sample3VariousSpacing.ldif directory/trunks/apacheds/server-tools/src/test/resources/org/apache/directory/server/tools/commands/importcmd/import_10_entries.ldif directory/trunks/apacheds/server-tools/src/test/resources/org/apache/directory/server/tools/commands/importcmd/import_1_entry.ldif directory/trunks/apacheds/server-tools/src/test/resources/org/apache/directory/server/tools/commands/importcmd/import_1_entry_on_error.ldif directory/trunks/apacheds/server-tools/src/test/resources/org/apache/directory/server/tools/commands/importcmd/import_2_entries_error_and_ok.ldif Modified: directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/ApachedsTools.java directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/BaseCommand.java directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/ToolCommand.java Modified: directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/ApachedsTools.java URL: http://svn.apache.org/viewvc/directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/ApachedsTools.java?rev=426483&r1=426482&r2=426483&view=diff ============================================================================== --- directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/ApachedsTools.java (original) +++ directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/ApachedsTools.java Fri Jul 28 04:50:40 2006 @@ -16,14 +16,17 @@ */ package org.apache.directory.server.tools; + import java.io.IOException; -import java.net.URL; import java.util.Properties; import org.apache.commons.cli.CommandLine; -import org.apache.directory.server.configuration.ServerStartupConfiguration; -import org.springframework.context.ApplicationContext; -import org.springframework.context.support.FileSystemXmlApplicationContext; +import org.apache.directory.server.tools.execution.BaseToolCommandExecutor; +import org.apache.directory.server.tools.listeners.ExceptionListener; +import org.apache.directory.server.tools.listeners.SysErrListener; +import org.apache.directory.server.tools.listeners.SysOutListener; +import org.apache.directory.server.tools.request.BaseToolCommandCL; +import org.apache.directory.server.tools.util.ListenerParameter; /** @@ -34,10 +37,23 @@ */ public class ApachedsTools { - public static void main( String[] args ) throws Exception + public static void main( String[] args ) { - BaseCommand tools = getInstance(); - + ToolCommandListener outputListener = new SysOutListener(); + ToolCommandListener errorListener = new SysErrListener(); + ToolCommandListener exceptionListener = new ExceptionListener(); + + BaseCommand tools = null; + try + { + tools = getInstance(); + } + catch ( Exception e ) + { + System.err.println( "An error has occurred. Apache DS Tools must quit." + "\nError: " + e.getMessage() ); + System.exit( 1 ); + } + if ( !BaseCommand.hasBannerOption( args ) ) { tools.printBanner(); @@ -71,7 +87,7 @@ System.exit( 0 ); } - ToolCommand cmd = ( ToolCommand ) tools.getCommands().get( command ); + BaseToolCommandCL cmd = ( BaseToolCommandCL ) tools.getCommands().get( command ); if ( cmd == null ) { System.err.println( "Unknown command: " + args[0] ); @@ -91,29 +107,30 @@ cmd.setDebugEnabled( cmdline.hasOption( 'd' ) ); cmd.setVerboseEnabled( cmdline.hasOption( 'v' ) ); cmd.setVersion( tools.getProductVersion() ); - if ( cmdline.getOptionValue( 'i' ) != null ) - { - cmd.setLayout( cmdline.getOptionValue( 'i' ) ); - if ( !cmd.isQuietEnabled() ) - { - System.out.println( "loading settings from: " + cmd.getLayout().getConfigurationFile() ); - } - ApplicationContext factory = null; - URL configUrl = cmd.getLayout().getConfigurationFile().toURL(); - factory = new FileSystemXmlApplicationContext( configUrl.toString() ); - cmd.setConfiguration( ( ServerStartupConfiguration ) factory.getBean( "configuration" ) ); - } - else if ( cmdline.hasOption( 'c' ) ) + + if ( cmdline.hasOption( 'c' ) && ( cmdline.getOptionValue( 'i' ) == null ) ) { System.err.println( "forced configuration load (-c) requires the -i option" ); System.exit( 1 ); } - cmd.execute( cmdline ); + try + { + cmd.execute( cmdline, new ListenerParameter[] + { new ListenerParameter( BaseToolCommandExecutor.OUTPUTLISTENER_PARAMETER, outputListener ), + new ListenerParameter( BaseToolCommandExecutor.ERRORLISTENER_PARAMETER, errorListener ), + new ListenerParameter( BaseToolCommandExecutor.EXCEPTIONLISTENER_PARAMETER, exceptionListener ) } ); + } + catch ( Exception e ) + { + System.err.println( "An error has occurred. Apache DS Tools must quit." + "\nError: " + e.getMessage() ); + System.exit( 1 ); + } } - public static BaseCommand getInstance() throws InstantiationException, IllegalAccessException, ClassNotFoundException + public static BaseCommand getInstance() throws InstantiationException, IllegalAccessException, + ClassNotFoundException { Properties props = new Properties(); try @@ -131,7 +148,7 @@ String productCommand = props.getProperty( "product.command", "apacheds-tools" ); String productBanner = props.getProperty( "product.banner", BaseCommand.BANNER ); String productClass = props.getProperty( "product.class", "org.apache.directory.server.tools.BaseCommand" ); - + BaseCommand baseCommand = ( BaseCommand ) Class.forName( productClass ).newInstance(); baseCommand.setProductBanner( productBanner ); baseCommand.setProductDisplayName( productDisplayName ); Modified: directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/BaseCommand.java URL: http://svn.apache.org/viewvc/directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/BaseCommand.java?rev=426483&r1=426482&r2=426483&view=diff ============================================================================== --- directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/BaseCommand.java (original) +++ directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/BaseCommand.java Fri Jul 28 04:50:40 2006 @@ -16,6 +16,7 @@ */ package org.apache.directory.server.tools; + import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; @@ -33,6 +34,15 @@ import org.apache.commons.cli.ParseException; import org.apache.commons.cli.PosixParser; import org.apache.commons.cli.UnrecognizedOptionException; +import org.apache.directory.server.tools.commands.diagnosticcmd.DiagnosticCommandCL; +import org.apache.directory.server.tools.commands.disconnectnotificationcmd.DisconnectNotificationCommandCL; +import org.apache.directory.server.tools.commands.dumpcmd.DumpCommandCL; +import org.apache.directory.server.tools.commands.exportcmd.ExportCommandCL; +import org.apache.directory.server.tools.commands.gracefulshutdowncmd.GracefulShutdownCommandCL; +import org.apache.directory.server.tools.commands.importcmd.ImportCommandCL; +import org.apache.directory.server.tools.commands.storedprocedurecmd.StoredProcedureCommandCL; +import org.apache.directory.server.tools.request.BaseToolCommandCL; + /** * The primary command base class. @@ -58,32 +68,42 @@ private String productBanner; + public BaseCommand() { init(); } + protected void init() { - ToolCommand command; + BaseToolCommandCL command; - command = new DiagnosticCommand(); + command = new DiagnosticCommandCL(); commands.put( command.getName(), command ); commandsOrdered.add( command.getName() ); - command = new DumpCommand(); + command = new DumpCommandCL(); commands.put( command.getName(), command ); commandsOrdered.add( command.getName() ); - command = new GracefulShutdownCommand(); + command = new GracefulShutdownCommandCL(); commands.put( command.getName(), command ); commandsOrdered.add( command.getName() ); - command = new ImportCommand(); + command = new ImportCommandCL(); commands.put( command.getName(), command ); commandsOrdered.add( command.getName() ); - command = new DisconnectNotificationCommand(); + command = new DisconnectNotificationCommandCL(); + commands.put( command.getName(), command ); + commandsOrdered.add( command.getName() ); + + command = new ExportCommandCL(); + commands.put( command.getName(), command ); + commandsOrdered.add( command.getName() ); + + command = new StoredProcedureCommandCL(); commands.put( command.getName(), command ); commandsOrdered.add( command.getName() ); @@ -103,6 +123,7 @@ getGlobal().addOption( op ); } + public static boolean hasBannerOption( String[] args ) { for ( int ii = 0; ii < args.length; ii++ ) @@ -115,6 +136,7 @@ return false; } + public CommandLine getCommandLine( String command, String[] args ) { Options all = allOptions( command ); @@ -124,30 +146,31 @@ { cmdline = parser.parse( all, args ); } - catch (AlreadySelectedException ase) + catch ( AlreadySelectedException ase ) { System.err.println( "Command line parsing failed for " + command + ". Reason: already selected " - + ase.getMessage() ); + + ase.getMessage() ); System.exit( 1 ); } - catch (MissingArgumentException mae) + catch ( MissingArgumentException mae ) { System.err.println( "Command line parsing failed for " + command + ". Reason: missing argument " - + mae.getMessage() ); + + mae.getMessage() ); System.exit( 1 ); } - catch (MissingOptionException moe) + catch ( MissingOptionException moe ) { - System.err.println( "Command line parsing failed for " + command + ". Reason: missing option " + moe.getMessage() ); + System.err.println( "Command line parsing failed for " + command + ". Reason: missing option " + + moe.getMessage() ); System.exit( 1 ); } - catch (UnrecognizedOptionException uoe) + catch ( UnrecognizedOptionException uoe ) { System.err.println( "Command line parsing failed for " + command + ". Reason: unrecognized option" - + uoe.getMessage() ); + + uoe.getMessage() ); System.exit( 1 ); } - catch (ParseException pe) + catch ( ParseException pe ) { System.err.println( "Command line parsing failed for " + command + ". Reason: " + pe.getClass() ); System.exit( 1 ); @@ -156,6 +179,7 @@ return cmdline; } + public Options allOptions( String command ) { if ( command.equals( "help" ) ) @@ -164,20 +188,21 @@ } Options all = new Options(); - ToolCommand cmd = (ToolCommand) getCommands().get( command ); + BaseToolCommandCL cmd = ( BaseToolCommandCL ) getCommands().get( command ); for ( Iterator ii = getGlobal().getOptions().iterator(); ii.hasNext(); ) { - all.addOption( (Option) ii.next() ); + all.addOption( ( Option ) ii.next() ); } for ( Iterator ii = cmd.getOptions().getOptions().iterator(); ii.hasNext(); ) { - all.addOption( (Option) ii.next() ); + all.addOption( ( Option ) ii.next() ); } return all; } + public static void dumpArgs( String msg, String[] args ) { if ( args.length == 0 ) @@ -197,6 +222,7 @@ System.out.println( buf ); } + public void helpOnCommand( String command ) { if ( command.equals( "help" ) ) @@ -207,7 +233,7 @@ if ( getCommands().containsKey( command ) ) { - ToolCommand cmd = (ToolCommand) getCommands().get( command ); + BaseToolCommandCL cmd = ( BaseToolCommandCL ) getCommands().get( command ); HelpFormatter formatter = new HelpFormatter(); formatter.printHelp( getProductCommand() + " " + cmd + " [options]", cmd.getOptions() ); } @@ -218,11 +244,12 @@ } } + public void printUsage() { HelpFormatter formatter = new HelpFormatter(); - formatter.printHelp( getProductCommand() + " [options]", "\nGlobal options:", getGlobal(), "\nType \"" - + getProductCommand() + " help \" for help on a command." ); + formatter.printHelp( getProductCommand() + " [options]", "\nGlobal options:", getGlobal(), + "\nType \"" + getProductCommand() + " help \" for help on a command." ); System.out.println( "\nAvailable commands:" ); Iterator it = commandsOrdered.iterator(); @@ -238,81 +265,96 @@ } static final String BANNER = " _ _ ____ ____ _____ _ \n" - + " / \\ _ __ __ _ ___| |__ ___| _ \\/ ___| |_ _|__ ___ | |___ \n" - + " / _ \\ | '_ \\ / _` |/ __| '_ \\ / _ \\ | | \\___ \\ | |/ _ \\ / _ \\| / __| \n" - + " / ___ \\| |_) | (_| | (__| | | | __/ |_| |___) | | | (_) | (_) | \\__ \\ \n" - + " /_/ \\_\\ .__/ \\__,_|\\___|_| |_|\\___|____/|____/ |_|\\___/ \\___/|_|___/ \n" - + " |_| \n"; + + " / \\ _ __ __ _ ___| |__ ___| _ \\/ ___| |_ _|__ ___ | |___ \n" + + " / _ \\ | '_ \\ / _` |/ __| '_ \\ / _ \\ | | \\___ \\ | |/ _ \\ / _ \\| / __| \n" + + " / ___ \\| |_) | (_| | (__| | | | __/ |_| |___) | | | (_) | (_) | \\__ \\ \n" + + " /_/ \\_\\ .__/ \\__,_|\\___|_| |_|\\___|____/|____/ |_|\\___/ \\___/|_|___/ \n" + + " |_| \n"; + public void printBanner() { System.out.println( getProductBanner() ); } + public void setProductCommand( String productCommand ) { this.productCommand = productCommand; } + public String getProductCommand() { return productCommand; } + public void setProductVersion( String productVersion ) { this.productVersion = productVersion; } + public String getProductVersion() { return productVersion; } + public void setProductDisplayName( String productDisplayName ) { this.productDisplayName = productDisplayName; } + public String getProductDisplayName() { return productDisplayName; } + public void setProductUrl( String productUrl ) { this.productUrl = productUrl; } + public String getProductUrl() { return productUrl; } + public void setProductBanner( String productBanner ) { this.productBanner = productBanner; } + public String getProductBanner() { return productBanner; } + public void setCommands( Map commands ) { this.commands = commands; } + public Map getCommands() { return commands; } + public void setGlobal( Options global ) { this.global = global; } + public Options getGlobal() { Added: directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/BaseToolCommand.java URL: http://svn.apache.org/viewvc/directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/BaseToolCommand.java?rev=426483&view=auto ============================================================================== --- directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/BaseToolCommand.java (added) +++ directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/BaseToolCommand.java Fri Jul 28 04:50:40 2006 @@ -0,0 +1,149 @@ +/* + * Copyright 2004 The Apache Software Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +package org.apache.directory.server.tools; + + +import java.io.Serializable; + + +/** + * This abstract class defines a ToolCommand, it must be extended by every type of command + */ +public abstract class BaseToolCommand implements ToolCommand +{ + private final String name; + protected int port; + protected String host; + protected String password; + protected String user; + protected String auth; + private boolean debugEnabled = false; + private boolean verboseEnabled = false; + private boolean quietEnabled = false; + private String version; + + // The listeners + protected ToolCommandListener outputListener; + protected ToolCommandListener errorListener; + protected ToolCommandListener exceptionListener; + + + public BaseToolCommand( String name ) + { + this.name = name; + } + + + public String getName() + { + return this.name; + } + + + public String toString() + { + return getName(); + } + + + public void setVersion( String version ) + { + this.version = version; + } + + + public String getVersion() + { + return version; + } + + + public void setDebugEnabled( boolean debugEnabled ) + { + this.debugEnabled = debugEnabled; + } + + + public boolean isDebugEnabled() + { + return debugEnabled; + } + + + public void setVerboseEnabled( boolean verboseEnabled ) + { + this.verboseEnabled = verboseEnabled; + } + + + public boolean isVerboseEnabled() + { + return verboseEnabled; + } + + + public void setQuietEnabled( boolean quietEnabled ) + { + this.quietEnabled = quietEnabled; + } + + + public boolean isQuietEnabled() + { + return quietEnabled; + } + + + /** + * Notifies the Output Listener + * @param o + */ + protected void notifyOutputListener( Serializable o ) + { + if ( this.outputListener != null ) + { + this.outputListener.notify( o ); + } + } + + + /** + * Notifies the Error Listener + * @param o + */ + protected void notifyErrorListener( Serializable o ) + { + if ( this.errorListener != null ) + { + this.errorListener.notify( o ); + } + } + + + /** + * Notifies the Exception Listener + * @param o + */ + protected void notifyExceptionListener( Serializable o ) + { + if ( this.exceptionListener != null ) + { + this.exceptionListener.notify( o ); + } + } + +} Modified: directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/ToolCommand.java URL: http://svn.apache.org/viewvc/directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/ToolCommand.java?rev=426483&r1=426482&r2=426483&view=diff ============================================================================== --- directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/ToolCommand.java (original) +++ directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/ToolCommand.java Fri Jul 28 04:50:40 2006 @@ -17,135 +17,15 @@ package org.apache.directory.server.tools; -import java.io.File; - -import org.apache.commons.cli.CommandLine; -import org.apache.commons.cli.Options; -import org.apache.directory.daemon.InstallationLayout; -import org.apache.directory.server.configuration.ServerStartupConfiguration; - - /** - * Simple base class for tool commands. - * - * @author Apache Directory Project - * @version $Rev$ + * Interface that must be extended by every type of command. */ -public abstract class ToolCommand +public interface ToolCommand { - private final String name; - private boolean debugEnabled = false; - private boolean verboseEnabled = false; - private boolean quietEnabled = false; - private String version; - private InstallationLayout layout; - private ServerStartupConfiguration configuration; - - - protected ToolCommand(String name) - { - this.name = name; - } - - - public abstract void execute( CommandLine cmd ) throws Exception; - - - public abstract Options getOptions(); - - - public String getName() - { - return this.name; - } - - - public void setLayout( File installationDirectory ) - { - this.layout = new InstallationLayout( installationDirectory ); - } - - - public void setLayout( String installationPath ) - { - this.layout = new InstallationLayout( installationPath ); - } - - - public void setLayout( InstallationLayout layout ) - { - this.layout = layout; - } - - - public InstallationLayout getLayout() - { - return layout; - } - - - public void setConfiguration( ServerStartupConfiguration configuration ) - { - this.configuration = configuration; - } - - - public ServerStartupConfiguration getConfiguration() - { - return configuration; - } - - - public void setVersion( String version ) - { - this.version = version; - } - - - public String getVersion() - { - return version; - } - - - public String toString() - { - return getName(); - } - - - public void setDebugEnabled( boolean debugEnabled ) - { - this.debugEnabled = debugEnabled; - } - - - public boolean isDebugEnabled() - { - return debugEnabled; - } - - - public void setVerboseEnabled( boolean verboseEnabled ) - { - this.verboseEnabled = verboseEnabled; - } - - - public boolean isVerboseEnabled() - { - return verboseEnabled; - } - - - public void setQuietEnabled( boolean quietEnabled ) - { - this.quietEnabled = quietEnabled; - } - - - public boolean isQuietEnabled() - { - return quietEnabled; - } + // Default values + public final static int DEFAULT_PORT = 10389; + public final static String DEFAULT_HOST = "localhost"; + public final static String DEFAULT_PASSWORD = "secret"; + public final static String DEFAULT_USER = "uid=admin,ou=system"; + public final static String DEFAULT_AUTH = "simple"; } Added: directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/ToolCommandListener.java URL: http://svn.apache.org/viewvc/directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/ToolCommandListener.java?rev=426483&view=auto ============================================================================== --- directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/ToolCommandListener.java (added) +++ directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/ToolCommandListener.java Fri Jul 28 04:50:40 2006 @@ -0,0 +1,34 @@ +/* + * Copyright 2004 The Apache Software Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +package org.apache.directory.server.tools; + + +import java.io.Serializable; + + +/** + * This interface must be implemented by every Command Listener + * + */ +public interface ToolCommandListener +{ + /** + * Notifies the listener, passing it a Serializable object + * @param o an object + */ + public void notify( Serializable o ); +} Added: directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/commands/diagnosticcmd/DiagnosticCommandCL.java URL: http://svn.apache.org/viewvc/directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/commands/diagnosticcmd/DiagnosticCommandCL.java?rev=426483&view=auto ============================================================================== --- directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/commands/diagnosticcmd/DiagnosticCommandCL.java (added) +++ directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/commands/diagnosticcmd/DiagnosticCommandCL.java Fri Jul 28 04:50:40 2006 @@ -0,0 +1,179 @@ +/* + * Copyright 2004 The Apache Software Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +package org.apache.directory.server.tools.commands.diagnosticcmd; + + +import org.apache.commons.cli.CommandLine; +import org.apache.commons.cli.Option; +import org.apache.commons.cli.Options; +import org.apache.directory.daemon.AvailablePortFinder; +import org.apache.directory.server.tools.execution.ToolCommandExecutorStub; +import org.apache.directory.server.tools.request.BaseToolCommandCL; +import org.apache.directory.server.tools.util.Parameter; + + +/** + * A command to send an extened request which launches a diagnostic UI + * on the server's console. This may not work unless the display is set + * and access is granted to the display (via xhost +). This is especially + * the case when running the server in daemon mode. Usually when running + * the server in debug mode is when you want the diagnostics turned on. + * + * @author Apache Directory Project + * @version $Rev: 379013 $ + */ +public class DiagnosticCommandCL extends BaseToolCommandCL +{ + + public DiagnosticCommandCL() + { + super( "diagnostic" ); + } + + + public void processOptions( CommandLine cmd ) + { + if ( isDebugEnabled() ) + { + System.out.println( "Processing options for launching diagnostic UI ..." ); + } + + // ------------------------------------------------------------------- + // figure out and error check the port value + // ------------------------------------------------------------------- + if ( cmd.hasOption( 'p' ) ) // - user provided port w/ -p takes precedence + { + String val = cmd.getOptionValue( 'p' ); + try + { + port = Integer.parseInt( val ); + } + catch ( NumberFormatException e ) + { + System.err.println( "port value of '" + val + "' is not a number" ); + System.exit( 1 ); + } + + if ( port > AvailablePortFinder.MAX_PORT_NUMBER ) + { + System.err.println( "port value of '" + val + "' is larger than max port number: " + + AvailablePortFinder.MAX_PORT_NUMBER ); + System.exit( 1 ); + } + else if ( port < AvailablePortFinder.MIN_PORT_NUMBER ) + { + System.err.println( "port value of '" + val + "' is smaller than the minimum port number: " + + AvailablePortFinder.MIN_PORT_NUMBER ); + System.exit( 1 ); + } + + if ( isDebugEnabled() ) + { + System.out.println( "port overriden by -p option: " + port ); + } + + parameters.add( new Parameter( DiagnosticCommandExecutor.PORT_PARAMETER, new Integer( port ) ) ); + } + + // ------------------------------------------------------------------- + // figure out the host value + // ------------------------------------------------------------------- + if ( cmd.hasOption( 'h' ) ) + { + host = cmd.getOptionValue( 'h' ); + + if ( isDebugEnabled() ) + { + System.out.println( "host overriden by -h option: " + host ); + } + + parameters.add( new Parameter( DiagnosticCommandExecutor.HOST_PARAMETER, host ) ); + } + + // ------------------------------------------------------------------- + // figure out the password value + // ------------------------------------------------------------------- + if ( cmd.hasOption( 'w' ) ) + { + password = cmd.getOptionValue( 'w' ); + + if ( isDebugEnabled() ) + { + System.out.println( "password overriden by -w option: " + password ); + } + + parameters.add( new Parameter( DiagnosticCommandExecutor.PASSWORD_PARAMETER, password ) ); + } + + // ------------------------------------------------------------------- + // figure out the 'install-path' + // and verify if the -i option is present when the -c option is used + // ------------------------------------------------------------------- + if ( cmd.hasOption( 'i' ) ) + { + parameters + .add( new Parameter( DiagnosticCommandExecutor.INSTALLPATH_PARAMETER, cmd.getOptionValue( 'i' ) ) ); + } + else if ( cmd.hasOption( 'c' ) ) + { + System.err.println( "forced configuration load (-c) requires the -i option" ); + System.exit( 1 ); + } + + // ------------------------------------------------------------------- + // figure out the 'configuration' flag + // ------------------------------------------------------------------- + if ( cmd.hasOption( 'c' ) ) + { + parameters.add( new Parameter( DiagnosticCommandExecutor.CONFIGURATION_PARAMETER, new Boolean( true ) ) ); + } + + // ------------------------------------------------------------------- + // Transform other options into params + // ------------------------------------------------------------------- + parameters.add( new Parameter( DiagnosticCommandExecutor.DEBUG_PARAMETER, new Boolean( isDebugEnabled() ) ) ); + parameters.add( new Parameter( DiagnosticCommandExecutor.QUIET_PARAMETER, new Boolean( isQuietEnabled() ) ) ); + parameters + .add( new Parameter( DiagnosticCommandExecutor.VERBOSE_PARAMETER, new Boolean( isVerboseEnabled() ) ) ); + } + + + public Options getOptions() + { + Options opts = new Options(); + Option op = new Option( "h", "host", true, "server host: defaults to localhost" ); + op.setRequired( false ); + opts.addOption( op ); + op = new Option( "p", "port", true, "server port: defaults to 10389 or server.xml specified port" ); + op.setRequired( false ); + opts.addOption( op ); + op = new Option( "w", "password", true, "the apacheds administrator's password: defaults to secret" ); + op.setRequired( false ); + opts.addOption( op ); + op = new Option( "i", "install-path", true, "path to apacheds installation directory" ); + op.setRequired( false ); + opts.addOption( op ); + return opts; + } + + + public ToolCommandExecutorStub getStub() + { + return new DiagnosticCommandExecutorStub(); + } + +} Added: directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/commands/diagnosticcmd/DiagnosticCommandExecutor.java URL: http://svn.apache.org/viewvc/directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/commands/diagnosticcmd/DiagnosticCommandExecutor.java?rev=426483&view=auto ============================================================================== --- directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/commands/diagnosticcmd/DiagnosticCommandExecutor.java (added) +++ directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/commands/diagnosticcmd/DiagnosticCommandExecutor.java Fri Jul 28 04:50:40 2006 @@ -0,0 +1,266 @@ +/* + * Copyright 2004 The Apache Software Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +package org.apache.directory.server.tools.commands.diagnosticcmd; + + +import java.net.MalformedURLException; +import java.net.URL; +import java.util.HashMap; +import java.util.Hashtable; +import java.util.Map; + +import javax.naming.ldap.InitialLdapContext; +import javax.naming.ldap.LdapContext; + +import org.apache.directory.server.configuration.ServerStartupConfiguration; +import org.apache.directory.server.tools.ToolCommandListener; +import org.apache.directory.server.tools.execution.BaseToolCommandExecutor; +import org.apache.directory.server.tools.util.ListenerParameter; +import org.apache.directory.server.tools.util.Parameter; +import org.apache.directory.shared.ldap.message.extended.LaunchDiagnosticUiRequest; +import org.springframework.context.ApplicationContext; +import org.springframework.context.support.FileSystemXmlApplicationContext; + + +/** + * This is the Executor Class of the Diagnostic Command. + * + * The command can be called using the 'execute' method. + */ +public class DiagnosticCommandExecutor extends BaseToolCommandExecutor +{ + public DiagnosticCommandExecutor() + { + super( "diagnostic" ); + } + + + /** + * Executes the command. + *

+ * Use the following Parameters and ListenerParameters to call the command. + *

+ * Parameters :

    + *
  • "HOST_PARAMETER" with a value of type 'String', representing server host
  • + *
  • "PORT_PARAMETER" with a value of type 'Integer', representing server port
  • + *
  • "PASSWORD_PARAMETER" with a value of type 'String', representing server admin password
  • + *
  • "DEBUG_PARAMETER" with a value of type 'Boolean', true to enable debug
  • + *
  • "QUIET_PARAMETER" with a value of type 'Boolean', true to enable quiet
  • + *
  • "VERBOSE_PARAMETER" with a value of type 'Boolean', true to enable verbose
  • + *
  • "INSTALLPATH_PARAMETER" with a value of type 'String', representing the path to installation + * directory
  • + *
+ *
+ * ListenersParameters :
    + *
  • "OUTPUTLISTENER_PARAMETER", a listener that will receive all output messages. It returns + * messages as a String.
  • + *
  • "ERRORLISTENER_PARAMETER", a listener that will receive all error messages. It returns messages + * as a String.
  • + *
  • "EXCEPTIONLISTENER_PARAMETER", a listener that will receive all exception(s) raised. It returns + * Exceptions.
  • + *
+ * Note: "HOST_PARAMETER", "PORT_PARAMETER" and "PASSWORD_PARAMETER" are required. + */ + public void execute( Parameter[] params, ListenerParameter[] listeners ) + { + processParameters( params ); + processListeners( listeners ); + + try + { + execute(); + } + catch ( Exception e ) + { + notifyExceptionListener( e ); + } + } + + + private void execute() throws Exception + { + if ( isDebugEnabled() ) + { + notifyOutputListener( "Parameters for LaunchDiagnosticUI extended request:" ); + notifyOutputListener( "port = " + port ); + notifyOutputListener( "host = " + host ); + notifyOutputListener( "password = " + password ); + } + + Hashtable env = new Hashtable(); + env.put( "java.naming.factory.initial", "com.sun.jndi.ldap.LdapCtxFactory" ); + env.put( "java.naming.provider.url", "ldap://" + host + ":" + port ); + env.put( "java.naming.security.principal", "uid=admin,ou=system" ); + env.put( "java.naming.security.credentials", password ); + env.put( "java.naming.security.authentication", "simple" ); + + LdapContext ctx = new InitialLdapContext( env, null ); + if ( isDebugEnabled() ) + { + notifyOutputListener( "Connection to the server established.\n" + "Sending extended request ... " ); + } + ctx.extendedOperation( new LaunchDiagnosticUiRequest( 3 ) ); + ctx.close(); + } + + + private void processParameters( Parameter[] params ) + { + Map parameters = new HashMap(); + for ( int i = 0; i < params.length; i++ ) + { + Parameter parameter = params[i]; + parameters.put( parameter.getName(), parameter.getValue() ); + } + + // Quiet param + Boolean quietParam = ( Boolean ) parameters.get( QUIET_PARAMETER ); + if ( quietParam != null ) + { + setQuietEnabled( quietParam.booleanValue() ); + } + + // Debug param + Boolean debugParam = ( Boolean ) parameters.get( DEBUG_PARAMETER ); + if ( debugParam != null ) + { + setDebugEnabled( debugParam.booleanValue() ); + } + + // Verbose param + Boolean verboseParam = ( Boolean ) parameters.get( VERBOSE_PARAMETER ); + if ( verboseParam != null ) + { + setVerboseEnabled( verboseParam.booleanValue() ); + } + + // Install-path param + String installPathParam = ( String ) parameters.get( INSTALLPATH_PARAMETER ); + if ( installPathParam != null ) + { + try + { + setLayout( installPathParam ); + if ( !isQuietEnabled() ) + { + notifyOutputListener( "loading settings from: " + getLayout().getConfigurationFile() ); + } + ApplicationContext factory = null; + URL configUrl; + + configUrl = getLayout().getConfigurationFile().toURL(); + factory = new FileSystemXmlApplicationContext( configUrl.toString() ); + setConfiguration( ( ServerStartupConfiguration ) factory.getBean( "configuration" ) ); + } + catch ( MalformedURLException e ) + { + notifyErrorListener( e.getMessage() ); + notifyExceptionListener( e ); + } + } + + // Host param + String hostParam = ( String ) parameters.get( HOST_PARAMETER ); + if ( hostParam != null ) + { + host = hostParam; + } + else + { + host = DEFAULT_HOST; + + if ( isDebugEnabled() ) + { + notifyOutputListener( "host set to default: " + host ); + } + } + + // Port param + Integer portParam = ( Integer ) parameters.get( PORT_PARAMETER ); + if ( portParam != null ) + { + port = portParam.intValue(); + } + else if ( getConfiguration() != null ) + { + port = getConfiguration().getLdapPort(); + + if ( isDebugEnabled() ) + { + notifyOutputListener( "port overriden by server.xml configuration: " + port ); + } + } + else + { + port = DEFAULT_PORT; + + if ( isDebugEnabled() ) + { + notifyOutputListener( "port set to default: " + port ); + } + } + + // Password param + String passwordParam = ( String ) parameters.get( PASSWORD_PARAMETER ); + if ( passwordParam != null ) + { + password = passwordParam; + } + else + { + password = DEFAULT_PASSWORD; + + if ( isDebugEnabled() ) + { + notifyOutputListener( "password set to default: " + password ); + } + } + } + + + private void processListeners( ListenerParameter[] listeners ) + { + Map parameters = new HashMap(); + for ( int i = 0; i < listeners.length; i++ ) + { + ListenerParameter parameter = listeners[i]; + parameters.put( parameter.getName(), parameter.getListener() ); + } + + // OutputListener param + ToolCommandListener outputListener = ( ToolCommandListener ) parameters.get( OUTPUTLISTENER_PARAMETER ); + if ( outputListener != null ) + { + this.outputListener = outputListener; + } + + // ErrorListener param + ToolCommandListener errorListener = ( ToolCommandListener ) parameters.get( ERRORLISTENER_PARAMETER ); + if ( errorListener != null ) + { + this.errorListener = errorListener; + } + + // ExceptionListener param + ToolCommandListener exceptionListener = ( ToolCommandListener ) parameters.get( EXCEPTIONLISTENER_PARAMETER ); + if ( exceptionListener != null ) + { + this.exceptionListener = exceptionListener; + } + } + +} Added: directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/commands/diagnosticcmd/DiagnosticCommandExecutorSkeleton.java URL: http://svn.apache.org/viewvc/directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/commands/diagnosticcmd/DiagnosticCommandExecutorSkeleton.java?rev=426483&view=auto ============================================================================== --- directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/commands/diagnosticcmd/DiagnosticCommandExecutorSkeleton.java (added) +++ directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/commands/diagnosticcmd/DiagnosticCommandExecutorSkeleton.java Fri Jul 28 04:50:40 2006 @@ -0,0 +1,35 @@ +/* + * Copyright 2004 The Apache Software Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +package org.apache.directory.server.tools.commands.diagnosticcmd; + + +import org.apache.directory.server.tools.execution.BaseToolCommandExecutor; +import org.apache.directory.server.tools.execution.ToolCommandExecutorSkeleton; +import org.apache.directory.server.tools.util.ListenerParameter; +import org.apache.directory.server.tools.util.Parameter; + + +public class DiagnosticCommandExecutorSkeleton implements ToolCommandExecutorSkeleton +{ + + public void execute( Parameter[] params, ListenerParameter[] listeners ) + { + BaseToolCommandExecutor executor = new DiagnosticCommandExecutor(); + + executor.execute( params, listeners ); + } +} Added: directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/commands/diagnosticcmd/DiagnosticCommandExecutorStub.java URL: http://svn.apache.org/viewvc/directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/commands/diagnosticcmd/DiagnosticCommandExecutorStub.java?rev=426483&view=auto ============================================================================== --- directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/commands/diagnosticcmd/DiagnosticCommandExecutorStub.java (added) +++ directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/commands/diagnosticcmd/DiagnosticCommandExecutorStub.java Fri Jul 28 04:50:40 2006 @@ -0,0 +1,35 @@ +/* + * Copyright 2004 The Apache Software Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +package org.apache.directory.server.tools.commands.diagnosticcmd; + + +import org.apache.directory.server.tools.execution.ToolCommandExecutorSkeleton; +import org.apache.directory.server.tools.execution.ToolCommandExecutorStub; +import org.apache.directory.server.tools.util.ListenerParameter; +import org.apache.directory.server.tools.util.Parameter; + + +public class DiagnosticCommandExecutorStub implements ToolCommandExecutorStub +{ + + public void execute( Parameter[] params, ListenerParameter[] listeners ) throws Exception + { + ToolCommandExecutorSkeleton skelelton = new DiagnosticCommandExecutorSkeleton(); + + skelelton.execute( params, listeners ); + } +} Added: directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/commands/disconnectnotificationcmd/DisconnectNotificationCommandCL.java URL: http://svn.apache.org/viewvc/directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/commands/disconnectnotificationcmd/DisconnectNotificationCommandCL.java?rev=426483&view=auto ============================================================================== --- directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/commands/disconnectnotificationcmd/DisconnectNotificationCommandCL.java (added) +++ directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/commands/disconnectnotificationcmd/DisconnectNotificationCommandCL.java Fri Jul 28 04:50:40 2006 @@ -0,0 +1,199 @@ +/* + * Copyright 2004 The Apache Software Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +package org.apache.directory.server.tools.commands.disconnectnotificationcmd; + + +import org.apache.commons.cli.CommandLine; +import org.apache.commons.cli.Option; +import org.apache.commons.cli.Options; +import org.apache.directory.daemon.AvailablePortFinder; +import org.apache.directory.server.tools.execution.ToolCommandExecutorStub; +import org.apache.directory.server.tools.request.BaseToolCommandCL; +import org.apache.directory.server.tools.util.Parameter; + + +/** + * Responds to unsolicited notifications by launching an external process. Also + * reconnects to the server an launches another process to notify that the server + * is back up. + * + * @author Apache Directory Project + * @version $Rev: 379013 $ + */ +public class DisconnectNotificationCommandCL extends BaseToolCommandCL +{ + private String bindDN = "uid=admin,ou=system"; + + + public DisconnectNotificationCommandCL() + { + super( "notifications" ); + } + + + public void processOptions( CommandLine cmd ) + { + if ( isDebugEnabled() ) + { + System.out.println( "Processing options for launching diagnostic UI ..." ); + } + + // ------------------------------------------------------------------- + // figure out and error check the port value + // ------------------------------------------------------------------- + if ( cmd.hasOption( 'p' ) ) // - user provided port w/ -p takes precedence + { + String val = cmd.getOptionValue( 'p' ); + try + { + port = Integer.parseInt( val ); + } + catch ( NumberFormatException e ) + { + System.err.println( "port value of '" + val + "' is not a number" ); + System.exit( 1 ); + } + + if ( port > AvailablePortFinder.MAX_PORT_NUMBER ) + { + System.err.println( "port value of '" + val + "' is larger than max port number: " + + AvailablePortFinder.MAX_PORT_NUMBER ); + System.exit( 1 ); + } + else if ( port < AvailablePortFinder.MIN_PORT_NUMBER ) + { + System.err.println( "port value of '" + val + "' is smaller than the minimum port number: " + + AvailablePortFinder.MIN_PORT_NUMBER ); + System.exit( 1 ); + } + + if ( isDebugEnabled() ) + { + System.out.println( "port overriden by -p option: " + port ); + } + + parameters.add( new Parameter( DisconnectNotificationCommandExecutor.PORT_PARAMETER, new Integer( port ) ) ); + } + + // ------------------------------------------------------------------- + // figure out the host value + // ------------------------------------------------------------------- + if ( cmd.hasOption( 'h' ) ) + { + host = cmd.getOptionValue( 'h' ); + + if ( isDebugEnabled() ) + { + System.out.println( "host overriden by -h option: " + host ); + } + + parameters.add( new Parameter( DisconnectNotificationCommandExecutor.HOST_PARAMETER, host ) ); + } + + // ------------------------------------------------------------------- + // figure out the password value + // ------------------------------------------------------------------- + if ( cmd.hasOption( 'w' ) ) + { + password = cmd.getOptionValue( 'w' ); + + if ( isDebugEnabled() ) + { + System.out.println( "password overriden by -w option: " + password ); + } + + parameters.add( new Parameter( DisconnectNotificationCommandExecutor.PASSWORD_PARAMETER, password ) ); + } + + // ------------------------------------------------------------------- + // figure out the binddn value + // ------------------------------------------------------------------- + if ( cmd.hasOption( 'u' ) ) + { + bindDN = cmd.getOptionValue( 'u' ); + + if ( isDebugEnabled() ) + { + System.out.println( "binddn overriden by -u option: " + bindDN ); + } + + parameters.add( new Parameter( DisconnectNotificationCommandExecutor.BINDDN_PARAMETER, bindDN ) ); + } + + // ------------------------------------------------------------------- + // figure out the 'install-path' + // and verify if the -i option is present when the -c option is used + // ------------------------------------------------------------------- + if ( cmd.hasOption( 'i' ) ) + { + parameters.add( new Parameter( DisconnectNotificationCommandExecutor.INSTALLPATH_PARAMETER, cmd + .getOptionValue( 'i' ) ) ); + } + else if ( cmd.hasOption( 'c' ) ) + { + System.err.println( "forced configuration load (-c) requires the -i option" ); + System.exit( 1 ); + } + + // ------------------------------------------------------------------- + // figure out the 'configuration' flag + // ------------------------------------------------------------------- + if ( cmd.hasOption( 'c' ) ) + { + parameters.add( new Parameter( DisconnectNotificationCommandExecutor.CONFIGURATION_PARAMETER, new Boolean( + true ) ) ); + } + + // ------------------------------------------------------------------- + // Transform other options into params + // ------------------------------------------------------------------- + parameters.add( new Parameter( DisconnectNotificationCommandExecutor.DEBUG_PARAMETER, new Boolean( + isDebugEnabled() ) ) ); + parameters.add( new Parameter( DisconnectNotificationCommandExecutor.QUIET_PARAMETER, new Boolean( + isQuietEnabled() ) ) ); + parameters.add( new Parameter( DisconnectNotificationCommandExecutor.VERBOSE_PARAMETER, new Boolean( + isVerboseEnabled() ) ) ); + } + + + public Options getOptions() + { + Options opts = new Options(); + Option op = new Option( "h", "host", true, "server host: defaults to localhost" ); + op.setRequired( false ); + opts.addOption( op ); + op = new Option( "p", "port", true, "server port: defaults to 10389 or server.xml specified port" ); + op.setRequired( false ); + opts.addOption( op ); + op = new Option( "w", "password", true, "the apacheds administrator's password: defaults to secret" ); + op.setRequired( false ); + opts.addOption( op ); + op = new Option( "u", "binddn", true, "an apacheds user's dn: defaults to " + bindDN ); + op.setRequired( false ); + opts.addOption( op ); + op = new Option( "i", "install-path", true, "path to apacheds installation directory" ); + op.setRequired( false ); + opts.addOption( op ); + return opts; + } + + + public ToolCommandExecutorStub getStub() + { + return new DisconnectNotificationCommandExecutorStub(); + } +} Added: directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/commands/disconnectnotificationcmd/DisconnectNotificationCommandExecutor.java URL: http://svn.apache.org/viewvc/directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/commands/disconnectnotificationcmd/DisconnectNotificationCommandExecutor.java?rev=426483&view=auto ============================================================================== --- directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/commands/disconnectnotificationcmd/DisconnectNotificationCommandExecutor.java (added) +++ directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/commands/disconnectnotificationcmd/DisconnectNotificationCommandExecutor.java Fri Jul 28 04:50:40 2006 @@ -0,0 +1,383 @@ +/* + * Copyright 2004 The Apache Software Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +package org.apache.directory.server.tools.commands.disconnectnotificationcmd; + + +import java.net.MalformedURLException; +import java.net.URL; +import java.util.HashMap; +import java.util.Hashtable; +import java.util.Map; + +import javax.naming.NamingException; +import javax.naming.directory.SearchControls; +import javax.naming.event.EventContext; +import javax.naming.event.NamingExceptionEvent; +import javax.naming.ldap.InitialLdapContext; +import javax.naming.ldap.LdapContext; +import javax.naming.ldap.UnsolicitedNotification; +import javax.naming.ldap.UnsolicitedNotificationEvent; +import javax.naming.ldap.UnsolicitedNotificationListener; + +import org.apache.directory.server.configuration.ServerStartupConfiguration; +import org.apache.directory.server.tools.ToolCommandListener; +import org.apache.directory.server.tools.execution.BaseToolCommandExecutor; +import org.apache.directory.server.tools.util.ListenerParameter; +import org.apache.directory.server.tools.util.Parameter; +import org.apache.directory.shared.ldap.message.extended.GracefulDisconnect; +import org.apache.directory.shared.ldap.message.extended.NoticeOfDisconnect; +import org.springframework.context.ApplicationContext; +import org.springframework.context.support.FileSystemXmlApplicationContext; + + +/** + * This is the Executor Class of the Disconnect Notification Command. + * + * The command can be called using the 'execute' method. + */ +public class DisconnectNotificationCommandExecutor extends BaseToolCommandExecutor implements + UnsolicitedNotificationListener +{ + // Additional Parameter + public static final String BINDDN_PARAMETER = "bindDN"; + + private String bindDN; + public final static String DEFAULT_BINDDN = "uid=admin,ou=system"; + UnsolicitedNotification notification; + boolean canceled = false; + + + public DisconnectNotificationCommandExecutor() + { + super( "notifications" ); + } + + + /** + * Executes the command. + *

+ * Use the following Parameters and ListenerParameters to call the command. + *

+ * Parameters :

    + *
  • "HOST_PARAMETER" with a value of type 'String', representing server host
  • + *
  • "PORT_PARAMETER" with a value of type 'Integer', representing server port
  • + *
  • "BINDDN_PARAMETER" with a value of type 'String', representing an apacheds user's dn
  • + *
  • "PASSWORD_PARAMETER" with a value of type 'String', representing user password
  • + *
  • "DEBUG_PARAMETER" with a value of type 'Boolean', true to enable debug
  • + *
  • "QUIET_PARAMETER" with a value of type 'Boolean', true to enable quiet
  • + *
  • "VERBOSE_PARAMETER" with a value of type 'Boolean', true to enable verbose
  • + *
  • "INSTALLPATH_PARAMETER" with a value of type 'String', representing the path to installation + * directory
  • + *
  • "CONFIGURATION_PARAMETER" with a value of type "Boolean"
  • + *
+ *
+ * ListenersParameters :
    + *
  • "OUTPUTLISTENER_PARAMETER", a listener that will receive all output messages. It returns + * messages as a String.
  • + *
  • "ERRORLISTENER_PARAMETER", a listener that will receive all error messages. It returns messages + * as a String.
  • + *
  • "EXCEPTIONLISTENER_PARAMETER", a listener that will receive all exception(s) raised. It returns + * Exceptions.
  • + *
+ * Note: "HOST_PARAMETER", "PORT_PARAMETER", "BINDDN_PARAMETER" and "PASSWORD_PARAMETER" are required. + */ + public void execute( Parameter[] params, ListenerParameter[] listeners ) + { + processParameters( params ); + processListeners( listeners ); + + try + { + execute(); + } + catch ( Exception e ) + { + notifyExceptionListener( e ); + } + } + + + private void execute() throws Exception + { + Hashtable env = new Hashtable(); + env.put( "java.naming.factory.initial", "com.sun.jndi.ldap.LdapCtxFactory" ); + env.put( "java.naming.provider.url", "ldap://" + host + ":" + port ); + env.put( "java.naming.security.principal", bindDN ); + env.put( "java.naming.security.credentials", password ); + env.put( "java.naming.security.authentication", "simple" ); + + LdapContext ctx = new InitialLdapContext( env, null ); + ctx = ctx.newInstance( null ); + UnsolicitedNotificationListener listener = new DisconnectNotificationCommandExecutor(); + ( ( EventContext ) ctx ).addNamingListener( "", SearchControls.SUBTREE_SCOPE, listener ); + + notifyOutputListener( "Listening for notifications." ); + notifyOutputListener( "Press any key to terminate." ); + System.in.read(); + ctx.close(); + notifyOutputListener( "Process terminated!!!" ); + } + + + private void processParameters( Parameter[] params ) + { + Map parameters = new HashMap(); + for ( int i = 0; i < params.length; i++ ) + { + Parameter parameter = params[i]; + parameters.put( parameter.getName(), parameter.getValue() ); + } + + // Quiet param + Boolean quietParam = ( Boolean ) parameters.get( QUIET_PARAMETER ); + if ( quietParam != null ) + { + setQuietEnabled( quietParam.booleanValue() ); + } + + // Debug param + Boolean debugParam = ( Boolean ) parameters.get( DEBUG_PARAMETER ); + if ( debugParam != null ) + { + setDebugEnabled( debugParam.booleanValue() ); + } + + // Verbose param + Boolean verboseParam = ( Boolean ) parameters.get( VERBOSE_PARAMETER ); + if ( verboseParam != null ) + { + setVerboseEnabled( verboseParam.booleanValue() ); + } + + // Install-path param + String installPathParam = ( String ) parameters.get( INSTALLPATH_PARAMETER ); + if ( installPathParam != null ) + { + try + { + setLayout( installPathParam ); + if ( !isQuietEnabled() ) + { + notifyOutputListener( "loading settings from: " + getLayout().getConfigurationFile() ); + } + ApplicationContext factory = null; + URL configUrl; + + configUrl = getLayout().getConfigurationFile().toURL(); + factory = new FileSystemXmlApplicationContext( configUrl.toString() ); + setConfiguration( ( ServerStartupConfiguration ) factory.getBean( "configuration" ) ); + } + catch ( MalformedURLException e ) + { + notifyErrorListener( e.getMessage() ); + notifyExceptionListener( e ); + } + } + + // Host param + String hostParam = ( String ) parameters.get( HOST_PARAMETER ); + if ( hostParam != null ) + { + host = hostParam; + } + else + { + host = DEFAULT_HOST; + + if ( isDebugEnabled() ) + { + notifyOutputListener( "host set to default: " + host ); + } + } + + // Port param + Integer portParam = ( Integer ) parameters.get( PORT_PARAMETER ); + if ( portParam != null ) + { + port = portParam.intValue(); + } + else if ( getConfiguration() != null ) + { + port = getConfiguration().getLdapPort(); + + if ( isDebugEnabled() ) + { + notifyOutputListener( "port overriden by server.xml configuration: " + port ); + } + } + else + { + port = DEFAULT_PORT; + + if ( isDebugEnabled() ) + { + notifyOutputListener( "port set to default: " + port ); + } + } + + // Password param + String passwordParam = ( String ) parameters.get( PASSWORD_PARAMETER ); + if ( passwordParam != null ) + { + password = passwordParam; + } + else + { + password = DEFAULT_PASSWORD; + + if ( isDebugEnabled() ) + { + notifyOutputListener( "password set to default: " + password ); + } + } + + // BindDn param + String bindDNParam = ( String ) parameters.get( BINDDN_PARAMETER ); + if ( bindDNParam != null ) + { + bindDN = bindDNParam; + } + else + { + bindDN = DEFAULT_BINDDN; + + if ( isDebugEnabled() ) + { + notifyOutputListener( "binddn set to default: " + bindDN ); + } + } + } + + + private void processListeners( ListenerParameter[] listeners ) + { + Map parameters = new HashMap(); + for ( int i = 0; i < listeners.length; i++ ) + { + ListenerParameter parameter = listeners[i]; + parameters.put( parameter.getName(), parameter.getListener() ); + } + + // OutputListener param + ToolCommandListener outputListener = ( ToolCommandListener ) parameters.get( OUTPUTLISTENER_PARAMETER ); + if ( outputListener != null ) + { + this.outputListener = outputListener; + } + + // ErrorListener param + ToolCommandListener errorListener = ( ToolCommandListener ) parameters.get( ERRORLISTENER_PARAMETER ); + if ( errorListener != null ) + { + this.errorListener = errorListener; + } + + // ExceptionListener param + ToolCommandListener exceptionListener = ( ToolCommandListener ) parameters.get( EXCEPTIONLISTENER_PARAMETER ); + if ( exceptionListener != null ) + { + this.exceptionListener = exceptionListener; + } + } + + + public void notificationReceived( UnsolicitedNotificationEvent evt ) + { + notification = evt.getNotification(); + + if ( notification.getID().equals( NoticeOfDisconnect.EXTENSION_OID ) ) + { + notifyOutputListener( "\nRecieved NoticeOfDisconnect: " + NoticeOfDisconnect.EXTENSION_OID ); + notifyOutputListener( "Expect to loose this connection without further information." ); + canceled = true; + } + else if ( notification.getID().equals( GracefulDisconnect.EXTENSION_OID ) ) + { + notifyOutputListener( "Recieved GracefulDisconnect: " + GracefulDisconnect.EXTENSION_OID ); + GracefulDisconnect gd = null; + try { + gd = new GracefulDisconnect( notification.getEncodedValue() ); + } catch (NamingException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + notifyOutputListener( "LDAP server will shutdown in " + gd.getDelay() + " seconds." ); + notifyOutputListener( "LDAP server will be back online in " + gd.getTimeOffline() + " minutes." ); + + if ( gd.getDelay() > 0 ) + { + Thread t = new Thread( new Counter( gd.getDelay() ) ); + t.start(); + } + } + else + { + notifyOutputListener( "Unknown event recieved with OID: " + evt.getNotification().getID() ); + } + } + + + public void namingExceptionThrown( NamingExceptionEvent evt ) + { + canceled = true; + notifyOutputListener( "Got an excption event: " + evt.getException().getMessage() ); + notifyOutputListener( "Process shutting down abruptly." ); + notifyExceptionListener( evt ); + } + + class Counter implements Runnable + { + int delay; + + + Counter( int delay ) + { + this.delay = delay; + } + + + public void run() + { + notifyOutputListener( "Starting countdown until server shutdown:" ); + notifyOutputListener( "[" ); + long delayMillis = delay * 1000 - 1000; // 1000 is for setup costs + long startTime = System.currentTimeMillis(); + while ( System.currentTimeMillis() - startTime < delayMillis && !canceled ) + { + try + { + Thread.sleep( 1000 ); + } + catch ( InterruptedException e ) + { + } + notifyOutputListener( "." ); + } + + if ( canceled ) + { + notifyOutputListener( " -- countdown canceled -- " ); + } + else + { + notifyOutputListener( "]" ); + notifyOutputListener( "Client shutting down gracefully." ); + return; + } + } + } +} Added: directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/commands/disconnectnotificationcmd/DisconnectNotificationCommandExecutorSkeleton.java URL: http://svn.apache.org/viewvc/directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/commands/disconnectnotificationcmd/DisconnectNotificationCommandExecutorSkeleton.java?rev=426483&view=auto ============================================================================== --- directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/commands/disconnectnotificationcmd/DisconnectNotificationCommandExecutorSkeleton.java (added) +++ directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/commands/disconnectnotificationcmd/DisconnectNotificationCommandExecutorSkeleton.java Fri Jul 28 04:50:40 2006 @@ -0,0 +1,36 @@ +/* + * Copyright 2004 The Apache Software Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +package org.apache.directory.server.tools.commands.disconnectnotificationcmd; + + +import org.apache.directory.server.tools.execution.ToolCommandExecutor; +import org.apache.directory.server.tools.execution.ToolCommandExecutorSkeleton; +import org.apache.directory.server.tools.util.ListenerParameter; +import org.apache.directory.server.tools.util.Parameter; + + +public class DisconnectNotificationCommandExecutorSkeleton implements ToolCommandExecutorSkeleton +{ + + public void execute( Parameter[] params, ListenerParameter[] listeners ) + { + ToolCommandExecutor executor = new DisconnectNotificationCommandExecutor(); + + executor.execute( params, listeners ); + } + +} Added: directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/commands/disconnectnotificationcmd/DisconnectNotificationCommandExecutorStub.java URL: http://svn.apache.org/viewvc/directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/commands/disconnectnotificationcmd/DisconnectNotificationCommandExecutorStub.java?rev=426483&view=auto ============================================================================== --- directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/commands/disconnectnotificationcmd/DisconnectNotificationCommandExecutorStub.java (added) +++ directory/trunks/apacheds/server-tools/src/main/java/org/apache/directory/server/tools/commands/disconnectnotificationcmd/DisconnectNotificationCommandExecutorStub.java Fri Jul 28 04:50:40 2006 @@ -0,0 +1,36 @@ +/* + * Copyright 2004 The Apache Software Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +package org.apache.directory.server.tools.commands.disconnectnotificationcmd; + + +import org.apache.directory.server.tools.execution.ToolCommandExecutorSkeleton; +import org.apache.directory.server.tools.execution.ToolCommandExecutorStub; +import org.apache.directory.server.tools.util.ListenerParameter; +import org.apache.directory.server.tools.util.Parameter; + + +public class DisconnectNotificationCommandExecutorStub implements ToolCommandExecutorStub +{ + + public void execute( Parameter[] params, ListenerParameter[] listeners ) throws Exception + { + ToolCommandExecutorSkeleton skeleton = new DisconnectNotificationCommandExecutorSkeleton(); + + skeleton.execute( params, listeners ); + } + +}