Skip to content

Commit 1d600ae

Browse files
committed
#84 - Fix for method injection with qualifier
1 parent f49f6b4 commit 1d600ae

File tree

6 files changed

+62
-10
lines changed

6 files changed

+62
-10
lines changed

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

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -339,12 +339,8 @@ MetaData createMeta() {
339339
return metaData;
340340
}
341341

342-
boolean isFieldInjectionRequired() {
343-
return !injectFields.isEmpty();
344-
}
345-
346-
boolean isMethodInjectionRequired() {
347-
return !injectMethods.isEmpty();
342+
boolean isExtraInjectionRequired() {
343+
return !injectFields.isEmpty() || !injectMethods.isEmpty();
348344
}
349345

350346
void buildAddFor(Append writer) {
@@ -356,12 +352,10 @@ void buildAddFor(Append writer) {
356352
}
357353

358354
void buildRegister(Append writer) {
359-
360355
writer.append(" ");
361-
if (isFieldInjectionRequired() || isLifecycleRequired()) {
356+
if (isExtraInjectionRequired() || isLifecycleRequired()) {
362357
writer.append("%s $bean = ", shortName);
363358
}
364-
365359
String flags = primary ? "Primary" : secondary ? "Secondary" : "";
366360
writer.append("builder.register%s(bean, ", flags);
367361
if (name == null) {

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ private void writeStaticFactoryMethod() {
130130
if (beanReader.isLifecycleRequired()) {
131131
beanReader.buildAddLifecycle(writer);
132132
}
133-
if (beanReader.isFieldInjectionRequired() || beanReader.isMethodInjectionRequired()) {
133+
if (beanReader.isExtraInjectionRequired()) {
134134
writer.append(" builder.addInjector(b -> {").eol();
135135
writer.append(" // field and method injection").eol();
136136
for (FieldReader fieldReader : beanReader.getInjectFields()) {
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package org.example.coffee.qualifier;
2+
3+
import javax.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 Green {
11+
}

inject-test/src/test/java/org/example/coffee/qualifier/GreenStore.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import javax.inject.Singleton;
44

5+
@Green
56
@Singleton
67
public class GreenStore implements SomeStore {
78
@Override
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package org.example.coffee.qualifier;
2+
3+
import javax.inject.Inject;
4+
import javax.inject.Singleton;
5+
6+
@Singleton
7+
public class StoreManagerWithSetterQualifier {
8+
9+
private final SomeStore blueStore;
10+
private SomeStore greenStore;
11+
12+
public StoreManagerWithSetterQualifier(@Blue SomeStore blueStore) {
13+
this.blueStore = blueStore;
14+
}
15+
16+
@Inject
17+
public void setGreenStore(@Green SomeStore greenStore) {
18+
this.greenStore = greenStore;
19+
}
20+
21+
public String blueStore() {
22+
return blueStore.store();
23+
}
24+
25+
public String greenStore() {
26+
return greenStore.store();
27+
}
28+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package org.example.coffee.qualifier;
2+
3+
import io.avaje.inject.BeanContext;
4+
import org.junit.jupiter.api.Test;
5+
6+
import static org.assertj.core.api.Assertions.assertThat;
7+
8+
class StoreManagerWithSetterQualifierTest {
9+
10+
@Test
11+
void redStore() {
12+
try (BeanContext context = BeanContext.newBuilder().build()) {
13+
StoreManagerWithSetterQualifier manager = context.getBean(StoreManagerWithSetterQualifier.class);
14+
assertThat(manager.blueStore()).isEqualTo("blue");
15+
assertThat(manager.greenStore()).isEqualTo("green");
16+
}
17+
}
18+
}

0 commit comments

Comments
 (0)