From 118bdec96005ce695295bcf0d9082e0230e69bf7 Mon Sep 17 00:00:00 2001 From: shroman Date: Fri, 14 Jul 2017 13:51:36 +0900 Subject: [PATCH] [ROCKETMQ-244] Message#putUserProperty uses == for String comparison. Signed-off-by: shroman --- .../rocketmq/common/message/Message.java | 6 +- .../rocketmq/common/message/MessageTest.java | 68 +++++++++++++++++++ 2 files changed, 72 insertions(+), 2 deletions(-) create mode 100644 common/src/test/java/org/apache/rocketmq/common/message/MessageTest.java diff --git a/common/src/main/java/org/apache/rocketmq/common/message/Message.java b/common/src/main/java/org/apache/rocketmq/common/message/Message.java index 2c81f5cd..15ba2142 100644 --- a/common/src/main/java/org/apache/rocketmq/common/message/Message.java +++ b/common/src/main/java/org/apache/rocketmq/common/message/Message.java @@ -81,12 +81,14 @@ public class Message implements Serializable { throw new RuntimeException(String.format( "The Property<%s> is used by system, input another please", name)); } - if (value == null || value == "" || value.trim() == "" - || name == null || name == "" || name.trim() == "") { + + if (value == null || value.trim().isEmpty() + || name == null || name.trim().isEmpty()) { throw new IllegalArgumentException( "The name or value of property can not be null or blank string!" ); } + this.putProperty(name, value); } diff --git a/common/src/test/java/org/apache/rocketmq/common/message/MessageTest.java b/common/src/test/java/org/apache/rocketmq/common/message/MessageTest.java new file mode 100644 index 00000000..c867360f --- /dev/null +++ b/common/src/test/java/org/apache/rocketmq/common/message/MessageTest.java @@ -0,0 +1,68 @@ +/* + * 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.rocketmq.common.message; + +import org.junit.Assert; +import org.junit.Test; + +import static org.apache.rocketmq.common.message.MessageConst.PROPERTY_TRACE_SWITCH; +import static org.junit.Assert.*; + +public class MessageTest { + @Test(expected = RuntimeException.class) + public void putUserPropertyWithRuntimeException() throws Exception { + Message m = new Message(); + + m.putUserProperty(PROPERTY_TRACE_SWITCH, ""); + } + + @Test(expected = IllegalArgumentException.class) + public void putUserNullValuePropertyWithException() throws Exception { + Message m = new Message(); + + m.putUserProperty("prop1", null); + } + + @Test(expected = IllegalArgumentException.class) + public void putUserEmptyValuePropertyWithException() throws Exception { + Message m = new Message(); + + m.putUserProperty("prop1", " "); + } + + @Test(expected = IllegalArgumentException.class) + public void putUserNullNamePropertyWithException() throws Exception { + Message m = new Message(); + + m.putUserProperty(null, "val1"); + } + + @Test(expected = IllegalArgumentException.class) + public void putUserEmptyNamePropertyWithException() throws Exception { + Message m = new Message(); + + m.putUserProperty(" ", "val1"); + } + + @Test + public void putUserProperty() throws Exception { + Message m = new Message(); + + m.putUserProperty("prop1", "val1"); + Assert.assertEquals("val1", m.getUserProperty("prop1")); + } +} -- GitLab