Skip to content

Commit 2658733

Browse files
authored
fix: generic null field (#340)
1 parent 739e146 commit 2658733

File tree

3 files changed

+34
-7
lines changed

3 files changed

+34
-7
lines changed

arex-instrumentation-api/src/main/java/io/arex/inst/runtime/util/TypeUtil.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -134,10 +134,8 @@ private static String genericTypeToString(Object result) {
134134
if (isCollection(field.getType().getName())) {
135135
genericType = filterRawGenericType(genericType);
136136
}
137-
138-
if (StringUtil.isNotEmpty(genericType)) {
139-
builder.append(genericType);
140-
}
137+
genericType = StringUtil.isEmpty(genericType) ? DEFAULT_CLASS_NAME : genericType;
138+
builder.append(genericType);
141139
if (i == typeParameters.length - 1) {
142140
return builder.toString();
143141
}

arex-instrumentation-api/src/test/java/io/arex/inst/runtime/util/TypeUtilTest.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -176,11 +176,15 @@ void testDoubleGenericType() {
176176

177177
final Pair pairNull = Pair.of(System.currentTimeMillis(), null);
178178
final String genericNull = TypeUtil.getName(pairNull);
179-
assertEquals("io.arex.agent.bootstrap.internal.Pair-java.lang.Long,", genericNull);
179+
assertEquals("io.arex.agent.bootstrap.internal.Pair-java.lang.Long,java.lang.String", genericNull);
180180

181181
final Pair pairList = Pair.of(System.currentTimeMillis(), Arrays.asList("mock"));
182182
final String genericList = TypeUtil.getName(pairList);
183183
assertEquals("io.arex.agent.bootstrap.internal.Pair-java.lang.Long,java.util.Arrays$ArrayList-java.lang.String", genericList);
184+
185+
final Pair pairFirstNull = Pair.of(null, System.currentTimeMillis());
186+
final String genericFirstNull = TypeUtil.getName(pairFirstNull);
187+
assertEquals("io.arex.agent.bootstrap.internal.Pair-java.lang.String,java.lang.Long", genericFirstNull);
184188
}
185189

186190
@Test
@@ -369,7 +373,7 @@ void testGenericFieldInFather() {
369373
final ArrayList<Object> list = new ArrayList<>();
370374
childClass.setValue(list);
371375
String name = TypeUtil.getName(childClass);
372-
assertEquals("io.arex.inst.runtime.util.TypeUtilTest$ChildClass-", name);
376+
assertEquals("io.arex.inst.runtime.util.TypeUtilTest$ChildClass-java.lang.String", name);
373377
list.add("test");
374378
childClass.setValue(list);
375379
name = TypeUtil.getName(childClass);

arex-instrumentation-foundation/src/test/java/io/arex/foundation/serializer/GsonSerializerTest.java

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,12 @@
55
import static org.junit.jupiter.api.Assertions.assertThrows;
66

77
import com.google.gson.internal.LinkedTreeMap;
8+
import io.arex.agent.bootstrap.internal.Pair;
89
import io.arex.inst.runtime.util.TypeUtil;
910
import it.unimi.dsi.fastutil.ints.IntOpenHashSet;
1011
import it.unimi.dsi.fastutil.ints.IntSet;
12+
13+
import java.lang.reflect.Type;
1114
import java.sql.Time;
1215
import java.time.LocalDateTime;
1316
import java.util.Map;
@@ -146,4 +149,26 @@ void testFastUtil() throws Throwable {
146149
assert deserialize != null;
147150
assertEquals(hashSet, deserialize);
148151
}
149-
}
152+
153+
@Test
154+
void testNullField() {
155+
final Pair<LocalDateTime, Long> pairFirstNull = Pair.of(null, System.currentTimeMillis());
156+
final String genericFirstNull = TypeUtil.getName(pairFirstNull);
157+
assertEquals("io.arex.agent.bootstrap.internal.Pair-java.lang.String,java.lang.Long", genericFirstNull);
158+
String json = GsonSerializer.INSTANCE.serialize(pairFirstNull);
159+
System.out.println(json);
160+
Type type1 = TypeUtil.forName(genericFirstNull);
161+
Pair firstNulldeserialize = GsonSerializer.INSTANCE.deserialize(json, type1);
162+
assertNull(firstNulldeserialize.getFirst());
163+
164+
final Pair pairNull = Pair.of(System.currentTimeMillis(), null);
165+
final String genericNull = TypeUtil.getName(pairNull);
166+
assertEquals("io.arex.agent.bootstrap.internal.Pair-java.lang.Long,java.lang.String", genericNull);
167+
json = GsonSerializer.INSTANCE.serialize(pairNull);
168+
System.out.println(json);
169+
Type type2 = TypeUtil.forName(genericNull);
170+
firstNulldeserialize = GsonSerializer.INSTANCE.deserialize(json, type2);
171+
assertNull(firstNulldeserialize.getSecond());
172+
}
173+
174+
}

0 commit comments

Comments
 (0)