Java 类javax.inject.Qualifier 实例源码
项目:carml
文件:MapperImpl.java
private Consumer<Object> createInvocableSetter(Method method, DependencyResolver resolver) {
// gather qualifiers on setter
List<Annotation> qualifiers =
Arrays.asList(method.getAnnotations()).stream()
.filter(a -> a.annotationType().getAnnotation(Qualifier.class) != null)
.collect(Collectors.toList());
// determine property/setter type
List<Type> parameterTypes = Arrays.asList(method.getGenericParameterTypes());
if (parameterTypes.isEmpty() || parameterTypes.size() > 1)
throw new RuntimeException("method [" + method.getName() + "], annotated "
+ "with @Inject does NOT take exactly 1 parameter; it takes " + parameterTypes.size());
Type propertyType = parameterTypes.get(0);
return instance -> setterInvocation(method, resolver, instance, propertyType, qualifiers);
}
项目:Spork
文件:InjectSignatureMethodCache.java
/**
* Create the InjectSignature for a specific Method parameter.
*/
private InjectSignature createInjectSignature(Method method, int parameterIndex) {
Class<?> parameterClass = method.getParameterTypes()[parameterIndex];
Annotation[] annotations = method.getParameterAnnotations()[parameterIndex];
Nullability nullability = Nullability.create(annotations);
Class<?> targetType = (parameterClass == Provider.class)
? (Class<?>) ((ParameterizedType) method.getGenericParameterTypes()[parameterIndex]).getActualTypeArguments()[0]
: parameterClass;
Annotation qualifierAnnotation = Annotations.findAnnotationAnnotatedWith(Qualifier.class, annotations);
String qualifier = qualifierAnnotation != null
? qualifierCache.getQualifier(qualifierAnnotation)
: null;
return new InjectSignature(targetType, nullability, qualifier);
}
项目:Spork
文件:ObjectGraphBuilderImpl.java
/**
* Collect the ObjectGraphNode instances for a specific module.
*/
private static void collectObjectGraphNodes(ReflectionCache reflectionCache, List<ObjectGraphNode> objectGraphNodes, Object module) {
for (Method method : module.getClass().getDeclaredMethods()) {
// find a matching method
if (!method.isAnnotationPresent(Provides.class)) {
continue;
}
if (!Modifier.isPublic(method.getModifiers())) {
throw new SporkRuntimeException("Module method is not public: " + method.toString());
}
// getQualifier key
Nullability nullability = Nullability.create(method);
Annotation qualifierAnnotation = Annotations.findAnnotationAnnotatedWith(Qualifier.class, method);
String qualifier = qualifierAnnotation != null
? reflectionCache.getQualifier(qualifierAnnotation)
: null;
InjectSignature injectSignature = new InjectSignature(method.getReturnType(), nullability, qualifier);
objectGraphNodes.add(new ObjectGraphNode(injectSignature, module, method));
}
}
项目:spring4-understanding
文件:InjectAnnotationAutowireContextTests.java
@Test
public void testAutowiredFieldDoesNotResolveWithBaseQualifierAndNonDefaultValueAndMultipleMatchingCandidates() {
GenericApplicationContext context = new GenericApplicationContext();
ConstructorArgumentValues cavs1 = new ConstructorArgumentValues();
cavs1.addGenericArgumentValue("the real juergen");
RootBeanDefinition person1 = new RootBeanDefinition(Person.class, cavs1, null);
person1.addQualifier(new AutowireCandidateQualifier(Qualifier.class, "juergen"));
ConstructorArgumentValues cavs2 = new ConstructorArgumentValues();
cavs2.addGenericArgumentValue("juergen imposter");
RootBeanDefinition person2 = new RootBeanDefinition(Person.class, cavs2, null);
person2.addQualifier(new AutowireCandidateQualifier(Qualifier.class, "juergen"));
context.registerBeanDefinition("juergen1", person1);
context.registerBeanDefinition("juergen2", person2);
context.registerBeanDefinition("autowired",
new RootBeanDefinition(QualifiedConstructorArgumentWithBaseQualifierNonDefaultValueTestBean.class));
AnnotationConfigUtils.registerAnnotationConfigProcessors(context);
try {
context.refresh();
fail("expected BeanCreationException");
}
catch (BeanCreationException e) {
assertTrue(e instanceof UnsatisfiedDependencyException);
assertEquals("autowired", e.getBeanName());
}
}
项目:baratine
文件:IncludeWebClass.java
private boolean isProduces(Method m)
{
Annotation []anns = m.getAnnotations();
if (anns == null) {
return false;
}
for (Annotation ann : anns) {
if (ann.annotationType().isAnnotationPresent(Qualifier.class)) {
return true;
}
}
return false;
}
项目:jspare-container
文件:InternalBinder.java
private void qualify(final Bind<?> bind) {
if(Objects.isNull(bind.to())){
return;
}
if (bind.to().isAnnotationPresent(Named.class)) {
bind.name(bind.to().getAnnotation(Named.class).value());
return;
}
Arrays.asList(bind.to().getAnnotations()).stream().forEach(a -> {
// With qualifier qualify with module name
if (a.annotationType().isAnnotationPresent(Qualifier.class)) {
bind.name(a.annotationType().getSimpleName());
}
});
}
项目:jspare-container
文件:ReflectionUtils.java
public String getQualifier(AnnotatedElement field) {
String name = StringUtils.EMPTY;
if (field.isAnnotationPresent(Named.class)) {
name = field.getAnnotation(Named.class).value();
} else {
for (Annotation a : field.getAnnotations()) {
if (a.annotationType().isAnnotationPresent(Qualifier.class)) {
name = a.annotationType().getSimpleName();
}
}
}
return name;
}
项目:rise
文件:PersistenceUnitManagerHelper.java
private static boolean isPartOfPU(ClassNode classNode, Class<? extends Annotation> qualifier,
ClassLoader classLoader) {
boolean anyQualifierFound = false;
boolean requiredPUAnnotationFound = false;
for (AnnotationNode annotation : classNode.visibleAnnotations) {
Class<?> annotationClass = AsmUtil.loadClass(Type.getType(annotation.desc), classLoader);
anyQualifierFound |= annotationClass.isAnnotationPresent(Qualifier.class);
requiredPUAnnotationFound |= AnyUnit.class.equals(annotationClass);
if (qualifier == null) {
requiredPUAnnotationFound |= NullUnit.class.equals(annotationClass);
} else {
requiredPUAnnotationFound |= qualifier.equals(annotationClass);
}
}
return requiredPUAnnotationFound || (qualifier == null && !anyQualifierFound);
}
项目:AndroidMvc
文件:Component.java
/**
* Unregister component where methods annotated by {@link Provides} will be registered as
* injection providers.
*
* @param providerHolder The object with methods marked by {@link Provides} to provide injectable
* instances
* @return this instance
*
* @throws ProviderMissingException Thrown when the any provider in the provider holder with
* the given type and qualifier cannot be found under this component
*/
public Component unregister(Object providerHolder) throws ProviderMissingException {
Method[] methods = providerHolder.getClass().getDeclaredMethods();
for (Method method : methods) {
if (method.isAnnotationPresent(Provides.class)) {
Class<?> returnType = method.getReturnType();
if (returnType != void.class) {
Annotation qualifier = null;
Annotation[] annotations = method.getAnnotations();
for (Annotation a : annotations) {
if (a.annotationType().isAnnotationPresent(Qualifier.class)) {
qualifier = a;
break;
}
}
unregister(returnType, qualifier);
}
}
}
return this;
}
项目:AndroidMvc
文件:Component.java
private void registerProvides(final Object providerHolder, final Method method)
throws ProvideException, ProviderConflictException {
Class<?> returnType = method.getReturnType();
if (returnType == void.class) {
throw new ProvideException(String.format("Provides method %s must not return void.",
method.getName()));
} else {
Annotation[] annotations = method.getAnnotations();
Annotation qualifier = null;
for (Annotation a : annotations) {
Class<? extends Annotation> annotationType = a.annotationType();
if (annotationType.isAnnotationPresent(Qualifier.class)) {
if (qualifier != null) {
throw new ProvideException("Only one Qualifier is supported for Provide method. " +
String.format("Found multiple qualifier %s and %s for method %s",
qualifier.getClass().getName(), a.getClass().getName(),
method.getName()));
}
qualifier = a;
}
}
Provider provider = new MethodProvider(returnType, qualifier, scopeCache, providerHolder, method);
register(provider);
}
}
项目:Knight
文件:BaseClassBuilder.java
/**
* Returns list of all annotations given <code>element</code> has.
*
* @param element Element.
*/
public List<AnnotationSpec> getQualifiers(Element element) {
List<AnnotationSpec> list = new ArrayList<>();
for (AnnotationMirror a : element.getAnnotationMirrors()) {
if (a.getAnnotationType().asElement().getAnnotation(Qualifier.class) == null) {
continue; // ignore non-Qualifier annotations
}
ClassName annotationClassName = (ClassName) ClassName.get(a.getAnnotationType());
AnnotationSpec.Builder annotation = AnnotationSpec.builder(annotationClassName);
for (Map.Entry<? extends ExecutableElement, ? extends AnnotationValue> entry : a.getElementValues().entrySet()) {
String format = (entry.getValue().getValue() instanceof String) ? "$S" : "$L";
annotation.addMember(entry.getKey().getSimpleName().toString(), format, entry.getValue().getValue());
}
list.add(annotation.build());
}
return list;
}
项目:ann-docu-gen
文件:DocumentedAnnotations.java
public DocumentedAnnotations(Element element) {
List<AnnotationMirror> allAnnotations = new ArrayList<AnnotationMirror>();
allAnnotations.addAll(annotationsOf(element, Qualifier.class));
allAnnotations.addAll(annotationsOf(element, Scope.class));
if (allAnnotations.isEmpty()) {
this.description = Optional.absent();
return;
}
StringBuilder result = new StringBuilder();
for (AnnotationMirror annotation : allAnnotations) {
if (result.length() > 0) {
result.append(" ");
}
result.append(annotation.toString());
}
this.description = Optional.of(result.toString());
}
项目:class-guard
文件:InjectAnnotationAutowireContextTests.java
@Test
public void testAutowiredFieldDoesNotResolveWithBaseQualifierAndNonDefaultValueAndMultipleMatchingCandidates() {
GenericApplicationContext context = new GenericApplicationContext();
ConstructorArgumentValues cavs1 = new ConstructorArgumentValues();
cavs1.addGenericArgumentValue("the real juergen");
RootBeanDefinition person1 = new RootBeanDefinition(Person.class, cavs1, null);
person1.addQualifier(new AutowireCandidateQualifier(Qualifier.class, "juergen"));
ConstructorArgumentValues cavs2 = new ConstructorArgumentValues();
cavs2.addGenericArgumentValue("juergen imposter");
RootBeanDefinition person2 = new RootBeanDefinition(Person.class, cavs2, null);
person2.addQualifier(new AutowireCandidateQualifier(Qualifier.class, "juergen"));
context.registerBeanDefinition("juergen1", person1);
context.registerBeanDefinition("juergen2", person2);
context.registerBeanDefinition("autowired",
new RootBeanDefinition(QualifiedConstructorArgumentWithBaseQualifierNonDefaultValueTestBean.class));
AnnotationConfigUtils.registerAnnotationConfigProcessors(context);
try {
context.refresh();
fail("expected BeanCreationException");
}
catch (BeanCreationException e) {
assertTrue(e instanceof UnsatisfiedDependencyException);
assertEquals("autowired", e.getBeanName());
}
}
项目:radishtainer
文件:Injector.java
protected Object getDependency(Class<?> type, Type genericType, Annotation[] annotations) {
List<Annotation> qualifiers = Arrays.stream(annotations)
.filter(a -> a.annotationType().isAnnotationPresent(Qualifier.class))
.collect(Collectors.toList());
Annotation qualifier = null;
if (qualifiers.isEmpty() == false) {
if (qualifiers.size() > 1) {
throw new IllegalArgumentException();
}
qualifier = qualifiers.get(0);
}
Object dependency;
if (type == Provider.class) {
ParameterizedType pt = (ParameterizedType) genericType;
Class<?> type2 = (Class<?>) pt.getActualTypeArguments()[0];
dependency = container.getProvider(type2, qualifier);
} else {
dependency = container.getInstance(type, qualifier);
}
return dependency;
}
项目:griffon2
文件:Bindings.java
protected List<Annotation> harvestQualifiers(Class<?> klass) {
List<Annotation> list = new ArrayList<>();
Annotation[] annotations = klass.getAnnotations();
for (Annotation annotation : annotations) {
if (AnnotationUtils.isAnnotatedWith(annotation, Qualifier.class)) {
// special case @BindTo is only used during tests
if (BindTo.class.isAssignableFrom(annotation.getClass())) {
continue;
}
// special case for @Named
if (Named.class.isAssignableFrom(annotation.getClass())) {
Named named = (Named) annotation;
if (isBlank(named.value())) {
list.add(named(getPropertyName(klass)));
continue;
}
}
list.add(annotation);
}
}
return list;
}
项目:griffon2
文件:TestApplicationBootstrapper.java
@Nonnull
protected List<Annotation> harvestQualifiers(@Nonnull Class<?> clazz) {
List<Annotation> list = new ArrayList<>();
Annotation[] annotations = clazz.getAnnotations();
for (Annotation annotation : annotations) {
if (AnnotationUtils.isAnnotatedWith(annotation, Qualifier.class)) {
if (BindTo.class.isAssignableFrom(annotation.getClass())) {
continue;
}
// special case for @Named
if (Named.class.isAssignableFrom(annotation.getClass())) {
Named named = (Named) annotation;
if (isBlank(named.value())) {
list.add(named(getPropertyName(clazz)));
continue;
}
}
list.add(annotation);
}
}
return list;
}
项目:griffon2
文件:TestApplicationBootstrapper.java
@Nonnull
protected List<Annotation> harvestQualifiers(@Nonnull Field field) {
List<Annotation> list = new ArrayList<>();
Annotation[] annotations = field.getAnnotations();
for (Annotation annotation : annotations) {
if (AnnotationUtils.isAnnotatedWith(annotation, Qualifier.class)) {
if (BindTo.class.isAssignableFrom(annotation.getClass())) {
continue;
}
// special case for @Named
if (Named.class.isAssignableFrom(annotation.getClass())) {
Named named = (Named) annotation;
if (isBlank(named.value())) {
list.add(named(getPropertyName(field.getName())));
continue;
}
}
list.add(annotation);
}
}
return list;
}
项目:dinistiq
文件:Dinistiq.java
/**
* Obtain a parameter array to call a method with injections or a constructor with injections.
*
* @param dependencies map of dependencies for beans - pass null if you don't want to record needed dependencies
* @param beanName name of the bean
* @param types types array for the call
* @param genericTypes generic type array for the call
* @param annotations annotations of the parameters
* @return array suitable as parameter for invoke or newInstance calls
* @throws Exception
*/
private Object[] getParameters(Properties beanProperties, Map<String, Set<Object>> dependencies, String beanName, Class<? extends Object>[] types, Type[] genericTypes, Annotation[][] annotations) throws Exception {
beanProperties = beanProperties==null ? new Properties() : beanProperties;
Object[] parameters = new Object[types.length];
for (int i = 0; i<types.length; i++) {
String name = null;
Collection<Annotation> qualifiers = new HashSet<>();
for (Annotation a : annotations[i]) {
if (a instanceof Named) {
name = ((Named) a).value();
} // if
boolean q = false;
for (Class<?> ii : a.getClass().getInterfaces()) {
LOG.info("getParameters() {}: {}", ii, ii.getAnnotation(Qualifier.class));
q = q||(ii.getAnnotation(Qualifier.class)!=null);
} // for
if (q) {
qualifiers.add(a);
} // if
} // for
// TODO: Deal with scopes.
parameters[i] = getValue(beanProperties, dependencies, beanName, types[i], genericTypes[i], name, qualifiers);
} // for
return parameters;
}
项目:vabr
文件:RoutingAnnotationProcessor.java
private QualifierInfo findQualifierAnnotation( final Element elem )
{
Element pe = elem;
do
{
pe = pe.getEnclosingElement();
}
while ( pe != null && pe.getKind() != ElementKind.CLASS );
final List<? extends AnnotationMirror> ams = pe.getAnnotationMirrors();
for ( final AnnotationMirror am : ams )
{
final Element annoElem = am.getAnnotationType()
.asElement();
final Qualifier qualifier = annoElem.getAnnotation( Qualifier.class );
if ( qualifier != null )
{
return new QualifierInfo( annoElem );
}
}
return EMPTY_QUALIFIER;
}
项目:minijax
文件:Key.java
private void processAnnotation(final Annotation annotation) {
final Class<? extends Annotation> annType = annotation.annotationType();
if (annType == Context.class) {
setStrategy(Strategy.CONTEXT);
} else if (annType == CookieParam.class) {
processCookieParamAnnotation((CookieParam) annotation);
} else if (annType == FormParam.class) {
processFormParamAnnotation((FormParam) annotation);
} else if (annType == HeaderParam.class) {
processHeaderParamAnnotation((HeaderParam) annotation);
} else if (annType == Named.class) {
processNamedAnnotation((Named) annotation);
} else if (annType == PathParam.class) {
processPathParamAnnotation((PathParam) annotation);
} else if (annType == OptionalClasses.PERSISTENCE_CONTEXT) {
processPersistenceContextAnnotation((PersistenceContext) annotation);
} else if (annType == QueryParam.class) {
processQueryParamAnnotation((QueryParam) annotation);
} else if (annType == DefaultValue.class) {
defaultValue = (DefaultValue) annotation;
} else if (annType.isAnnotationPresent(Qualifier.class)) {
processQualifierAnnotation(annType);
}
}
项目:reactive-cdi-events
文件:ReactorObserverRegistry.java
static Set<Annotation> findQualifiers(Set<Annotation> annotations) {
Set<Annotation> results = new LinkedHashSet<>();
for(Annotation annotation : annotations) {
Class<? extends Annotation> annotationClass = annotation.getClass();
if(annotation instanceof Default) {
continue;
} else if(annotationClass.getAnnotation(Qualifier.class) != null) {
results.add(annotation);
} else if(annotationClass.getAnnotation(Stereotype.class) != null) {
Set<Annotation> parentAnnotations = new LinkedHashSet<>(asList(annotationClass.getAnnotations()));
results.addAll(findQualifiers(parentAnnotations));
}
}
return results;
}
项目:Spork
文件:InjectSignatureFieldCache.java
private InjectSignature createInjectSignature(Field field, Class<?> targetType) {
Annotation qualifierAnnotation = Annotations.findAnnotationAnnotatedWith(Qualifier.class, field);
Nullability nullability = Nullability.create(field);
String qualifier = qualifierAnnotation != null
? qualifierCache.getQualifier(qualifierAnnotation)
: null;
return new InjectSignature(targetType, nullability, qualifier);
}
项目:toothpick
文件:Binding.java
public <A extends Annotation> Binding<T> withName(Class<A> annotationClassWithQualifierAnnotation) {
if (!annotationClassWithQualifierAnnotation.isAnnotationPresent(Qualifier.class)) {
throw new IllegalArgumentException(
String.format("Only qualifier annotation annotations can be used to define a binding name. Add @Qualifier to %s",
annotationClassWithQualifierAnnotation));
}
this.name = annotationClassWithQualifierAnnotation.getName();
return this;
}
项目:baratine
文件:InjectorBuilderImpl.java
boolean isQualifier(Annotation ann)
{
Class<?> annType = ann.annotationType();
if (annType.isAnnotationPresent(Qualifier.class)) {
return true;
}
return _qualifierSet.contains(annType);
}
项目:baratine
文件:InjectorBuilderImpl.java
private boolean isProduces(Annotation []anns)
{
if (anns == null) {
return false;
}
for (Annotation ann : anns) {
if (ann.annotationType().isAnnotationPresent(Qualifier.class)) {
return true;
}
}
return false;
}
项目:hibernate-json
文件:CdiDriverLocator.java
@Override
public JsonDriver locate(Annotation[] fieldAnnotations, Optional<String> name) {
final BeanManager bm = CDI.current().getBeanManager();
final Annotation[] qualifiers = Arrays.stream(fieldAnnotations).filter(a -> searchAnnotation(a, Qualifier.class).isPresent()).toArray(n -> new Annotation[n]);
JsonDriverNotFound.failIf(qualifiers.length > 0 && name.isPresent(), "found both @Qualifiers and @WithDriver.value()");
final Set<Bean<?>> beans = name.map(n -> bm.getBeans(n)).orElseGet(() -> bm.getBeans(JsonDriver.class, qualifiers));
JsonDriverNotFound.failIf(beans.isEmpty(), "no JsonDriver found in BeanManager");
JsonDriverNotFound.failIf(beans.size() > 1, "more than one JsonDriver found in BeanManager, use @JsonType.WithDriver to disambiguate");
final Bean<?> bean = beans.iterator().next();
final CreationalContext<?> ctx = bm.createCreationalContext(bean);
return (JsonDriver) bm.getReference(bean, JsonDriver.class, ctx);
}
项目:maven-cdi-plugin-utils
文件:CdiProducerBean.java
private Set<Annotation> getCdiQualifiers(Annotation[] annotattions) {
Set<Annotation> qualifiers = Sets.newHashSet();
for (Annotation annotation : annotattions) {
if (annotation.annotationType().isAnnotationPresent(Qualifier.class)) {
qualifiers.add(annotation);
}
}
if (qualifiers.isEmpty()) {
qualifiers.add(DefaultLiteral.INSTANCE);
}
return qualifiers;
}
项目:maven-cdi-plugin-utils
文件:CDIUtil.java
/**
* @param x the object from which all qualifier annotations shall be searched out.
* @return a set of all qualifiers the object's class is annotated with.
*/
public static Set<Annotation> getCdiQualifiers(AccessibleObject x) {
Set<Annotation> qualifiers = Sets.newHashSet();
for (Annotation annotation : x.getAnnotations()) {
if (annotation.annotationType().isAnnotationPresent(Qualifier.class)) {
qualifiers.add(annotation);
}
}
if (qualifiers.isEmpty()) {
qualifiers.add(DefaultLiteral.INSTANCE);
}
return qualifiers;
}
项目:DaggerMock
文件:ObjectId.java
private boolean isQualifier(Class<? extends Annotation> annotationType) {
Annotation[] annotations = annotationType.getAnnotations();
for (Annotation annotation : annotations) {
if (annotation.annotationType().equals(Qualifier.class)) {
return true;
}
}
return false;
}
项目:tiger
文件:Utils.java
/**
* Returns qualifier annotation for the given method, null if none.
*/
@Nullable
public static DeclaredType getQualifierAnnotation(Element element) {
for (AnnotationMirror annotationMirror : element.getAnnotationMirrors()) {
DeclaredType annotationType = annotationMirror.getAnnotationType();
if (annotationType.asElement().getAnnotation(Qualifier.class) != null) {
return annotationType;
}
}
return null;
}
项目:java-di
文件:BeanSpecTest.java
@Test
public void testTaggedAnnotation() throws Exception {
Constructor<LeatherSmoother.Host> constructor = LeatherSmoother.Host.class.getConstructor(LeatherSmoother.class);
Annotation[] annotations = constructor.getParameterAnnotations()[0];
Type paramType = constructor.getGenericParameterTypes()[0];
BeanSpec spec = BeanSpec.of(paramType, annotations, Genie.create());
eq(1, spec.taggedAnnotations(Qualifier.class).length);
eq(0, spec.taggedAnnotations(InjectTag.class).length);
eq(0, spec.taggedAnnotations(Retention.class).length);
eq(0, spec.taggedAnnotations(Target.class).length);
eq(0, spec.taggedAnnotations(Inherited.class).length);
eq(0, spec.taggedAnnotations(Documented.class).length);
}
项目:salta
文件:JSR330Module.java
protected void addQualifierExtractors(StandardInjectorConfiguration config) {
config.requiredQualifierExtractors.add(annotatedElement -> Arrays.stream(annotatedElement.getAnnotations())
.filter(a -> a.annotationType().isAnnotationPresent(Qualifier.class)));
config.availableQualifierExtractors.add(annotated -> Arrays.stream(annotated.getAnnotations())
.filter(a -> a.annotationType().isAnnotationPresent(Qualifier.class)));
}
项目:DaggerMock
文件:ObjectId.java
private boolean isQualifier(Class<? extends Annotation> annotationType) {
Annotation[] annotations = annotationType.getAnnotations();
for (Annotation annotation : annotations) {
if (annotation.annotationType().equals(Qualifier.class)) {
return true;
}
}
return false;
}
项目:Auto-Dagger2
文件:AdditionExtractor.java
private AnnotationMirror findQualifier(Element element) {
List<AnnotationMirror> annotationMirrors = ExtractorUtil.findAnnotatedAnnotation(element, Qualifier.class);
if (annotationMirrors.isEmpty()) {
return null;
}
if (annotationMirrors.size() > 1) {
errors.getParent().addInvalid(element, "Cannot have several qualifiers (@Qualifier).");
return null;
}
return annotationMirrors.get(0);
}
项目:AndroidMvc
文件:ReflectUtils.java
private static Annotation findFirstQualifierInAnnotations(Annotation[] annotations) {
if (annotations != null) {
for (Annotation a : annotations) {
if (a.annotationType().isAnnotationPresent(Qualifier.class)) {
return a;
}
}
}
return null;
}
项目:appformer
文件:GeneratorUtils.java
/**
* This method builds a list of all qualifier annotations source-code declaration that annotates the passed element.
* @param element {@link TypeElement} which will be scanned for qualifier annotations.
* @return A list of the annotations source-code declarations.
*/
public static List<String> getAllQualifiersDeclarationFromType(TypeElement element) {
List<String> qualifiers = new ArrayList<>();
for (final AnnotationMirror am : element.getAnnotationMirrors()) {
final TypeElement annotationElement = (TypeElement) am.getAnnotationType().asElement();
if (annotationElement.getAnnotation(Qualifier.class) != null) {
qualifiers.add(am.toString());
}
}
return qualifiers;
}
项目:javaee-samples
文件:BeanType.java
@SuppressWarnings("unused")
static BeanType createBeanType(Field f) {
Collection<Class<?>> genericTypes = filterGenericTypes(f);
Named stringQualifier = f.getAnnotation(Named.class);
Collection<Annotation> qualifierAnnotations = new ArrayList<>();
if (stringQualifier == null) {
for (Annotation annotation : f.getAnnotations()) {
if (annotation.annotationType().isAnnotationPresent(Qualifier.class)) {
qualifierAnnotations.add(annotation);
}
}
}
return new BeanType(f.getType(), genericTypes, stringQualifier == null ? null : stringQualifier.value(),
qualifierAnnotations);
}
项目:winter-data-jpa
文件:WinterExtension.java
private Set<Annotation> getQualifiers(final Class<?> type) {
Set<Annotation> qualifiers = Stream.of(type.getAnnotations())
.filter(a -> a.annotationType().isAnnotationPresent(Qualifier.class))
.collect(Collectors.toSet());
if (qualifiers.isEmpty()) {
qualifiers.add(DefaultAnnotationLiteral.INSTANCE);
}
qualifiers.add(AnyAnnotationLiteral.INSTANCE);
return ImmutableSet.copyOf(qualifiers);
}
项目:business
文件:BusinessUtils.java
/**
* Optionally returns the qualifier annotation of a class.
*/
public static Optional<Annotation> getQualifier(AnnotatedElement annotatedElement) {
AnnotatedElement cleanedAnnotatedElement;
if (annotatedElement instanceof Class<?>) {
cleanedAnnotatedElement = ProxyUtils.cleanProxy((Class<?>) annotatedElement);
} else {
cleanedAnnotatedElement = annotatedElement;
}
return Annotations.on(cleanedAnnotatedElement)
.findAll()
.filter(AnnotationPredicates.annotationAnnotatedWith(Qualifier.class, false))
.findFirst();
}
项目:griffon2
文件:Bindings.java
@Nonnull
@Override
public LinkedBindingBuilder<T> withClassifier(@Nonnull Class<? extends Annotation> annotationType) {
requireNonNull(annotationType, "Argument 'annotationType' cannot be null");
AnnotationUtils.requireAnnotation(annotationType, Qualifier.class);
this.classifierType = annotationType;
return this;
}