From 0355dda813a5353f02715e6f684c116ae0aee84a Mon Sep 17 00:00:00 2001 From: Domenico Francesco Bruscino Date: Thu, 13 May 2021 12:30:01 +0200 Subject: [PATCH] ARTEMIS-3294 Fix conversion of messages with a text body --- .../impl/openmbean/OpenTypeSupport.java | 4 +- .../impl/openmbean/OpenTypeSupportTest.java | 46 +++++++++++++++++++ 2 files changed, 48 insertions(+), 2 deletions(-) create mode 100644 artemis-server/src/test/java/org/apache/activemq/artemis/core/management/impl/openmbean/OpenTypeSupportTest.java diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/openmbean/OpenTypeSupport.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/openmbean/OpenTypeSupport.java index 7c5bd6502e..21e9437b1a 100644 --- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/openmbean/OpenTypeSupport.java +++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/management/impl/openmbean/OpenTypeSupport.java @@ -293,8 +293,8 @@ public final class OpenTypeSupport { if (m.containsProperty(Message.HDR_LARGE_COMPRESSED)) { rc.put(CompositeDataConstants.TEXT_BODY, "[compressed]"); } else { - final String text = m.getReadOnlyBodyBuffer().readString(); - rc.put(CompositeDataConstants.TEXT_BODY, text != null ? JsonUtil.truncate(text, valueSizeLimit) : ""); + SimpleString text = m.getReadOnlyBodyBuffer().readNullableSimpleString(); + rc.put(CompositeDataConstants.TEXT_BODY, text != null ? JsonUtil.truncate(text.toString(), valueSizeLimit) : ""); } } else { rc.put(CompositeDataConstants.TEXT_BODY, "[large message]"); diff --git a/artemis-server/src/test/java/org/apache/activemq/artemis/core/management/impl/openmbean/OpenTypeSupportTest.java b/artemis-server/src/test/java/org/apache/activemq/artemis/core/management/impl/openmbean/OpenTypeSupportTest.java new file mode 100644 index 0000000000..1839fe534b --- /dev/null +++ b/artemis-server/src/test/java/org/apache/activemq/artemis/core/management/impl/openmbean/OpenTypeSupportTest.java @@ -0,0 +1,46 @@ +/** + * 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.artemis.core.management.impl.openmbean; + +import org.apache.activemq.artemis.api.core.Message; +import org.apache.activemq.artemis.api.core.SimpleString; +import org.apache.activemq.artemis.core.message.impl.CoreMessage; +import org.apache.activemq.artemis.core.server.impl.MessageReferenceImpl; +import org.apache.activemq.artemis.reader.TextMessageUtil; +import org.junit.Assert; +import org.junit.Test; + +import javax.management.openmbean.CompositeData; +import javax.management.openmbean.OpenDataException; + +public class OpenTypeSupportTest { + + @Test + public void testTextBody() throws OpenDataException { + final String bodyText = "TEST"; + CoreMessage coreMessage = new CoreMessage(); + coreMessage.initBuffer(1024); + coreMessage.setType(Message.TEXT_TYPE); + + TextMessageUtil.writeBodyText(coreMessage.getBodyBuffer(), SimpleString.toSimpleString(bodyText)); + + CompositeData cd = OpenTypeSupport.convert(new MessageReferenceImpl(coreMessage, null), 256); + + Assert.assertEquals(bodyText, cd.get("text")); + } +}