Author: vgritsenko Date: Sat Nov 11 20:21:35 2006 New Revision: 473870 URL: http://svn.apache.org/viewvc?view=rev&rev=473870 Log: fix failing unit test (XMLToolsTest). while there, do some housekeeping.
Modified: xml/xindice/trunk/java/src/org/apache/xindice/tools/ArgTokenizer.java xml/xindice/trunk/java/src/org/apache/xindice/tools/XMLTools.java xml/xindice/trunk/java/src/org/apache/xindice/tools/command/HelpCommand.java (contents, props changed) Modified: xml/xindice/trunk/java/src/org/apache/xindice/tools/ArgTokenizer.java URL: http://svn.apache.org/viewvc/xml/xindice/trunk/java/src/org/apache/xindice/tools/ArgTokenizer.java?view=diff&rev=473870&r1=473869&r2=473870 ============================================================================== --- xml/xindice/trunk/java/src/org/apache/xindice/tools/ArgTokenizer.java (original) +++ xml/xindice/trunk/java/src/org/apache/xindice/tools/ArgTokenizer.java Sat Nov 11 20:21:35 2006 @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. * - * CVS $Id$ + * $Id$ */ package org.apache.xindice.tools; @@ -24,11 +24,11 @@ * ArgTokenizer performs the difficult task of parsing * command-line arguments from various sources. * - * @version CVS $Revision$, $Date$ + * @version $Revision$, $Date$ */ public final class ArgTokenizer { - private int idx = 0; + private int idx; private String[] args; @@ -54,15 +54,17 @@ sb.append(args[idx++]); while (hasMoreTokens()) { String nt = args[idx]; - if (!nt.startsWith("-")) { - sb.append(' ' + args[idx++]); - } - else + if (nt.startsWith("-")) { break; + } + + sb.append(' ').append(args[idx++]); } + return sb.toString(); - } else - return ""; + } + + return ""; } public String nextToken() { @@ -73,4 +75,3 @@ } } } - Modified: xml/xindice/trunk/java/src/org/apache/xindice/tools/XMLTools.java URL: http://svn.apache.org/viewvc/xml/xindice/trunk/java/src/org/apache/xindice/tools/XMLTools.java?view=diff&rev=473870&r1=473869&r2=473870 ============================================================================== --- xml/xindice/trunk/java/src/org/apache/xindice/tools/XMLTools.java (original) +++ xml/xindice/trunk/java/src/org/apache/xindice/tools/XMLTools.java Sat Nov 11 20:21:35 2006 @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. * - * CVS $Id$ + * $Id$ */ package org.apache.xindice.tools; @@ -21,7 +21,6 @@ import org.apache.xindice.client.xmldb.DatabaseImpl; import org.apache.xindice.server.Xindice; import org.apache.xindice.tools.command.Command; -import org.apache.xindice.util.StringUtilities; import org.apache.xindice.util.XindiceException; import org.apache.xindice.xml.dom.DOMParser; @@ -41,7 +40,7 @@ * XMLAdmin is designed to take command line arguments and give * user Xindice management flexibility within the current Database. * - * @version CVS $Revision$, $Date$ + * @version $Revision$, $Date$ */ public class XMLTools { @@ -69,41 +68,68 @@ public static final String IMPL_CLASS = "implClass"; public static final String COMMAND_LIST="__command_list__"; public static final String PAGE_COUNT = "pagecount"; + private Hashtable table; - protected String location = null; - private boolean initialized = false; - private static boolean verbose = false; + private boolean initialized; - private Document commandsDocument = null; - protected NodeList commandsList = null; + //private Document commandsDocument; + private NodeList commandsList; public static void main(String[] args) { + XMLTools tools = new XMLTools(); try { - new XMLTools().process(args); + tools.process(args); } catch (Exception e) { - System.out.println(e.getMessage()); - if (verbose) { - e.printStackTrace(System.err); + System.err.println(e.getMessage()); + if (tools.isVerbose()) { + e.printStackTrace(); } } } - /** Constructor for XMLTools, includes default variables for the command line + /** + * Constructor for XMLTools, includes default variables for the + * command line. */ public XMLTools() { table = new Hashtable(); // defaults for command switches table.put(FILE_PATH, ""); table.put(EXTENSION, ""); - table.put(QUERY, ""); - table.put(AUTO_KEY, ""); - table.put(VERBOSE, "false"); + table.put(QUERY, ""); + table.put(AUTO_KEY, ""); + table.put(VERBOSE, "false"); + } + + /** + * @return true if operating in verbose mode + */ + protected boolean isVerbose() { + return "true".equals(table.get(XMLTools.VERBOSE)); + } + + /** + * @return true if this class has admin access. + */ + public boolean isAdmin() { + return false; } - protected void initCommandsList() { + /** + * Reads commands document from config directory. + */ + private Document readCommandsDocument() throws XindiceException, FileNotFoundException { + // Absolute path to the commands.xml file, relative to $XINDICE_HOME + File xindiceHome = new File(System.getProperty(Xindice.PROP_XINDICE_HOME, ".")); + File commandsFile = new File(xindiceHome, "config/commands.xml"); + + return DOMParser.toDocument(new FileInputStream(commandsFile)); + } + + private void parseCommandsList(Document commands) { // Get all user elements - NodeList list = getCommandsDocument().getElementsByTagName("user"); + NodeList list = commands.getElementsByTagName("user"); if (list.getLength() > 0) { // Retrieve the index of the first element (<user>) @@ -114,47 +140,26 @@ // Return the list generated commandsList = list; - } - /** Return true if this class has admin access - */ - public boolean isAdmin() { - return false; + // Add the command list so that the HelpCommand can access it and + // print specific help information. + table.put(COMMAND_LIST, commandsList); } /** * Carries out necessary initialization of this class. - **/ + */ public void init() throws XindiceException, FileNotFoundException { if (!initialized) { - initCommandsDocument(); - initCommandsList(); + parseCommandsList(readCommandsDocument()); initialized = true; } } /** - * Carries out the initialization of the Commands Document. - **/ - protected void initCommandsDocument() throws XindiceException, FileNotFoundException { - // Absolute path to the commands.xml file, relative to $XINDICE_HOME - File xindiceHome = new File(System.getProperty(Xindice.PROP_XINDICE_HOME, ".")); - File commandsFile = new File(xindiceHome, "config/commands.xml"); - - commandsDocument = DOMParser.toDocument(new FileInputStream(commandsFile)); - } - - /** - * Returns the Commands Document use for configuration. - **/ - protected Document getCommandsDocument() { - return commandsDocument; - } - - /** * Returns the <command> elements from the Commands Document this * tool can execute. - **/ + */ protected NodeList getCommands() { return commandsList; } @@ -163,7 +168,7 @@ * The Process function is designed for the implementation of the * command line tools, as well as, making the command line easier * to use. - **/ + */ public void process(String[] args) throws XindiceException, Exception { try { init(); @@ -186,16 +191,14 @@ * * @exception IllegalArgumentException if an error is found */ - protected void parseArguments(String[] args) - throws IllegalArgumentException { + protected void parseArguments(String[] args) throws IllegalArgumentException { + // parsing arguments for the command tools ArgTokenizer at = new ArgTokenizer(args); - if (!at.hasMoreTokens()) { - throw new IllegalArgumentException("No argument found"); + throw new IllegalArgumentException("No arguments found"); } - // add the command list so that the HelpCommand and print specific help information - table.put(COMMAND_LIST,commandsList); + // Action should always be the second token, if not there show help table.put(ACTION, at.nextToken()); @@ -205,8 +208,7 @@ if (token.equalsIgnoreCase("-c") || token.equalsIgnoreCase("--collection")) { String colname = at.nextSwitchToken(); - if (!colname.startsWith("/") && - !colname.startsWith("xmldb:xindice")) { + if (!colname.startsWith("/") && !colname.startsWith("xmldb:xindice")) { throw new IllegalArgumentException("The name of a collection must start with '/'"); } table.put(COLLECTION, colname); @@ -253,7 +255,7 @@ } else if (token.equalsIgnoreCase("--pagecount")) { table.put(PAGE_COUNT, at.nextSwitchToken()); } - } // End of while loop + } } /** @@ -291,28 +293,25 @@ return true; } catch (XMLDBException e) { System.err.println("XMLDB Exception " + e.errorCode + ": " + e.getMessage()); - if (table.get(VERBOSE).equals("true")) { + if (isVerbose()) { e.printStackTrace(System.err); } return false; } catch (Exception e) { System.err.println("ERROR : " + e.getMessage()); - if (table.get(VERBOSE).equals("true")) { + if (isVerbose()) { e.printStackTrace(System.err); } return false; - } - finally { - // Close Database + } finally { + // Close Database if ("true".equals(table.get(LOCAL))) { command = new org.apache.xindice.tools.command.Shutdown(); command.execute(table); } } - } - else - { - throw new IllegalArgumentException("\"" + action + "\" not recognized."); + } else { + throw new IllegalArgumentException("\"" + action + "\" not recognized."); } } Modified: xml/xindice/trunk/java/src/org/apache/xindice/tools/command/HelpCommand.java URL: http://svn.apache.org/viewvc/xml/xindice/trunk/java/src/org/apache/xindice/tools/command/HelpCommand.java?view=diff&rev=473870&r1=473869&r2=473870 ============================================================================== --- xml/xindice/trunk/java/src/org/apache/xindice/tools/command/HelpCommand.java (original) +++ xml/xindice/trunk/java/src/org/apache/xindice/tools/command/HelpCommand.java Sat Nov 11 20:21:35 2006 @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. * - * @author <a href="mailto:[EMAIL PROTECTED]">Todd Byrne</a> + * $Id$ */ package org.apache.xindice.tools.command; @@ -25,6 +25,10 @@ import org.w3c.dom.NodeList; import org.apache.xindice.tools.XMLTools; +/** + * + * @author <a href="mailto:[EMAIL PROTECTED]">Todd Byrne</a> + */ public class HelpCommand extends Command { public boolean execute(Hashtable table) throws Exception { Propchange: xml/xindice/trunk/java/src/org/apache/xindice/tools/command/HelpCommand.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: xml/xindice/trunk/java/src/org/apache/xindice/tools/command/HelpCommand.java ------------------------------------------------------------------------------ svn:keywords = Id Revision Author Date