From 717bfa2e17d949bf0771ca14fb15bc99dd41f9fd Mon Sep 17 00:00:00 2001 From: Fraser Adams Date: Fri, 22 Aug 2014 12:13:40 +0000 Subject: QPID-6025: Fix NPE bug on java QpidConfig port git-svn-id: https://svn.apache.org/repos/asf/qpid/branches/0.30@1619775 13f79535-47bb-0310-9956-ffa450edef68 --- .../main/java/org/apache/qpid/server/qmf2/agentdata/Binding.java | 8 +++++++- .../main/java/org/apache/qpid/server/qmf2/agentdata/Exchange.java | 4 +++- .../main/java/org/apache/qpid/server/qmf2/agentdata/Queue.java | 5 +++-- .../src/main/java/org/apache/qpid/qmf2/tools/QpidConfig.java | 7 +++++-- 4 files changed, 18 insertions(+), 6 deletions(-) diff --git a/qpid/tools/src/java/qpid-broker-plugins-management-qmf2/src/main/java/org/apache/qpid/server/qmf2/agentdata/Binding.java b/qpid/tools/src/java/qpid-broker-plugins-management-qmf2/src/main/java/org/apache/qpid/server/qmf2/agentdata/Binding.java index b609e6715c..e65d2734a7 100644 --- a/qpid/tools/src/java/qpid-broker-plugins-management-qmf2/src/main/java/org/apache/qpid/server/qmf2/agentdata/Binding.java +++ b/qpid/tools/src/java/qpid-broker-plugins-management-qmf2/src/main/java/org/apache/qpid/server/qmf2/agentdata/Binding.java @@ -22,6 +22,7 @@ package org.apache.qpid.server.qmf2.agentdata; // Misc Imports +import java.util.Collections; import java.util.Map; // Simple Logging Facade 4 Java @@ -118,11 +119,16 @@ public class Binding extends QmfAgentData setValue("bindingKey", binding.getName()); Map arguments = binding.getArguments(); - // Only add arguments property if the bindings have arguments + // Only add arguments property if the bindings have arguments otherwise + // set to empty Map to be consistent with C++ Broker. if (arguments != null && arguments.size() > 0) { setValue("arguments", arguments); } + else + { + setValue("arguments", Collections.EMPTY_MAP); + } // origin not implemented in Java Broker - not really sure what the origin property means anyway??? } diff --git a/qpid/tools/src/java/qpid-broker-plugins-management-qmf2/src/main/java/org/apache/qpid/server/qmf2/agentdata/Exchange.java b/qpid/tools/src/java/qpid-broker-plugins-management-qmf2/src/main/java/org/apache/qpid/server/qmf2/agentdata/Exchange.java index 051606ab17..b5e1f662db 100644 --- a/qpid/tools/src/java/qpid-broker-plugins-management-qmf2/src/main/java/org/apache/qpid/server/qmf2/agentdata/Exchange.java +++ b/qpid/tools/src/java/qpid-broker-plugins-management-qmf2/src/main/java/org/apache/qpid/server/qmf2/agentdata/Exchange.java @@ -147,7 +147,9 @@ public class Exchange extends QmfAgentData setValue("durable", _exchange.isDurable()); setValue("autoDelete", autoDelete); - // TODO altExchange and arguments properties. + // TODO figure out mapping from Java Broker model to QMF exchange arguments. + // Set to empty Map for now to be consistent with C++ broker. + setValue("arguments", Collections.EMPTY_MAP); // ObjectId needs to be set here in Exchange because the QMF2 version of qpid-config uses a hardcoded // _object_name as below in the _object_id that it sets in the getExchange() call and in exchangeRef. diff --git a/qpid/tools/src/java/qpid-broker-plugins-management-qmf2/src/main/java/org/apache/qpid/server/qmf2/agentdata/Queue.java b/qpid/tools/src/java/qpid-broker-plugins-management-qmf2/src/main/java/org/apache/qpid/server/qmf2/agentdata/Queue.java index 911b58b758..aad85e66e9 100644 --- a/qpid/tools/src/java/qpid-broker-plugins-management-qmf2/src/main/java/org/apache/qpid/server/qmf2/agentdata/Queue.java +++ b/qpid/tools/src/java/qpid-broker-plugins-management-qmf2/src/main/java/org/apache/qpid/server/qmf2/agentdata/Queue.java @@ -163,8 +163,9 @@ public class Queue extends QmfAgentData // altExchange needs to be set later, done in mapEncode() for convenience, because it isn't set during // Queue construction in the Java Broker. - // TODO arguments properties. - + // TODO figure out mapping from Java Broker model to QMF queue arguments. + // Set to empty Map for now to be consistent with C++ broker. + setValue("arguments", Collections.EMPTY_MAP); // ObjectId needs to be set here in Queue because the QMF2 version of qpid-config uses a hardcoded // _object_name as below in the _object_id that it sets in the getQueue() call and in queueRef. diff --git a/qpid/tools/src/java/qpid-qmf2-tools/src/main/java/org/apache/qpid/qmf2/tools/QpidConfig.java b/qpid/tools/src/java/qpid-qmf2-tools/src/main/java/org/apache/qpid/qmf2/tools/QpidConfig.java index fad52cbb00..04a0642e2e 100644 --- a/qpid/tools/src/java/qpid-qmf2-tools/src/main/java/org/apache/qpid/qmf2/tools/QpidConfig.java +++ b/qpid/tools/src/java/qpid-qmf2-tools/src/main/java/org/apache/qpid/qmf2/tools/QpidConfig.java @@ -30,6 +30,7 @@ import java.io.FileNotFoundException; import java.io.InputStreamReader; import java.io.IOException; +import java.util.Collections; import java.util.Date; import java.util.List; import java.util.Arrays; @@ -526,6 +527,7 @@ public final class QpidConfig { System.out.printf("%-10s%-" + maxNameLen + "s ", exchange.getStringValue("type"), name); Map args = (Map)exchange.getValue("arguments"); + args = (args == null) ? Collections.EMPTY_MAP : args; if (exchange.getBooleanValue("durable")) { @@ -599,7 +601,7 @@ public final class QpidConfig String bindingKey = binding.getStringValue("bindingKey"); Map arguments = (Map)binding.getValue("arguments"); - if (arguments.isEmpty()) + if (arguments == null || arguments.isEmpty()) { System.out.printf(" bind [%s] => %s\n", bindingKey, queueName); } @@ -657,6 +659,7 @@ public final class QpidConfig { System.out.printf("%-" + maxNameLen + "s ", name); Map args = queue.>getValue("arguments"); + args = (args == null) ? Collections.EMPTY_MAP : args; /*System.out.println(args); for (Map.Entry entry : args.entrySet()) { System.out.println(entry.getKey() + " " + entry.getValue().getClass().getCanonicalName()); @@ -803,7 +806,7 @@ for (Map.Entry entry : args.entrySet()) { String bindingKey = binding.getStringValue("bindingKey"); Map arguments = (Map)binding.getValue("arguments"); - if (arguments.isEmpty()) + if (arguments == null || arguments.isEmpty()) { System.out.printf(" bind [%s] => %s\n", bindingKey, exchangeName); } -- cgit v1.2.1