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

org.codehaus.jackson.map.util.EnumValues 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.util;

import java.util.*;

import org.codehaus.jackson.map.*;

public final class EnumValues
{
    private final EnumMap _values;

    @SuppressWarnings("unchecked")
    private EnumValues(Map,String> v) {
        _values = new EnumMap(v);
    }

    @SuppressWarnings("unchecked")
    public static EnumValues construct(Class> enumClass, AnnotationIntrospector intr)
    {
        /* [JACKSON-214]: Enum types with per-instance sub-classes
         *   need special handling
         */
        Class> curr = enumClass;
        do {
            Enum[] values = curr.getEnumConstants();
            if (values != null) {
                // Type juggling... unfortunate
                Map,String> map = new HashMap,String>();
                for (Enum en : values) {
                    map.put(en, intr.findEnumValue(en));
                }
                return new EnumValues(map);
            }
            curr = (Class>)curr.getEnclosingClass();
        } while (curr != null);
        throw new IllegalArgumentException("Can not determine enum constants for Class "+enumClass.getName());
    }

    public String valueFor(Enum key)
    {
        return _values.get(key);
    }

    public Collection values() {
        return _values.values();
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy