This is an automated email from the ASF dual-hosted git repository. rzo1 pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/storm.git
The following commit(s) were added to refs/heads/master by this push: new cf2f8734b [STORM-3132] Avoid NPE in the Values Constructor (#2744) cf2f8734b is described below commit cf2f8734b32380b4e75c9936971864e87003d25b Author: Kishor Patil <kpa...@yahoo-inc.com> AuthorDate: Mon Dec 4 06:15:13 2023 -0500 [STORM-3132] Avoid NPE in the Values Constructor (#2744) * Avoid NPE in the Values Constructor * Fix Values Constructor as per review comments * remove unwanted condition * Addressing code review comments * Fix checkstyle * Fix JUnit 4 -> JUnit 5 --------- Co-authored-by: Kishor Patil <kpa...@oath.com> Co-authored-by: Richard Zowalla <richard.zowa...@hs-heilbronn.de> --- .../src/jvm/org/apache/storm/tuple/Values.java | 10 ++-- .../jvm/org/apache/storm/tuple/ValuesTest.java | 54 ++++++++++++++++++++++ 2 files changed, 61 insertions(+), 3 deletions(-) diff --git a/storm-client/src/jvm/org/apache/storm/tuple/Values.java b/storm-client/src/jvm/org/apache/storm/tuple/Values.java index d1b7fe7ed..a663866ff 100644 --- a/storm-client/src/jvm/org/apache/storm/tuple/Values.java +++ b/storm-client/src/jvm/org/apache/storm/tuple/Values.java @@ -23,9 +23,13 @@ public class Values extends ArrayList<Object> { } public Values(Object... vals) { - super(vals.length); - for (Object o : vals) { - add(o); + super(vals != null ? vals.length : 1); + if (vals != null) { + for (Object o : vals) { + add(o); + } + } else { + add(null); } } } diff --git a/storm-client/test/jvm/org/apache/storm/tuple/ValuesTest.java b/storm-client/test/jvm/org/apache/storm/tuple/ValuesTest.java new file mode 100644 index 000000000..7e7a28219 --- /dev/null +++ b/storm-client/test/jvm/org/apache/storm/tuple/ValuesTest.java @@ -0,0 +1,54 @@ +/** + * 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 + * <p> + * http://www.apache.org/licenses/LICENSE-2.0 + * <p> + * 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.storm.tuple; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +public class ValuesTest { + + @Test + public void testNoArgsToValues() { + Values vals = new Values(); + Assertions.assertEquals(0, vals.size(), "Failed to add null to Values"); + } + + @Test + public void testNullArgsToValues() { + Values vals = new Values(null); + Assertions.assertEquals(1, vals.size(), "Failed to add null to Values"); + Assertions.assertNull(vals.get(0)); + } + + @Test + public void testNonNullArgsToValues() { + Values vals = new Values("A", "B"); + Assertions.assertEquals(2, vals.size(), "Failed to Add values to Values"); + Assertions.assertEquals(vals.get(0), "A"); + Assertions.assertEquals(vals.get(1), "B"); + } + + @Test + public void testNullAsArgsToValues() { + Values vals = new Values(null, "A"); + Assertions.assertEquals(2, vals.size(), "Failed to Add values to Values"); + Assertions.assertNull(vals.get(0)); + Assertions.assertEquals(vals.get(1), "A"); + } +}