Skip to content

Commit f97995a

Browse files
committed
#12 - Add support for @qualifier annotations (as alternative to @nAmed)
1 parent fa253f5 commit f97995a

11 files changed

+153
-1
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
<dependency>
3737
<groupId>io.dinject</groupId>
3838
<artifactId>dinject-generator</artifactId>
39-
<version>0.11</version>
39+
<version>0.12-SNAPSHOT</version>
4040
<scope>test</scope>
4141
</dependency>
4242

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 Blue {
11+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package org.example.coffee.qualifier;
2+
3+
import javax.inject.Singleton;
4+
5+
@Blue
6+
@Singleton
7+
public class BlueStore implements SomeStore {
8+
9+
@Override
10+
public String store() {
11+
return "blue";
12+
}
13+
}
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.Singleton;
4+
5+
@Singleton
6+
public class GreenStore implements SomeStore {
7+
@Override
8+
public String store() {
9+
return "green";
10+
}
11+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package org.example.coffee.qualifier;
2+
3+
public interface SomeStore {
4+
5+
String store();
6+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package org.example.coffee.qualifier;
2+
3+
import javax.inject.Inject;
4+
import javax.inject.Singleton;
5+
6+
@Singleton
7+
public class StoreManagerWithFieldQualifier {
8+
9+
@Inject
10+
@Blue
11+
SomeStore store;
12+
13+
public String store() {
14+
return store.store();
15+
}
16+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package org.example.coffee.qualifier;
2+
3+
import io.dinject.BeanContext;
4+
import io.dinject.BootContext;
5+
import org.junit.Test;
6+
7+
import static org.assertj.core.api.Assertions.assertThat;
8+
9+
public class StoreManagerWithFieldQualifierTest {
10+
11+
@Test
12+
public void test() {
13+
14+
try (BeanContext context = new BootContext().load()) {
15+
StoreManagerWithFieldQualifier manager = context.getBean(StoreManagerWithFieldQualifier.class);
16+
String store = manager.store();
17+
assertThat(store).isEqualTo("blue");
18+
}
19+
}
20+
}
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 javax.inject.Named;
4+
import javax.inject.Singleton;
5+
6+
@Singleton
7+
public class StoreManagerWithNamed {
8+
9+
private final SomeStore store;
10+
11+
public StoreManagerWithNamed(@Named("Blue") SomeStore store) {
12+
this.store = store;
13+
}
14+
15+
public String store() {
16+
return store.store();
17+
}
18+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package org.example.coffee.qualifier;
2+
3+
import io.dinject.BeanContext;
4+
import io.dinject.BootContext;
5+
import org.junit.Test;
6+
7+
import static org.assertj.core.api.Assertions.assertThat;
8+
9+
public class StoreManagerWithNamedTest {
10+
11+
@Test
12+
public void test() {
13+
14+
try (BeanContext context = new BootContext().load()) {
15+
StoreManagerWithNamed manager = context.getBean(StoreManagerWithNamed.class);
16+
String store = manager.store();
17+
assertThat(store).isEqualTo("blue");
18+
}
19+
}
20+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package org.example.coffee.qualifier;
2+
3+
import javax.inject.Singleton;
4+
5+
@Singleton
6+
public class StoreManagerWithQualifier {
7+
8+
private final SomeStore store;
9+
10+
public StoreManagerWithQualifier(@Blue SomeStore store) {
11+
this.store = store;
12+
}
13+
14+
public String store() {
15+
return store.store();
16+
}
17+
}

0 commit comments

Comments
 (0)