ARTEMIS-140 In testing ARTEMIS-116 Found some more holes in the cli.
This commit is contained in:
parent
56ec4cabab
commit
5b2d2a49c4
|
@ -20,7 +20,6 @@ import java.io.InputStream;
|
||||||
import java.io.OutputStream;
|
import java.io.OutputStream;
|
||||||
|
|
||||||
import io.airlift.airline.Cli;
|
import io.airlift.airline.Cli;
|
||||||
import io.airlift.airline.ParseException;
|
|
||||||
import org.apache.activemq.artemis.cli.commands.Action;
|
import org.apache.activemq.artemis.cli.commands.Action;
|
||||||
import org.apache.activemq.artemis.cli.commands.ActionContext;
|
import org.apache.activemq.artemis.cli.commands.ActionContext;
|
||||||
import org.apache.activemq.artemis.cli.commands.Create;
|
import org.apache.activemq.artemis.cli.commands.Create;
|
||||||
|
@ -66,18 +65,18 @@ public class Artemis
|
||||||
{
|
{
|
||||||
parser.parse(args).execute(ActionContext.system());
|
parser.parse(args).execute(ActionContext.system());
|
||||||
}
|
}
|
||||||
catch (ParseException e)
|
|
||||||
{
|
|
||||||
System.err.println(e.getMessage());
|
|
||||||
System.out.println();
|
|
||||||
parser.parse("help").execute(ActionContext.system());
|
|
||||||
}
|
|
||||||
catch (ConfigurationException configException)
|
catch (ConfigurationException configException)
|
||||||
{
|
{
|
||||||
System.err.println(configException.getMessage());
|
System.err.println(configException.getMessage());
|
||||||
System.out.println();
|
System.out.println();
|
||||||
System.out.println("Configuration should be specified as 'scheme:location'. Default configuration is 'xml:${ARTEMIS_INSTANCE}/etc/bootstrap.xml'");
|
System.out.println("Configuration should be specified as 'scheme:location'. Default configuration is 'xml:${ARTEMIS_INSTANCE}/etc/bootstrap.xml'");
|
||||||
}
|
}
|
||||||
|
catch (RuntimeException re)
|
||||||
|
{
|
||||||
|
System.err.println(re.getMessage());
|
||||||
|
System.out.println();
|
||||||
|
parser.parse("help").execute(ActionContext.system());
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -83,7 +83,7 @@ public class Create extends InputAbstract
|
||||||
public static final String ETC_CONNECTOR_SETTINGS_TXT = "etc/connector-settings.txt";
|
public static final String ETC_CONNECTOR_SETTINGS_TXT = "etc/connector-settings.txt";
|
||||||
public static final String ETC_BOOTSTRAP_WEB_SETTINGS_TXT = "etc/bootstrap-web-settings.txt";
|
public static final String ETC_BOOTSTRAP_WEB_SETTINGS_TXT = "etc/bootstrap-web-settings.txt";
|
||||||
|
|
||||||
@Arguments(description = "The instance directory to hold the broker's configuration and data", required = true)
|
@Arguments(description = "The instance directory to hold the broker's configuration and data. Path must be writable.", required = true)
|
||||||
File directory;
|
File directory;
|
||||||
|
|
||||||
@Option(name = "--host", description = "The host name of the broker (Default: 0.0.0.0 or input if clustered)")
|
@Option(name = "--host", description = "The host name of the broker (Default: 0.0.0.0 or input if clustered)")
|
||||||
|
@ -412,6 +412,7 @@ public class Create extends InputAbstract
|
||||||
@Override
|
@Override
|
||||||
public Object execute(ActionContext context) throws Exception
|
public Object execute(ActionContext context) throws Exception
|
||||||
{
|
{
|
||||||
|
this.checkDirectory();
|
||||||
super.execute(context);
|
super.execute(context);
|
||||||
|
|
||||||
try
|
try
|
||||||
|
@ -432,6 +433,24 @@ public class Create extends InputAbstract
|
||||||
return this.getClass().getResourceAsStream(source);
|
return this.getClass().getResourceAsStream(source);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks that the directory provided either exists and is writable or doesn't exist but can be created.
|
||||||
|
*/
|
||||||
|
private void checkDirectory()
|
||||||
|
{
|
||||||
|
if (!directory.exists())
|
||||||
|
{
|
||||||
|
boolean created = directory.mkdirs();
|
||||||
|
if (!created)
|
||||||
|
{
|
||||||
|
throw new RuntimeException(String.format("Unable to create the path '%s'.", directory));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (!directory.canWrite())
|
||||||
|
{
|
||||||
|
throw new RuntimeException(String.format("The path '%s' is not writable.", directory));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public Object run(ActionContext context) throws Exception
|
public Object run(ActionContext context) throws Exception
|
||||||
{
|
{
|
||||||
|
|
|
@ -27,10 +27,21 @@ public class ArtemisTest
|
||||||
{
|
{
|
||||||
@Test
|
@Test
|
||||||
public void invalidCliDoesntThrowException()
|
public void invalidCliDoesntThrowException()
|
||||||
|
{
|
||||||
|
testCli("create");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void invalidPathDoesntThrowException()
|
||||||
|
{
|
||||||
|
testCli("create","/rawr");
|
||||||
|
}
|
||||||
|
|
||||||
|
private void testCli(String... args)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Artemis.main(new String[]{"create"});
|
Artemis.main(args);
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue