Skip to content

Commit 91baed8

Browse files
committed
#234 - Support factory with qualifiers
1 parent b19bdbe commit 91baed8

File tree

4 files changed

+20
-9
lines changed

4 files changed

+20
-9
lines changed

inject-generator/src/main/java/io/avaje/inject/generator/MethodReader.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
package io.avaje.inject.generator;
22

33
import io.avaje.inject.Bean;
4-
import jakarta.inject.Named;
54

6-
import javax.lang.model.element.*;
5+
import javax.lang.model.element.ExecutableElement;
6+
import javax.lang.model.element.Modifier;
7+
import javax.lang.model.element.TypeElement;
8+
import javax.lang.model.element.VariableElement;
79
import javax.lang.model.type.TypeMirror;
810
import java.util.ArrayList;
911
import java.util.Collections;
@@ -35,7 +37,7 @@ class MethodReader {
3537
this(context, element, beanType, null, null, false);
3638
}
3739

38-
MethodReader(ProcessingContext context, ExecutableElement element, TypeElement beanType, Bean bean, Named named, boolean prototype) {
40+
MethodReader(ProcessingContext context, ExecutableElement element, TypeElement beanType, Bean bean, String qualifierName, boolean prototype) {
3941
this.isFactory = bean != null;
4042
this.prototype = prototype;
4143
this.element = element;
@@ -57,7 +59,7 @@ class MethodReader {
5759
this.isVoid = Util.isVoid(topType);
5860
String initMethod = (bean == null) ? null : bean.initMethod();
5961
String destroyMethod = (bean == null) ? null : bean.destroyMethod();
60-
this.name = (named == null) ? null : named.value().toLowerCase();
62+
this.name = qualifierName;
6163
TypeElement returnElement = (TypeElement)context.asElement(returnMirror);
6264
if (returnElement == null) {
6365
this.typeReader = null;

inject-generator/src/main/java/io/avaje/inject/generator/TypeExtendsInjection.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import io.avaje.inject.Bean;
44
import io.avaje.inject.Prototype;
55
import jakarta.inject.Inject;
6-
import jakarta.inject.Named;
76

87
import javax.lang.model.element.Element;
98
import javax.lang.model.element.ExecutableElement;
@@ -146,10 +145,9 @@ private void checkForAspect(ExecutableElement methodElement) {
146145

147146

148147
private void addFactoryMethod(ExecutableElement methodElement, Bean bean) {
149-
// Not yet reading Qualifier annotations, Named only at this stage
150-
Named named = methodElement.getAnnotation(Named.class);
148+
String qualifierName = Util.getNamed(methodElement);
151149
boolean prototype = methodElement.getAnnotation(Prototype.class) != null;
152-
factoryMethods.add(new MethodReader(context, methodElement, baseType, bean, named, prototype).read());
150+
factoryMethods.add(new MethodReader(context, methodElement, baseType, bean, qualifierName, prototype).read());
153151
}
154152

155153
BeanAspects hasAspects() {
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package org.example.optional;
2+
3+
import jakarta.inject.Qualifier;
4+
import java.lang.annotation.Retention;
5+
6+
import static java.lang.annotation.RetentionPolicy.RUNTIME;
7+
8+
@Qualifier
9+
@Retention(RUNTIME)
10+
public @interface Frodo {
11+
}

inject-test/src/test/java/org/example/optional/OptFactory.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
@Factory
1010
class OptFactory {
1111

12-
@Named("frodo")
12+
@Frodo
1313
@Bean
1414
Que frodoQueue() {
1515
return new BasicQue("frodo");

0 commit comments

Comments
 (0)