Fixed toString() exception in MqttSubscribePayload and MqttUnsubscribePayload (#9202)

Motivation:
The toString() methods of MqttSubscribePayload and MqttUnsubscribePayload are causing exceptions when no topics are set.

Modification:
The toString() methods will not throw Excpetions anymore.

Result:
Fixes #9197
This commit is contained in:
SplotyCode 2019-05-31 06:46:50 +02:00 committed by Norman Maurer
parent ed23cfae5e
commit 5b654fb4f7
3 changed files with 19 additions and 8 deletions

View File

@ -39,11 +39,12 @@ public final class MqttSubscribePayload {
@Override
public String toString() {
StringBuilder builder = new StringBuilder(StringUtil.simpleClassName(this)).append('[');
for (int i = 0; i < topicSubscriptions.size() - 1; i++) {
for (int i = 0; i < topicSubscriptions.size(); i++) {
builder.append(topicSubscriptions.get(i)).append(", ");
}
builder.append(topicSubscriptions.get(topicSubscriptions.size() - 1));
builder.append(']');
return builder.toString();
if (!topicSubscriptions.isEmpty()) {
builder.setLength(builder.length() - 2);
}
return builder.append(']').toString();
}
}

View File

@ -39,11 +39,12 @@ public final class MqttUnsubscribePayload {
@Override
public String toString() {
StringBuilder builder = new StringBuilder(StringUtil.simpleClassName(this)).append('[');
for (int i = 0; i < topics.size() - 1; i++) {
for (int i = 0; i < topics.size(); i++) {
builder.append("topicName = ").append(topics.get(i)).append(", ");
}
builder.append("topicName = ").append(topics.get(topics.size() - 1))
.append(']');
return builder.toString();
if (!topics.isEmpty()) {
builder.setLength(builder.length() - 2);
}
return builder.append("]").toString();
}
}

View File

@ -21,6 +21,8 @@ import static org.junit.Assert.assertNull;
import io.netty.util.CharsetUtil;
import org.junit.Test;
import java.util.Collections;
public class MqttConnectPayloadTest {
@Test
@ -88,4 +90,11 @@ public class MqttConnectPayloadTest {
assertNull(mqttConnectPayload.willMessageInBytes());
assertNull(mqttConnectPayload.willMessage());
}
/* See https://github.com/netty/netty/pull/9202 */
@Test
public void testEmptyTopicsToString() {
new MqttSubscribePayload(Collections.<MqttTopicSubscription>emptyList()).toString();
new MqttUnsubscribePayload(Collections.<String>emptyList()).toString();
}
}