Skip to content
This repository was archived by the owner on Jan 20, 2025. It is now read-only.

Commit e01df0a

Browse files
committed
Eclipse warnings cleanup; adding a unit test trying to reproduce #29, failing so far
1 parent 3de101e commit e01df0a

20 files changed

+85
-52
lines changed

src/main/java/com/fasterxml/jackson/datatype/guava/deser/GuavaCollectionDeserializer.java

+3
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ public abstract class GuavaCollectionDeserializer<T>
1414
extends StdDeserializer<T>
1515
implements ContextualDeserializer
1616
{
17+
private static final long serialVersionUID = 1L;
18+
1719
protected final CollectionType _containerType;
1820

1921
/**
@@ -56,6 +58,7 @@ public abstract GuavaCollectionDeserializer<T> withResolved(
5658
* after deserializer itself has been registered. This
5759
* is needed to handle recursive and transitive dependencies.
5860
*/
61+
@Override
5962
public JsonDeserializer<?> createContextual(DeserializationContext ctxt,
6063
BeanProperty property) throws JsonMappingException
6164
{

src/main/java/com/fasterxml/jackson/datatype/guava/deser/GuavaImmutableCollectionDeserializer.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@
1212
import com.google.common.collect.ImmutableCollection;
1313

1414
abstract class GuavaImmutableCollectionDeserializer<T extends ImmutableCollection<Object>>
15-
extends GuavaCollectionDeserializer<T> {
15+
extends GuavaCollectionDeserializer<T>
16+
{
17+
private static final long serialVersionUID = 1L;
1618

1719
GuavaImmutableCollectionDeserializer(CollectionType type,
1820
TypeDeserializer typeDeser, JsonDeserializer<?> deser) {

src/main/java/com/fasterxml/jackson/datatype/guava/deser/GuavaMapDeserializer.java

+1
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ public abstract GuavaMapDeserializer<T> withResolved(KeyDeserializer keyDeser,
6565
* after deserializer itself has been registered. This
6666
* is needed to handle recursive and transitive dependencies.
6767
*/
68+
@Override
6869
public JsonDeserializer<?> createContextual(DeserializationContext ctxt,
6970
BeanProperty property) throws JsonMappingException
7071
{

src/main/java/com/fasterxml/jackson/datatype/guava/deser/GuavaMultisetDeserializer.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,9 @@
1111
import com.fasterxml.jackson.databind.type.CollectionType;
1212
import com.google.common.collect.Multiset;
1313

14-
abstract class GuavaMultisetDeserializer<T extends Multiset<Object>> extends GuavaCollectionDeserializer<T> {
14+
abstract class GuavaMultisetDeserializer<T extends Multiset<Object>> extends GuavaCollectionDeserializer<T>
15+
{
16+
private static final long serialVersionUID = 1L;
1517

1618
GuavaMultisetDeserializer(CollectionType type, TypeDeserializer typeDeser, JsonDeserializer<?> deser) {
1719
super(type, typeDeser, deser);

src/main/java/com/fasterxml/jackson/datatype/guava/deser/GuavaOptionalDeserializer.java

+4-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,10 @@
1010
import com.fasterxml.jackson.databind.jsontype.TypeDeserializer;
1111
import com.google.common.base.Optional;
1212

13-
public final class GuavaOptionalDeserializer extends StdDeserializer<Optional<?>> {
13+
public final class GuavaOptionalDeserializer extends StdDeserializer<Optional<?>>
14+
{
15+
private static final long serialVersionUID = 1L;
16+
1417
private final JavaType _referenceType;
1518

1619
public GuavaOptionalDeserializer(JavaType valueType) {

src/main/java/com/fasterxml/jackson/datatype/guava/deser/HashMultisetDeserializer.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,10 @@
77
import com.google.common.collect.HashMultiset;
88

99
public class HashMultisetDeserializer
10-
extends GuavaMultisetDeserializer<HashMultiset<Object>>
10+
extends GuavaMultisetDeserializer<HashMultiset<Object>>
1111
{
12+
private static final long serialVersionUID = 1L;
13+
1214
public HashMultisetDeserializer(CollectionType type,
1315
TypeDeserializer typeDeser, JsonDeserializer<?> deser)
1416
{

src/main/java/com/fasterxml/jackson/datatype/guava/deser/ImmutableListDeserializer.java

+4-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,10 @@
77
import com.fasterxml.jackson.databind.type.CollectionType;
88

99
public class ImmutableListDeserializer extends
10-
GuavaImmutableCollectionDeserializer<ImmutableList<Object>> {
10+
GuavaImmutableCollectionDeserializer<ImmutableList<Object>>
11+
{
12+
private static final long serialVersionUID = 1L;
13+
1114
public ImmutableListDeserializer(CollectionType type,
1215
TypeDeserializer typeDeser, JsonDeserializer<?> deser) {
1316
super(type, typeDeser, deser);

src/main/java/com/fasterxml/jackson/datatype/guava/deser/ImmutableMultisetDeserializer.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@
66
import com.google.common.collect.ImmutableCollection.Builder;
77
import com.google.common.collect.ImmutableMultiset;
88

9-
public class ImmutableMultisetDeserializer extends GuavaImmutableCollectionDeserializer<ImmutableMultiset<Object>> {
9+
public class ImmutableMultisetDeserializer extends GuavaImmutableCollectionDeserializer<ImmutableMultiset<Object>>
10+
{
11+
private static final long serialVersionUID = 1L;
1012

1113
public ImmutableMultisetDeserializer(CollectionType type, TypeDeserializer typeDeser, JsonDeserializer<?> deser) {
1214
super(type, typeDeser, deser);

src/main/java/com/fasterxml/jackson/datatype/guava/deser/ImmutableSetDeserializer.java

+2
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88

99
public class ImmutableSetDeserializer extends GuavaImmutableCollectionDeserializer<ImmutableSet<Object>>
1010
{
11+
private static final long serialVersionUID = 1L;
12+
1113
public ImmutableSetDeserializer(CollectionType type,
1214
TypeDeserializer typeDeser, JsonDeserializer<?> deser)
1315
{

src/main/java/com/fasterxml/jackson/datatype/guava/deser/ImmutableSortedSetDeserializer.java

+2
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88

99
public class ImmutableSortedSetDeserializer extends GuavaImmutableCollectionDeserializer<ImmutableSortedSet<Object>>
1010
{
11+
private static final long serialVersionUID = 1L;
12+
1113
public ImmutableSortedSetDeserializer(CollectionType type,
1214
TypeDeserializer typeDeser, JsonDeserializer<?> deser)
1315
{

src/main/java/com/fasterxml/jackson/datatype/guava/deser/LinkedHashMultisetDeserializer.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@
55
import com.fasterxml.jackson.databind.type.CollectionType;
66
import com.google.common.collect.LinkedHashMultiset;
77

8-
public class LinkedHashMultisetDeserializer extends GuavaMultisetDeserializer<LinkedHashMultiset<Object>> {
8+
public class LinkedHashMultisetDeserializer extends GuavaMultisetDeserializer<LinkedHashMultiset<Object>>
9+
{
10+
private static final long serialVersionUID = 1L;
911

1012
public LinkedHashMultisetDeserializer(CollectionType type, TypeDeserializer typeDeser, JsonDeserializer<?> deser) {
1113
super(type, typeDeser, deser);

src/main/java/com/fasterxml/jackson/datatype/guava/deser/TreeMultisetDeserializer.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@
55
import com.fasterxml.jackson.databind.type.CollectionType;
66
import com.google.common.collect.TreeMultiset;
77

8-
public class TreeMultisetDeserializer extends GuavaMultisetDeserializer<TreeMultiset<Object>> {
8+
public class TreeMultisetDeserializer extends GuavaMultisetDeserializer<TreeMultiset<Object>>
9+
{
10+
private static final long serialVersionUID = 1L;
911

1012
public TreeMultisetDeserializer(CollectionType type, TypeDeserializer typeDeser, JsonDeserializer<?> deser) {
1113
super(type, typeDeser, deser);

src/main/java/com/fasterxml/jackson/datatype/guava/deser/multimap/GuavaMultimapDeserializer.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ private static Method findTransformer(Class<?> rawType) {
9797
* We need to use this method to properly handle possible contextual variants of key and value
9898
* deserializers, as well as type deserializers.
9999
*/
100+
@Override
100101
public JsonDeserializer<?> createContextual(DeserializationContext ctxt,
101102
BeanProperty property) throws JsonMappingException {
102103
KeyDeserializer kd = keyDeserializer;
@@ -117,7 +118,7 @@ public JsonDeserializer<?> createContextual(DeserializationContext ctxt,
117118

118119
protected abstract JsonDeserializer<?> _createContextual(MapLikeType type,
119120
KeyDeserializer keyDeserializer, TypeDeserializer typeDeserializer,
120-
JsonDeserializer elementDeserializer, Method method);
121+
JsonDeserializer<?> elementDeserializer, Method method);
121122

122123
@Override
123124
public T deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException,

src/main/java/com/fasterxml/jackson/datatype/guava/deser/multimap/list/ArrayListMultimapDeserializer.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ protected ArrayListMultimap<Object, Object> createMultimap() {
3636
@Override
3737
protected JsonDeserializer<?> _createContextual(MapLikeType type,
3838
KeyDeserializer keyDeserializer, TypeDeserializer typeDeserializer,
39-
JsonDeserializer elementDeserializer, Method method) {
39+
JsonDeserializer<?> elementDeserializer, Method method) {
4040
return new ArrayListMultimapDeserializer(type, keyDeserializer, typeDeserializer,
4141
elementDeserializer, method);
4242
}

src/main/java/com/fasterxml/jackson/datatype/guava/deser/multimap/list/LinkedListMultimapDeserializer.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@
1414
*
1515
* @author mvolkhart
1616
*/
17-
public class LinkedListMultimapDeserializer extends GuavaMultimapDeserializer<LinkedListMultimap<Object,
18-
Object>> {
19-
17+
public class LinkedListMultimapDeserializer
18+
extends GuavaMultimapDeserializer<LinkedListMultimap<Object,Object>>
19+
{
2020
public LinkedListMultimapDeserializer(MapLikeType type, KeyDeserializer keyDeserializer,
2121
TypeDeserializer elementTypeDeserializer, JsonDeserializer<?> elementDeserializer) {
2222
super(type, keyDeserializer, elementTypeDeserializer, elementDeserializer);
@@ -36,7 +36,7 @@ protected LinkedListMultimap<Object, Object> createMultimap() {
3636
@Override
3737
protected JsonDeserializer<?> _createContextual(MapLikeType type,
3838
KeyDeserializer keyDeserializer, TypeDeserializer typeDeserializer,
39-
JsonDeserializer elementDeserializer, Method method) {
39+
JsonDeserializer<?> elementDeserializer, Method method) {
4040
return new LinkedListMultimapDeserializer(type, keyDeserializer, typeDeserializer,
4141
elementDeserializer, method);
4242
}

src/main/java/com/fasterxml/jackson/datatype/guava/deser/multimap/set/HashMultimapDeserializer.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ protected HashMultimap<Object, Object> createMultimap() {
3636
@Override
3737
protected JsonDeserializer<?> _createContextual(MapLikeType type,
3838
KeyDeserializer keyDeserializer, TypeDeserializer typeDeserializer,
39-
JsonDeserializer elementDeserializer, Method method) {
39+
JsonDeserializer<?> elementDeserializer, Method method) {
4040
return new HashMultimapDeserializer(type, keyDeserializer, typeDeserializer,
4141
elementDeserializer, method);
4242
}

src/main/java/com/fasterxml/jackson/datatype/guava/deser/multimap/set/LinkedHashMultimapDeserializer.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ protected LinkedHashMultimap<Object, Object> createMultimap() {
3636
@Override
3737
protected JsonDeserializer<?> _createContextual(MapLikeType type,
3838
KeyDeserializer keyDeserializer, TypeDeserializer typeDeserializer,
39-
JsonDeserializer elementDeserializer, Method method) {
39+
JsonDeserializer<?> elementDeserializer, Method method) {
4040
return new LinkedHashMultimapDeserializer(type, keyDeserializer, typeDeserializer,
4141
elementDeserializer, method);
4242
}

src/main/java/com/fasterxml/jackson/datatype/guava/ser/MultimapSerializer.java

+30-31
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,11 @@ public class MultimapSerializer
1818
extends JsonSerializer<Multimap<?, ?>>
1919
implements ContextualSerializer
2020
{
21-
private final MapLikeType type;
22-
private final BeanProperty property;
23-
private final JsonSerializer<Object> keySerializer;
24-
private final TypeSerializer valueTypeSerializer;
25-
private final JsonSerializer<Object> valueSerializer;
21+
private final MapLikeType _type;
22+
private final BeanProperty _property;
23+
private final JsonSerializer<Object> _keySerializer;
24+
private final TypeSerializer _valueTypeSerializer;
25+
private final JsonSerializer<Object> _valueSerializer;
2626

2727
public MultimapSerializer(SerializationConfig config,
2828
MapLikeType type,
@@ -31,32 +31,30 @@ public MultimapSerializer(SerializationConfig config,
3131
TypeSerializer valueTypeSerializer,
3232
JsonSerializer<Object> valueSerializer)
3333
{
34-
this.type = type;
35-
this.property = null;
36-
this.keySerializer = keySerializer;
37-
this.valueTypeSerializer = valueTypeSerializer;
38-
this.valueSerializer = valueSerializer;
34+
_type = type;
35+
_property = null;
36+
_keySerializer = keySerializer;
37+
_valueTypeSerializer = valueTypeSerializer;
38+
_valueSerializer = valueSerializer;
3939
}
4040

4141
@SuppressWarnings("unchecked")
4242
protected MultimapSerializer(MultimapSerializer src, BeanProperty property,
4343
JsonSerializer<?> keySerializer,
4444
TypeSerializer valueTypeSerializer, JsonSerializer<?> valueSerializer)
4545
{
46-
this.type = src.type;
47-
this.property = property;
48-
this.keySerializer = (JsonSerializer<Object>) keySerializer;
49-
this.valueTypeSerializer = valueTypeSerializer;
50-
this.valueSerializer = (JsonSerializer<Object>) valueSerializer;
46+
_type = src._type;
47+
_property = property;
48+
_keySerializer = (JsonSerializer<Object>) keySerializer;
49+
_valueTypeSerializer = valueTypeSerializer;
50+
_valueSerializer = (JsonSerializer<Object>) valueSerializer;
5151
}
52-
53-
52+
5453
protected MultimapSerializer withResolved(BeanProperty property,
55-
JsonSerializer<?> keySerializer,
56-
TypeSerializer valueTypeSerializer, JsonSerializer<?> valueSerializer)
54+
JsonSerializer<?> keySer,
55+
TypeSerializer vts, JsonSerializer<?> valueSer)
5756
{
58-
return new MultimapSerializer(this, property, keySerializer,
59-
valueTypeSerializer, valueSerializer);
57+
return new MultimapSerializer(this, property, keySer, vts, valueSer);
6058
}
6159

6260
/*
@@ -65,26 +63,27 @@ protected MultimapSerializer withResolved(BeanProperty property,
6563
/**********************************************************
6664
*/
6765

66+
@Override
6867
public JsonSerializer<?> createContextual(SerializerProvider provider,
6968
BeanProperty property) throws JsonMappingException
7069
{
71-
JsonSerializer<?> valueSer = valueSerializer;
70+
JsonSerializer<?> valueSer = _valueSerializer;
7271
if (valueSer == null) { // if type is final, can actually resolve:
73-
JavaType valueType = type.getContentType();
72+
JavaType valueType = _type.getContentType();
7473
if (valueType.isFinal()) {
7574
valueSer = provider.findValueSerializer(valueType, property);
7675
}
7776
} else if (valueSer instanceof ContextualSerializer) {
7877
valueSer = ((ContextualSerializer) valueSer).createContextual(provider, property);
7978
}
80-
JsonSerializer<?> keySer = keySerializer;
79+
JsonSerializer<?> keySer = _keySerializer;
8180
if (keySer == null) {
82-
keySer = provider.findKeySerializer(type.getKeyType(), property);
81+
keySer = provider.findKeySerializer(_type.getKeyType(), property);
8382
} else if (keySer instanceof ContextualSerializer) {
8483
keySer = ((ContextualSerializer) keySer).createContextual(provider, property);
8584
}
8685
// finally, TypeSerializers may need contextualization as well
87-
TypeSerializer typeSer = valueTypeSerializer;
86+
TypeSerializer typeSer = _valueTypeSerializer;
8887
if (typeSer != null) {
8988
typeSer = typeSer.forProperty(property);
9089
}
@@ -122,17 +121,17 @@ private final void serializeFields(Multimap<?, ?> value, JsonGenerator jgen, Ser
122121
throws IOException, JsonProcessingException
123122
{
124123
for (Entry<?, ? extends Collection<?>> e : value.asMap().entrySet()) {
125-
if (keySerializer != null) {
126-
keySerializer.serialize(e.getKey(), jgen, provider);
124+
if (_keySerializer != null) {
125+
_keySerializer.serialize(e.getKey(), jgen, provider);
127126
} else {
128-
provider.findKeySerializer(provider.constructType(String.class), property)
127+
provider.findKeySerializer(provider.constructType(String.class), _property)
129128
.serialize(e.getKey(), jgen, provider);
130129
}
131-
if (valueSerializer != null) {
130+
if (_valueSerializer != null) {
132131
// note: value is a List, but generic type is for contents... so:
133132
jgen.writeStartArray();
134133
for (Object vv : e.getValue()) {
135-
valueSerializer.serialize(vv, jgen, provider);
134+
_valueSerializer.serialize(vv, jgen, provider);
136135
}
137136
jgen.writeEndArray();
138137
} else {

src/test/java/com/fasterxml/jackson/datatype/guava/TestImmutables.java

+8-3
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,9 @@
33
import java.util.Iterator;
44

55
import com.fasterxml.jackson.core.type.TypeReference;
6-
6+
import com.fasterxml.jackson.databind.JavaType;
77
import com.fasterxml.jackson.databind.JsonMappingException;
88
import com.fasterxml.jackson.databind.ObjectMapper;
9-
109
import com.google.common.collect.*;
1110

1211
/**
@@ -122,10 +121,16 @@ public void testImmutableSortedSet() throws Exception
122121
public void testImmutableMap() throws Exception
123122
{
124123
ObjectMapper mapper = mapperWithModule();
125-
ImmutableMap<Integer,Boolean> map = mapper.readValue("{\"12\":true,\"4\":false}", new TypeReference<ImmutableMap<Integer,Boolean>>() { });
124+
final JavaType type = mapper.getTypeFactory().constructType(new TypeReference<ImmutableMap<Integer,Boolean>>() { });
125+
ImmutableMap<Integer,Boolean> map = mapper.readValue("{\"12\":true,\"4\":false}", type);
126126
assertEquals(2, map.size());
127127
assertEquals(Boolean.TRUE, map.get(Integer.valueOf(12)));
128128
assertEquals(Boolean.FALSE, map.get(Integer.valueOf(4)));
129+
130+
// [Issue#29]
131+
map = mapper.readValue("{}", type);
132+
assertNotNull(map);
133+
assertEquals(0, map.size());
129134
}
130135

131136
public void testImmutableSortedMap() throws Exception

src/test/java/com/fasterxml/jackson/datatype/guava/TestMultimaps.java

+4-2
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,9 @@ public void testForwardingSetMultimap() {
154154

155155
}
156156

157-
private SetMultimap<String, String> setBasedHelper(TypeReference type) throws IOException {
157+
private SetMultimap<String, String> setBasedHelper(TypeReference<?> type)
158+
throws IOException
159+
{
158160
SetMultimap<String, String> map = MAPPER.readValue(StringStringMultimap, type);
159161
assertEquals(3, map.size());
160162
assertTrue(map.containsEntry("first", "abc"));
@@ -183,7 +185,7 @@ public void testLinkedListMultimap() throws IOException {
183185
assertTrue(map instanceof LinkedListMultimap);
184186
}
185187

186-
private ListMultimap<String, String> listBasedHelper(TypeReference type) throws IOException {
188+
private ListMultimap<String, String> listBasedHelper(TypeReference<?> type) throws IOException {
187189
ListMultimap<String, String> map = MAPPER.readValue(StringStringMultimap, type);
188190
assertEquals(4, map.size());
189191
assertTrue(map.remove("first", "abc"));

0 commit comments

Comments
 (0)