package com.github.rmannibucau.cdi.configuration.qualifier; import com.github.rmannibucau.cdi.configuration.ConfigurationException; import com.github.rmannibucau.cdi.configuration.loader.ClassLoaders; import org.apache.deltaspike.core.util.metadata.AnnotationInstanceProvider; import java.lang.annotation.Annotation; import java.util.HashMap; import java.util.Map; public abstract class Qualifiers { public static String selectQualifier(final String qualifier) { if (qualifier == null || "name".equals(qualifier)) { return "name"; } return qualifier; } public static Annotation toQualifier(final String rawQualifier, final String name) { final String qualifier = selectQualifier(rawQualifier); if (qualifier == null || "name".equals(qualifier)) { return new NamedQualifier(name); } if (qualifier.isEmpty()) { return null; } final Map<String, String> potentialAttributes = new HashMap<String, String>(); potentialAttributes.put("value", name); potentialAttributes.put("name", name); try { return AnnotationInstanceProvider.of((Class<? extends Annotation>) ClassLoaders.tccl().loadClass(qualifier), potentialAttributes); } catch (final ClassNotFoundException e) { // no-op } throw new ConfigurationException("Can't find qualfier '" + qualifier + "'"); } }