All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.codehaus.jackson.map.deser.EnumResolver Maven / Gradle / Ivy

Go to download

Data Mapper package is a high-performance data binding package built on Jackson JSON processor

There is a newer version: 1.9.13
Show newest version
package org.codehaus.jackson.map.deser;

import org.codehaus.jackson.map.AnnotationIntrospector;

import java.util.*;

/**
 * Helper class used to resolve String values (either Json Object field
 * names or regular String values) into Java Enum instances.
 */
public final class EnumResolver
{
    protected final Class> _enumClass;

    protected final Enum[] _enums;

    /**
     *
     */
    protected final HashMap> _enumsById;

    private EnumResolver(Class> enumClass, Enum[] enums, HashMap> map)
    {
        _enumClass = enumClass;
        _enums = enums;
        _enumsById = map;
    }

    public static EnumResolver constructFor(Class rawEnumCls, AnnotationIntrospector ai)
    {
        @SuppressWarnings("unchecked")
        Class> enumCls = (Class>) rawEnumCls;

        Enum[] enumValues = enumCls.getEnumConstants();
        HashMap> map = new HashMap>();
        for (Enum e : enumValues) {
            map.put(ai.findEnumValue(e), e);
        }
        return new EnumResolver(enumCls, enumValues, map);
    }

    public Enum findEnum(String key)
    {
        return _enumsById.get(key);
    }

    public Enum getEnum(int index)
    {
        if (index < 0 || index >= _enums.length) {
            return null;
        }
        return _enums[index];
    }

    public Class> getEnumClass() { return _enumClass; }

    public int lastValidIndex() { return _enums.length-1; }
}





© 2015 - 2025 Weber Informatics LLC | Privacy Policy