Skip to content

Commit 1888f86

Browse files
committed
Support qualifiers with members
1 parent 6f1a20e commit 1888f86

10 files changed

+33
-14
lines changed

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
package org.example.coffee.qualifier;
22

3+
import org.example.coffee.qualifier.ColorStore.Color;
4+
35
import jakarta.inject.Singleton;
46

5-
@Blue
67
@Singleton
8+
@ColorStore(Color.BLUE)
79
public class BlueStore implements SomeStore {
810

911
@Override

inject-test/src/test/java/org/example/coffee/qualifier/Blue.java renamed to inject-test/src/test/java/org/example/coffee/qualifier/ColorStore.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,11 @@
77

88
@Qualifier
99
@Retention(RUNTIME)
10-
public @interface Blue {
10+
public @interface ColorStore {
11+
Color value();
12+
13+
enum Color {
14+
BLUE,
15+
GREEN
16+
}
1117
}

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
package org.example.coffee.qualifier;
22

3+
import org.example.coffee.qualifier.ColorStore.Color;
4+
35
import jakarta.inject.Inject;
46
import jakarta.inject.Singleton;
57

68
@Singleton
79
public class StoreManagerWithFieldQualifier {
810

911
@Inject
10-
@Blue
12+
@ColorStore(Color.BLUE)
1113
SomeStore store;
1214

1315
public String store() {

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ public class StoreManagerWithNamed {
88

99
private final SomeStore store;
1010

11-
public StoreManagerWithNamed(@Named("Blue") SomeStore store) {
11+
public StoreManagerWithNamed(@Named("ColorStore(Blue)") SomeStore store) {
1212
this.store = store;
1313
}
1414

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,12 @@ void test() {
1818
assertThat(store).isEqualTo("blue");
1919

2020
SomeStore greenStore = beanScope.get(SomeStore.class, "green");
21-
SomeStore blueStore = beanScope.get(SomeStore.class, "blue");
21+
SomeStore blueStore = beanScope.get(SomeStore.class, "colorStore(blue)");
2222
Map<String, SomeStore> stores = beanScope.map(SomeStore.class);
2323

2424
SomeStore green = stores.get("green");
2525
assertThat(green).isSameAs(greenStore);
26-
SomeStore blue = stores.get("blue");
26+
SomeStore blue = stores.get("colorstore(blue)");
2727
assertThat(blue).isSameAs(blueStore);
2828

2929
// a map with unnamed component

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
package org.example.coffee.qualifier;
22

3+
import org.example.coffee.qualifier.ColorStore.Color;
4+
35
import jakarta.inject.Singleton;
46

57
@Singleton
68
public class StoreManagerWithQualifier {
79

810
private final SomeStore store;
911

10-
public StoreManagerWithQualifier(@Blue SomeStore store) {
12+
public StoreManagerWithQualifier(@ColorStore(Color.BLUE) SomeStore store) {
1113
this.store = store;
1214
}
1315

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package org.example.coffee.qualifier;
22

3+
import org.example.coffee.qualifier.ColorStore.Color;
4+
35
import jakarta.inject.Inject;
46
import jakarta.inject.Singleton;
57

@@ -9,7 +11,7 @@ public class StoreManagerWithSetterQualifier {
911
private final SomeStore blueStore;
1012
private SomeStore greenStore;
1113

12-
public StoreManagerWithSetterQualifier(@Blue SomeStore blueStore) {
14+
public StoreManagerWithSetterQualifier(@ColorStore(Color.BLUE) SomeStore blueStore) {
1315
this.blueStore = blueStore;
1416
}
1517

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ void redStore() {
1919
@Test
2020
void namedTestDouble() {
2121
try (BeanScope context = BeanScope.builder()
22-
.bean("Blue", SomeStore.class, () -> "TD Blue")
22+
.bean("ColorStore(Blue)", SomeStore.class, () -> "TD Blue")
2323
.bean("Green", SomeStore.class, () -> "TD Green")
2424
.build()) {
2525

@@ -32,7 +32,7 @@ void namedTestDouble() {
3232
@Test
3333
void namedTestDouble_expect_otherNamedStillWired() {
3434
try (BeanScope context = BeanScope.builder()
35-
.bean("Blue", SomeStore.class, () -> "TD Blue Only")
35+
.bean("ColorStore(Blue)", SomeStore.class, () -> "TD Blue Only")
3636
// with GreenStore still wired
3737
.build()) {
3838

inject-test/src/test/java/org/example/injectextension/WithExtnNamedMocksTest.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@
44
import io.avaje.inject.test.InjectExtension;
55
import jakarta.inject.Inject;
66
import jakarta.inject.Named;
7-
import org.example.coffee.qualifier.Blue;
7+
import org.example.coffee.qualifier.ColorStore;
88
import org.example.coffee.qualifier.SomeStore;
99
import org.example.coffee.qualifier.StoreManagerWithSetterQualifier;
10+
import org.example.coffee.qualifier.ColorStore.Color;
1011
import org.junit.jupiter.api.Test;
1112
import org.junit.jupiter.api.extension.ExtendWith;
1213
import org.mockito.Mock;
@@ -17,7 +18,9 @@
1718
@ExtendWith(InjectExtension.class)
1819
class WithExtnNamedMocksTest {
1920

20-
@Mock @Blue SomeStore blueStore;
21+
@Mock
22+
@ColorStore(Color.BLUE)
23+
SomeStore blueStore;
2124

2225
@Mock @Named("green") SomeStore greenStore;
2326

inject-test/src/test/java/org/example/injectextension/WithExtnNamedSpyTest.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@
44
import io.avaje.inject.test.InjectExtension;
55
import jakarta.inject.Inject;
66
import jakarta.inject.Named;
7-
import org.example.coffee.qualifier.Blue;
7+
import org.example.coffee.qualifier.ColorStore;
88
import org.example.coffee.qualifier.SomeStore;
99
import org.example.coffee.qualifier.StoreManagerWithSetterQualifier;
10+
import org.example.coffee.qualifier.ColorStore.Color;
1011
import org.junit.jupiter.api.Test;
1112
import org.junit.jupiter.api.extension.ExtendWith;
1213
import org.mockito.Spy;
@@ -17,7 +18,8 @@
1718
@ExtendWith(InjectExtension.class)
1819
class WithExtnNamedSpyTest {
1920

20-
@Spy @Blue
21+
@Spy
22+
@ColorStore(Color.BLUE)
2123
SomeStore blueStore;
2224

2325
@Spy @Named("green")

0 commit comments

Comments
 (0)