This closes #2734
This commit is contained in:
commit
2eecc15a3d
|
@ -37,10 +37,14 @@ 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")
|
@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;
|
private boolean silentInput = false;
|
||||||
|
|
||||||
private boolean isSilentInput() {
|
public boolean isSilentInput() {
|
||||||
return silentInput || !inputEnabled;
|
return silentInput || !inputEnabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setSilentInput(boolean isSilent) {
|
||||||
|
this.silentInput = isSilent;
|
||||||
|
}
|
||||||
|
|
||||||
protected boolean inputBoolean(String propertyName, String prompt, boolean silentDefault) {
|
protected boolean inputBoolean(String propertyName, String prompt, boolean silentDefault) {
|
||||||
if (isSilentInput()) {
|
if (isSilentInput()) {
|
||||||
return silentDefault;
|
return silentDefault;
|
||||||
|
|
|
@ -44,6 +44,38 @@ public class ConnectionAbstract extends InputAbstract {
|
||||||
@Option(name = "--protocol", description = "Protocol used. Valid values are amqp or core. Default=core.")
|
@Option(name = "--protocol", description = "Protocol used. Valid values are amqp or core. Default=core.")
|
||||||
String protocol = "core";
|
String protocol = "core";
|
||||||
|
|
||||||
|
public String getUser() {
|
||||||
|
return user;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUser(String user) {
|
||||||
|
this.user = user;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getPassword() {
|
||||||
|
return password;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPassword(String password) {
|
||||||
|
this.password = password;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getClientID() {
|
||||||
|
return clientID;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setClientID(String clientID) {
|
||||||
|
this.clientID = clientID;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getProtocol() {
|
||||||
|
return protocol;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setProtocol(String protocol) {
|
||||||
|
this.protocol = protocol;
|
||||||
|
}
|
||||||
|
|
||||||
protected ConnectionFactory createConnectionFactory() throws Exception {
|
protected ConnectionFactory createConnectionFactory() throws Exception {
|
||||||
if (protocol.equals("core")) {
|
if (protocol.equals("core")) {
|
||||||
return createCoreConnectionFactory();
|
return createCoreConnectionFactory();
|
||||||
|
@ -72,13 +104,21 @@ public class ConnectionAbstract extends InputAbstract {
|
||||||
// if a security exception will get the user and password through an input
|
// if a security exception will get the user and password through an input
|
||||||
context.err.println("Connection failed::" + e.getMessage());
|
context.err.println("Connection failed::" + e.getMessage());
|
||||||
userPassword();
|
userPassword();
|
||||||
return new JmsConnectionFactory(user, password, brokerURL);
|
cf = new JmsConnectionFactory(user, password, brokerURL);
|
||||||
|
if (clientID != null) {
|
||||||
|
cf.setClientID(clientID);
|
||||||
|
}
|
||||||
|
return cf;
|
||||||
} catch (JMSException e) {
|
} catch (JMSException e) {
|
||||||
// if a connection exception will ask for the URL, user and password
|
// if a connection exception will ask for the URL, user and password
|
||||||
context.err.println("Connection failed::" + e.getMessage());
|
context.err.println("Connection failed::" + e.getMessage());
|
||||||
brokerURL = input("--url", "Type in the broker URL for a retry (e.g. tcp://localhost:61616)", brokerURL);
|
brokerURL = input("--url", "Type in the broker URL for a retry (e.g. tcp://localhost:61616)", brokerURL);
|
||||||
userPassword();
|
userPassword();
|
||||||
return new JmsConnectionFactory(user, password, brokerURL);
|
cf = new JmsConnectionFactory(user, password, brokerURL);
|
||||||
|
if (clientID != null) {
|
||||||
|
cf.setClientID(clientID);
|
||||||
|
}
|
||||||
|
return cf;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -95,15 +135,27 @@ public class ConnectionAbstract extends InputAbstract {
|
||||||
return cf;
|
return cf;
|
||||||
} catch (JMSSecurityException e) {
|
} catch (JMSSecurityException e) {
|
||||||
// if a security exception will get the user and password through an input
|
// if a security exception will get the user and password through an input
|
||||||
context.err.println("Connection failed::" + e.getMessage());
|
if (context != null) {
|
||||||
|
context.err.println("Connection failed::" + e.getMessage());
|
||||||
|
}
|
||||||
userPassword();
|
userPassword();
|
||||||
return new ActiveMQConnectionFactory(brokerURL, user, password);
|
cf = new ActiveMQConnectionFactory(brokerURL, user, password);
|
||||||
|
if (clientID != null) {
|
||||||
|
cf.setClientID(clientID);
|
||||||
|
}
|
||||||
|
return cf;
|
||||||
} catch (JMSException e) {
|
} catch (JMSException e) {
|
||||||
// if a connection exception will ask for the URL, user and password
|
// if a connection exception will ask for the URL, user and password
|
||||||
context.err.println("Connection failed::" + e.getMessage());
|
if (context != null) {
|
||||||
|
context.err.println("Connection failed::" + e.getMessage());
|
||||||
|
}
|
||||||
brokerURL = input("--url", "Type in the broker URL for a retry (e.g. tcp://localhost:61616)", brokerURL);
|
brokerURL = input("--url", "Type in the broker URL for a retry (e.g. tcp://localhost:61616)", brokerURL);
|
||||||
userPassword();
|
userPassword();
|
||||||
return new ActiveMQConnectionFactory(brokerURL, user, password);
|
cf = new ActiveMQConnectionFactory(brokerURL, user, password);
|
||||||
|
if (clientID != null) {
|
||||||
|
cf.setClientID(clientID);
|
||||||
|
}
|
||||||
|
return cf;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -90,14 +90,6 @@ public class StatQueue extends AbstractAction {
|
||||||
this.maxRows = maxRows;
|
this.maxRows = maxRows;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setUser(String user) {
|
|
||||||
this.user = user;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setPassword(String password) {
|
|
||||||
this.password = password;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setverbose(boolean verbose) {
|
public void setverbose(boolean verbose) {
|
||||||
this.verbose = verbose;
|
this.verbose = verbose;
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,64 @@
|
||||||
|
/*
|
||||||
|
* 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.cli.test;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
|
||||||
|
import org.apache.activemq.artemis.api.core.Pair;
|
||||||
|
import org.apache.activemq.artemis.api.core.management.ActiveMQServerControl;
|
||||||
|
import org.apache.activemq.artemis.cli.Artemis;
|
||||||
|
import org.apache.activemq.artemis.cli.commands.Run;
|
||||||
|
import org.apache.activemq.artemis.cli.commands.messages.ConnectionAbstract;
|
||||||
|
import org.apache.activemq.artemis.core.server.ActiveMQServer;
|
||||||
|
import org.apache.activemq.artemis.core.server.management.ManagementContext;
|
||||||
|
import org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory;
|
||||||
|
import org.junit.Assert;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
public class RetryCLIClientIDTest extends CliTestBase {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testWrongUserAndPass() throws Exception {
|
||||||
|
try {
|
||||||
|
Run.setEmbedded(true);
|
||||||
|
File instance1 = new File(temporaryFolder.getRoot(), "instance_user");
|
||||||
|
System.setProperty("java.security.auth.login.config", instance1.getAbsolutePath() + "/etc/login.config");
|
||||||
|
Artemis.main("create", instance1.getAbsolutePath(), "--silent", "--no-autotune", "--no-web", "--no-amqp-acceptor", "--no-mqtt-acceptor", "--no-stomp-acceptor", "--no-hornetq-acceptor", "--user", "dumb", "--password", "dumber", "--require-login");
|
||||||
|
System.setProperty("artemis.instance", instance1.getAbsolutePath());
|
||||||
|
Object result = Artemis.internalExecute("run");
|
||||||
|
ActiveMQServer activeMQServer = ((Pair<ManagementContext, ActiveMQServer>) result).getB();
|
||||||
|
ActiveMQServerControl activeMQServerControl = activeMQServer.getActiveMQServerControl();
|
||||||
|
|
||||||
|
ConnectionTest test = new ConnectionTest();
|
||||||
|
test.setSilentInput(true);
|
||||||
|
test.setClientID("someClientID");
|
||||||
|
ActiveMQConnectionFactory cf = test.newCF();
|
||||||
|
Assert.assertEquals("someClientID", cf.getClientID());
|
||||||
|
|
||||||
|
} finally {
|
||||||
|
stopServer();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private class ConnectionTest extends ConnectionAbstract {
|
||||||
|
|
||||||
|
public ActiveMQConnectionFactory newCF() {
|
||||||
|
return createCoreConnectionFactory();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue