This commit is contained in:
Justin Bertram 2017-05-04 10:36:22 -05:00
commit b9e7e7ed9d
53 changed files with 336 additions and 686 deletions

View File

@ -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;
}
}

View File

@ -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 {

View File

@ -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;

View File

@ -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<String, String> filters) {
StringWriter writer = new StringWriter();
PrintWriter printWriter = new PrintWriter(writer);
printWriter.println();
for (String str : getQueueList()) {
printWriter.println(" <queue name=\"" + str + "\"/>");
}
for (String str : getAddressList()) {
printWriter.println(" <topic name=\"" + str + "\"/>");
}
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);
}

View File

@ -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 {

View File

@ -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;

View File

@ -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 {

View File

@ -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<String> options, Class<? extends Action> command) {
private static void findAllOptions(Set<String> options, Class<? extends Action> 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<String> findCommandOptions(Class<? extends Action> command) {
private static Set<String> findCommandOptions(Class<? extends Action> command) {
Set<String> options = new HashSet<>();
findAllOptions(options, command);

View File

@ -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();

View File

@ -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 {

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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 {

View File

@ -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 {

View File

@ -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;
}
}
}

View File

@ -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<RecordInfo> records) throws Exception {
private static PageCursorsInfo calculateCursorsInfo(List<RecordInfo> records) throws Exception {
PageCursorsInfo cursorInfo = new PageCursorsInfo();
@ -293,25 +305,18 @@ public class PrintData extends OptionalLocking {
/**
* @return the pgTXs
*/
public Set<Long> getPgTXs() {
Set<Long> getPgTXs() {
return pgTXs;
}
/**
* @return the cursorRecords
*/
public Map<Long, Set<PagePosition>> getCursorRecords() {
Map<Long, Set<PagePosition>> getCursorRecords() {
return cursorRecords;
}
/**
* @return the completePages
*/
public Map<Long, Set<Long>> getCompletePages() {
return completePages;
}
public Set<Long> getCompletePages(Long queueID) {
Set<Long> getCompletePages(Long queueID) {
Set<Long> completePagesSet = completePages.get(queueID);
if (completePagesSet == null) {

View File

@ -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 <code>org.apache.activemq.tools.XmlDataImporter</code> and
* <code>org.apache.activemq.tools.XmlDataExporter</code>.
*/
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";
}

View File

@ -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);

View File

@ -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<Long, AtomicInteger> txCounters) {
private static AtomicInteger getCounter(final Long txID, final Map<Long, AtomicInteger> 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();
}
}
}

View File

@ -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();
}
}
}

View File

@ -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;

View File

@ -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 <code>org.apache.activemq.tools.XmlDataImporter</code> and
* <code>org.apache.activemq.tools.XmlDataExporter</code>.
*/
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";
}

View File

@ -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;

View File

@ -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();

View File

@ -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 -------------------------------------------------
}

View File

@ -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();

View File

@ -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<String> listUser(String username) {
List<String> listUser(String username) {
List<String> 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<String> 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<String> users = roleConfig.getList(String.class, role);

View File

@ -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 {

View File

@ -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<String> result = config.listUser(username);
for (String str : result) {

View File

@ -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);
}

View File

@ -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();

View File

@ -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;

View File

@ -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;
}
}

View File

@ -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,

View File

@ -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;
}

View File

@ -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;

View File

@ -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;

View File

@ -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);
}
}

View File

@ -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;

View File

@ -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);
}
}

View File

@ -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());

View File

@ -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<ActiveMQComponent> getComponentsByStartOrder(Map<String, ActiveMQComponent> components) {
private ArrayList<ActiveMQComponent> getComponentsByStartOrder(Map<String, ActiveMQComponent> components) {
ArrayList<ActiveMQComponent> activeMQComponents = new ArrayList<>();
ActiveMQComponent jmsComponent = components.get("jms");
if (jmsComponent != null) {

View File

@ -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;

View 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.JaasSecurityHandler
class=org.apache.activemq.artemis.cli.factory.security.JaasSecurityHandler

View 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

View 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.XmlBrokerFactoryHandler
class=org.apache.activemq.artemis.cli.factory.xml.XmlBrokerFactoryHandler

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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;