Commit 83def454 authored by Alinga Yeung's avatar Alinga Yeung
Browse files

Story 1840. Minor change to set the print stream of a command while parsing so...

Story 1840. Minor change to set the print stream of a command while parsing so that the command is ready after the parser has been instatiated.
parent 3751b30b
Loading
Loading
Loading
Loading
+11 −5
Original line number Diff line number Diff line
@@ -69,6 +69,7 @@

 package ca.nrc.cadc.ac.admin;

import java.io.PrintStream;
import java.security.cert.CertificateException;

import javax.security.auth.Subject;
@@ -106,11 +107,12 @@ public class CmdLineParser
     * @throws UsageException Error in command line
     * @throws CertificateException Fail to get a certificate
     */
    public CmdLineParser(final String[] args) throws UsageException, CertificateException 
    public CmdLineParser(final String[] args, final PrintStream outStream,
        final PrintStream errStream) throws UsageException, CertificateException 
    {
        ArgumentMap am = new ArgumentMap( args );
    	this.setLogLevel(am);
    	this.parse(am);
    	this.parse(am, outStream, errStream);
    }
    
    /**
@@ -198,7 +200,8 @@ public class CmdLineParser
        }
    }
    
    protected boolean isValid(final ArgumentMap am) throws UsageException
    protected boolean isValid(final ArgumentMap am, final PrintStream outStream,
        final PrintStream errStream) throws UsageException
    {
    	int count = 0;
    	
@@ -250,6 +253,8 @@ public class CmdLineParser
                    	
    	if (count == 1)
    	{
            this.command.setSystemOut(outStream);
            this.command.setSystemErr(errStream);
            return true;
    	}
    	else
@@ -275,11 +280,12 @@ public class CmdLineParser
     * @throws UsageException Error in command line
     * @throws CertificateException Fail to get a certificate
     */
    protected void parse(final ArgumentMap am) throws UsageException, CertificateException
    protected void parse(final ArgumentMap am, final PrintStream out,
        final PrintStream err) throws UsageException, CertificateException
    {
        this.proceed = false;

        if (!am.isSet("h") && !am.isSet("help") && isValid(am))
        if (!am.isSet("h") && !am.isSet("help") && isValid(am, out, err))
        {
            Subject subject = CertCmdArgUtil.initSubject(am, true);
            
+1 −3
Original line number Diff line number Diff line
@@ -97,13 +97,11 @@ public class Main
    {
        try
        {
        	CmdLineParser parser = new CmdLineParser(args);
            CmdLineParser parser = new CmdLineParser(args, systemOut, systemErr);

            if (parser.proceed())
            {  
                AbstractCommand command = parser.getCommand();
            	command.setSystemOut(systemOut);
            	command.setSystemErr(systemErr);
                if (parser.getSubject() == null)
                {
                    // no credential, but command works with an anonymous user
+33 −28
Original line number Diff line number Diff line
@@ -69,6 +69,8 @@

package ca.nrc.cadc.ac.admin;

import java.io.PrintStream;

import org.apache.log4j.Level;
import org.junit.Assert;
import org.junit.Test;
@@ -79,6 +81,9 @@ import org.junit.Test;
 */
public class CmdLineParserTest
{    
    private static PrintStream sysOut = System.out;
    private static PrintStream sysErr = System.err;

    @Test
	public void testHelp()
	{
@@ -86,7 +91,7 @@ public class CmdLineParserTest
    	try
    	{
    	    String[] mArgs = {"-h"};
    	    CmdLineParser parser = new CmdLineParser(mArgs);
    	    CmdLineParser parser = new CmdLineParser(mArgs, sysOut, sysErr);
    	    Assert.assertEquals(Level.OFF, parser.getLogLevel());
    	}
    	catch (Exception e)
@@ -98,7 +103,7 @@ public class CmdLineParserTest
    	try
    	{
    	    String[] mArgs = {"--help"};
    	    CmdLineParser parser = new CmdLineParser(mArgs);
    	    CmdLineParser parser = new CmdLineParser(mArgs, sysOut, sysErr);
    	    Assert.assertEquals(Level.OFF, parser.getLogLevel());
    	}
    	catch (Exception e)
@@ -110,7 +115,7 @@ public class CmdLineParserTest
    	try
    	{
    	    String[] mArgs = {"--list", "-h"};
    	    CmdLineParser parser = new CmdLineParser(mArgs);
    	    CmdLineParser parser = new CmdLineParser(mArgs, sysOut, sysErr);
    	    Assert.assertEquals(Level.OFF, parser.getLogLevel());
    	}
    	catch (Exception e)
@@ -122,7 +127,7 @@ public class CmdLineParserTest
    	try
    	{
    	    String[] mArgs = {"--list", "-h", "-v"};
    	    CmdLineParser parser = new CmdLineParser(mArgs);
    	    CmdLineParser parser = new CmdLineParser(mArgs, sysOut, sysErr);
    	    Assert.assertEquals(Level.INFO, parser.getLogLevel());
    	}
    	catch (Exception e)
@@ -138,7 +143,7 @@ public class CmdLineParserTest
    	try
    	{
    	    String[] args = {"--list",};
    	    CmdLineParser parser = new CmdLineParser(args);
    	    CmdLineParser parser = new CmdLineParser(args, sysOut, sysErr);
    	    Assert.assertEquals(Level.OFF, parser.getLogLevel());
    	}
    	catch (Exception e)
@@ -150,7 +155,7 @@ public class CmdLineParserTest
    	try
    	{
    	    String[] vArgs = {"--list", "-v"};
    	    CmdLineParser parser = new CmdLineParser(vArgs);
    	    CmdLineParser parser = new CmdLineParser(vArgs, sysOut, sysErr);
    	    Assert.assertEquals(Level.INFO, parser.getLogLevel());
    	}
    	catch (Exception e)
@@ -162,7 +167,7 @@ public class CmdLineParserTest
    	try
    	{
    	    String[] dArgs = {"--list", "-d"};
    	    CmdLineParser parser = new CmdLineParser(dArgs);
    	    CmdLineParser parser = new CmdLineParser(dArgs, sysOut, sysErr);
    	    Assert.assertEquals(Level.DEBUG, parser.getLogLevel());
    	}
    	catch (Exception e)
@@ -176,7 +181,7 @@ public class CmdLineParserTest
    	try
    	{
    	    String[] mArgs = {"--list", "-d", "-v"};
    	    parser = new CmdLineParser(mArgs);
    	    parser = new CmdLineParser(mArgs, sysOut, sysErr);
    	    Assert.fail("Should have received a UsageException.");
    	}
    	catch (UsageException e)
@@ -199,7 +204,7 @@ public class CmdLineParserTest
    	try
    	{
    	    String[] dArgs = {"-d"};
    	    new CmdLineParser(dArgs);
    	    new CmdLineParser(dArgs, sysOut, sysErr);
    	    Assert.fail("Should have received a UsageException.");
    	}
    	catch (UsageException e)
@@ -216,7 +221,7 @@ public class CmdLineParserTest
    	try
    	{
    	    String[] dArgs = {"--list", "-d"};
    	    CmdLineParser parser = new CmdLineParser(dArgs);
    	    CmdLineParser parser = new CmdLineParser(dArgs, sysOut, sysErr);
    	    Assert.assertEquals(Level.DEBUG, parser.getLogLevel());
    	    Assert.assertTrue(parser.getCommand() instanceof ListActiveUsers);
    	}
@@ -229,7 +234,7 @@ public class CmdLineParserTest
    	try
    	{
    	    String[] dArgs = {"--list-pending", "-d"};
    	    CmdLineParser parser = new CmdLineParser(dArgs);
    	    CmdLineParser parser = new CmdLineParser(dArgs, sysOut, sysErr);
    	    Assert.assertEquals(Level.DEBUG, parser.getLogLevel());
    	    Assert.assertTrue(parser.getCommand() instanceof ListPendingUsers);
    	}
@@ -242,7 +247,7 @@ public class CmdLineParserTest
    	try
    	{
    	    String[] dArgs = {"--view=jdoe", "-d"};
    	    CmdLineParser parser = new CmdLineParser(dArgs);
    	    CmdLineParser parser = new CmdLineParser(dArgs, sysOut, sysErr);
    	    Assert.assertEquals(Level.DEBUG, parser.getLogLevel());
    	    Assert.assertTrue(parser.getCommand() instanceof ViewUser);
    	}
@@ -255,7 +260,7 @@ public class CmdLineParserTest
    	try
    	{
    	    String[] dArgs = {"--reject=jdoe", "-d"};
    	    CmdLineParser parser = new CmdLineParser(dArgs);
    	    CmdLineParser parser = new CmdLineParser(dArgs, sysOut, sysErr);
    	    Assert.assertEquals(Level.DEBUG, parser.getLogLevel());
    	    Assert.assertTrue(parser.getCommand() instanceof RejectUser);
    	}
@@ -268,7 +273,7 @@ public class CmdLineParserTest
    	try
    	{
    	    String[] dArgs = {"--approve=jdoe", "-d"};
    	    CmdLineParser parser = new CmdLineParser(dArgs);
    	    CmdLineParser parser = new CmdLineParser(dArgs, sysOut, sysErr);
    	    Assert.assertEquals(Level.DEBUG, parser.getLogLevel());
    	    Assert.assertTrue(parser.getCommand() instanceof ApproveUser);
    	}
@@ -281,7 +286,7 @@ public class CmdLineParserTest
    	try
    	{
    	    String[] dArgs = {"--approve", "-d"};
    	    new CmdLineParser(dArgs);
    	    new CmdLineParser(dArgs, sysOut, sysErr);
    	    Assert.fail("Should have received a UsageException.");
    	}
    	catch (UsageException e)
@@ -298,7 +303,7 @@ public class CmdLineParserTest
    	try
    	{
    	    String[] dArgs = {"--approve=", "-d"};
    	    new CmdLineParser(dArgs);
    	    new CmdLineParser(dArgs, sysOut, sysErr);
    	    Assert.fail("Should have received a UsageException.");
    	}
    	catch (UsageException e)
@@ -315,7 +320,7 @@ public class CmdLineParserTest
    	try
    	{
    	    String[] dArgs = {"--list", "--list-pending", "-d"};
    	    new CmdLineParser(dArgs);
    	    new CmdLineParser(dArgs, sysOut, sysErr);
    	    Assert.fail("Should have received a UsageException.");
    	}
    	catch (UsageException e)