List of usage examples for com.fasterxml.jackson.databind.introspect AnnotatedClass getAnnotation
public <A extends Annotation> A getAnnotation(Class<A> paramClass)
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); }