Skip to content
This repository was archived by the owner on Oct 24, 2020. It is now read-only.

Commit 7947cde

Browse files
committed
Add the AnnotationLiteral class for the Config annotation
1 parent 6dc3e9c commit 7947cde

File tree

2 files changed

+26
-1
lines changed

2 files changed

+26
-1
lines changed

deployment/src/test/java/org/seasar/doma/quarkus/deployment/MultipleConfigTest.java renamed to deployment/src/test/java/org/seasar/doma/quarkus/deployment/MultipleConfigsTest.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
package org.seasar.doma.quarkus.deployment;
22

3+
import static org.junit.jupiter.api.Assertions.assertEquals;
34
import static org.junit.jupiter.api.Assertions.assertNotEquals;
45
import static org.junit.jupiter.api.Assertions.assertNotNull;
56

67
import io.agroal.api.AgroalDataSource;
78
import io.quarkus.test.QuarkusUnitTest;
89
import javax.enterprise.context.ApplicationScoped;
10+
import javax.enterprise.inject.Any;
911
import javax.enterprise.inject.Default;
12+
import javax.enterprise.inject.Instance;
1013
import javax.inject.Inject;
1114
import org.jboss.shrinkwrap.api.ShrinkWrap;
1215
import org.jboss.shrinkwrap.api.asset.StringAsset;
@@ -16,7 +19,7 @@
1619
import org.seasar.doma.jdbc.Config;
1720
import org.seasar.doma.quarkus.runtime.DbConfig;
1821

19-
public class MultipleConfigTest {
22+
public class MultipleConfigsTest {
2023

2124
@RegisterExtension
2225
static QuarkusUnitTest runner =
@@ -43,6 +46,8 @@ public class MultipleConfigTest {
4346
@org.seasar.doma.quarkus.Config("inventory")
4447
Config inventoryConfig;
4548

49+
@Inject @Any Instance<Config> configInstance;
50+
4651
static class MyProducer {
4752

4853
@ApplicationScoped
@@ -61,5 +66,10 @@ void test() {
6166
assertNotNull(inventoryConfig);
6267
assertNotNull(inventoryConfig.getDataSource());
6368
assertNotEquals(defaultConfig, inventoryConfig);
69+
Config selectedDefaultConfig = configInstance.select(Default.Literal.INSTANCE).get();
70+
assertEquals(defaultConfig, selectedDefaultConfig);
71+
Config selectedInventoryConfig =
72+
configInstance.select(new org.seasar.doma.quarkus.Config.Literal("inventory")).get();
73+
assertEquals(inventoryConfig, selectedInventoryConfig);
6474
}
6575
}

runtime/src/main/java/org/seasar/doma/quarkus/Config.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,26 @@
44
import java.lang.annotation.Retention;
55
import java.lang.annotation.RetentionPolicy;
66
import java.lang.annotation.Target;
7+
import java.util.Objects;
8+
import javax.enterprise.util.AnnotationLiteral;
79
import javax.inject.Qualifier;
810

911
@Target({ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER, ElementType.TYPE})
1012
@Retention(RetentionPolicy.RUNTIME)
1113
@Qualifier
1214
public @interface Config {
1315
String value();
16+
17+
class Literal extends AnnotationLiteral<Config> implements Config {
18+
private final String name;
19+
20+
public Literal(String name) {
21+
this.name = Objects.requireNonNull(name);
22+
}
23+
24+
@Override
25+
public String value() {
26+
return name;
27+
}
28+
}
1429
}

0 commit comments

Comments
 (0)