Skip to content

Commit d6675f7

Browse files
authored
Remove JavaType as input argument from emulation (#160)
to avoid type casting
1 parent 2e33c85 commit d6675f7

File tree

6 files changed

+28
-25
lines changed

6 files changed

+28
-25
lines changed

src/main/java/io/vavr/jackson/datatype/serialize/ArraySerializer.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,14 @@
3131
class ArraySerializer<T extends Value<?>> extends ValueSerializer<T> implements ContextualSerializer {
3232

3333
private static final long serialVersionUID = 1L;
34+
private final CollectionLikeType collectionType;
3435

35-
ArraySerializer(JavaType collectionType, BeanProperty property) {
36+
ArraySerializer(CollectionLikeType collectionType, BeanProperty property) {
3637
super(collectionType, property);
38+
this.collectionType = collectionType;
3739
}
3840

39-
ArraySerializer(JavaType collectionType) {
41+
ArraySerializer(CollectionLikeType collectionType) {
4042
this(collectionType, null);
4143
}
4244

@@ -47,7 +49,7 @@ class ArraySerializer<T extends Value<?>> extends ValueSerializer<T> implements
4749
* @param property the new bean property
4850
*/
4951
ArraySerializer(ArraySerializer<T> origin, BeanProperty property) {
50-
this(origin.type, property);
52+
this(origin.collectionType, property);
5153
}
5254

5355
@Override
@@ -56,9 +58,8 @@ Object toJavaObj(T value) throws IOException {
5658
}
5759

5860
@Override
59-
JavaType emulatedJavaType(JavaType type, TypeFactory typeFactory) {
60-
CollectionLikeType collectionLikeType = (CollectionLikeType) type;
61-
return typeFactory.constructCollectionType(ArrayList.class, collectionLikeType.getContentType());
61+
JavaType emulatedJavaType(TypeFactory typeFactory) {
62+
return typeFactory.constructCollectionType(ArrayList.class, collectionType.getContentType());
6263
}
6364

6465
@Override

src/main/java/io/vavr/jackson/datatype/serialize/CharSeqSerializer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ Object toJavaObj(CharSeq value) throws IOException {
4040
}
4141

4242
@Override
43-
JavaType emulatedJavaType(JavaType type, TypeFactory typeFactory) {
43+
JavaType emulatedJavaType(TypeFactory typeFactory) {
4444
return typeFactory.constructType(String.class);
4545
}
4646

src/main/java/io/vavr/jackson/datatype/serialize/MapSerializer.java

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,15 @@
3131
class MapSerializer extends ValueSerializer<Map<?, ?>> implements ContextualSerializer {
3232

3333
private static final long serialVersionUID = 1L;
34+
private final MapLikeType mapType;
3435

35-
MapSerializer(JavaType type, BeanProperty beanProperty) {
36-
super(type, beanProperty);
36+
MapSerializer(MapLikeType mapType, BeanProperty beanProperty) {
37+
super(mapType, beanProperty);
38+
this.mapType = mapType;
3739
}
3840

39-
MapSerializer(JavaType type) {
40-
this(type, null);
41+
MapSerializer(MapLikeType mapType) {
42+
this(mapType, null);
4143
}
4244

4345
@Override
@@ -46,9 +48,8 @@ Object toJavaObj(Map<?, ?> value) throws IOException {
4648
}
4749

4850
@Override
49-
JavaType emulatedJavaType(JavaType type, TypeFactory typeFactory) {
50-
MapLikeType mapLikeType = (MapLikeType) type;
51-
return typeFactory.constructMapType(LinkedHashMap.class, mapLikeType.getKeyType(), mapLikeType.getContentType());
51+
JavaType emulatedJavaType(TypeFactory typeFactory) {
52+
return typeFactory.constructMapType(LinkedHashMap.class, mapType.getKeyType(), mapType.getContentType());
5253
}
5354

5455
@Override
@@ -61,6 +62,6 @@ public JsonSerializer<?> createContextual(SerializerProvider prov, BeanProperty
6162
if (property == beanProperty) {
6263
return this;
6364
}
64-
return new MapSerializer(type, property);
65+
return new MapSerializer(mapType, property);
6566
}
6667
}

src/main/java/io/vavr/jackson/datatype/serialize/MultimapSerializer.java

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,15 @@
3333
class MultimapSerializer extends ValueSerializer<Multimap<?, ?>> implements ContextualSerializer {
3434

3535
private static final long serialVersionUID = 1L;
36+
private final MapLikeType mapType;
3637

37-
MultimapSerializer(JavaType type) {
38-
this(type, null);
38+
MultimapSerializer(MapLikeType mapType) {
39+
this(mapType, null);
3940
}
4041

41-
MultimapSerializer(JavaType type, BeanProperty beanProperty) {
42-
super(type, beanProperty);
42+
MultimapSerializer(MapLikeType mapType, BeanProperty beanProperty) {
43+
super(mapType, beanProperty);
44+
this.mapType = mapType;
4345
}
4446

4547
@Override
@@ -57,8 +59,7 @@ Object toJavaObj(Multimap<?, ?> value) throws IOException {
5759
}
5860

5961
@Override
60-
JavaType emulatedJavaType(JavaType type, TypeFactory typeFactory) {
61-
MapLikeType mapType = (MapLikeType) type;
62+
JavaType emulatedJavaType(TypeFactory typeFactory) {
6263
JavaType containerType = typeFactory.constructCollectionType(ArrayList.class, mapType.getContentType());
6364
return typeFactory.constructMapType(LinkedHashMap.class, mapType.getKeyType(), containerType);
6465
}
@@ -73,6 +74,6 @@ public JsonSerializer<?> createContextual(SerializerProvider prov, BeanProperty
7374
if (property == beanProperty) {
7475
return this;
7576
}
76-
return new MultimapSerializer(type, property);
77+
return new MultimapSerializer(mapType, property);
7778
}
7879
}

src/main/java/io/vavr/jackson/datatype/serialize/SerializableSerializer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ Object toJavaObj(T value) throws IOException {
4343
}
4444

4545
@Override
46-
JavaType emulatedJavaType(JavaType type, TypeFactory typeFactory) {
46+
JavaType emulatedJavaType(TypeFactory typeFactory) {
4747
return typeFactory.constructArrayType(byte.class);
4848
}
4949

src/main/java/io/vavr/jackson/datatype/serialize/ValueSerializer.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ abstract class ValueSerializer<T> extends StdSerializer<T> {
4848
}
4949

5050
abstract Object toJavaObj(T value) throws IOException;
51-
abstract JavaType emulatedJavaType(JavaType type, TypeFactory typeFactory);
51+
abstract JavaType emulatedJavaType(TypeFactory typeFactory);
5252

5353
@Override
5454
public void serialize(T value, JsonGenerator gen, SerializerProvider provider) throws IOException {
@@ -58,7 +58,7 @@ public void serialize(T value, JsonGenerator gen, SerializerProvider provider) t
5858
} else {
5959
JsonSerializer<Object> ser;
6060
try {
61-
JavaType emulated = emulatedJavaType(type, provider.getTypeFactory());
61+
JavaType emulated = emulatedJavaType(provider.getTypeFactory());
6262
if (emulated.getRawClass() != Object.class) {
6363
ser = provider.findTypedValueSerializer(emulated, true, beanProperty);
6464
} else {

0 commit comments

Comments
 (0)