diff --git a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/Artemis.java b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/Artemis.java index 2821a3e22c..45e1dfd38b 100644 --- a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/Artemis.java +++ b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/Artemis.java @@ -17,8 +17,6 @@ package org.apache.activemq.artemis.cli; import java.io.File; -import java.io.InputStream; -import java.io.OutputStream; import java.util.List; import io.airlift.airline.Cli; @@ -37,22 +35,22 @@ import org.apache.activemq.artemis.cli.commands.address.DeleteAddress; import org.apache.activemq.artemis.cli.commands.address.HelpAddress; import org.apache.activemq.artemis.cli.commands.address.ShowAddress; import org.apache.activemq.artemis.cli.commands.address.UpdateAddress; +import org.apache.activemq.artemis.cli.commands.messages.Browse; +import org.apache.activemq.artemis.cli.commands.messages.Consumer; +import org.apache.activemq.artemis.cli.commands.messages.Producer; import org.apache.activemq.artemis.cli.commands.migration1x.Migrate1X; import org.apache.activemq.artemis.cli.commands.queue.CreateQueue; import org.apache.activemq.artemis.cli.commands.queue.DeleteQueue; import org.apache.activemq.artemis.cli.commands.queue.HelpQueue; -import org.apache.activemq.artemis.cli.commands.messages.Browse; -import org.apache.activemq.artemis.cli.commands.messages.Consumer; -import org.apache.activemq.artemis.cli.commands.messages.Producer; import org.apache.activemq.artemis.cli.commands.queue.UpdateQueue; -import org.apache.activemq.artemis.cli.commands.tools.CompactJournal; -import org.apache.activemq.artemis.cli.commands.tools.DecodeJournal; -import org.apache.activemq.artemis.cli.commands.tools.EncodeJournal; import org.apache.activemq.artemis.cli.commands.tools.HelpData; import org.apache.activemq.artemis.cli.commands.tools.PrintData; -import org.apache.activemq.artemis.cli.commands.tools.PerfJournal; -import org.apache.activemq.artemis.cli.commands.tools.XmlDataExporter; -import org.apache.activemq.artemis.cli.commands.tools.XmlDataImporter; +import org.apache.activemq.artemis.cli.commands.tools.journal.CompactJournal; +import org.apache.activemq.artemis.cli.commands.tools.journal.DecodeJournal; +import org.apache.activemq.artemis.cli.commands.tools.journal.EncodeJournal; +import org.apache.activemq.artemis.cli.commands.tools.journal.PerfJournal; +import org.apache.activemq.artemis.cli.commands.tools.xml.XmlDataExporter; +import org.apache.activemq.artemis.cli.commands.tools.xml.XmlDataImporter; import org.apache.activemq.artemis.cli.commands.user.AddUser; import org.apache.activemq.artemis.cli.commands.user.HelpUser; import org.apache.activemq.artemis.cli.commands.user.ListUser; @@ -126,7 +124,7 @@ public class Artemis { * This method is used to validate exception returns. * Useful on test cases */ - public static Object internalExecute(File artemisHome, File artemisInstance, String[] args) throws Exception { + private static Object internalExecute(File artemisHome, File artemisInstance, String[] args) throws Exception { return internalExecute(artemisHome, artemisInstance, args, ActionContext.system()); } @@ -174,18 +172,4 @@ public class Artemis { return builder; } - public static void printBanner() throws Exception { - copy(Artemis.class.getResourceAsStream("banner.txt"), System.out); - } - - private static long copy(InputStream in, OutputStream out) throws Exception { - byte[] buffer = new byte[1024]; - int len = in.read(buffer); - while (len != -1) { - out.write(buffer, 0, len); - len = in.read(buffer); - } - return len; - } - } diff --git a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/ActionAbstract.java b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/ActionAbstract.java index ce90c23698..2037d01514 100644 --- a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/ActionAbstract.java +++ b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/ActionAbstract.java @@ -20,7 +20,6 @@ import java.io.File; import java.net.URI; import io.airlift.airline.Option; -import org.apache.activemq.artemis.util.OptionsUtil; public abstract class ActionAbstract implements Action { 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 316b2c2677..9046c8f3c4 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 @@ -26,10 +26,10 @@ 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.cli.factory.BrokerFactory; import org.apache.activemq.artemis.core.config.FileDeploymentManager; import org.apache.activemq.artemis.core.config.impl.FileConfiguration; import org.apache.activemq.artemis.dto.BrokerDTO; -import org.apache.activemq.artemis.factory.BrokerFactory; import org.apache.activemq.artemis.integration.bootstrap.ActiveMQBootstrapLogger; import org.apache.activemq.artemis.jms.server.config.impl.FileJMSConfiguration; diff --git a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/Create.java b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/Create.java index 66bffe2c38..feb23ddb75 100644 --- a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/Create.java +++ b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/Create.java @@ -84,9 +84,9 @@ public class Create extends InputAbstract { public static final String ETC_ARTEMIS_ROLES_PROPERTIES = "etc/artemis-roles.properties"; public static final String ETC_ARTEMIS_USERS_PROPERTIES = "etc/artemis-users.properties"; - public static final String ETC_LOGIN_CONFIG = "etc/login.config"; - public static final String ETC_LOGIN_CONFIG_WITH_GUEST = "etc/login-with-guest.config"; - public static final String ETC_LOGIN_CONFIG_WITHOUT_GUEST = "etc/login-without-guest.config"; + private static final String ETC_LOGIN_CONFIG = "etc/login.config"; + private static final String ETC_LOGIN_CONFIG_WITH_GUEST = "etc/login-with-guest.config"; + private static final String ETC_LOGIN_CONFIG_WITHOUT_GUEST = "etc/login-without-guest.config"; public static final String ETC_REPLICATED_SETTINGS_TXT = "etc/replicated-settings.txt"; public static final String ETC_SHARED_STORE_SETTINGS_TXT = "etc/shared-store-settings.txt"; public static final String ETC_CLUSTER_SECURITY_SETTINGS_TXT = "etc/cluster-security-settings.txt"; @@ -105,213 +105,162 @@ public class Create extends InputAbstract { public static final String ETC_GLOBAL_MAX_DEFAULT_TXT = "etc/global-max-default.txt"; @Arguments(description = "The instance directory to hold the broker's configuration and data. Path must be writable.", required = true) - File directory; + private File directory; @Option(name = "--host", description = "The host name of the broker (Default: 0.0.0.0 or input if clustered)") - String host; + private String host; @Option(name = "--http-host", description = "The host name to use for embedded web server (Default: localhost)") - String httpHost = HTTP_HOST; + private String httpHost = HTTP_HOST; @Option(name = "--ping", description = "A comma separated string to be passed on to the broker config as network-check-list. The broker will shutdown when all these addresses are unreachable.") - String ping; + private String ping; @Option(name = "--default-port", description = "The port number to use for the main 'artemis' acceptor (Default: 61616)") - int defaultPort = DEFAULT_PORT; + private int defaultPort = DEFAULT_PORT; @Option(name = "--http-port", description = "The port number to use for embedded web server (Default: 8161)") - int httpPort = HTTP_PORT; + private int httpPort = HTTP_PORT; @Option(name = "--ssl-key", description = "The key store path for embedded web server") - String sslKey; + private String sslKey; @Option(name = "--ssl-key-password", description = "The key store password") - String sslKeyPassword; + private String sslKeyPassword; @Option(name = "--use-client-auth", description = "If the embedded server requires client authentication") - boolean useClientAuth; + private boolean useClientAuth; @Option(name = "--ssl-trust", description = "The trust store path in case of client authentication") - String sslTrust; + private String sslTrust; @Option(name = "--ssl-trust-password", description = "The trust store password") - String sslTrustPassword; + private String sslTrustPassword; @Option(name = "--name", description = "The name of the broker (Default: same as host)") - String name; + private String name; @Option(name = "--port-offset", description = "Off sets the ports of every acceptor") - int portOffset; + private int portOffset; @Option(name = "--force", description = "Overwrite configuration at destination directory") - boolean force; + private boolean force; @Option(name = "--home", description = "Directory where ActiveMQ Artemis is installed") - File home; + private File home; @Option(name = "--data", description = "Directory where ActiveMQ Data is used. Paths are relative to artemis.instance") - String data = "./data"; + private String data = "./data"; @Option(name = "--clustered", description = "Enable clustering") - boolean clustered = false; + private boolean clustered = false; @Option(name = "--max-hops", description = "Number of hops on the cluster configuration") - int maxHops = 0; + private int maxHops = 0; @Option(name = "--message-load-balancing", description = "Load balancing policy on cluster. [ON_DEMAND (default) | STRICT | OFF]") - MessageLoadBalancingType messageLoadBalancing = MessageLoadBalancingType.ON_DEMAND; + private MessageLoadBalancingType messageLoadBalancing = MessageLoadBalancingType.ON_DEMAND; @Option(name = "--replicated", description = "Enable broker replication") - boolean replicated = false; + private boolean replicated = false; @Option(name = "--shared-store", description = "Enable broker shared store") - boolean sharedStore = false; + private boolean sharedStore = false; @Option(name = "--slave", description = "Valid for shared store or replication: this is a slave server?") - boolean slave; + private boolean slave; @Option(name = "--failover-on-shutdown", description = "Valid for shared store: will shutdown trigger a failover? (Default: false)") - boolean failoverOnShutodwn; + private boolean failoverOnShutodwn; @Option(name = "--cluster-user", description = "The cluster user to use for clustering. (Default: input)") - String clusterUser = null; + private String clusterUser = null; @Option(name = "--cluster-password", description = "The cluster password to use for clustering. (Default: input)") - String clusterPassword = null; + private String clusterPassword = null; @Option(name = "--encoding", description = "The encoding that text files should use") - String encoding = "UTF-8"; + private String encoding = "UTF-8"; @Option(name = "--java-options", description = "Extra java options to be passed to the profile") - String javaOptions = ""; + private String javaOptions = ""; @Option(name = "--allow-anonymous", description = "Enables anonymous configuration on security, opposite of --require-login (Default: input)") - Boolean allowAnonymous = null; + private Boolean allowAnonymous = null; @Option(name = "--require-login", description = "This will configure security to require user / password, opposite of --allow-anonymous") - Boolean requireLogin = null; + private Boolean requireLogin = null; @Option(name = "--paging", description = "Page messages to disk when address becomes full, opposite of --blocking (Default: true)") - Boolean paging; + private Boolean paging; @Option(name = "--blocking", description = "Block producers when address becomes full, opposite of --paging (Default: false)") - Boolean blocking; + private Boolean blocking; @Option(name = "--no-autotune", description = "Disable auto tuning on the journal.") - boolean noAutoTune; + private boolean noAutoTune; @Option(name = "--no-autocreate", description = "Disable Auto create addresses.") - Boolean noAutoCreate; + private Boolean noAutoCreate; @Option(name = "--autocreate", description = "Auto create addresses. (default: true)") - Boolean autoCreate; + private Boolean autoCreate; @Option(name = "--user", description = "The username (Default: input)") - String user; + private String user; @Option(name = "--password", description = "The user's password (Default: input)") - String password; + private String password; @Option(name = "--role", description = "The name for the role created (Default: amq)") - String role = "amq"; + private String role = "amq"; @Option(name = "--no-web", description = "Remove the web-server definition from bootstrap.xml") - boolean noWeb; + private boolean noWeb; @Option(name = "--queues", description = "Comma separated list of queues.") - String queues; + private String queues; @Option(name = "--addresses", description = "Comma separated list of addresses ") - String addresses; + private String addresses; @Option(name = "--aio", description = "Sets the journal as asyncio.") - boolean aio; + private boolean aio; @Option(name = "--nio", description = "Sets the journal as nio.") - boolean nio; + private boolean nio; @Option(name = "--mapped", description = "Sets the journal as mapped.") - boolean mapped; + private boolean mapped; // this is used by the setupJournalType method private JournalType journalType; @Option(name = "--disable-persistence", description = "Disable message persistence to the journal") - boolean disablePersistence; + private boolean disablePersistence; @Option(name = "--no-amqp-acceptor", description = "Disable the AMQP specific acceptor.") - boolean noAmqpAcceptor; + private boolean noAmqpAcceptor; @Option(name = "--no-mqtt-acceptor", description = "Disable the MQTT specific acceptor.") - boolean noMqttAcceptor; + private boolean noMqttAcceptor; @Option(name = "--no-stomp-acceptor", description = "Disable the STOMP specific acceptor.") - boolean noStompAcceptor; + private boolean noStompAcceptor; @Option(name = "--no-hornetq-acceptor", description = "Disable the HornetQ specific acceptor.") - boolean noHornetQAcceptor; + private boolean noHornetQAcceptor; @Option(name = "--no-fsync", description = "Disable usage of fdatasync (channel.force(false) from java nio) on the journal") - boolean noJournalSync; + private boolean noJournalSync; @Option(name = "--global-max-size", description = "Maximum amount of memory which message data may consume (Default: Undefined, half of the system's memory)") - String globalMaxSize; + private String globalMaxSize; - boolean IS_WINDOWS; + private boolean IS_WINDOWS; + private boolean IS_CYGWIN; - boolean IS_CYGWIN; - - public int getMaxHops() { - return maxHops; - } - - public void setMaxHops(int maxHops) { - this.maxHops = maxHops; - } - - public boolean isNoWeb() { - return noWeb; - } - - public void setNoWeb(boolean noWeb) { - this.noWeb = noWeb; - } - - public int getPortOffset() { - return portOffset; - } - - public void setPortOffset(int portOffset) { - this.portOffset = portOffset; - } - - public MessageLoadBalancingType getMessageLoadBalancing() { - return messageLoadBalancing; - } - - public void setMessageLoadBalancing(MessageLoadBalancingType messageLoadBalancing) { - this.messageLoadBalancing = messageLoadBalancing; - } - - public Boolean getAutoCreate() { - return autoCreate; - } - - public Create setAutoCreate(Boolean autoCreate) { - this.autoCreate = autoCreate; - return this; - } - - public Boolean getNoAutoCreate() { - return noAutoCreate; - } - - public Create setNoAutoCreate(Boolean noAutoCreate) { - this.noAutoCreate = noAutoCreate; - return this; - } - - public boolean isAutoCreate() { + private boolean isAutoCreate() { if (autoCreate == null) { if (noAutoCreate != null) { autoCreate = !noAutoCreate.booleanValue(); @@ -325,14 +274,6 @@ public class Create extends InputAbstract { return autoCreate; } - public String getJavaOptions() { - return javaOptions; - } - - public void setJavaOptions(String javaOptions) { - this.javaOptions = javaOptions; - } - public File getInstance() { return directory; } @@ -348,7 +289,7 @@ public class Create extends InputAbstract { return host; } - public String getHostForClustered() { + private String getHostForClustered() { if (getHost().equals("0.0.0.0")) { host = input("--host", "Host " + host + " is not valid for clustering, please provide a valid IP or hostname", "localhost"); } @@ -379,14 +320,6 @@ public class Create extends InputAbstract { this.home = home; } - public boolean isClustered() { - return clustered; - } - - public void setClustered(boolean clustered) { - this.clustered = clustered; - } - public boolean isReplicated() { return replicated; } @@ -399,10 +332,6 @@ public class Create extends InputAbstract { return sharedStore; } - public void setSharedStore(boolean sharedStore) { - this.sharedStore = sharedStore; - } - public String getEncoding() { return encoding; } @@ -419,50 +348,42 @@ public class Create extends InputAbstract { this.data = data; } - public String getClusterUser() { + private String getClusterUser() { if (clusterUser == null) { clusterUser = input("--cluster-user", "Please provide the username:", "cluster-admin"); } return clusterUser; } - public void setClusterUser(String clusterUser) { - this.clusterUser = clusterUser; - } - - public String getClusterPassword() { + private String getClusterPassword() { if (clusterPassword == null) { clusterPassword = inputPassword("--cluster-password", "Please enter the password:", "password-admin"); } return clusterPassword; } - public String getSslKeyPassword() { + private String getSslKeyPassword() { if (sslKeyPassword == null) { sslKeyPassword = inputPassword("--ssl-key-password", "Please enter the keystore password:", "password"); } return sslKeyPassword; } - public String getSslTrust() { + private String getSslTrust() { if (sslTrust == null) { sslTrust = input("--ssl-trust", "Please enter the trust store path:", "/etc/truststore.jks"); } return sslTrust; } - public String getSslTrustPassword() { + private String getSslTrustPassword() { if (sslTrustPassword == null) { sslTrustPassword = inputPassword("--ssl-key-password", "Please enter the keystore password:", "password"); } return sslTrustPassword; } - public void setClusterPassword(String clusterPassword) { - this.clusterPassword = clusterPassword; - } - - public boolean isAllowAnonymous() { + private boolean isAllowAnonymous() { if (allowAnonymous == null) { allowAnonymous = inputBoolean("--allow-anonymous | --require-login", "Allow anonymous access?", true); } @@ -473,21 +394,6 @@ public class Create extends InputAbstract { return paging; } - public void setAllowAnonymous(boolean allowAnonymous) { - this.allowAnonymous = Boolean.valueOf(allowAnonymous); - } - - public Boolean getRequireLogin() { - if (requireLogin == null) { - requireLogin = !isAllowAnonymous(); - } - return requireLogin; - } - - public void setRequireLogin(Boolean requireLogin) { - this.requireLogin = requireLogin; - } - public String getPassword() { if (password == null) { @@ -522,45 +428,18 @@ public class Create extends InputAbstract { this.role = role; } - public String getGlobalMaxSize() { - return globalMaxSize; - } - public void setGlobalMaxSize(String globalMaxSize) { - this.globalMaxSize = globalMaxSize; - } - - public boolean isSlave() { + private boolean isSlave() { return slave; } - public void setSlave(boolean slave) { - this.slave = slave; - } - - public boolean isFailoverOnShutodwn() { + private boolean isFailoverOnShutodwn() { return failoverOnShutodwn; } - public void setFailoverOnShutodwn(boolean failoverOnShutodwn) { - this.failoverOnShutodwn = failoverOnShutodwn; - } - - public Boolean getAllowAnonymous() { - return allowAnonymous; - } - - public void setAllowAnonymous(Boolean allowAnonymous) { - this.allowAnonymous = allowAnonymous; - } - - public boolean isDisablePersistence() { + private boolean isDisablePersistence() { return disablePersistence; } - public void setDisablePersistence(boolean disablePersistence) { - this.disablePersistence = disablePersistence; - } - @Override public Object execute(ActionContext context) throws Exception { this.checkDirectory(); @@ -589,6 +468,7 @@ public class Create extends InputAbstract { throw new RuntimeException(String.format("The path '%s' is not writable.", directory)); } } + public Object run(ActionContext context) throws Exception { IS_WINDOWS = System.getProperty("os.name").toLowerCase().trim().startsWith("win"); @@ -860,7 +740,6 @@ public class Create extends InputAbstract { } } - private static int countBoolean(boolean...b) { int count = 0; @@ -889,23 +768,6 @@ public class Create extends InputAbstract { return logManager; } - /** - * It will create the jms configurations - */ - private void applyJMSObjects(HashMap filters) { - StringWriter writer = new StringWriter(); - PrintWriter printWriter = new PrintWriter(writer); - printWriter.println(); - - for (String str : getQueueList()) { - printWriter.println(" "); - } - for (String str : getAddressList()) { - printWriter.println(" "); - } - filters.put("${jms-list.settings}", writer.toString()); - } - /** * It will create the address and queue configurations */ @@ -1004,7 +866,7 @@ public class Create extends InputAbstract { } } - String path(String value, boolean unixPaths) throws IOException { + private String path(String value, boolean unixPaths) throws IOException { return path(new File(value), unixPaths); } diff --git a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/HelpAction.java b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/HelpAction.java index a15449402f..ebbacddbaa 100644 --- a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/HelpAction.java +++ b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/HelpAction.java @@ -19,7 +19,6 @@ package org.apache.activemq.artemis.cli.commands; import java.io.File; import io.airlift.airline.Help; -import org.apache.activemq.artemis.util.OptionsUtil; public class HelpAction extends Help implements Action { diff --git a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/InputAbstract.java b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/InputAbstract.java index 4d1fe356cb..d4535be334 100644 --- a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/InputAbstract.java +++ b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/InputAbstract.java @@ -37,15 +37,10 @@ public class InputAbstract extends ActionAbstract { @Option(name = "--silent", description = "It will disable all the inputs, and it would make a best guess for any required input") private boolean silentInput = false; - public boolean isSilentInput() { + private boolean isSilentInput() { return silentInput || !inputEnabled; } - public void setSilentInput(boolean silentInput) { - this.silentInput = silentInput; - } - - protected boolean inputBoolean(String propertyName, String prompt, boolean silentDefault) { if (isSilentInput()) { return silentDefault; diff --git a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/Mask.java b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/Mask.java index d90536edfe..e8a778f6d7 100644 --- a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/Mask.java +++ b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/Mask.java @@ -16,17 +16,16 @@ */ package org.apache.activemq.artemis.cli.commands; -import io.airlift.airline.Arguments; -import io.airlift.airline.Command; -import io.airlift.airline.Option; -import org.apache.activemq.artemis.util.OptionsUtil; -import org.apache.activemq.artemis.utils.DefaultSensitiveStringCodec; -import org.apache.activemq.artemis.utils.PasswordMaskingUtil; - import java.io.File; import java.util.HashMap; import java.util.Map; +import io.airlift.airline.Arguments; +import io.airlift.airline.Command; +import io.airlift.airline.Option; +import org.apache.activemq.artemis.utils.DefaultSensitiveStringCodec; +import org.apache.activemq.artemis.utils.PasswordMaskingUtil; + @Command(name = "mask", description = "mask a password and print it out") public class Mask implements Action { diff --git a/artemis-cli/src/main/java/org/apache/activemq/artemis/util/OptionsUtil.java b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/OptionsUtil.java similarity index 86% rename from artemis-cli/src/main/java/org/apache/activemq/artemis/util/OptionsUtil.java rename to artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/OptionsUtil.java index ae0aba34cf..926236a237 100644 --- a/artemis-cli/src/main/java/org/apache/activemq/artemis/util/OptionsUtil.java +++ b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/OptionsUtil.java @@ -15,19 +15,17 @@ * limitations under the License. */ -package org.apache.activemq.artemis.util; - -import io.airlift.airline.Option; -import org.apache.activemq.artemis.cli.commands.Action; -import org.apache.activemq.artemis.cli.commands.InvalidOptionsError; +package org.apache.activemq.artemis.cli.commands; import java.lang.reflect.Field; import java.util.HashSet; import java.util.Set; +import io.airlift.airline.Option; + public class OptionsUtil { - public static void findAllOptions(Set options, Class command) { + private static void findAllOptions(Set options, Class command) { for (Field field : command.getDeclaredFields()) { if (field.isAnnotationPresent(Option.class)) { Option annotation = field.getAnnotation(Option.class); @@ -43,7 +41,7 @@ public class OptionsUtil { } } - public static Set findCommandOptions(Class command) { + private static Set findCommandOptions(Class command) { Set options = new HashSet<>(); findAllOptions(options, command); 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 02478a179d..a299b182da 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 @@ -22,13 +22,13 @@ import java.util.TimerTask; import io.airlift.airline.Command; import io.airlift.airline.Option; -import org.apache.activemq.artemis.cli.Artemis; import org.apache.activemq.artemis.cli.commands.tools.LockAbstract; +import org.apache.activemq.artemis.cli.commands.tools.PrintData; +import org.apache.activemq.artemis.cli.factory.BrokerFactory; +import org.apache.activemq.artemis.cli.factory.security.SecurityManagerFactory; import org.apache.activemq.artemis.components.ExternalComponent; import org.apache.activemq.artemis.dto.BrokerDTO; import org.apache.activemq.artemis.dto.ComponentDTO; -import org.apache.activemq.artemis.factory.BrokerFactory; -import org.apache.activemq.artemis.factory.SecurityManagerFactory; import org.apache.activemq.artemis.integration.Broker; import org.apache.activemq.artemis.integration.bootstrap.ActiveMQBootstrapLogger; import org.apache.activemq.artemis.spi.core.security.ActiveMQSecurityManager; @@ -40,7 +40,7 @@ public class Run extends LockAbstract { @Option(name = "--allow-kill", description = "This will allow the server to kill itself. Useful for tests (failover tests for instance)") boolean allowKill; - static boolean embedded = false; + private static boolean embedded = false; public static final ReusableLatch latchRunning = new ReusableLatch(0); @@ -60,7 +60,7 @@ public class Run extends LockAbstract { public Object execute(ActionContext context) throws Exception { super.execute(context); - Artemis.printBanner(); + PrintData.printBanner(); BrokerDTO broker = getBrokerDTO(); diff --git a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/address/HelpAddress.java b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/address/HelpAddress.java index c89621e03e..0dcd20fc8e 100644 --- a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/address/HelpAddress.java +++ b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/address/HelpAddress.java @@ -25,7 +25,7 @@ import io.airlift.airline.Help; import org.apache.activemq.artemis.cli.commands.Action; import org.apache.activemq.artemis.cli.commands.ActionContext; import org.apache.activemq.artemis.cli.commands.InvalidOptionsError; -import org.apache.activemq.artemis.util.OptionsUtil; +import org.apache.activemq.artemis.cli.commands.OptionsUtil; public class HelpAddress extends Help implements Action { diff --git a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/messages/Browse.java b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/messages/Browse.java index 66336b385b..5f03c82245 100644 --- a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/messages/Browse.java +++ b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/messages/Browse.java @@ -24,7 +24,6 @@ import javax.jms.Session; import io.airlift.airline.Command; import io.airlift.airline.Option; import org.apache.activemq.artemis.cli.commands.ActionContext; -import org.apache.activemq.artemis.cli.commands.util.ConsumerThread; import org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory; import org.apache.activemq.artemis.jms.client.ActiveMQDestination; diff --git a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/messages/Consumer.java b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/messages/Consumer.java index 1af9fac897..5a2a8b6565 100644 --- a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/messages/Consumer.java +++ b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/messages/Consumer.java @@ -24,7 +24,6 @@ import javax.jms.Session; import io.airlift.airline.Command; import io.airlift.airline.Option; import org.apache.activemq.artemis.cli.commands.ActionContext; -import org.apache.activemq.artemis.cli.commands.util.ConsumerThread; import org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory; import org.apache.activemq.artemis.jms.client.ActiveMQDestination; diff --git a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/util/ConsumerThread.java b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/messages/ConsumerThread.java similarity index 99% rename from artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/util/ConsumerThread.java rename to artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/messages/ConsumerThread.java index fc635186c8..b69e618e2d 100644 --- a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/util/ConsumerThread.java +++ b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/messages/ConsumerThread.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.activemq.artemis.cli.commands.util; +package org.apache.activemq.artemis.cli.commands.messages; import javax.jms.BytesMessage; import javax.jms.Destination; diff --git a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/messages/Producer.java b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/messages/Producer.java index 4ec68cafc6..f7c11aebda 100644 --- a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/messages/Producer.java +++ b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/messages/Producer.java @@ -24,7 +24,6 @@ import javax.jms.Session; import io.airlift.airline.Command; import io.airlift.airline.Option; import org.apache.activemq.artemis.cli.commands.ActionContext; -import org.apache.activemq.artemis.cli.commands.util.ProducerThread; import org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory; import org.apache.activemq.artemis.jms.client.ActiveMQDestination; diff --git a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/util/ProducerThread.java b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/messages/ProducerThread.java similarity index 99% rename from artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/util/ProducerThread.java rename to artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/messages/ProducerThread.java index 67cef6723f..9a4c1a715d 100644 --- a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/util/ProducerThread.java +++ b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/messages/ProducerThread.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.activemq.artemis.cli.commands.util; +package org.apache.activemq.artemis.cli.commands.messages; import javax.jms.BytesMessage; import javax.jms.DeliveryMode; diff --git a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/queue/HelpQueue.java b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/queue/HelpQueue.java index f106a1848d..dc2bd453b0 100644 --- a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/queue/HelpQueue.java +++ b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/queue/HelpQueue.java @@ -25,7 +25,7 @@ import io.airlift.airline.Help; import org.apache.activemq.artemis.cli.commands.Action; import org.apache.activemq.artemis.cli.commands.ActionContext; import org.apache.activemq.artemis.cli.commands.InvalidOptionsError; -import org.apache.activemq.artemis.util.OptionsUtil; +import org.apache.activemq.artemis.cli.commands.OptionsUtil; public class HelpQueue extends Help implements Action { diff --git a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/HelpData.java b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/HelpData.java index a7a27a6ae2..86b9a60076 100644 --- a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/HelpData.java +++ b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/HelpData.java @@ -25,7 +25,7 @@ import io.airlift.airline.Help; import org.apache.activemq.artemis.cli.commands.Action; import org.apache.activemq.artemis.cli.commands.ActionContext; import org.apache.activemq.artemis.cli.commands.InvalidOptionsError; -import org.apache.activemq.artemis.util.OptionsUtil; +import org.apache.activemq.artemis.cli.commands.OptionsUtil; public class HelpData extends Help implements Action { diff --git a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/LockAbstract.java b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/LockAbstract.java index 5bffb36644..cbc5234eb9 100644 --- a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/LockAbstract.java +++ b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/LockAbstract.java @@ -32,15 +32,6 @@ public abstract class LockAbstract extends DataAbstract { private static RandomAccessFile serverLockFile = null; private static FileLock serverLockLock = null; - protected File getLockPlace() throws Exception { - String brokerInstance = getBrokerInstance(); - if (brokerInstance != null) { - return new File(new File(brokerInstance), "lock"); - } else { - return null; - } - } - public static void unlock() { try { if (serverLockFile != null) { @@ -70,7 +61,7 @@ public abstract class LockAbstract extends DataAbstract { return null; } - protected void lockCLI(File lockPlace) throws Exception { + void lockCLI(File lockPlace) throws Exception { if (lockPlace != null) { lockPlace.mkdirs(); if (serverLockFile == null) { @@ -89,4 +80,12 @@ public abstract class LockAbstract extends DataAbstract { } } + private File getLockPlace() throws Exception { + String brokerInstance = getBrokerInstance(); + if (brokerInstance != null) { + return new File(new File(brokerInstance), "lock"); + } else { + return null; + } + } } 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 2816aaf23f..d5e895dc84 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 @@ -17,6 +17,8 @@ package org.apache.activemq.artemis.cli.commands.tools; import java.io.File; +import java.io.InputStream; +import java.io.OutputStream; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -31,7 +33,6 @@ import io.airlift.airline.Command; import org.apache.activemq.artemis.api.core.ActiveMQBuffer; import org.apache.activemq.artemis.api.core.ActiveMQBuffers; import org.apache.activemq.artemis.api.core.SimpleString; -import org.apache.activemq.artemis.cli.Artemis; import org.apache.activemq.artemis.cli.commands.ActionContext; import org.apache.activemq.artemis.core.journal.RecordInfo; import org.apache.activemq.artemis.core.message.impl.CoreMessagePersister; @@ -81,7 +82,7 @@ public class PrintData extends OptionalLocking { public static void printData(File bindingsDirectory, File messagesDirectory, File pagingDirectory) throws Exception { // Having the version on the data report is an information very useful to understand what happened // When debugging stuff - Artemis.printBanner(); + printBanner(); File serverLockFile = new File(messagesDirectory, "server.lock"); @@ -135,6 +136,20 @@ public class PrintData extends OptionalLocking { } + public static void printBanner() throws Exception { + copy(PrintData.class.getResourceAsStream("banner.txt"), System.out); + } + + private static long copy(InputStream in, OutputStream out) throws Exception { + byte[] buffer = new byte[1024]; + int len = in.read(buffer); + while (len != -1) { + out.write(buffer, 0, len); + len = in.read(buffer); + } + return len; + } + private static void printPages(File pageDirectory, DescribeJournal describeJournal) { try { @@ -214,12 +229,9 @@ public class PrintData extends OptionalLocking { System.out.println(); msgID++; } - pgid++; - } } - } catch (Exception e) { e.printStackTrace(); } @@ -228,7 +240,7 @@ public class PrintData extends OptionalLocking { /** * Calculate the acks on the page system */ - protected static PageCursorsInfo calculateCursorsInfo(List records) throws Exception { + private static PageCursorsInfo calculateCursorsInfo(List records) throws Exception { PageCursorsInfo cursorInfo = new PageCursorsInfo(); @@ -293,25 +305,18 @@ public class PrintData extends OptionalLocking { /** * @return the pgTXs */ - public Set getPgTXs() { + Set getPgTXs() { return pgTXs; } /** * @return the cursorRecords */ - public Map> getCursorRecords() { + Map> getCursorRecords() { return cursorRecords; } - /** - * @return the completePages - */ - public Map> getCompletePages() { - return completePages; - } - - public Set getCompletePages(Long queueID) { + Set getCompletePages(Long queueID) { Set completePagesSet = completePages.get(queueID); if (completePagesSet == null) { diff --git a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/XmlDataConstants.java b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/XmlDataConstants.java deleted file mode 100644 index be7e84e61a..0000000000 --- a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/XmlDataConstants.java +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.activemq.artemis.cli.commands.tools; - -/** - * The constants shared by org.apache.activemq.tools.XmlDataImporter and - * org.apache.activemq.tools.XmlDataExporter. - */ -public final class XmlDataConstants { - - private XmlDataConstants() { - // Utility - } - - public static final String XML_VERSION = "1.0"; - public static final String DOCUMENT_PARENT = "activemq-journal"; - public static final String BINDINGS_PARENT = "bindings"; - - public static final String QUEUE_BINDINGS_CHILD = "queue-binding"; - public static final String QUEUE_BINDING_ADDRESS = "address"; - public static final String QUEUE_BINDING_FILTER_STRING = "filter-string"; - public static final String QUEUE_BINDING_NAME = "name"; - public static final String QUEUE_BINDING_ID = "id"; - public static final String QUEUE_BINDING_ROUTING_TYPE = "routing-type"; - - public static final String ADDRESS_BINDINGS_CHILD = "address-binding"; - public static final String ADDRESS_BINDING_NAME = "name"; - public static final String ADDRESS_BINDING_ID = "id"; - public static final String ADDRESS_BINDING_ROUTING_TYPE = "routing-types"; - - public static final String MESSAGES_PARENT = "messages"; - public static final String MESSAGES_CHILD = "message"; - public static final String MESSAGE_ID = "id"; - public static final String MESSAGE_PRIORITY = "priority"; - public static final String MESSAGE_EXPIRATION = "expiration"; - public static final String MESSAGE_TIMESTAMP = "timestamp"; - public static final String DEFAULT_TYPE_PRETTY = "default"; - public static final String BYTES_TYPE_PRETTY = "bytes"; - public static final String MAP_TYPE_PRETTY = "map"; - public static final String OBJECT_TYPE_PRETTY = "object"; - public static final String STREAM_TYPE_PRETTY = "stream"; - public static final String TEXT_TYPE_PRETTY = "text"; - public static final String MESSAGE_TYPE = "type"; - public static final String MESSAGE_IS_LARGE = "isLarge"; - public static final String MESSAGE_USER_ID = "user-id"; - public static final String MESSAGE_BODY = "body"; - public static final String PROPERTIES_PARENT = "properties"; - public static final String PROPERTIES_CHILD = "property"; - public static final String PROPERTY_NAME = "name"; - public static final String PROPERTY_VALUE = "value"; - public static final String PROPERTY_TYPE = "type"; - public static final String QUEUES_PARENT = "queues"; - public static final String QUEUES_CHILD = "queue"; - public static final String QUEUE_NAME = "name"; - public static final String PROPERTY_TYPE_BOOLEAN = "boolean"; - public static final String PROPERTY_TYPE_BYTE = "byte"; - public static final String PROPERTY_TYPE_BYTES = "bytes"; - public static final String PROPERTY_TYPE_SHORT = "short"; - public static final String PROPERTY_TYPE_INTEGER = "integer"; - public static final String PROPERTY_TYPE_LONG = "long"; - public static final String PROPERTY_TYPE_FLOAT = "float"; - public static final String PROPERTY_TYPE_DOUBLE = "double"; - public static final String PROPERTY_TYPE_STRING = "string"; - public static final String PROPERTY_TYPE_SIMPLE_STRING = "simple-string"; - - static final String JMS_CONNECTION_FACTORY_NAME = "name"; - static final String JMS_CONNECTION_FACTORY_CLIENT_ID = "client-id"; - static final String JMS_CONNECTION_FACTORY_CALL_FAILOVER_TIMEOUT = "call-failover-timeout"; - static final String JMS_CONNECTION_FACTORY_CALL_TIMEOUT = "call-timeout"; - static final String JMS_CONNECTION_FACTORY_CLIENT_FAILURE_CHECK_PERIOD = "client-failure-check-period"; - static final String JMS_CONNECTION_FACTORY_CONFIRMATION_WINDOW_SIZE = "confirmation-window-size"; - static final String JMS_CONNECTION_FACTORY_CONNECTION_TTL = "connection-ttl"; - static final String JMS_CONNECTION_FACTORY_CONSUMER_MAX_RATE = "consumer-max-rate"; - static final String JMS_CONNECTION_FACTORY_CONSUMER_WINDOW_SIZE = "consumer-window-size"; - static final String JMS_CONNECTION_FACTORY_DISCOVERY_GROUP_NAME = "discovery-group-name"; - static final String JMS_CONNECTION_FACTORY_DUPS_OK_BATCH_SIZE = "dups-ok-batch-size"; - static final String JMS_CONNECTION_FACTORY_TYPE = "type"; - static final String JMS_CONNECTION_FACTORY_GROUP_ID = "group-id"; - static final String JMS_CONNECTION_FACTORY_LOAD_BALANCING_POLICY_CLASS_NAME = "load-balancing-policy-class-name"; - static final String JMS_CONNECTION_FACTORY_MAX_RETRY_INTERVAL = "max-retry-interval"; - static final String JMS_CONNECTION_FACTORY_MIN_LARGE_MESSAGE_SIZE = "min-large-message-size"; - static final String JMS_CONNECTION_FACTORY_PRODUCER_MAX_RATE = "producer-max-rate"; - static final String JMS_CONNECTION_FACTORY_PRODUCER_WINDOW_SIZE = "producer-window-size"; - static final String JMS_CONNECTION_FACTORY_RECONNECT_ATTEMPTS = "reconnect-attempts"; - static final String JMS_CONNECTION_FACTORY_RETRY_INTERVAL = "retry-interval"; - static final String JMS_CONNECTION_FACTORY_RETRY_INTERVAL_MULTIPLIER = "retry-interval-multiplier"; - static final String JMS_CONNECTION_FACTORY_SCHEDULED_THREAD_POOL_MAX_SIZE = "scheduled-thread-pool-max-size"; - static final String JMS_CONNECTION_FACTORY_THREAD_POOL_MAX_SIZE = "thread-pool-max-size"; - static final String JMS_CONNECTION_FACTORY_TRANSACTION_BATCH_SIZE = "transaction-batch-size"; - static final String JMS_CONNECTION_FACTORY_CONNECTORS = "connectors"; - static final String JMS_CONNECTION_FACTORY_CONNECTOR = "connector"; - static final String JMS_CONNECTION_FACTORY_AUTO_GROUP = "auto-group"; - static final String JMS_CONNECTION_FACTORY_BLOCK_ON_ACKNOWLEDGE = "block-on-acknowledge"; - static final String JMS_CONNECTION_FACTORY_BLOCK_ON_DURABLE_SEND = "block-on-durable-send"; - static final String JMS_CONNECTION_FACTORY_BLOCK_ON_NON_DURABLE_SEND = "block-on-non-durable-send"; - static final String JMS_CONNECTION_FACTORY_CACHE_LARGE_MESSAGES_CLIENT = "cache-large-messages-client"; - static final String JMS_CONNECTION_FACTORY_COMPRESS_LARGE_MESSAGES = "compress-large-messages"; - static final String JMS_CONNECTION_FACTORY_FAILOVER_ON_INITIAL_CONNECTION = "failover-on-initial-connection"; - static final String JMS_CONNECTION_FACTORY_HA = "ha"; - static final String JMS_CONNECTION_FACTORY_PREACKNOWLEDGE = "preacknowledge"; - static final String JMS_CONNECTION_FACTORY_USE_GLOBAL_POOLS = "use-global-pools"; - - static final String JMS_DESTINATIONS = "jms-destinations"; - static final String JMS_DESTINATION = "jms-destination"; - static final String JMS_DESTINATION_NAME = "name"; - static final String JMS_DESTINATION_SELECTOR = "selector"; - static final String JMS_DESTINATION_TYPE = "type"; - - static final String JMS_JNDI_ENTRIES = "entries"; - static final String JMS_JNDI_ENTRY = "entry"; - - public static final String JNDI_COMPATIBILITY_PREFIX = "java:jboss/exported/"; - - static final String NULL = "_AMQ_NULL"; -} \ No newline at end of file diff --git a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/CompactJournal.java b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/journal/CompactJournal.java similarity index 82% rename from artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/CompactJournal.java rename to artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/journal/CompactJournal.java index 2959828e1d..347bd4b33f 100644 --- a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/CompactJournal.java +++ b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/journal/CompactJournal.java @@ -14,12 +14,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.activemq.artemis.cli.commands.tools; +package org.apache.activemq.artemis.cli.commands.tools.journal; import java.io.File; import io.airlift.airline.Command; import org.apache.activemq.artemis.cli.commands.ActionContext; +import org.apache.activemq.artemis.cli.commands.tools.LockAbstract; import org.apache.activemq.artemis.core.config.Configuration; import org.apache.activemq.artemis.core.io.IOCriticalErrorListener; import org.apache.activemq.artemis.core.io.nio.NIOSequentialFileFactory; @@ -44,12 +45,12 @@ public final class CompactJournal extends LockAbstract { return null; } - void compactJournal(final File directory, - final String journalPrefix, - final String journalSuffix, - final int minFiles, - final int fileSize, - final IOCriticalErrorListener listener) throws Exception { + private void compactJournal(final File directory, + final String journalPrefix, + final String journalSuffix, + final int minFiles, + final int fileSize, + final IOCriticalErrorListener listener) throws Exception { NIOSequentialFileFactory nio = new NIOSequentialFileFactory(directory, listener, 1); JournalImpl journal = new JournalImpl(fileSize, minFiles, minFiles, 0, 0, nio, journalPrefix, journalSuffix, 1); 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/journal/DecodeJournal.java similarity index 90% rename from artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/DecodeJournal.java rename to artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/journal/DecodeJournal.java index f290eba623..35a4ae212c 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/journal/DecodeJournal.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.activemq.artemis.cli.commands.tools; +package org.apache.activemq.artemis.cli.commands.tools.journal; import java.io.BufferedReader; import java.io.File; @@ -30,6 +30,7 @@ import java.util.concurrent.atomic.AtomicInteger; import io.airlift.airline.Command; import io.airlift.airline.Option; import org.apache.activemq.artemis.cli.commands.ActionContext; +import org.apache.activemq.artemis.cli.commands.tools.LockAbstract; import org.apache.activemq.artemis.core.io.nio.NIOSequentialFileFactory; import org.apache.activemq.artemis.core.journal.RecordInfo; import org.apache.activemq.artemis.core.journal.impl.JournalImpl; @@ -79,12 +80,12 @@ public class DecodeJournal extends LockAbstract { } - public static void importJournal(final String directory, - final String journalPrefix, - final String journalSuffix, - final int minFiles, - final int fileSize, - final InputStream stream) throws Exception { + private static void importJournal(final String directory, + final String journalPrefix, + final String journalSuffix, + final int minFiles, + final int fileSize, + final InputStream stream) throws Exception { Reader reader = new InputStreamReader(stream); importJournal(directory, journalPrefix, journalSuffix, minFiles, fileSize, reader); } @@ -216,8 +217,7 @@ public class DecodeJournal extends LockAbstract { journal.stop(); } - protected static AtomicInteger getCounter(final Long txID, final Map txCounters) { - + private static AtomicInteger getCounter(final Long txID, final Map txCounters) { AtomicInteger counter = txCounters.get(txID); if (counter == null) { counter = new AtomicInteger(0); @@ -227,7 +227,7 @@ public class DecodeJournal extends LockAbstract { return counter; } - protected static RecordInfo parseRecord(final Properties properties) throws Exception { + private static RecordInfo parseRecord(final Properties properties) throws Exception { long id = parseLong("id", properties); byte userRecordType = parseByte("userRecordType", properties); boolean isUpdate = parseBoolean("isUpdate", properties); @@ -241,10 +241,6 @@ public class DecodeJournal extends LockAbstract { return decode(value); } - /** - * @param properties - * @return - */ private static int parseInt(final String name, final Properties properties) throws Exception { String value = parseString(name, properties); @@ -269,12 +265,6 @@ public class DecodeJournal extends LockAbstract { return Byte.parseByte(value); } - /** - * @param name - * @param properties - * @return - * @throws Exception - */ private static String parseString(final String name, final Properties properties) throws Exception { String value = properties.getProperty(name); @@ -284,7 +274,7 @@ public class DecodeJournal extends LockAbstract { return value; } - protected static Properties parseLine(final String[] splitLine) { + private static Properties parseLine(final String[] splitLine) { Properties properties = new Properties(); for (String el : splitLine) { @@ -303,16 +293,4 @@ public class DecodeJournal extends LockAbstract { return Base64.decode(data, Base64.DONT_BREAK_LINES | Base64.URL_SAFE); } - public void printUsage() { - for (int i = 0; i < 10; i++) { - System.err.println(); - } - System.err.println("This method will export the journal at low level record."); - System.err.println(); - System.err.println(); - for (int i = 0; i < 10; i++) { - System.err.println(); - } - } - } 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/journal/EncodeJournal.java similarity index 87% rename from artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/EncodeJournal.java rename to artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/journal/EncodeJournal.java index e5fd80cea7..ec47837133 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/journal/EncodeJournal.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.activemq.artemis.cli.commands.tools; +package org.apache.activemq.artemis.cli.commands.tools.journal; import java.io.BufferedOutputStream; import java.io.File; @@ -25,6 +25,7 @@ import java.util.List; import io.airlift.airline.Command; import io.airlift.airline.Option; import org.apache.activemq.artemis.cli.commands.ActionContext; +import org.apache.activemq.artemis.cli.commands.tools.LockAbstract; import org.apache.activemq.artemis.core.io.SequentialFileFactory; import org.apache.activemq.artemis.core.io.nio.NIOSequentialFileFactory; import org.apache.activemq.artemis.core.journal.RecordInfo; @@ -64,11 +65,11 @@ public class EncodeJournal extends LockAbstract { return null; } - public static void exportJournal(final String directory, - final String journalPrefix, - final String journalSuffix, - final int minFiles, - final int fileSize) throws Exception { + private static void exportJournal(final String directory, + final String journalPrefix, + final String journalSuffix, + final int minFiles, + final int fileSize) throws Exception { exportJournal(directory, journalPrefix, journalSuffix, minFiles, fileSize, System.out); } @@ -105,15 +106,9 @@ public class EncodeJournal extends LockAbstract { } } - /** - * @param out - * @param fileFactory - * @param file - * @throws Exception - */ - public static void exportJournalFile(final PrintStream out, - final SequentialFileFactory fileFactory, - final JournalFile file) throws Exception { + private static void exportJournalFile(final PrintStream out, + final SequentialFileFactory fileFactory, + final JournalFile file) throws Exception { JournalImpl.readJournalFile(fileFactory, file, new JournalReaderCallback() { @Override @@ -193,16 +188,4 @@ public class EncodeJournal extends LockAbstract { return Base64.encodeBytes(data, 0, data.length, Base64.DONT_BREAK_LINES | Base64.URL_SAFE); } - public void printUsage() { - for (int i = 0; i < 10; i++) { - System.err.println(); - } - System.err.println("This method will export the journal at low level record."); - System.err.println(); - System.err.println(); - for (int i = 0; i < 10; i++) { - System.err.println(); - } - } - } diff --git a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/PerfJournal.java b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/journal/PerfJournal.java similarity index 96% rename from artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/PerfJournal.java rename to artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/journal/PerfJournal.java index f7d89ecce5..3805de67d7 100644 --- a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/PerfJournal.java +++ b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/journal/PerfJournal.java @@ -15,13 +15,14 @@ * limitations under the License. */ -package org.apache.activemq.artemis.cli.commands.tools; +package org.apache.activemq.artemis.cli.commands.tools.journal; import java.text.DecimalFormat; import io.airlift.airline.Command; import io.airlift.airline.Option; import org.apache.activemq.artemis.cli.commands.ActionContext; +import org.apache.activemq.artemis.cli.commands.tools.LockAbstract; import org.apache.activemq.artemis.cli.commands.util.SyncCalculation; import org.apache.activemq.artemis.core.config.impl.FileConfiguration; import org.apache.activemq.artemis.core.server.JournalType; @@ -33,7 +34,6 @@ public class PerfJournal extends LockAbstract { @Option(name = "--block-size", description = "The block size for each write (default 4096)") public int size = 4 * 1024; - @Option(name = "--writes", description = "The number of writes to be performed (default 250)") public int writes = 250; diff --git a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/xml/XmlDataConstants.java b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/xml/XmlDataConstants.java new file mode 100644 index 0000000000..61c6d6bd61 --- /dev/null +++ b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/xml/XmlDataConstants.java @@ -0,0 +1,81 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.activemq.artemis.cli.commands.tools.xml; + +/** + * The constants shared by org.apache.activemq.tools.XmlDataImporter and + * org.apache.activemq.tools.XmlDataExporter. + */ +public final class XmlDataConstants { + + private XmlDataConstants() { + // Utility + } + + static final String XML_VERSION = "1.0"; + static final String DOCUMENT_PARENT = "activemq-journal"; + static final String BINDINGS_PARENT = "bindings"; + + static final String QUEUE_BINDINGS_CHILD = "queue-binding"; + static final String QUEUE_BINDING_ADDRESS = "address"; + static final String QUEUE_BINDING_FILTER_STRING = "filter-string"; + static final String QUEUE_BINDING_NAME = "name"; + static final String QUEUE_BINDING_ID = "id"; + static final String QUEUE_BINDING_ROUTING_TYPE = "routing-type"; + + static final String ADDRESS_BINDINGS_CHILD = "address-binding"; + static final String ADDRESS_BINDING_NAME = "name"; + static final String ADDRESS_BINDING_ID = "id"; + static final String ADDRESS_BINDING_ROUTING_TYPE = "routing-types"; + + static final String MESSAGES_PARENT = "messages"; + static final String MESSAGES_CHILD = "message"; + static final String MESSAGE_ID = "id"; + static final String MESSAGE_PRIORITY = "priority"; + static final String MESSAGE_EXPIRATION = "expiration"; + static final String MESSAGE_TIMESTAMP = "timestamp"; + static final String DEFAULT_TYPE_PRETTY = "default"; + static final String BYTES_TYPE_PRETTY = "bytes"; + static final String MAP_TYPE_PRETTY = "map"; + static final String OBJECT_TYPE_PRETTY = "object"; + static final String STREAM_TYPE_PRETTY = "stream"; + static final String TEXT_TYPE_PRETTY = "text"; + static final String MESSAGE_TYPE = "type"; + static final String MESSAGE_IS_LARGE = "isLarge"; + static final String MESSAGE_USER_ID = "user-id"; + static final String MESSAGE_BODY = "body"; + static final String PROPERTIES_PARENT = "properties"; + static final String PROPERTIES_CHILD = "property"; + static final String PROPERTY_NAME = "name"; + static final String PROPERTY_VALUE = "value"; + static final String PROPERTY_TYPE = "type"; + static final String QUEUES_PARENT = "queues"; + static final String QUEUES_CHILD = "queue"; + public static final String QUEUE_NAME = "name"; + static final String PROPERTY_TYPE_BOOLEAN = "boolean"; + static final String PROPERTY_TYPE_BYTE = "byte"; + static final String PROPERTY_TYPE_BYTES = "bytes"; + static final String PROPERTY_TYPE_SHORT = "short"; + static final String PROPERTY_TYPE_INTEGER = "integer"; + static final String PROPERTY_TYPE_LONG = "long"; + static final String PROPERTY_TYPE_FLOAT = "float"; + static final String PROPERTY_TYPE_DOUBLE = "double"; + static final String PROPERTY_TYPE_STRING = "string"; + static final String PROPERTY_TYPE_SIMPLE_STRING = "simple-string"; + + static final String NULL = "_AMQ_NULL"; +} \ No newline at end of file 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/xml/XmlDataExporter.java similarity index 99% rename from artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/XmlDataExporter.java rename to artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/xml/XmlDataExporter.java index d2f62043ef..607f92beb5 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/xml/XmlDataExporter.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.activemq.artemis.cli.commands.tools; +package org.apache.activemq.artemis.cli.commands.tools.xml; import javax.xml.stream.XMLOutputFactory; import javax.xml.stream.XMLStreamException; @@ -45,6 +45,7 @@ import org.apache.activemq.artemis.api.core.Message; import org.apache.activemq.artemis.api.core.RoutingType; import org.apache.activemq.artemis.api.core.SimpleString; import org.apache.activemq.artemis.cli.commands.ActionContext; +import org.apache.activemq.artemis.cli.commands.tools.OptionalLocking; import org.apache.activemq.artemis.core.config.Configuration; import org.apache.activemq.artemis.core.config.impl.ConfigurationImpl; import org.apache.activemq.artemis.core.journal.Journal; diff --git a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/XmlDataExporterUtil.java b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/xml/XmlDataExporterUtil.java similarity index 92% rename from artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/XmlDataExporterUtil.java rename to artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/xml/XmlDataExporterUtil.java index 7711648ba9..df48dcf471 100644 --- a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/XmlDataExporterUtil.java +++ b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/xml/XmlDataExporterUtil.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.activemq.artemis.cli.commands.tools; +package org.apache.activemq.artemis.cli.commands.tools.xml; import com.google.common.base.Preconditions; import org.apache.activemq.artemis.api.core.ActiveMQBuffer; @@ -27,7 +27,7 @@ import org.apache.activemq.artemis.utils.Base64; */ public class XmlDataExporterUtil { - public static String convertProperty(final Object value) { + static String convertProperty(final Object value) { if (value instanceof byte[]) { return encode((byte[]) value); } else { @@ -35,7 +35,7 @@ public class XmlDataExporterUtil { } } - public static String getPropertyType(final Object value) { + static String getPropertyType(final Object value) { String stringValue = null; // if the value is null then we can't really know what it is so just set @@ -87,11 +87,8 @@ public class XmlDataExporterUtil { /** * Base64 encode a ServerMessage body into the proper XML format - * - * @param message - * @return */ - public static String encodeMessageBody(final Message message) throws Exception { + static String encodeMessageBody(final Message message) throws Exception { Preconditions.checkNotNull(message, "ServerMessage can not be null"); ActiveMQBuffer byteBuffer = message.toCore().getReadOnlyBodyBuffer(); diff --git a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/XmlDataImporter.java b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/xml/XmlDataImporter.java similarity index 90% rename from artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/XmlDataImporter.java rename to artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/xml/XmlDataImporter.java index 518d231f17..a824177c81 100644 --- a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/XmlDataImporter.java +++ b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/tools/xml/XmlDataImporter.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.activemq.artemis.cli.commands.tools; +package org.apache.activemq.artemis.cli.commands.tools.xml; import javax.xml.XMLConstants; import javax.xml.stream.XMLInputFactory; @@ -77,12 +77,9 @@ import org.jboss.logging.Logger; */ @Command(name = "imp", description = "Import all message-data using an XML that could be interpreted by any system.") public final class XmlDataImporter extends ActionAbstract { - // Constants ----------------------------------------------------- private static final Logger logger = Logger.getLogger(XmlDataImporter.class); - // Attributes ---------------------------------------------------- - private XMLStreamReader reader; // this session is really only needed if the "session" variable does not auto-commit sends @@ -151,7 +148,6 @@ public final class XmlDataImporter extends ActionAbstract { * * @param inputStream the stream from which to read the XML for import * @param session used for sending messages, must use auto-commit for sends - * @throws Exception */ public void process(InputStream inputStream, ClientSession session) throws Exception { this.process(inputStream, session, null); @@ -413,8 +409,6 @@ public final class XmlDataImporter extends ActionAbstract { String key = ""; String value = ""; String propertyType = ""; - String realStringValue = null; - SimpleString realSimpleStringValue = null; for (int i = 0; i < reader.getAttributeCount(); i++) { String attributeName = reader.getAttributeLocalName(i); @@ -515,8 +509,6 @@ public final class XmlDataImporter extends ActionAbstract { * CDATA has to be decoded in its entirety. * * @param processor used to deal with the decoded CDATA elements - * @throws IOException - * @throws XMLStreamException */ private void getMessageBodyBytes(MessageBodyBytesProcessor processor) throws IOException, XMLStreamException { int currentEventType; @@ -612,79 +604,11 @@ public final class XmlDataImporter extends ActionAbstract { } } - private String getEntries() throws Exception { - StringBuilder entry = new StringBuilder(); - boolean endLoop = false; - - while (reader.hasNext()) { - int eventType = reader.getEventType(); - switch (eventType) { - case XMLStreamConstants.START_ELEMENT: - if (XmlDataConstants.JMS_JNDI_ENTRY.equals(reader.getLocalName())) { - String elementText = reader.getElementText(); - entry.append(elementText).append(", "); - if (logger.isDebugEnabled()) { - logger.debug("JMS admin object JNDI entry: " + entry.toString()); - } - } - break; - case XMLStreamConstants.END_ELEMENT: - if (XmlDataConstants.JMS_JNDI_ENTRIES.equals(reader.getLocalName())) { - endLoop = true; - } - break; - } - if (endLoop) { - break; - } - reader.next(); - } - - return entry.delete(entry.length() - 2, entry.length()).toString(); - } - - private String getConnectors() throws Exception { - StringBuilder entry = new StringBuilder(); - boolean endLoop = false; - - while (reader.hasNext()) { - int eventType = reader.getEventType(); - switch (eventType) { - case XMLStreamConstants.START_ELEMENT: - if (XmlDataConstants.JMS_CONNECTION_FACTORY_CONNECTOR.equals(reader.getLocalName())) { - entry.append(reader.getElementText()).append(", "); - } - break; - case XMLStreamConstants.END_ELEMENT: - if (XmlDataConstants.JMS_CONNECTION_FACTORY_CONNECTORS.equals(reader.getLocalName())) { - endLoop = true; - } - break; - } - if (endLoop) { - break; - } - reader.next(); - } - - return entry.delete(entry.length() - 2, entry.length()).toString(); - } - - // Package protected --------------------------------------------- - - // Protected ----------------------------------------------------- - - // Private ------------------------------------------------------- - private static byte[] decode(String data) { return Base64.decode(data, Base64.DONT_BREAK_LINES | Base64.URL_SAFE); } private interface MessageBodyBytesProcessor { - void processBodyBytes(byte[] bytes) throws IOException; } - - // Inner classes ------------------------------------------------- - } diff --git a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/user/AddUser.java b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/user/AddUser.java index caa32a7468..37bd676841 100644 --- a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/user/AddUser.java +++ b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/user/AddUser.java @@ -20,7 +20,6 @@ import io.airlift.airline.Command; import io.airlift.airline.Option; import org.apache.activemq.artemis.cli.commands.ActionContext; import org.apache.activemq.artemis.cli.commands.util.HashUtil; -import org.apache.activemq.artemis.util.FileBasedSecStoreConfig; import org.apache.commons.lang3.StringUtils; /** @@ -53,7 +52,7 @@ public class AddUser extends PasswordAction { * @param role the role * @throws IllegalArgumentException if user exists */ - protected void add(String hash, String... role) throws Exception { + private void add(String hash, String... role) throws Exception { FileBasedSecStoreConfig config = getConfiguration(); config.addNewUser(username, hash, role); config.save(); diff --git a/artemis-cli/src/main/java/org/apache/activemq/artemis/util/FileBasedSecStoreConfig.java b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/user/FileBasedSecStoreConfig.java similarity index 94% rename from artemis-cli/src/main/java/org/apache/activemq/artemis/util/FileBasedSecStoreConfig.java rename to artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/user/FileBasedSecStoreConfig.java index c3f30b3986..1f8e29771e 100644 --- a/artemis-cli/src/main/java/org/apache/activemq/artemis/util/FileBasedSecStoreConfig.java +++ b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/user/FileBasedSecStoreConfig.java @@ -14,7 +14,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.activemq.artemis.util; +package org.apache.activemq.artemis.cli.commands.user; + +import java.io.File; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; import org.apache.activemq.artemis.api.core.Pair; import org.apache.activemq.artemis.utils.StringUtil; @@ -22,12 +27,7 @@ import org.apache.commons.configuration2.PropertiesConfiguration; import org.apache.commons.configuration2.builder.FileBasedConfigurationBuilder; import org.apache.commons.configuration2.builder.fluent.Configurations; -import java.io.File; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; - -public class FileBasedSecStoreConfig { +class FileBasedSecStoreConfig { private static final String LICENSE_HEADER = "## ---------------------------------------------------------------------------\n" + @@ -51,7 +51,7 @@ public class FileBasedSecStoreConfig { private PropertiesConfiguration userConfig; private PropertiesConfiguration roleConfig; - public FileBasedSecStoreConfig(File userFile, File roleFile) throws Exception { + FileBasedSecStoreConfig(File userFile, File roleFile) throws Exception { Configurations configs = new Configurations(); userBuilder = configs.propertiesBuilder(userFile); roleBuilder = configs.propertiesBuilder(roleFile); @@ -78,7 +78,7 @@ public class FileBasedSecStoreConfig { } } - public void addNewUser(String username, String hash, String... roles) throws Exception { + void addNewUser(String username, String hash, String... roles) throws Exception { if (userConfig.getString(username) != null) { throw new IllegalArgumentException("User already exist: " + username); } @@ -86,12 +86,12 @@ public class FileBasedSecStoreConfig { addRoles(username, roles); } - public void save() throws Exception { + void save() throws Exception { userBuilder.save(); roleBuilder.save(); } - public void removeUser(String username) throws Exception { + void removeUser(String username) throws Exception { if (userConfig.getProperty(username) == null) { throw new IllegalArgumentException("user " + username + " doesn't exist."); } @@ -99,7 +99,7 @@ public class FileBasedSecStoreConfig { removeRoles(username); } - public List listUser(String username) { + List listUser(String username) { List result = new ArrayList<>(); result.add("--- \"user\"(roles) ---\n"); @@ -121,6 +121,23 @@ public class FileBasedSecStoreConfig { return result; } + void updateUser(String username, String password, String[] roles) { + String oldPassword = (String) userConfig.getProperty(username); + if (oldPassword == null) { + throw new IllegalArgumentException("user " + username + " doesn't exist."); + } + + if (password != null) { + userConfig.setProperty(username, password); + } + + if (roles != null && roles.length > 0) { + + removeRoles(username); + addRoles(username, roles); + } + } + private String findRoles(String uname) { Iterator iter = roleConfig.getKeys(); StringBuilder builder = new StringBuilder(); @@ -146,23 +163,6 @@ public class FileBasedSecStoreConfig { return builder.toString(); } - public void updateUser(String username, String password, String[] roles) { - String oldPassword = (String) userConfig.getProperty(username); - if (oldPassword == null) { - throw new IllegalArgumentException("user " + username + " doesn't exist."); - } - - if (password != null) { - userConfig.setProperty(username, password); - } - - if (roles != null && roles.length > 0) { - - removeRoles(username); - addRoles(username, roles); - } - } - private void addRoles(String username, String[] roles) { for (String role : roles) { List users = roleConfig.getList(String.class, role); diff --git a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/user/HelpUser.java b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/user/HelpUser.java index 36c034841d..2e0ce2b0b2 100644 --- a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/user/HelpUser.java +++ b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/user/HelpUser.java @@ -16,15 +16,15 @@ */ package org.apache.activemq.artemis.cli.commands.user; +import java.io.File; +import java.util.ArrayList; +import java.util.List; + import io.airlift.airline.Help; import org.apache.activemq.artemis.cli.commands.Action; import org.apache.activemq.artemis.cli.commands.ActionContext; import org.apache.activemq.artemis.cli.commands.InvalidOptionsError; -import org.apache.activemq.artemis.util.OptionsUtil; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; +import org.apache.activemq.artemis.cli.commands.OptionsUtil; public class HelpUser extends Help implements Action { diff --git a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/user/ListUser.java b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/user/ListUser.java index 136a417d5b..c0fb9790d7 100644 --- a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/user/ListUser.java +++ b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/user/ListUser.java @@ -20,7 +20,6 @@ import java.util.List; import io.airlift.airline.Command; import org.apache.activemq.artemis.cli.commands.ActionContext; -import org.apache.activemq.artemis.util.FileBasedSecStoreConfig; /** * list existing users, example: @@ -42,7 +41,7 @@ public class ListUser extends UserAction { * list a single user or all users * if username is not specified */ - protected void list() throws Exception { + private void list() throws Exception { FileBasedSecStoreConfig config = getConfiguration(); List result = config.listUser(username); for (String str : result) { diff --git a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/user/PasswordAction.java b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/user/PasswordAction.java index 22604882c8..aeba55a37e 100644 --- a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/user/PasswordAction.java +++ b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/user/PasswordAction.java @@ -24,7 +24,7 @@ public class PasswordAction extends UserAction { @Option(name = "--password", description = "the password (Default: input)") String password; - protected void checkInputPassword() { + void checkInputPassword() { if (password == null) { password = inputPassword("--password", "Please provide the password:", null); } diff --git a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/user/RemoveUser.java b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/user/RemoveUser.java index 70167da05b..a9dce8df9e 100644 --- a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/user/RemoveUser.java +++ b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/user/RemoveUser.java @@ -18,7 +18,6 @@ package org.apache.activemq.artemis.cli.commands.user; import io.airlift.airline.Command; import org.apache.activemq.artemis.cli.commands.ActionContext; -import org.apache.activemq.artemis.util.FileBasedSecStoreConfig; /** * Remove a user, example: @@ -35,7 +34,7 @@ public class RemoveUser extends UserAction { return null; } - protected void remove() throws Exception { + private void remove() throws Exception { FileBasedSecStoreConfig config = getConfiguration(); config.removeUser(username); config.save(); diff --git a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/user/ResetUser.java b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/user/ResetUser.java index c219ef5c08..2e3e7250be 100644 --- a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/user/ResetUser.java +++ b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/user/ResetUser.java @@ -20,7 +20,6 @@ import io.airlift.airline.Command; import io.airlift.airline.Option; import org.apache.activemq.artemis.cli.commands.ActionContext; import org.apache.activemq.artemis.cli.commands.util.HashUtil; -import org.apache.activemq.artemis.util.FileBasedSecStoreConfig; import org.apache.commons.lang3.StringUtils; /** @@ -53,7 +52,7 @@ public class ResetUser extends PasswordAction { return null; } - protected void reset(String password, String[] roles) throws Exception { + private void reset(String password, String[] roles) throws Exception { if (password == null && roles == null) { context.err.println("Nothing to update."); return; diff --git a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/user/UserAction.java b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/user/UserAction.java index 2f7c77f082..2a23fa6ed2 100644 --- a/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/user/UserAction.java +++ b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/commands/user/UserAction.java @@ -16,15 +16,14 @@ */ package org.apache.activemq.artemis.cli.commands.user; -import io.airlift.airline.Option; -import org.apache.activemq.artemis.cli.commands.InputAbstract; -import org.apache.activemq.artemis.spi.core.security.jaas.PropertiesLoginModule; -import org.apache.activemq.artemis.util.FileBasedSecStoreConfig; - import javax.security.auth.login.AppConfigurationEntry; import javax.security.auth.login.Configuration; import java.io.File; +import io.airlift.airline.Option; +import org.apache.activemq.artemis.cli.commands.InputAbstract; +import org.apache.activemq.artemis.spi.core.security.jaas.PropertiesLoginModule; + import static org.apache.activemq.artemis.spi.core.security.jaas.PropertiesLoginModule.ROLE_FILE_PROP_NAME; import static org.apache.activemq.artemis.spi.core.security.jaas.PropertiesLoginModule.USER_FILE_PROP_NAME; @@ -39,23 +38,19 @@ public abstract class UserAction extends InputAbstract { @Option(name = "--entry", description = "The appConfigurationEntry (default: activemq)") String entry = "activemq"; - protected void checkInputUser() { + void checkInputUser() { if (username == null) { username = input("--user", "Please provider the userName:", null); } } - public void setRole(String role) { - this.role = role; - } - - public void checkInputRole() { + void checkInputRole() { if (role == null) { role = input("--role", "type a comma separated list of roles", null); } } - protected FileBasedSecStoreConfig getConfiguration() throws Exception { + FileBasedSecStoreConfig getConfiguration() throws Exception { Configuration securityConfig = Configuration.getConfiguration(); AppConfigurationEntry[] entries = securityConfig.getAppConfigurationEntry(entry); @@ -82,4 +77,8 @@ public abstract class UserAction extends InputAbstract { public void setUsername(String username) { this.username = username; } + + public void setRole(String role) { + this.role = role; + } } diff --git a/artemis-cli/src/main/java/org/apache/activemq/artemis/factory/BrokerFactory.java b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/factory/BrokerFactory.java similarity index 81% rename from artemis-cli/src/main/java/org/apache/activemq/artemis/factory/BrokerFactory.java rename to artemis-cli/src/main/java/org/apache/activemq/artemis/cli/factory/BrokerFactory.java index a188c61f39..dc9b9e14b3 100644 --- a/artemis-cli/src/main/java/org/apache/activemq/artemis/factory/BrokerFactory.java +++ b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/factory/BrokerFactory.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.activemq.artemis.factory; +package org.apache.activemq.artemis.cli.factory; import java.io.IOException; import java.net.URI; @@ -28,14 +28,10 @@ import org.apache.activemq.artemis.utils.FactoryFinder; public class BrokerFactory { - public static BrokerDTO createBrokerConfiguration(URI configURI) throws Exception { - return createBrokerConfiguration(configURI, null, null, null); - } - - public static BrokerDTO createBrokerConfiguration(URI configURI, - String artemisHome, - String artemisInstance, - URI artemisURIInstance) throws Exception { + private static BrokerDTO createBrokerConfiguration(URI configURI, + String artemisHome, + String artemisInstance, + URI artemisURIInstance) throws Exception { if (configURI.getScheme() == null) { throw new ConfigurationException("Invalid configuration URI, no scheme specified: " + configURI); } @@ -47,14 +43,9 @@ public class BrokerFactory { } catch (IOException ioe) { throw new ConfigurationException("Invalid configuration URI, can't find configuration scheme: " + configURI.getScheme()); } - return factory.createBroker(configURI, artemisHome, artemisInstance, artemisURIInstance); } - public static BrokerDTO createBrokerConfiguration(String configuration) throws Exception { - return createBrokerConfiguration(new URI(configuration), null, null, null); - } - public static BrokerDTO createBrokerConfiguration(String configuration, String artemisHome, String artemisInstance, diff --git a/artemis-cli/src/main/java/org/apache/activemq/artemis/factory/BrokerFactoryHandler.java b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/factory/BrokerFactoryHandler.java similarity index 90% rename from artemis-cli/src/main/java/org/apache/activemq/artemis/factory/BrokerFactoryHandler.java rename to artemis-cli/src/main/java/org/apache/activemq/artemis/cli/factory/BrokerFactoryHandler.java index f81a0de74d..2d16c3ae0d 100644 --- a/artemis-cli/src/main/java/org/apache/activemq/artemis/factory/BrokerFactoryHandler.java +++ b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/factory/BrokerFactoryHandler.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.activemq.artemis.factory; +package org.apache.activemq.artemis.cli.factory; import java.net.URI; @@ -22,7 +22,5 @@ import org.apache.activemq.artemis.dto.BrokerDTO; public interface BrokerFactoryHandler { - BrokerDTO createBroker(URI brokerURI) throws Exception; - BrokerDTO createBroker(URI brokerURI, String artemisHome, String artemisInstance, URI artemisURIInstance) throws Exception; } diff --git a/artemis-cli/src/main/java/org/apache/activemq/artemis/factory/BrokerHandler.java b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/factory/BrokerHandler.java similarity index 95% rename from artemis-cli/src/main/java/org/apache/activemq/artemis/factory/BrokerHandler.java rename to artemis-cli/src/main/java/org/apache/activemq/artemis/cli/factory/BrokerHandler.java index 3fe4027b41..df874a77de 100644 --- a/artemis-cli/src/main/java/org/apache/activemq/artemis/factory/BrokerHandler.java +++ b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/factory/BrokerHandler.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.activemq.artemis.factory; +package org.apache.activemq.artemis.cli.factory; import org.apache.activemq.artemis.dto.ServerDTO; import org.apache.activemq.artemis.integration.Broker; diff --git a/artemis-cli/src/main/java/org/apache/activemq/artemis/factory/FileBrokerHandler.java b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/factory/FileBrokerHandler.java similarity index 96% rename from artemis-cli/src/main/java/org/apache/activemq/artemis/factory/FileBrokerHandler.java rename to artemis-cli/src/main/java/org/apache/activemq/artemis/cli/factory/FileBrokerHandler.java index f6afc7f93d..74d1eb77ba 100644 --- a/artemis-cli/src/main/java/org/apache/activemq/artemis/factory/FileBrokerHandler.java +++ b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/factory/FileBrokerHandler.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.activemq.artemis.factory; +package org.apache.activemq.artemis.cli.factory; import org.apache.activemq.artemis.dto.ServerDTO; import org.apache.activemq.artemis.integration.Broker; diff --git a/artemis-cli/src/main/java/org/apache/activemq/artemis/factory/JaasSecurityHandler.java b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/factory/security/JaasSecurityHandler.java similarity index 86% rename from artemis-cli/src/main/java/org/apache/activemq/artemis/factory/JaasSecurityHandler.java rename to artemis-cli/src/main/java/org/apache/activemq/artemis/cli/factory/security/JaasSecurityHandler.java index 9f0c489ac9..a096567b4e 100644 --- a/artemis-cli/src/main/java/org/apache/activemq/artemis/factory/JaasSecurityHandler.java +++ b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/factory/security/JaasSecurityHandler.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.activemq.artemis.factory; +package org.apache.activemq.artemis.cli.factory.security; import org.apache.activemq.artemis.dto.JaasSecurityDTO; import org.apache.activemq.artemis.dto.SecurityDTO; @@ -26,7 +26,6 @@ public class JaasSecurityHandler implements SecurityHandler { @Override public ActiveMQSecurityManager createSecurityManager(SecurityDTO security) throws Exception { JaasSecurityDTO jaasSecurity = (JaasSecurityDTO) security; - ActiveMQJAASSecurityManager securityManager = new ActiveMQJAASSecurityManager(jaasSecurity.domain, jaasSecurity.certificateDomain); - return securityManager; + return new ActiveMQJAASSecurityManager(jaasSecurity.domain, jaasSecurity.certificateDomain); } } diff --git a/artemis-cli/src/main/java/org/apache/activemq/artemis/factory/SecurityHandler.java b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/factory/security/SecurityHandler.java similarity index 94% rename from artemis-cli/src/main/java/org/apache/activemq/artemis/factory/SecurityHandler.java rename to artemis-cli/src/main/java/org/apache/activemq/artemis/cli/factory/security/SecurityHandler.java index 75768d06c5..df905178eb 100644 --- a/artemis-cli/src/main/java/org/apache/activemq/artemis/factory/SecurityHandler.java +++ b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/factory/security/SecurityHandler.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.activemq.artemis.factory; +package org.apache.activemq.artemis.cli.factory.security; import org.apache.activemq.artemis.dto.SecurityDTO; import org.apache.activemq.artemis.spi.core.security.ActiveMQSecurityManager; diff --git a/artemis-cli/src/main/java/org/apache/activemq/artemis/factory/SecurityManagerFactory.java b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/factory/security/SecurityManagerFactory.java similarity index 75% rename from artemis-cli/src/main/java/org/apache/activemq/artemis/factory/SecurityManagerFactory.java rename to artemis-cli/src/main/java/org/apache/activemq/artemis/cli/factory/security/SecurityManagerFactory.java index 4b7102988b..3ebf8c3fae 100644 --- a/artemis-cli/src/main/java/org/apache/activemq/artemis/factory/SecurityManagerFactory.java +++ b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/factory/security/SecurityManagerFactory.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.activemq.artemis.factory; +package org.apache.activemq.artemis.cli.factory.security; import javax.xml.bind.annotation.XmlRootElement; @@ -25,13 +25,11 @@ import org.apache.activemq.artemis.utils.FactoryFinder; public class SecurityManagerFactory { public static ActiveMQSecurityManager create(SecurityDTO config) throws Exception { - if (config != null) { - FactoryFinder finder = new FactoryFinder("META-INF/services/org/apache/activemq/artemis/broker/security/"); - SecurityHandler securityHandler = (SecurityHandler) finder.newInstance(config.getClass().getAnnotation(XmlRootElement.class).name()); - return securityHandler.createSecurityManager(config); - } else { + if (config == null) { throw new Exception("No security manager configured!"); } + FactoryFinder finder = new FactoryFinder("META-INF/services/org/apache/activemq/artemis/broker/security/"); + SecurityHandler securityHandler = (SecurityHandler) finder.newInstance(config.getClass().getAnnotation(XmlRootElement.class).name()); + return securityHandler.createSecurityManager(config); } - } diff --git a/artemis-cli/src/main/java/org/apache/activemq/artemis/factory/XmlBrokerFactoryHandler.java b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/factory/xml/XmlBrokerFactoryHandler.java similarity index 89% rename from artemis-cli/src/main/java/org/apache/activemq/artemis/factory/XmlBrokerFactoryHandler.java rename to artemis-cli/src/main/java/org/apache/activemq/artemis/cli/factory/xml/XmlBrokerFactoryHandler.java index 0059c06e4f..828425286f 100644 --- a/artemis-cli/src/main/java/org/apache/activemq/artemis/factory/XmlBrokerFactoryHandler.java +++ b/artemis-cli/src/main/java/org/apache/activemq/artemis/cli/factory/xml/XmlBrokerFactoryHandler.java @@ -14,22 +14,18 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.activemq.artemis.factory; +package org.apache.activemq.artemis.cli.factory.xml; import java.io.File; import java.net.URI; import org.apache.activemq.artemis.cli.ConfigurationException; +import org.apache.activemq.artemis.cli.factory.BrokerFactoryHandler; import org.apache.activemq.artemis.dto.BrokerDTO; import org.apache.activemq.artemis.dto.XmlUtil; public class XmlBrokerFactoryHandler implements BrokerFactoryHandler { - @Override - public BrokerDTO createBroker(URI brokerURI) throws Exception { - return createBroker(brokerURI, null, null, null); - } - @Override public BrokerDTO createBroker(URI brokerURI, String artemisHome, String artemisInstance, URI artemisURIInstance) throws Exception { File file = new File(brokerURI.getSchemeSpecificPart()); diff --git a/artemis-cli/src/main/java/org/apache/activemq/artemis/integration/FileBroker.java b/artemis-cli/src/main/java/org/apache/activemq/artemis/integration/FileBroker.java index e1126448c4..af2286fc63 100644 --- a/artemis-cli/src/main/java/org/apache/activemq/artemis/integration/FileBroker.java +++ b/artemis-cli/src/main/java/org/apache/activemq/artemis/integration/FileBroker.java @@ -21,13 +21,13 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; +import org.apache.activemq.artemis.api.core.RoutingType; import org.apache.activemq.artemis.core.config.CoreAddressConfiguration; import org.apache.activemq.artemis.core.config.CoreQueueConfiguration; import org.apache.activemq.artemis.core.config.FileDeploymentManager; import org.apache.activemq.artemis.core.config.impl.FileConfiguration; import org.apache.activemq.artemis.core.server.ActiveMQComponent; import org.apache.activemq.artemis.core.server.ActiveMQServer; -import org.apache.activemq.artemis.api.core.RoutingType; import org.apache.activemq.artemis.core.server.ServiceComponent; import org.apache.activemq.artemis.dto.ServerDTO; import org.apache.activemq.artemis.integration.bootstrap.ActiveMQBootstrapLogger; @@ -161,7 +161,7 @@ public class FileBroker implements Broker { * this makes sure the components are started in the correct order. Its simple at the mo as e only have core and jms but * will need impproving if we get more. * */ - public ArrayList getComponentsByStartOrder(Map components) { + private ArrayList getComponentsByStartOrder(Map components) { ArrayList activeMQComponents = new ArrayList<>(); ActiveMQComponent jmsComponent = components.get("jms"); if (jmsComponent != null) { diff --git a/artemis-cli/src/main/java/org/apache/activemq/artemis/util/ServerUtil.java b/artemis-cli/src/main/java/org/apache/activemq/artemis/util/ServerUtil.java index 405e77791c..0a22d0f535 100644 --- a/artemis-cli/src/main/java/org/apache/activemq/artemis/util/ServerUtil.java +++ b/artemis-cli/src/main/java/org/apache/activemq/artemis/util/ServerUtil.java @@ -40,10 +40,9 @@ public class ServerUtil { } /** - * * @param artemisInstance - * @param serverName it will be used on logs - * @param id it will be used to add on the port + * @param serverName it will be used on logs + * @param id it will be used to add on the port * @param timeout * @return * @throws Exception @@ -94,7 +93,8 @@ public class ServerUtil { try (ActiveMQConnectionFactory cf = ActiveMQJMSClient.createConnectionFactory(uri, null)) { cf.createConnection().close(); System.out.println("server " + uri + " started"); - } catch (Exception e) { + } + catch (Exception e) { System.out.println("awaiting server " + uri + " start at "); Thread.sleep(500); continue; diff --git a/artemis-cli/src/main/resources/META-INF/services/org/apache/activemq/artemis/broker/security/jaas-security b/artemis-cli/src/main/resources/META-INF/services/org/apache/activemq/artemis/broker/security/jaas-security index 013a63c20a..b05ff707ce 100644 --- a/artemis-cli/src/main/resources/META-INF/services/org/apache/activemq/artemis/broker/security/jaas-security +++ b/artemis-cli/src/main/resources/META-INF/services/org/apache/activemq/artemis/broker/security/jaas-security @@ -14,4 +14,4 @@ ## See the License for the specific language governing permissions and ## limitations under the License. ## --------------------------------------------------------------------------- -class=org.apache.activemq.artemis.factory.JaasSecurityHandler +class=org.apache.activemq.artemis.cli.factory.security.JaasSecurityHandler diff --git a/artemis-cli/src/main/resources/META-INF/services/org/apache/activemq/artemis/broker/server/file b/artemis-cli/src/main/resources/META-INF/services/org/apache/activemq/artemis/broker/server/file index 26ec4fbb50..59419dd202 100644 --- a/artemis-cli/src/main/resources/META-INF/services/org/apache/activemq/artemis/broker/server/file +++ b/artemis-cli/src/main/resources/META-INF/services/org/apache/activemq/artemis/broker/server/file @@ -14,4 +14,4 @@ ## See the License for the specific language governing permissions and ## limitations under the License. ## --------------------------------------------------------------------------- -class=org.apache.activemq.artemis.factory.FileBrokerHandler +class=org.apache.activemq.artemis.cli.factory.FileBrokerHandler diff --git a/artemis-cli/src/main/resources/META-INF/services/org/apache/activemq/artemis/broker/xml b/artemis-cli/src/main/resources/META-INF/services/org/apache/activemq/artemis/broker/xml index 28251eface..4f7943d95e 100644 --- a/artemis-cli/src/main/resources/META-INF/services/org/apache/activemq/artemis/broker/xml +++ b/artemis-cli/src/main/resources/META-INF/services/org/apache/activemq/artemis/broker/xml @@ -14,4 +14,4 @@ ## See the License for the specific language governing permissions and ## limitations under the License. ## --------------------------------------------------------------------------- -class=org.apache.activemq.artemis.factory.XmlBrokerFactoryHandler +class=org.apache.activemq.artemis.cli.factory.xml.XmlBrokerFactoryHandler diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/persistence/ExportFormatTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/persistence/ExportFormatTest.java index 16cedd2979..c09218b8c3 100644 --- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/persistence/ExportFormatTest.java +++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/persistence/ExportFormatTest.java @@ -24,8 +24,8 @@ import org.apache.activemq.artemis.api.core.client.ClientProducer; import org.apache.activemq.artemis.api.core.client.ClientSession; import org.apache.activemq.artemis.api.core.client.ClientSessionFactory; import org.apache.activemq.artemis.api.core.client.ServerLocator; -import org.apache.activemq.artemis.cli.commands.tools.DecodeJournal; -import org.apache.activemq.artemis.cli.commands.tools.EncodeJournal; +import org.apache.activemq.artemis.cli.commands.tools.journal.DecodeJournal; +import org.apache.activemq.artemis.cli.commands.tools.journal.EncodeJournal; import org.apache.activemq.artemis.core.server.ActiveMQServer; import org.apache.activemq.artemis.tests.util.ActiveMQTestBase; import org.junit.Ignore; diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/persistence/XmlImportExportTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/persistence/XmlImportExportTest.java index 16f64626f8..790ed82ad5 100644 --- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/persistence/XmlImportExportTest.java +++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/persistence/XmlImportExportTest.java @@ -32,6 +32,7 @@ import java.util.Set; import java.util.UUID; import org.apache.activemq.artemis.api.core.Message; +import org.apache.activemq.artemis.api.core.RoutingType; import org.apache.activemq.artemis.api.core.SimpleString; import org.apache.activemq.artemis.api.core.TransportConfiguration; import org.apache.activemq.artemis.api.core.client.ActiveMQClient; @@ -42,14 +43,13 @@ import org.apache.activemq.artemis.api.core.client.ClientSession; import org.apache.activemq.artemis.api.core.client.ClientSessionFactory; import org.apache.activemq.artemis.api.core.client.ServerLocator; import org.apache.activemq.artemis.api.jms.ActiveMQJMSClient; -import org.apache.activemq.artemis.cli.commands.tools.XmlDataExporter; -import org.apache.activemq.artemis.cli.commands.tools.XmlDataImporter; +import org.apache.activemq.artemis.cli.commands.tools.xml.XmlDataExporter; +import org.apache.activemq.artemis.cli.commands.tools.xml.XmlDataImporter; import org.apache.activemq.artemis.core.persistence.impl.journal.BatchingIDGenerator; import org.apache.activemq.artemis.core.persistence.impl.journal.JournalStorageManager; import org.apache.activemq.artemis.core.persistence.impl.journal.LargeServerMessageImpl; import org.apache.activemq.artemis.core.registry.JndiBindingRegistry; import org.apache.activemq.artemis.core.server.ActiveMQServer; -import org.apache.activemq.artemis.api.core.RoutingType; import org.apache.activemq.artemis.core.settings.impl.AddressSettings; import org.apache.activemq.artemis.jms.server.JMSServerManager; import org.apache.activemq.artemis.jms.server.impl.JMSServerManagerImpl; diff --git a/tests/stress-tests/src/test/java/org/apache/activemq/artemis/tests/stress/journal/XmlImportExportStressTest.java b/tests/stress-tests/src/test/java/org/apache/activemq/artemis/tests/stress/journal/XmlImportExportStressTest.java index 9c733ac2b9..e73687bf12 100644 --- a/tests/stress-tests/src/test/java/org/apache/activemq/artemis/tests/stress/journal/XmlImportExportStressTest.java +++ b/tests/stress-tests/src/test/java/org/apache/activemq/artemis/tests/stress/journal/XmlImportExportStressTest.java @@ -27,8 +27,8 @@ import org.apache.activemq.artemis.api.core.client.ClientProducer; import org.apache.activemq.artemis.api.core.client.ClientSession; import org.apache.activemq.artemis.api.core.client.ClientSessionFactory; import org.apache.activemq.artemis.api.core.client.ServerLocator; -import org.apache.activemq.artemis.cli.commands.tools.XmlDataExporter; -import org.apache.activemq.artemis.cli.commands.tools.XmlDataImporter; +import org.apache.activemq.artemis.cli.commands.tools.xml.XmlDataExporter; +import org.apache.activemq.artemis.cli.commands.tools.xml.XmlDataImporter; import org.apache.activemq.artemis.core.server.ActiveMQServer; import org.apache.activemq.artemis.tests.util.ActiveMQTestBase; import org.junit.Test; diff --git a/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/core/journal/impl/JournalImplTestBase.java b/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/core/journal/impl/JournalImplTestBase.java index e5650cbe71..b22881d9ae 100644 --- a/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/core/journal/impl/JournalImplTestBase.java +++ b/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/core/journal/impl/JournalImplTestBase.java @@ -27,8 +27,8 @@ import java.util.List; import java.util.ListIterator; import java.util.Map; -import org.apache.activemq.artemis.cli.commands.tools.DecodeJournal; -import org.apache.activemq.artemis.cli.commands.tools.EncodeJournal; +import org.apache.activemq.artemis.cli.commands.tools.journal.DecodeJournal; +import org.apache.activemq.artemis.cli.commands.tools.journal.EncodeJournal; import org.apache.activemq.artemis.core.io.SequentialFileFactory; import org.apache.activemq.artemis.core.journal.EncodingSupport; import org.apache.activemq.artemis.core.journal.PreparedTransactionInfo;