Skip to content

Commit 09c03ad

Browse files
634750802fmbenhassine
authored andcommitted
Add Arrays$ArrayList to trusted classes in Jackson serializer
Issue #3830
1 parent c130ada commit 09c03ad

File tree

2 files changed

+22
-0
lines changed

2 files changed

+22
-0
lines changed

spring-batch-core/src/main/java/org/springframework/batch/core/repository/dao/Jackson2ExecutionContextStringSerializer.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -255,6 +255,7 @@ protected TypeIdResolver idResolver(MapperConfig<?> config,
255255
static class TrustedTypeIdResolver implements TypeIdResolver {
256256
private static final Set<String> TRUSTED_CLASS_NAMES = Collections.unmodifiableSet(new HashSet(Arrays.asList(
257257
"java.util.ArrayList",
258+
"java.util.Arrays$ArrayList",
258259
"java.util.LinkedList",
259260
"java.util.Collections$EmptyList",
260261
"java.util.Collections$EmptyMap",

spring-batch-core/src/test/java/org/springframework/batch/core/repository/dao/Jackson2ExecutionContextStringSerializerTests.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,9 @@
1919
import java.io.ByteArrayOutputStream;
2020
import java.io.IOException;
2121
import java.io.InputStream;
22+
import java.util.Arrays;
2223
import java.util.HashMap;
24+
import java.util.List;
2325
import java.util.Locale;
2426
import java.util.Map;
2527

@@ -162,4 +164,23 @@ public static class UnmappedInternationalNumber extends UnmappedPhoneNumber {
162164
}
163165

164166
public static class UnmappedDomesticNumber extends UnmappedPhoneNumber{}
167+
168+
@Test
169+
public void arrayAsListSerializationTest() throws IOException {
170+
171+
Jackson2ExecutionContextStringSerializer j = new Jackson2ExecutionContextStringSerializer();
172+
Map<String, Object> context = new HashMap<>(1);
173+
context.put("Arrays.asList", Arrays.asList("foo", "bar"));
174+
175+
ByteArrayOutputStream os = new ByteArrayOutputStream();
176+
j.serialize(context, os);
177+
178+
InputStream in = new ByteArrayInputStream(os.toByteArray());
179+
180+
context = j.deserialize(in);
181+
182+
String[] expectedValue = { "foo", "bar" };
183+
List<String> deserializedValue = (List<String>) context.get("Arrays.asList");
184+
Assert.assertArrayEquals(expectedValue, deserializedValue.toArray(new String[0]));
185+
}
165186
}

0 commit comments

Comments
 (0)