This is an automated email from the ASF dual-hosted git repository.

clebertsuconic pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/activemq-artemis.git

commit 1e1397935acf9c4b6fb14ea3b1021ce62d284d38
Author: Justin Bertram <[email protected]>
AuthorDate: Tue Apr 12 22:40:12 2022 -0500

    NO-JIRA improve MQTT trace logging
---
 .../artemis/core/protocol/mqtt/MQTTUtil.java       | 22 +++++++++++++++++++---
 1 file changed, 19 insertions(+), 3 deletions(-)

diff --git 
a/artemis-protocols/artemis-mqtt-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/mqtt/MQTTUtil.java
 
b/artemis-protocols/artemis-mqtt-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/mqtt/MQTTUtil.java
index ed8baed35f..4c739e0821 100644
--- 
a/artemis-protocols/artemis-mqtt-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/mqtt/MQTTUtil.java
+++ 
b/artemis-protocols/artemis-mqtt-protocol/src/main/java/org/apache/activemq/artemis/core/protocol/mqtt/MQTTUtil.java
@@ -18,6 +18,7 @@
 package org.apache.activemq.artemis.core.protocol.mqtt;
 
 import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
 import java.util.List;
 
 import com.google.common.base.CaseFormat;
@@ -279,8 +280,19 @@ public class MQTTUtil {
                      .append(", remainingLength=" + 
message.fixedHeader().remainingLength());
                   for (MqttProperties.MqttProperty property : 
((MqttPublishMessage)message).variableHeader().properties().listAll()) {
                      Object value = property.value();
-                     if (value != null && value instanceof byte[]) {
-                        value = new String((byte[]) value, 
StandardCharsets.UTF_8);
+                     if (value != null) {
+                        if (value instanceof byte[]) {
+                           value = new String((byte[]) value, 
StandardCharsets.UTF_8);
+                        } else if (value instanceof ArrayList && 
((ArrayList)value).size() > 0 && ((ArrayList)value).get(0) instanceof 
MqttProperties.StringPair) {
+                           StringBuilder userProperties = new StringBuilder();
+                           userProperties.append("[");
+                           for (MqttProperties.StringPair pair : 
(ArrayList<MqttProperties.StringPair>) value) {
+                              userProperties.append(pair.key).append(": 
").append(pair.value).append(", ");
+                           }
+                           userProperties.delete(userProperties.length() - 2, 
userProperties.length());
+                           userProperties.append("]");
+                           value = userProperties.toString();
+                        }
                      }
                      log.append(", " + 
formatCase(MqttPropertyType.valueOf(property.propertyId()).name()) + "=" + 
value);
                   }
@@ -316,7 +328,11 @@ public class MQTTUtil {
                   break;
                case SUBSCRIBE:
                   for (MqttTopicSubscription sub : ((MqttSubscribeMessage) 
message).payload().topicSubscriptions()) {
-                     log.append("\n\t" + sub.topicName() + " : " + 
sub.qualityOfService());
+                     log.append("\n\ttopic: ").append(sub.topicName())
+                        .append(", qos: ").append(sub.qualityOfService())
+                        .append(", nolocal: ").append(sub.option().isNoLocal())
+                        .append(", retainHandling: 
").append(sub.option().retainHandling())
+                        .append(", isRetainAsPublished: 
").append(sub.option().isRetainAsPublished());
                   }
                   break;
                case SUBACK:

Reply via email to