Java 类com.fasterxml.jackson.databind.util.EnumResolver 实例源码
项目:codec
文件:CodecBeanDeserializerModifier.java
@Override public JsonDeserializer<?> modifyEnumDeserializer(DeserializationConfig config,
JavaType type,
BeanDescription beanDesc,
JsonDeserializer<?> deserializer) {
JsonDeserializer<?> delegatee = deserializer.getDelegatee();
if (delegatee != null) {
JsonDeserializer<?> replacementDelegatee = modifyEnumDeserializer(config, type, beanDesc, delegatee);
return deserializer.replaceDelegatee(replacementDelegatee);
} else if (modifyEnum && deserializer.getClass().equals(EnumDeserializer.class)) {
EnumResolver enumResolver =
EnumResolver.constructUnsafe(type.getRawClass(), config.getAnnotationIntrospector());
return new CaseIgnoringEnumDeserializer(enumResolver);
} else {
return deserializer;
}
}
项目:joyplus-tv
文件:BasicDeserializerFactory.java
protected EnumResolver<?> constructEnumResolver(Class<?> enumClass,
DeserializationConfig config, AnnotatedMethod jsonValueMethod)
{
if (jsonValueMethod != null) {
Method accessor = jsonValueMethod.getAnnotated();
if (config.canOverrideAccessModifiers()) {
ClassUtil.checkAndFixAccess(accessor);
}
return EnumResolver.constructUnsafeUsingMethod(enumClass, accessor);
}
// [JACKSON-212]: may need to use Enum.toString()
if (config.isEnabled(DeserializationFeature.READ_ENUMS_USING_TO_STRING)) {
return EnumResolver.constructUnsafeUsingToString(enumClass);
}
return EnumResolver.constructUnsafe(enumClass, config.getAnnotationIntrospector());
}
项目:QuizUpWinner
文件:BasicDeserializerFactory.java
private KeyDeserializer _createEnumKeyDeserializer(DeserializationContext paramDeserializationContext, JavaType paramJavaType)
{
DeserializationConfig localDeserializationConfig = paramDeserializationContext.getConfig();
BeanDescription localBeanDescription = localDeserializationConfig.introspect(paramJavaType);
JsonDeserializer localJsonDeserializer = findDeserializerFromAnnotation(paramDeserializationContext, localBeanDescription.getClassInfo());
if (localJsonDeserializer != null)
return StdKeyDeserializers.constructDelegatingKeyDeserializer(localDeserializationConfig, paramJavaType, localJsonDeserializer);
Class localClass = paramJavaType.getRawClass();
if (_findCustomEnumDeserializer(localClass, localDeserializationConfig, localBeanDescription) != null)
return StdKeyDeserializers.constructDelegatingKeyDeserializer(localDeserializationConfig, paramJavaType, localJsonDeserializer);
EnumResolver localEnumResolver = constructEnumResolver(localClass, localDeserializationConfig, localBeanDescription.findJsonValueMethod());
Iterator localIterator = localBeanDescription.getFactoryMethods().iterator();
while (localIterator.hasNext())
{
AnnotatedMethod localAnnotatedMethod = (AnnotatedMethod)localIterator.next();
if (localDeserializationConfig.getAnnotationIntrospector().hasCreatorAnnotation(localAnnotatedMethod))
{
if ((localAnnotatedMethod.getParameterCount() == 1) && (localAnnotatedMethod.getRawReturnType().isAssignableFrom(localClass)))
{
if (localAnnotatedMethod.getGenericParameterType(0) != String.class)
throw new IllegalArgumentException("Parameter #0 type for factory method (" + localAnnotatedMethod + ") not suitable, must be java.lang.String");
if (localDeserializationConfig.canOverrideAccessModifiers())
ClassUtil.checkAndFixAccess(localAnnotatedMethod.getMember());
return StdKeyDeserializers.constructEnumKeyDeserializer(localEnumResolver, localAnnotatedMethod);
}
throw new IllegalArgumentException("Unsuitable method (" + localAnnotatedMethod + ") decorated with @JsonCreator (for Enum type " + localClass.getName() + ")");
}
}
return StdKeyDeserializers.constructEnumKeyDeserializer(localEnumResolver);
}
项目:QuizUpWinner
文件:BasicDeserializerFactory.java
protected EnumResolver<?> constructEnumResolver(Class<?> paramClass, DeserializationConfig paramDeserializationConfig, AnnotatedMethod paramAnnotatedMethod)
{
if (paramAnnotatedMethod != null)
{
Method localMethod = paramAnnotatedMethod.getAnnotated();
if (paramDeserializationConfig.canOverrideAccessModifiers())
ClassUtil.checkAndFixAccess(localMethod);
return EnumResolver.constructUnsafeUsingMethod(paramClass, localMethod);
}
if (paramDeserializationConfig.isEnabled(DeserializationFeature.READ_ENUMS_USING_TO_STRING))
return EnumResolver.constructUnsafeUsingToString(paramClass);
return EnumResolver.constructUnsafe(paramClass, paramDeserializationConfig.getAnnotationIntrospector());
}
项目:QuizUpWinner
文件:EnumDeserializer.java
public EnumDeserializer(EnumResolver<?> paramEnumResolver)
{
super(Enum.class);
this._resolver = paramEnumResolver;
}
项目:QuizUpWinner
文件:StdKeyDeserializers.java
public static KeyDeserializer constructEnumKeyDeserializer(EnumResolver<?> paramEnumResolver)
{
return new StdKeyDeserializer.EnumKD(paramEnumResolver, null);
}
项目:QuizUpWinner
文件:StdKeyDeserializers.java
public static KeyDeserializer constructEnumKeyDeserializer(EnumResolver<?> paramEnumResolver, AnnotatedMethod paramAnnotatedMethod)
{
return new StdKeyDeserializer.EnumKD(paramEnumResolver, paramAnnotatedMethod);
}
项目:QuizUpWinner
文件:StdKeyDeserializer.java
protected EnumKD(EnumResolver<?> paramEnumResolver, AnnotatedMethod paramAnnotatedMethod)
{
super();
this._resolver = paramEnumResolver;
this._factory = paramAnnotatedMethod;
}
项目:codec
文件:CaseIgnoringEnumDeserializer.java
public CaseIgnoringEnumDeserializer(EnumResolver enumResolver) {
super(enumResolver);
}
项目:joyplus-tv
文件:BasicDeserializerFactory.java
private KeyDeserializer _createEnumKeyDeserializer(DeserializationContext ctxt,
JavaType type)
throws JsonMappingException
{
final DeserializationConfig config = ctxt.getConfig();
BeanDescription beanDesc = config.introspect(type);
JsonDeserializer<?> des = findDeserializerFromAnnotation(ctxt, beanDesc.getClassInfo());
if (des != null) {
return StdKeyDeserializers.constructDelegatingKeyDeserializer(config, type, des);
}
Class<?> enumClass = type.getRawClass();
// 23-Nov-2010, tatu: Custom deserializer?
JsonDeserializer<?> custom = _findCustomEnumDeserializer(enumClass, config, beanDesc);
if (custom != null) {
return StdKeyDeserializers.constructDelegatingKeyDeserializer(config, type, des);
}
EnumResolver<?> enumRes = constructEnumResolver(enumClass, config, beanDesc.findJsonValueMethod());
// [JACKSON-193] May have @JsonCreator for static factory method:
for (AnnotatedMethod factory : beanDesc.getFactoryMethods()) {
if (config.getAnnotationIntrospector().hasCreatorAnnotation(factory)) {
int argCount = factory.getParameterCount();
if (argCount == 1) {
Class<?> returnType = factory.getRawReturnType();
// usually should be class, but may be just plain Enum<?> (for Enum.valueOf()?)
if (returnType.isAssignableFrom(enumClass)) {
// note: mostly copied from 'EnumDeserializer.deserializerForCreator(...)'
if (factory.getGenericParameterType(0) != String.class) {
throw new IllegalArgumentException("Parameter #0 type for factory method ("+factory+") not suitable, must be java.lang.String");
}
if (config.canOverrideAccessModifiers()) {
ClassUtil.checkAndFixAccess(factory.getMember());
}
return StdKeyDeserializers.constructEnumKeyDeserializer(enumRes, factory);
}
}
throw new IllegalArgumentException("Unsuitable method ("+factory+") decorated with @JsonCreator (for Enum type "
+enumClass.getName()+")");
}
}
// [JACKSON-749] Also, need to consider @JsonValue, if one found
return StdKeyDeserializers.constructEnumKeyDeserializer(enumRes);
}
项目:joyplus-tv
文件:EnumDeserializer.java
public EnumDeserializer(EnumResolver<?> res)
{
super(Enum.class);
_resolver = res;
}
项目:joyplus-tv
文件:StdKeyDeserializers.java
public static KeyDeserializer constructEnumKeyDeserializer(EnumResolver<?> enumResolver) {
return new StdKeyDeserializer.EnumKD(enumResolver, null);
}
项目:joyplus-tv
文件:StdKeyDeserializers.java
public static KeyDeserializer constructEnumKeyDeserializer(EnumResolver<?> enumResolver,
AnnotatedMethod factory) {
return new StdKeyDeserializer.EnumKD(enumResolver, factory);
}
项目:joyplus-tv
文件:StdKeyDeserializer.java
protected EnumKD(EnumResolver<?> er, AnnotatedMethod factory) {
super(er.getEnumClass());
_resolver = er;
_factory = factory;
}