return (di);
}
private int runQuery(BrokerCmdProperties brokerCmdProps) {
BrokerAdmin broker;
broker = init();
// Check for the target argument.
// Valid values are dst and svc.
String commandArg = brokerCmdProps.getCommandArg();
if (CMDARG_DESTINATION.equals(commandArg)) {
if (broker == null) {
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_QUERY_DST_FAIL));
return (1);
}
boolean force = brokerCmdProps.forceModeSet();
if (!force)
broker = promptForAuthentication(broker);
String destName = brokerCmdProps.getTargetName();
int destTypeMask = getDestTypeMask(brokerCmdProps);
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_QUERY_DST));
printDestinationInfo();
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_SPECIFY_BKR));
printBrokerInfo(broker);
try {
connectToBroker(broker);
broker.sendGetDestinationsMessage(destName, destTypeMask);
Vector dest = broker.receiveGetDestinationsReplyMessage();
if ((dest != null) && (dest.size() == 1)) {
Enumeration thisEnum = dest.elements();
DestinationInfo dInfo = (DestinationInfo)thisEnum.nextElement();
BrokerCmdPrinter bcp = new BrokerCmdPrinter(2, 4);
String[] row = new String[2];
bcp.setSortNeeded(false);
/*
* Basic info - name/type/state etc.
*/
row[0] = ar.getString(ar.I_JMQCMD_DST_NAME);
row[1] = dInfo.name;
bcp.add(row);
row[0] = ar.getString(ar.I_JMQCMD_DST_TYPE);
row[1] = BrokerAdminUtil.getDestinationType(dInfo.type);
// If the destination is temporary, indicate so.
if (DestType.isTemporary(dInfo.type))
row[1] = row[1] + " ("
+ ar.getString(ar.I_TEMPORARY)
+ ")";
bcp.add(row);
row[0] = ar.getString(ar.I_JMQCMD_DST_STATE);
//row[1] = DestState.toString(dInfo.destState);
row[1] = BrokerAdminUtil.getDestinationState(dInfo.destState);
bcp.add(row);
row[0] = ar.getString(ar.I_JMQCMD_DST_CREATED_ADMIN);
if (dInfo.autocreated) {
row[1] = Boolean.FALSE.toString();
} else {
row[1] = Boolean.TRUE.toString();
}
bcp.add(row);
row[0] = "";
row[1] = "";
bcp.add(row);
/*
* 'Current' numbers
*/
row[0] = ar.getString(ar.I_JMQCMD_DST_CUR_MSG);
row[1] = "";
bcp.add(row);
String indent = " ";
row[0] = indent + ar.getString(ar.I_JMQCMD_DST_ACTUAL);
row[1] = new Integer(dInfo.nMessages - dInfo.nTxnMessages).toString();
bcp.add(row);
row[0] = indent + ar.getString(ar.I_JMQCMD_DST_REMOTE);
row[1] = new Integer(dInfo.nRemoteMessages).toString();
bcp.add(row);
row[0] = indent + ar.getString(ar.I_JMQCMD_DST_HELD_IN_TXN);
row[1] = new Integer(dInfo.nTxnMessages).toString();
bcp.add(row);
row[0] = ar.getString(ar.I_JMQCMD_DST_CUR_MSG_BYTES);
row[1] = "";
bcp.add(row);
row[0] = indent + ar.getString(ar.I_JMQCMD_DST_ACTUAL);
row[1] = new Long(dInfo.nMessageBytes - dInfo.nTxnMessageBytes).toString();
bcp.add(row);
row[0] = indent + ar.getString(ar.I_JMQCMD_DST_REMOTE);
row[1] = new Long(dInfo.nRemoteMessageBytes).toString();
bcp.add(row);
row[0] = indent + ar.getString(ar.I_JMQCMD_DST_HELD_IN_TXN);
row[1] = new Long(dInfo.nTxnMessageBytes).toString();
bcp.add(row);
row[0] = ar.getString(ar.I_JMQCMD_DST_CUR_PRODUCERS);
row[1] = new Integer(dInfo.nProducers).toString();
bcp.add(row);
if (DestType.isQueue(destTypeMask)) {
row[0] = ar.getString(ar.I_JMQCMD_DST_CUR_ACTIVE_CONS);
row[1] = new Integer(dInfo.naConsumers).toString();
bcp.add(row);
row[0] = ar.getString(ar.I_JMQCMD_DST_CUR_FAILOVER_CONS);
row[1] = new Integer(dInfo.nfConsumers).toString();
bcp.add(row);
} else {
Hashtable h = dInfo.producerWildcards;
row[0] = ar.getString(ar.I_JMQCMD_DST_CUR_NUM_PRODUCERS_WILDCARD);
row[1] = Integer.toString(getWildcardCount(h));
bcp.add(row);
/*
* The code below will print something like:
*
* foo.bar.* (2)
* bar.* (1)
*/
Enumeration keys;
if (h != null) {
keys = h.keys();
while (keys.hasMoreElements()) {
String wildcard = (String)keys.nextElement();
Integer val = (Integer)h.get(wildcard);
row[0] = indent + wildcard + " (" + val + ")";
row[1] = "";
bcp.add(row);
}
}
row[0] = ar.getString(ar.I_JMQCMD_DST_CUR_CONS);
row[1] = new Integer(dInfo.nConsumers).toString();
bcp.add(row);
h = dInfo.consumerWildcards;
row[0] = ar.getString(ar.I_JMQCMD_DST_CUR_NUM_CONSUMERS_WILDCARD);
row[1] = Integer.toString(getWildcardCount(h));
bcp.add(row);
if (h != null) {
keys = h.keys();
while (keys.hasMoreElements()) {
String wildcard = (String)keys.nextElement();
Integer val = (Integer)h.get(wildcard);
row[0] = indent + wildcard + " (" + val + ")";
row[1] = "";
bcp.add(row);
}
}
}
row[0] = "";
row[1] = "";
bcp.add(row);
/*
* 'Current' numbers
*/
row[0] = ar.getString(ar.I_JMQCMD_DST_MAX_MSG_ALLOW);
row[1] = checkAndPrintUnlimitedInt(dInfo.maxMessages, zeroNegOneInt);
bcp.add(row);
row[0] = ar.getString(ar.I_JMQCMD_DST_MAX_MSG_BYTES_ALLOW);
row[1] = checkAndPrintUnlimitedLong(dInfo.maxMessageBytes,
zeroNegOneLong);
bcp.add(row);
row[0] = ar.getString(ar.I_JMQCMD_DST_MAX_BYTES_PER_MSG_ALLOW);
row[1] = new Long(dInfo.maxMessageSize).toString();
row[1] = checkAndPrintUnlimitedLong(dInfo.maxMessageSize,
zeroNegOneLong);
bcp.add(row);
row[0] = ar.getString(ar.I_JMQCMD_DST_MAX_PRODUCERS);
row[1] = checkAndPrintUnlimitedInt(dInfo.maxProducers, -1);
bcp.add(row);
if (DestType.isQueue(destTypeMask)) {
row[0] = ar.getString(ar.I_JMQCMD_DST_MAX_ACTIVE_CONSUMER_COUNT);
row[1] = checkAndPrintUnlimitedInt(dInfo.maxActiveConsumers, -1);
bcp.add(row);
row[0] = ar.getString(ar.I_JMQCMD_DST_MAX_FAILOVER_CONSUMER_COUNT);
row[1] = checkAndPrintUnlimitedInt(dInfo.maxFailoverConsumers, -1);
bcp.add(row);
}
row[0] = "";
row[1] = "";
bcp.add(row);
/*
* Other misc props
*/
row[0] = ar.getString(ar.I_JMQCMD_DST_LIMIT_BEHAVIOUR);
row[1] = DestLimitBehavior.getString(dInfo.destLimitBehavior);
bcp.add(row);
row[0] = ar.getString(ar.I_JMQCMD_DST_CONS_FLOW_LIMIT);
row[1] = checkAndPrintUnlimitedInt(dInfo.maxPrefetch, -1);
bcp.add(row);
row[0] = ar.getString(ar.I_JMQCMD_DST_IS_LOCAL_DEST);
if (dInfo.isDestinationLocal()) {
row[1] = Boolean.TRUE.toString();
} else {
row[1] = Boolean.FALSE.toString();
}
bcp.add(row);
if (DestType.isQueue(destTypeMask)) {
row[0] = ar.getString(ar.I_JMQCMD_DST_LOCAL_DELIVERY_PREF);
if (dInfo.destCDP == ClusterDeliveryPolicy.LOCAL_PREFERRED) {
row[1] = Boolean.TRUE.toString();
} else {
row[1] = Boolean.FALSE.toString();
}
bcp.add(row);
}
row[0] = ar.getString(ar.I_JMQCMD_DST_USE_DMQ);
if (dInfo.useDMQ()) {
row[1] = Boolean.TRUE.toString();
} else {
row[1] = Boolean.FALSE.toString();
}
bcp.add(row);
row[0] = ar.getString(ar.I_JMQCMD_DST_VALIDATE_XML_SCHEMA_ENABLED);
if (dInfo.validateXMLSchemaEnabled()) {
row[1] = Boolean.TRUE.toString();
} else {
row[1] = Boolean.FALSE.toString();
}
bcp.add(row);
row[0] = ar.getString(ar.I_JMQCMD_DST_XML_SCHEMA_URI_LIST);
row[1] = dInfo.XMLSchemaUriList;
bcp.add(row);
row[0] = ar.getString(ar.I_JMQCMD_DST_RELOAD_XML_SCHEMA_ON_FAILURE);
if (dInfo.reloadXMLSchemaOnFailure()) {
row[1] = Boolean.TRUE.toString();
} else {
row[1] = Boolean.FALSE.toString();
}
bcp.add(row);
bcp.println();
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_QUERY_DST_SUC));
} else {
// Should not get here, since if something went wrong we should get
// a BrokerAdminException
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_INCORRECT_DATA_RET));
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_QUERY_DST_FAIL));
return (1);
}
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_QUERY_DST_FAIL));
return (1);
}
} else if (CMDARG_SERVICE.equals(commandArg)) {
if (broker == null) {
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_QUERY_SVC_FAIL));
return (1);
}
boolean force = brokerCmdProps.forceModeSet();
if (!force)
broker = promptForAuthentication(broker);
String svcName = brokerCmdProps.getTargetName();
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_QUERY_SVC));
printServiceInfo();
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_SPECIFY_BKR));
printBrokerInfo(broker);
try {
connectToBroker(broker);
broker.sendGetServicesMessage(svcName);
Vector svc = broker.receiveGetServicesReplyMessage();
if ((svc != null) && (svc.size() == 1)) {
Enumeration thisEnum = svc.elements();
ServiceInfo sInfo = (ServiceInfo)thisEnum.nextElement();
BrokerCmdPrinter bcp = new BrokerCmdPrinter(2, 4);
String[] row = new String[2];
bcp.setSortNeeded(false);
/*
* Basic info - name/port/state
*/
row[0] = ar.getString(ar.I_JMQCMD_SVC_NAME);
row[1] = sInfo.name;
bcp.add(row);
row[0] = ar.getString(ar.I_JMQCMD_SVC_STATE);
//row[1] = ServiceState.getString(sInfo.state);
row[1] = BrokerAdminUtil.getServiceState(sInfo.state);
bcp.add(row);
// ONLY display port number if it is applicable
// It is NOT applicable if it is set to -1
if (sInfo.port != -1) {
row[0] = ar.getString(ar.I_JMQCMD_SVC_PORT);
// Add more information about the port number:
// dynamically generated or statically declared
if (sInfo.dynamicPort) {
switch (sInfo.state) {
case ServiceState.UNKNOWN:
row[1] = ar.getString(ar.I_DYNAMIC);
break;
default:
row[1] = new Integer(sInfo.port).toString()
+
" ("
+
ar.getString(ar.I_DYNAMIC)
+
")";
}
} else {
row[1] = new Integer(sInfo.port).toString() +
" (" + ar.getString(ar.I_STATIC) + ")";
}
bcp.add(row);
}
row[0] = "";
row[1] = "";
bcp.add(row);
/*
* 'Curent' numbers
*/
row[0] = ar.getString(ar.I_JMQCMD_SVC_CUR_THREADS);
row[1] = new Integer(sInfo.currentThreads).toString();
bcp.add(row);
row[0] = ar.getString(ar.I_JMQCMD_SVC_NUM_CXN);
row[1] = new Integer(sInfo.nConnections).toString();
bcp.add(row);
row[0] = "";
row[1] = "";
bcp.add(row);
/*
* Min/Max numbers
*/
row[0] = ar.getString(ar.I_JMQCMD_SVC_MIN_THREADS);
row[1] = new Integer(sInfo.minThreads).toString();
bcp.add(row);
row[0] = ar.getString(ar.I_JMQCMD_SVC_MAX_THREADS);
row[1] = new Integer(sInfo.maxThreads).toString();
bcp.add(row);
bcp.println();
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_QUERY_SVC_SUC));
} else {
// Should not get here, since if something went wrong we should get
// a BrokerAdminException
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_INCORRECT_DATA_RET));
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_QUERY_SVC_FAIL));
return (1);
}
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_QUERY_SVC_FAIL));
return (1);
}
} else if (CMDARG_BROKER.equals(commandArg)) {
if (broker == null) {
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_QUERY_BKR_FAIL));
return (1);
}
boolean force = brokerCmdProps.forceModeSet();
if (!force)
broker = promptForAuthentication(broker);
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_QUERY_BKR));
printBrokerInfo(broker);
try {
connectToBroker(broker);
broker.sendGetBrokerPropsMessage();
Properties bkrProps = broker.receiveGetBrokerPropsReplyMessage();
if (bkrProps == null) {
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_QUERY_BKR_FAIL));
return (1);
}
if (brokerCmdProps.adminDebugModeSet()) {
printAllBrokerAttrs(bkrProps);
} else {
printDisplayableBrokerAttrs(bkrProps);
}
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_QUERY_BKR_SUC));
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_QUERY_BKR_FAIL));
return (1);
}
} else if (CMDARG_TRANSACTION.equals(commandArg)) {
if (broker == null) {
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_QUERY_TXN_FAIL));
return (1);
}
boolean force = brokerCmdProps.forceModeSet();
if (!force)
broker = promptForAuthentication(broker);
String tidStr = brokerCmdProps.getTargetName();
Long tid = null;
try {
tid = Long.valueOf(tidStr);
} catch (NumberFormatException nfe) {
Globals.stdErrPrintln(ar.getString(ar.E_INVALID_TXN_ID, tidStr));
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_QUERY_TXN_FAIL));
return (1);
}
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_QUERY_TXN));
printTransactionInfo();
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_SPECIFY_BKR));
printBrokerInfo(broker);
try {
connectToBroker(broker);
broker.sendGetTxnsMessage(tid);
Vector txns = broker.receiveGetTxnsReplyMessage();
if ((txns != null) && (txns.size() == 1)) {
Enumeration thisEnum = txns.elements();
Hashtable txnInfo = (Hashtable)thisEnum.nextElement();
if (brokerCmdProps.debugModeSet()) {
printAllTxnAttrs(txnInfo);
} else {
printDisplayableTxnAttrs(txnInfo);
}
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_QUERY_TXN_SUC));
} else {
// Should not get here, since if something went wrong we should get
// a BrokerAdminException
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_INCORRECT_DATA_RET));
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_QUERY_TXN_FAIL));
return (1);
}
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_QUERY_TXN_FAIL));
return (1);
}
} else if (CMDARG_CONNECTION.equals(commandArg)) {
if (broker == null) {
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_QUERY_CXN_FAIL));
return (1);
}
boolean force = brokerCmdProps.forceModeSet();
if (!force)
broker = promptForAuthentication(broker);
String cxnIdStr = brokerCmdProps.getTargetName();
Long cxnId = null;
try {
cxnId = Long.valueOf(cxnIdStr);
} catch (NumberFormatException nfe) {
Globals.stdErrPrintln(ar.getString(ar.E_INVALID_CXN_ID, cxnIdStr));
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_QUERY_CXN_FAIL));
return (1);
}
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_QUERY_CXN));
printConnectionInfo();
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_SPECIFY_BKR));
printBrokerInfo(broker);
try {
connectToBroker(broker);
broker.sendGetConnectionsMessage(null, cxnId);
Vector cxnList = broker.receiveGetConnectionsReplyMessage();
if ((cxnList != null) && (cxnList.size() == 1)) {
Enumeration thisEnum = cxnList.elements();
Hashtable cxnInfo = (Hashtable)thisEnum.nextElement();
if (brokerCmdProps.debugModeSet()) {
printAllCxnAttrs(cxnInfo);
} else {
printDisplayableCxnAttrs(cxnInfo);
}
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_QUERY_CXN_SUC));
} else {
// Should not get here, since if something went wrong we should get
// a BrokerAdminException
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_INCORRECT_DATA_RET));
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_QUERY_CXN_FAIL));
return (1);
}
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_QUERY_CXN_FAIL));
return (1);
}
} else if (CMDARG_MSG.equals(commandArg)) {
if (broker == null) {
/*
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_QUERY_MSG_FAIL));
*/
Globals.stdErrPrintln("Querying message failed.");
return (1);
}
boolean force = brokerCmdProps.forceModeSet();
if (!force)
broker = promptForAuthentication(broker);
String destName = brokerCmdProps.getTargetName();
int destTypeMask = getDestTypeMask(brokerCmdProps);
String msgID = brokerCmdProps.getMsgID();
/*
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_QUERY_MSG));
*/
Globals.stdOutPrintln("Querying message:");
printMessageInfo();
Globals.stdOutPrintln("In the destination");
printDestinationInfo();
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_SPECIFY_BKR));
printBrokerInfo(broker);
try {
connectToBroker(broker);
broker.sendGetMessagesMessage(destName, destTypeMask, true, msgID,
null, null);
Vector msgList = broker.receiveGetMessagesReplyMessage();
if ((msgList != null) && (msgList.size() == 1)) {
HashMap oneMsg = (HashMap)msgList.get(0);
printDisplayableMsgAttrs(oneMsg);
/*
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_QUERY_MSG_SUC));
*/
Globals.stdOutPrintln("Successfully queried message.");
} else {
/*
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_LIST_MSG_NONE));
*/
Globals.stdErrPrintln("There are no messages.");
Globals.stdOutPrintln("");
/*
Globals.stdOutPrintln(ar.getString(ar.I_JMQCMD_QUERY_MSG_SUC));
*/
Globals.stdOutPrintln("Successfully queried message.");
}
} catch (BrokerAdminException bae) {
handleBrokerAdminException(bae);
/*
Globals.stdErrPrintln(ar.getString(ar.I_JMQCMD_QUERY_MSG_FAIL));
*/
Globals.stdErrPrintln("Querying message failed.");
return (1);
}
}
if (broker.isConnected()) {
broker.close();
}
return (0);
}