Skip to content

Commit b9c0ce1

Browse files
committed
Merge branch 'master' into jakarta-master
2 parents 4d9e8a3 + 1d600ae commit b9c0ce1

File tree

8 files changed

+64
-11
lines changed

8 files changed

+64
-11
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/IncludeAnnotations.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
class IncludeAnnotations {
77

88
private static final String[] EXCLUDED_PREFIX = {"javax.annotation.", "javax.inject.", "jakarta.annotation.", "jakarta.inject.", "io.avaje.inject.", "lombok."};
9-
private static final String[] EXCLUDED_SUFFIX = {".PostConstruct", ".PreDestroy"};
9+
private static final String[] EXCLUDED_SUFFIX = {".PostConstruct", ".PreDestroy", ".Generated"};
1010

1111
/**
1212
* Annotations that we don't bother registering lists for.

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()) {

inject-generator/src/test/java/io/avaje/inject/generator/IncludeAnnotationsTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ public void exclude_kotlinMetaData() {
3434
@Test
3535
public void exclude_di_annotations() {
3636
assertFalse(include("javax.annotation.Generated"));
37+
assertFalse(include("foo.Generated"));
3738
assertFalse(include(Singleton.class.getName()));
3839
assertFalse(include(Named.class.getName()));
3940
assertFalse(include(Factory.class.getName()));
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 jakarta.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)