Make tools more friendly to user errors
Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/6cb68f2c Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/6cb68f2c Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/6cb68f2c Branch: refs/heads/master Commit: 6cb68f2ce923ea3c2400c21967b2003175c8a0f4 Parents: dc82cd0 Author: Clebert Suconic <[email protected]> Authored: Wed May 13 15:06:11 2015 -0400 Committer: Clebert Suconic <[email protected]> Committed: Wed May 13 15:28:17 2015 -0400 ---------------------------------------------------------------------- .../artemis/cli/commands/Configurable.java | 37 +++++++++++++++++++- .../activemq/artemis/cli/commands/Run.java | 12 +++++++ .../cli/commands/tools/DataAbstract.java | 18 ++++++---- .../cli/commands/tools/DecodeJournal.java | 2 +- .../cli/commands/tools/EncodeJournal.java | 2 +- .../artemis/cli/commands/tools/PrintData.java | 4 +-- .../cli/commands/tools/XmlDataExporter.java | 9 ++++- .../bootstrap/ActiveMQBootstrapBundle.java | 3 -- .../bootstrap/ActiveMQBootstrapLogger.java | 4 --- 9 files changed, 70 insertions(+), 21 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/6cb68f2c/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/Configurable.java ---------------------------------------------------------------------- diff --git a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/Configurable.java b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/Configurable.java index b635903..b378697 100644 --- a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/Configurable.java +++ b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/Configurable.java @@ -17,10 +17,15 @@ package org.apache.activemq.artemis.cli.commands; +import javax.inject.Inject; import java.io.File; import io.airlift.airline.Arguments; +import io.airlift.airline.Help; import io.airlift.airline.Option; +import io.airlift.airline.model.CommandGroupMetadata; +import io.airlift.airline.model.CommandMetadata; +import io.airlift.airline.model.GlobalMetadata; import org.apache.activemq.artemis.core.config.FileDeploymentManager; import org.apache.activemq.artemis.core.config.impl.FileConfiguration; import org.apache.activemq.artemis.dto.BrokerDTO; @@ -39,6 +44,10 @@ public abstract class Configurable @Option(name = "--broker", description = "This would override the broker configuration from the bootstrap") String brokerConfig; + + @Inject + public GlobalMetadata global; + private BrokerDTO brokerDTO = null; private String brokerInstance; @@ -47,6 +56,15 @@ public abstract class Configurable private FileConfiguration fileConfiguration; + protected void treatError(Exception e, String group, String command) + { + ActiveMQBootstrapLogger.LOGGER.debug(e.getMessage(), e); + System.err.println(); + System.err.println("Error:" + e.getMessage()); + System.err.println(); + helpGroup(group, command); + } + protected String getBrokerInstance() { if (brokerInstance == null) @@ -64,6 +82,24 @@ public abstract class Configurable return brokerInstance; } + protected void helpGroup(String groupName, String commandName) + { + for (CommandGroupMetadata group: global.getCommandGroups()) + { + if (group.getName().equals(groupName)) + { + for (CommandMetadata command: group.getCommands()) + { + if (command.getName().equals(commandName)) + { + Help.help(command); + } + } + break; + } + } + } + protected String getBrokerHome() { if (brokerHome == null) @@ -89,7 +125,6 @@ public abstract class Configurable if (getBrokerInstance() == null) { final String defaultLocation = "../data"; - ActiveMQBootstrapLogger.LOGGER.brokerConfigNotFound(defaultLocation); fileConfiguration = new FileConfiguration(); // These will be the default places in case the file can't be loaded fileConfiguration.setBindingsDirectory(defaultLocation + "/bindings"); http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/6cb68f2c/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/Run.java ---------------------------------------------------------------------- diff --git a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/Run.java b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/Run.java index 2ae98c4..584911b 100644 --- a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/Run.java +++ b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/Run.java @@ -25,6 +25,7 @@ import io.airlift.airline.Command; import io.airlift.airline.Option; import org.apache.activemq.artemis.cli.Artemis; import org.apache.activemq.artemis.components.ExternalComponent; +import org.apache.activemq.artemis.core.config.impl.FileConfiguration; import org.apache.activemq.artemis.core.server.ActiveMQComponent; import org.apache.activemq.artemis.dto.BrokerDTO; import org.apache.activemq.artemis.dto.ComponentDTO; @@ -50,6 +51,8 @@ public class Run extends Configurable implements Action Artemis.printBanner(); + createDirectories(getFileConfiguration()); + BrokerDTO broker = getBrokerDTO(); addShutdownHook(broker.server.getConfigurationFile().getParentFile()); @@ -77,6 +80,15 @@ public class Run extends Configurable implements Action return null; } + + private void createDirectories(FileConfiguration fileConfiguration) + { + new File(fileConfiguration.getBindingsDirectory()).mkdirs(); + new File(fileConfiguration.getJournalDirectory()).mkdirs(); + new File(fileConfiguration.getPagingDirectory()).mkdirs(); + new File(fileConfiguration.getLargeMessagesDirectory()).mkdirs(); + } + /** * Add a simple shutdown hook to stop the server. * @param configurationDir http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/6cb68f2c/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/DataAbstract.java ---------------------------------------------------------------------- diff --git a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/DataAbstract.java b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/DataAbstract.java index d222eed..717a9de 100644 --- a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/DataAbstract.java +++ b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/DataAbstract.java @@ -17,11 +17,10 @@ package org.apache.activemq.artemis.cli.commands.tools; +import java.io.File; + import io.airlift.airline.Option; import org.apache.activemq.artemis.cli.commands.Configurable; -import org.apache.activemq.artemis.integration.bootstrap.ActiveMQBootstrapBundle; - -import java.io.File; /** Abstract class for places where you need bindings, journal paging and large messages configuration */ public abstract class DataAbstract extends Configurable @@ -44,9 +43,10 @@ public abstract class DataAbstract extends Configurable if (largeMessges == null) { largeMessges = getFileConfiguration().getLargeMessagesDirectory(); - checkIfDirectoryExists(largeMessges); } + checkIfDirectoryExists(largeMessges); + return largeMessges; } @@ -56,9 +56,10 @@ public abstract class DataAbstract extends Configurable if (binding == null) { binding = getFileConfiguration().getBindingsDirectory(); - checkIfDirectoryExists(binding); } + checkIfDirectoryExists(binding); + return binding; } @@ -67,9 +68,10 @@ public abstract class DataAbstract extends Configurable if (journal == null) { journal = getFileConfiguration().getJournalDirectory(); - checkIfDirectoryExists(journal); } + checkIfDirectoryExists(journal); + return journal; } @@ -80,6 +82,8 @@ public abstract class DataAbstract extends Configurable paging = getFileConfiguration().getPagingDirectory(); } + checkIfDirectoryExists(paging); + return paging; } @@ -88,7 +92,7 @@ public abstract class DataAbstract extends Configurable File f = new File(directory); if (!f.exists()) { - throw ActiveMQBootstrapBundle.BUNDLE.directoryDoesNotExist(directory); + throw new IllegalStateException("Could not find folder: " + directory + ", please pass --bindings, --journal and --paging as arguments"); } } http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/6cb68f2c/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/DecodeJournal.java ---------------------------------------------------------------------- diff --git a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/DecodeJournal.java b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/DecodeJournal.java index 106412f..352bffd 100644 --- a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/DecodeJournal.java +++ b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/DecodeJournal.java @@ -69,7 +69,7 @@ public class DecodeJournal extends Configurable implements Action } catch (Exception e) { - e.printStackTrace(); + treatError(e, "data", "decode"); } return null; http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/6cb68f2c/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/EncodeJournal.java ---------------------------------------------------------------------- diff --git a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/EncodeJournal.java b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/EncodeJournal.java index 426016e..d81773f 100644 --- a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/EncodeJournal.java +++ b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/EncodeJournal.java @@ -64,7 +64,7 @@ public class EncodeJournal extends Configurable implements Action } catch (Exception e) { - e.printStackTrace(); + treatError(e, "data", "encode"); } return null; http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/6cb68f2c/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/PrintData.java ---------------------------------------------------------------------- diff --git a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/PrintData.java b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/PrintData.java index 077afe0..2d2d004 100644 --- a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/PrintData.java +++ b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/PrintData.java @@ -54,13 +54,11 @@ import org.apache.activemq.artemis.core.server.impl.FileLockNodeManager; import org.apache.activemq.artemis.core.settings.HierarchicalRepository; import org.apache.activemq.artemis.core.settings.impl.AddressSettings; import org.apache.activemq.artemis.core.settings.impl.HierarchicalObjectRepository; -import org.apache.activemq.artemis.integration.bootstrap.ActiveMQBootstrapLogger; import org.apache.activemq.artemis.utils.ExecutorFactory; @Command(name = "print", description = "Print data records information (WARNING: don't use while a production server is running)") public class PrintData extends DataAbstract implements Action { - @Override public Object execute(ActionContext context) throws Exception { @@ -70,7 +68,7 @@ public class PrintData extends DataAbstract implements Action } catch (Exception e) { - ActiveMQBootstrapLogger.LOGGER.printDataFailed(e.getMessage()); + treatError(e, "data", "print"); } return null; } http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/6cb68f2c/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/XmlDataExporter.java ---------------------------------------------------------------------- diff --git a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/XmlDataExporter.java b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/XmlDataExporter.java index b8366d9..c887dfb 100644 --- a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/XmlDataExporter.java +++ b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/XmlDataExporter.java @@ -126,7 +126,14 @@ public final class XmlDataExporter extends DataAbstract implements Action @Override public Object execute(ActionContext context) throws Exception { - process(System.out, getBinding(), getJournal(), getPaging(), getLargeMessages()); + try + { + process(System.out, getBinding(), getJournal(), getPaging(), getLargeMessages()); + } + catch (Exception e) + { + treatError(e, "data", "exp"); + } return null; } http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/6cb68f2c/artemis-cli/src/main/java/org/apache/activemq/artemis/integration/bootstrap/ActiveMQBootstrapBundle.java ---------------------------------------------------------------------- diff --git a/artemis-cli/src/main/java/org/apache/activemq/artemis/integration/bootstrap/ActiveMQBootstrapBundle.java b/artemis-cli/src/main/java/org/apache/activemq/artemis/integration/bootstrap/ActiveMQBootstrapBundle.java index a7d14ac..568b98e 100644 --- a/artemis-cli/src/main/java/org/apache/activemq/artemis/integration/bootstrap/ActiveMQBootstrapBundle.java +++ b/artemis-cli/src/main/java/org/apache/activemq/artemis/integration/bootstrap/ActiveMQBootstrapBundle.java @@ -18,7 +18,6 @@ package org.apache.activemq.artemis.integration.bootstrap; import org.jboss.logging.Messages; -import org.jboss.logging.annotations.Message; import org.jboss.logging.annotations.MessageBundle; /** @@ -33,6 +32,4 @@ public interface ActiveMQBootstrapBundle { ActiveMQBootstrapBundle BUNDLE = Messages.getBundle(ActiveMQBootstrapBundle.class); - @Message(id = 109000, value = "Directory does not exist: {0}", format = Message.Format.MESSAGE_FORMAT) - IllegalStateException directoryDoesNotExist(String directory); } http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/6cb68f2c/artemis-cli/src/main/java/org/apache/activemq/artemis/integration/bootstrap/ActiveMQBootstrapLogger.java ---------------------------------------------------------------------- diff --git a/artemis-cli/src/main/java/org/apache/activemq/artemis/integration/bootstrap/ActiveMQBootstrapLogger.java b/artemis-cli/src/main/java/org/apache/activemq/artemis/integration/bootstrap/ActiveMQBootstrapLogger.java index 2d0b311..0b3a467 100644 --- a/artemis-cli/src/main/java/org/apache/activemq/artemis/integration/bootstrap/ActiveMQBootstrapLogger.java +++ b/artemis-cli/src/main/java/org/apache/activemq/artemis/integration/bootstrap/ActiveMQBootstrapLogger.java @@ -62,10 +62,6 @@ public interface ActiveMQBootstrapLogger extends BasicLogger void serverKilled(); @LogMessage(level = Logger.Level.INFO) - @Message(id = 101004, value = "Broker configuration not found. Looking for data files in the ''{0}'' directory.", format = Message.Format.MESSAGE_FORMAT) - void brokerConfigNotFound(String defaultLocation); - - @LogMessage(level = Logger.Level.INFO) @Message(id = 101005, value = "Using broker configuration: {0}", format = Message.Format.MESSAGE_FORMAT) void usingBrokerConfig(String location);
