Skip to content

Commit 19b897c

Browse files
committed
Merge pull request #855 from MahiFX/V4Fix
Follow ups from #838
2 parents 7296866 + d542f2a commit 19b897c

File tree

2 files changed

+40
-11
lines changed

2 files changed

+40
-11
lines changed

src/main/java/com/fasterxml/jackson/databind/SerializerProvider.java

Lines changed: 26 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,32 @@
11
package com.fasterxml.jackson.databind;
22

3-
import java.io.IOException;
4-
import java.text.DateFormat;
5-
import java.util.*;
6-
73
import com.fasterxml.jackson.annotation.ObjectIdGenerator;
8-
import com.fasterxml.jackson.core.*;
4+
import com.fasterxml.jackson.core.JsonGenerator;
5+
import com.fasterxml.jackson.core.JsonProcessingException;
96
import com.fasterxml.jackson.databind.cfg.ContextAttributes;
107
import com.fasterxml.jackson.databind.deser.ContextualDeserializer;
118
import com.fasterxml.jackson.databind.introspect.Annotated;
129
import com.fasterxml.jackson.databind.jsontype.TypeSerializer;
13-
import com.fasterxml.jackson.databind.ser.*;
14-
import com.fasterxml.jackson.databind.ser.impl.*;
10+
import com.fasterxml.jackson.databind.ser.ContextualSerializer;
11+
import com.fasterxml.jackson.databind.ser.FilterProvider;
12+
import com.fasterxml.jackson.databind.ser.ResolvableSerializer;
13+
import com.fasterxml.jackson.databind.ser.SerializerCache;
14+
import com.fasterxml.jackson.databind.ser.SerializerFactory;
15+
import com.fasterxml.jackson.databind.ser.impl.FailingSerializer;
16+
import com.fasterxml.jackson.databind.ser.impl.ReadOnlyClassToSerializerMap;
17+
import com.fasterxml.jackson.databind.ser.impl.TypeWrappedSerializer;
18+
import com.fasterxml.jackson.databind.ser.impl.UnknownSerializer;
19+
import com.fasterxml.jackson.databind.ser.impl.WritableObjectId;
1520
import com.fasterxml.jackson.databind.ser.std.NullSerializer;
1621
import com.fasterxml.jackson.databind.type.TypeFactory;
1722
import com.fasterxml.jackson.databind.util.ClassUtil;
1823

24+
import java.io.IOException;
25+
import java.text.DateFormat;
26+
import java.util.Date;
27+
import java.util.Locale;
28+
import java.util.TimeZone;
29+
1930
/**
2031
* Class that defines API used by {@link ObjectMapper} and
2132
* {@link JsonSerializer}s to obtain serializers capable of serializing
@@ -722,6 +733,14 @@ public JsonSerializer<Object> findTypedValueSerializer(JavaType valueType, boole
722733
return ser;
723734
}
724735

736+
/**
737+
* Method called to get a Typeserialize to use for accessing Type Information for a given Java class
738+
* Useful for schema generators.
739+
*/
740+
public TypeSerializer findTypeSerializer(JavaType javaType) throws JsonMappingException {
741+
return _serializerFactory.createTypeSerializer(_config, javaType);
742+
}
743+
725744
/**
726745
* Method called to get the serializer to use for serializing
727746
* non-null Map keys. Separation from regular

src/main/java/com/fasterxml/jackson/databind/jsontype/impl/TypeNameIdResolver.java

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
11
package com.fasterxml.jackson.databind.jsontype.impl;
22

3-
import java.util.*;
4-
53
import com.fasterxml.jackson.annotation.JsonTypeInfo;
64
import com.fasterxml.jackson.databind.BeanDescription;
75
import com.fasterxml.jackson.databind.DatabindContext;
86
import com.fasterxml.jackson.databind.JavaType;
97
import com.fasterxml.jackson.databind.cfg.MapperConfig;
108
import com.fasterxml.jackson.databind.jsontype.NamedType;
119

10+
import java.util.Collection;
11+
import java.util.HashMap;
12+
import java.util.TreeSet;
13+
1214
public class TypeNameIdResolver extends TypeIdResolverBase
1315
{
1416
protected final MapperConfig<?> _config;
@@ -80,7 +82,15 @@ public static TypeNameIdResolver construct(MapperConfig<?> config, JavaType base
8082
@Override
8183
public String idFromValue(Object value)
8284
{
83-
Class<?> cls = _typeFactory.constructType(value.getClass()).getRawClass();
85+
return idFromClass(value.getClass());
86+
}
87+
88+
protected String idFromClass(Class<?> clazz)
89+
{
90+
if(clazz==null){
91+
return null;
92+
}
93+
Class<?> cls = _typeFactory.constructType(clazz).getRawClass();
8494
final String key = cls.getName();
8595
String name;
8696
synchronized (_typeToId) {
@@ -108,7 +118,7 @@ public String idFromValueAndType(Object value, Class<?> type) {
108118
* it seems; nothing much we can figure out that way.
109119
*/
110120
if (value == null) {
111-
return null;
121+
return idFromClass(type);
112122
}
113123
return idFromValue(value);
114124
}

0 commit comments

Comments
 (0)