View Javadoc
1 /*** 2 * Redistribution and use of this software and associated documentation 3 * ("Software"), with or without modification, are permitted provided 4 * that the following conditions are met: 5 * 6 * 1. Redistributions of source code must retain copyright 7 * statements and notices. Redistributions must also contain a 8 * copy of this document. 9 * 10 * 2. Redistributions in binary form must reproduce the 11 * above copyright notice, this list of conditions and the 12 * following disclaimer in the documentation and/or other 13 * materials provided with the distribution. 14 * 15 * 3. The name "Exolab" must not be used to endorse or promote 16 * products derived from this Software without prior written 17 * permission of Exoffice Technologies. For written permission, 18 * please contact tma@netspace.net.au. 19 * 20 * 4. Products derived from this Software may not be called "Exolab" 21 * nor may "Exolab" appear in their names without prior written 22 * permission of Exoffice Technologies. Exolab is a registered 23 * trademark of Exoffice Technologies. 24 * 25 * 5. Due credit should be given to the Exolab Project 26 * (http://www.exolab.org/). 27 * 28 * THIS SOFTWARE IS PROVIDED BY EXOFFICE TECHNOLOGIES AND CONTRIBUTORS 29 * ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT 30 * NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 31 * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 32 * EXOFFICE TECHNOLOGIES OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 33 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 34 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 35 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 36 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 37 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 38 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 39 * OF THE POSSIBILITY OF SUCH DAMAGE. 40 * 41 * Copyright 2001-2004 (C) Exoffice Technologies Inc. All Rights Reserved. 42 * 43 * $Id: Admin.java,v 1.3 2004/01/31 13:44:24 tanderson Exp $ 44 */ 45 package org.exolab.jmscts.core; 46 47 import java.rmi.Naming; 48 49 import org.apache.commons.cli.CommandLine; 50 import org.apache.commons.cli.CommandLineParser; 51 import org.apache.commons.cli.Options; 52 import org.apache.commons.cli.GnuParser; 53 54 import org.exolab.jmscts.core.service.RemoteService; 55 import org.exolab.jmscts.core.service.Snapshot; 56 57 58 /*** 59 * This class enables the state of a running compliance suite to be captured, 60 * and the suite to be terminated. 61 * 62 * @version $Revision: 1.3 $ $Date: 2004/01/31 13:44:24 $ 63 * @author <a href="mailto:tma@netspace.net.au">Tim Anderson</a> 64 */ 65 public final class Admin { 66 67 /*** 68 * The snapshot file argument 69 */ 70 private static final String SNAPSHOT = "snapshot"; 71 72 /*** 73 * The port argument 74 */ 75 private static final String PORT = "port"; 76 77 /*** 78 * The stop option 79 */ 80 private static final String STOP = "stop"; 81 82 /*** 83 * The abort option 84 */ 85 private static final String ABORT = "abort"; 86 87 88 /*** 89 * Prevent construction of utility class 90 */ 91 private Admin() { 92 } 93 94 /*** 95 * Main line for the admin tool 96 * 97 * @param args command line arguments 98 * @throws Exception for any error 99 */ 100 public static void main(String[] args) throws Exception { 101 Options options = new Options(); 102 options.addOption(SNAPSHOT, true, "snapshot the current test state"); 103 options.addOption(STOP, false, "stop a running compliance test"); 104 options.addOption(ABORT, false, "abort a running compliance test"); 105 options.addOption( 106 PORT, true, "use port to connect to the compliance test"); 107 108 CommandLineParser parser = new GnuParser(); 109 CommandLine commands = parser.parse(options, args); 110 111 String path = commands.getOptionValue(SNAPSHOT); 112 String port = commands.getOptionValue( 113 PORT, JMSTestRunner.DEFAULT_PORT); 114 115 if (path != null) { 116 String name = getName(port, "Snapshot"); 117 Snapshot server = (Snapshot) Naming.lookup(name); 118 server.snapshot(path); 119 } else if (commands.hasOption(STOP)) { 120 String name = getName(port, "Terminator"); 121 RemoteService server = (RemoteService) Naming.lookup(name); 122 server.stop(); 123 } else if (commands.hasOption(ABORT)) { 124 String name = getName(port, "Terminator"); 125 RemoteService server = (RemoteService) Naming.lookup(name); 126 server.abort(); 127 } else { 128 usage(); 129 } 130 } 131 132 /*** 133 * Prints usage for the tool 134 */ 135 private static void usage() { 136 System.err.println( 137 "usage: " + Admin.class.getName() + " <arguments> [options]\n" 138 + "arguments:\n" 139 + " -snapshot <path> snapshot the current test state\n" 140 + " -stop stop a running compliance test\n" 141 + " -abort abort a running compliance test\n" 142 + "options:\n" 143 + " -port <port> use port to connect to the compliance test" 144 + "\n"); 145 } 146 147 /*** 148 * Helper to return a service URL 149 * 150 * @param port the port the service is running on 151 * @param name the name of the service 152 * @return the service URL 153 */ 154 private static String getName(String port, String name) { 155 return "//localhost:" + port + "/" + name; 156 } 157 158 }

This page was automatically generated by Maven