You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by yi...@apache.org on 2019/06/24 13:21:56 UTC
[dubbo] branch master updated: [Dubbo-4299]Fix NPE when PojoUtils
realize Null element in collection(#4299) (#4300)
This is an automated email from the ASF dual-hosted git repository.
yiji pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/dubbo.git
The following commit(s) were added to refs/heads/master by this push:
new 7285ce9 [Dubbo-4299]Fix NPE when PojoUtils realize Null element in collection(#4299) (#4300)
7285ce9 is described below
commit 7285ce9bf2ed8ec56d06fb0b3c7b0f1d7aa81192
Author: HzjNeverStop <44...@qq.com>
AuthorDate: Mon Jun 24 21:21:10 2019 +0800
[Dubbo-4299]Fix NPE when PojoUtils realize Null element in collection(#4299) (#4300)
* fix NPE when PojoUtils realize Null element in collection(#4299)
* add unit tests for bugfix of PojoUtils NPE(#4299)
* revert import (#4299)
---
.../java/org/apache/dubbo/common/utils/PojoUtils.java | 2 +-
.../org/apache/dubbo/common/utils/PojoUtilsTest.java | 19 +++++++++++++++++++
2 files changed, 20 insertions(+), 1 deletion(-)
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/utils/PojoUtils.java b/dubbo-common/src/main/java/org/apache/dubbo/common/utils/PojoUtils.java
index 3bab261..52204ac 100644
--- a/dubbo-common/src/main/java/org/apache/dubbo/common/utils/PojoUtils.java
+++ b/dubbo-common/src/main/java/org/apache/dubbo/common/utils/PojoUtils.java
@@ -366,7 +366,7 @@ public class PojoUtils {
history.put(pojo, dest);
for (Object obj : src) {
Type keyType = getGenericClassByIndex(genericType, 0);
- Class<?> keyClazz = obj.getClass();
+ Class<?> keyClazz = obj == null ? null : obj.getClass();
if (keyType instanceof Class) {
keyClazz = (Class<?>) keyType;
}
diff --git a/dubbo-common/src/test/java/org/apache/dubbo/common/utils/PojoUtilsTest.java b/dubbo-common/src/test/java/org/apache/dubbo/common/utils/PojoUtilsTest.java
index 3595efb..f0ab173 100644
--- a/dubbo-common/src/test/java/org/apache/dubbo/common/utils/PojoUtilsTest.java
+++ b/dubbo-common/src/test/java/org/apache/dubbo/common/utils/PojoUtilsTest.java
@@ -37,6 +37,7 @@ import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
+import java.util.HashSet;
import java.util.Map;
import java.util.UUID;
@@ -682,6 +683,24 @@ public class PojoUtilsTest {
assertEquals(dateTimeStr, new SimpleDateFormat(dateFormat[0]).format(timestamp));
}
+ @Test
+ public void testRealizeCollectionWithNullElement() {
+ LinkedList<String> listStr = new LinkedList<>();
+ listStr.add("arrayValue");
+ listStr.add(null);
+ HashSet<String> setStr = new HashSet<>();
+ setStr.add("setValue");
+ setStr.add(null);
+
+ Object listResult = PojoUtils.realize(listStr, LinkedList.class);
+ assertEquals(LinkedList.class, listResult.getClass());
+ assertEquals(listResult, listStr);
+
+ Object setResult = PojoUtils.realize(setStr, HashSet.class);
+ assertEquals(HashSet.class, setResult.getClass());
+ assertEquals(setResult, setStr);
+ }
+
public enum Day {
SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY
}