Example usage for com.fasterxml.jackson.databind.introspect AnnotatedClass getAnnotation

List of usage examples for com.fasterxml.jackson.databind.introspect AnnotatedClass getAnnotation

Introduction

In this page you can find the example usage for com.fasterxml.jackson.databind.introspect AnnotatedClass getAnnotation.

Prototype

public <A extends Annotation> A getAnnotation(Class<A> paramClass) 

Source Link

Usage

From source file:com.addthis.codec.plugins.PluginRegistry.java

public PluginRegistry(@Nonnull Config config) {
    this.config = config;
    Config defaultPluginMapSettings = config.getConfig(PLUGIN_DEFAULTS_PATH);
    String pluginPath = config.getString(PLUGINS_PATH_PATH);
    Config pluginConfigs = config.getConfig(pluginPath);

    Set<String> categories = pluginConfigs.root().keySet();
    Map<String, PluginMap> mapsFromConfig = new HashMap<>(categories.size());
    BiMap<Class<?>, PluginMap> mapsFromConfigByClass = HashBiMap.create(categories.size());
    // Throwaway ObjectMapper to facilitate AnnotatedClass construction below
    ObjectMapper temp = new ObjectMapper();
    for (String category : categories) {
        Config pluginConfig = pluginConfigs.getConfig(category).withFallback(defaultPluginMapSettings);
        PluginMap pluginMap = new PluginMap(category, pluginConfig);
        mapsFromConfig.put(category, pluginMap);
        Class<?> baseClass = pluginMap.baseClass();
        if (baseClass != null) {
            // if two categories define _class, then ensure the annotated one (if any) is the canonical one
            if (mapsFromConfigByClass.containsKey(baseClass)) {
                AnnotatedClass annotatedClass = AnnotatedClass.construct(temp.constructType(baseClass),
                        temp.getDeserializationConfig());
                String existingCategory = mapsFromConfigByClass.get(baseClass).category();
                if (!annotatedClass.hasAnnotation(Pluggable.class)
                        || !annotatedClass.getAnnotation(Pluggable.class).value().equals(existingCategory)) {
                    mapsFromConfigByClass.put(pluginMap.baseClass(), pluginMap);
                }//from w  ww.  j  ava2  s.co  m
            } else {
                mapsFromConfigByClass.put(pluginMap.baseClass(), pluginMap);
            }
        }
    }
    pluginMapsByCategory = Collections.unmodifiableMap(mapsFromConfig);
    pluginMapsByClass = Maps.unmodifiableBiMap(mapsFromConfigByClass);
}