Skip to content

Commit 9cda99b

Browse files
committed
Merge Mongo default client and named configurations
1 parent 9853819 commit 9cda99b

File tree

12 files changed

+97
-96
lines changed

12 files changed

+97
-96
lines changed

extensions/liquibase/liquibase-mongodb/deployment/src/main/java/io/quarkus/liquibase/mongodb/deployment/LiquibaseMongodbProcessor.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@
5151
import io.quarkus.liquibase.mongodb.runtime.LiquibaseMongodbRecorder;
5252
import io.quarkus.maven.dependency.ArtifactCoords;
5353
import io.quarkus.maven.dependency.Dependency;
54-
import io.quarkus.mongodb.runtime.MongoClientBeanUtil;
54+
import io.quarkus.mongodb.runtime.MongodbConfig;
5555
import io.quarkus.paths.PathFilter;
5656
import liquibase.change.Change;
5757
import liquibase.change.DatabaseChangeProperty;
@@ -253,7 +253,7 @@ void createBeans(LiquibaseMongodbRecorder recorder,
253253
.unremovable()
254254
.supplier(recorder.liquibaseSupplier(clientName));
255255

256-
if (MongoClientBeanUtil.isDefault(clientName)) {
256+
if (MongodbConfig.isDefaultClient(clientName)) {
257257
configurator.addQualifier(Default.class);
258258
} else {
259259
configurator.name(LIQUIBASE_MONGODB_BEAN_NAME_PREFIX + clientName);

extensions/liquibase/liquibase-mongodb/runtime/src/main/java/io/quarkus/liquibase/mongodb/runtime/LiquibaseMongodbBuildTimeConfig.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import java.util.Map;
44

5-
import io.quarkus.mongodb.runtime.MongoClientBeanUtil;
5+
import io.quarkus.mongodb.runtime.MongodbConfig;
66
import io.quarkus.runtime.annotations.ConfigDocMapKey;
77
import io.quarkus.runtime.annotations.ConfigDocSection;
88
import io.quarkus.runtime.annotations.ConfigPhase;
@@ -25,7 +25,7 @@ public interface LiquibaseMongodbBuildTimeConfig {
2525
@ConfigDocMapKey("client-name")
2626
@ConfigDocSection
2727
@WithParentName
28-
@WithUnnamedKey(MongoClientBeanUtil.DEFAULT_MONGOCLIENT_NAME)
28+
@WithUnnamedKey(MongodbConfig.DEFAULT_CLIENT_NAME)
2929
@WithDefaults
3030
Map<String, LiquibaseMongodbBuildTimeClientConfig> clientConfigs();
3131
}

extensions/liquibase/liquibase-mongodb/runtime/src/main/java/io/quarkus/liquibase/mongodb/runtime/LiquibaseMongodbConfig.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import java.util.Map;
44

5-
import io.quarkus.mongodb.runtime.MongoClientBeanUtil;
5+
import io.quarkus.mongodb.runtime.MongodbConfig;
66
import io.quarkus.runtime.annotations.ConfigDocMapKey;
77
import io.quarkus.runtime.annotations.ConfigDocSection;
88
import io.quarkus.runtime.annotations.ConfigPhase;
@@ -34,7 +34,7 @@ public interface LiquibaseMongodbConfig {
3434
@ConfigDocMapKey("client-name")
3535
@ConfigDocSection
3636
@WithParentName
37-
@WithUnnamedKey(MongoClientBeanUtil.DEFAULT_MONGOCLIENT_NAME)
37+
@WithUnnamedKey(MongodbConfig.DEFAULT_CLIENT_NAME)
3838
@WithDefaults
3939
Map<String, LiquibaseMongodbClientConfig> clientConfigs();
4040
}

extensions/liquibase/liquibase-mongodb/runtime/src/main/java/io/quarkus/liquibase/mongodb/runtime/LiquibaseMongodbRecorder.java

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
import io.quarkus.arc.InjectableInstance;
1212
import io.quarkus.arc.InstanceHandle;
1313
import io.quarkus.liquibase.mongodb.LiquibaseMongodbFactory;
14-
import io.quarkus.mongodb.runtime.MongoClientBeanUtil;
1514
import io.quarkus.mongodb.runtime.MongoClientConfig;
1615
import io.quarkus.mongodb.runtime.MongodbConfig;
1716
import io.quarkus.runtime.RuntimeValue;
@@ -58,18 +57,17 @@ public LiquibaseMongodbFactory get() {
5857
if (liquibaseMongodbClientConfig.mongoClientName().isPresent()) {
5958
// keep compatibility with the legacy configuration which makes possible set the mongo-client-name
6059
String forceMongoClientName = liquibaseMongodbClientConfig.mongoClientName().get();
61-
mongoClientConfig = mongodbRuntimeConfig.getValue().mongoClientConfigs().get(forceMongoClientName);
60+
mongoClientConfig = mongodbRuntimeConfig.getValue().clients().get(forceMongoClientName);
6261
if (mongoClientConfig == null) {
6362
throw new IllegalArgumentException(
6463
"Mongo client named '%s' not found".formatted(forceMongoClientName));
6564
}
6665
clientNameSelected = forceMongoClientName;
67-
} else if (MongoClientBeanUtil.isDefault(clientName)) {
68-
mongoClientConfig = mongodbRuntimeConfig.getValue().defaultMongoClientConfig();
66+
} else if (MongodbConfig.isDefaultClient(clientName)) {
67+
mongoClientConfig = mongodbRuntimeConfig.getValue().clients().get(clientName);
6968
clientNameSelected = clientName;
7069
} else {
71-
mongoClientConfig = getRequiredConfig(
72-
mongodbRuntimeConfig.getValue().mongoClientConfigs(),
70+
mongoClientConfig = getRequiredConfig(mongodbRuntimeConfig.getValue().clients(),
7371
"Mongo client named '%s' not found");
7472
clientNameSelected = clientName;
7573
}
@@ -83,7 +81,7 @@ public LiquibaseMongodbFactory get() {
8381
}
8482

8583
private Annotation getLiquibaseMongodbQualifier(String clientName) {
86-
if (MongoClientBeanUtil.isDefault(clientName)) {
84+
if (MongodbConfig.isDefaultClient(clientName)) {
8785
return Default.Literal.INSTANCE;
8886
} else {
8987
return LiquibaseMongodbClient.LiquibaseMongodbClientLiteral.of(clientName);

extensions/mongodb-client/deployment/src/main/java/io/quarkus/mongodb/deployment/DevServicesMongoProcessor.java

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package io.quarkus.mongodb.deployment;
22

33
import static io.quarkus.devservices.common.ContainerLocator.locateContainerWithLabels;
4-
import static io.quarkus.mongodb.runtime.MongoClientBeanUtil.isDefault;
4+
import static io.quarkus.mongodb.runtime.MongodbConfig.isDefaultClient;
55

66
import java.io.Closeable;
77
import java.nio.charset.StandardCharsets;
@@ -164,8 +164,9 @@ private RunningDevService startMongo(DockerStatusBuildItem dockerStatusBuildItem
164164
LaunchMode launchMode, String serviceName) {
165165
if (!capturedProperties.devServicesEnabled) {
166166
// explicitly disabled
167-
log.debug("Not starting devservices for " + (isDefault(connectionName) ? "default datasource" : connectionName)
168-
+ " as it has been disabled in the config");
167+
log.debug(
168+
"Not starting devservices for " + (isDefaultClient(connectionName) ? "default datasource" : connectionName)
169+
+ " as it has been disabled in the config");
169170
return null;
170171
}
171172

@@ -175,14 +176,15 @@ private RunningDevService startMongo(DockerStatusBuildItem dockerStatusBuildItem
175176
&& !ConfigUtils.isPropertyNonEmpty(configPrefix + "hosts");
176177
if (!needToStart) {
177178
// a connection string has been provided
178-
log.debug("Not starting devservices for " + (isDefault(connectionName) ? "default datasource" : connectionName)
179-
+ " as a connection string and/or server addresses have been provided");
179+
log.debug(
180+
"Not starting devservices for " + (isDefaultClient(connectionName) ? "default datasource" : connectionName)
181+
+ " as a connection string and/or server addresses have been provided");
180182
return null;
181183
}
182184

183185
if (!dockerStatusBuildItem.isContainerRuntimeAvailable()) {
184186
log.warn("Please configure datasource URL for "
185-
+ (isDefault(connectionName) ? "default datasource" : connectionName)
187+
+ (isDefaultClient(connectionName) ? "default datasource" : connectionName)
186188
+ " or get a working docker instance");
187189
return null;
188190
}
@@ -241,7 +243,7 @@ private String getEffectiveUrl(String configPrefix, String host, int port, Captu
241243

242244
private String getConfigPrefix(String connectionName) {
243245
String configPrefix = "quarkus." + MongodbConfig.CONFIG_NAME + ".";
244-
if (!isDefault(connectionName)) {
246+
if (!isDefaultClient(connectionName)) {
245247
configPrefix = configPrefix + connectionName + ".";
246248
}
247249
return configPrefix;

extensions/mongodb-client/deployment/src/main/java/io/quarkus/mongodb/deployment/MongoClientProcessor.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@
7373
import io.quarkus.mongodb.runtime.MongoClients;
7474
import io.quarkus.mongodb.runtime.MongoReactiveContextProvider;
7575
import io.quarkus.mongodb.runtime.MongoServiceBindingConverter;
76+
import io.quarkus.mongodb.runtime.MongodbConfig;
7677
import io.quarkus.mongodb.runtime.dns.MongoDnsClient;
7778
import io.quarkus.mongodb.runtime.dns.MongoDnsClientProvider;
7879
import io.quarkus.mongodb.tracing.MongoTracingCommandListener;
@@ -280,7 +281,7 @@ void additionalBeans(BuildProducer<AdditionalBeanBuildItem> additionalBeans) {
280281
void connectionNames(
281282
List<MongoClientNameBuildItem> mongoClientNames,
282283
BuildProducer<MongoConnectionNameBuildItem> mongoConnections) {
283-
mongoConnections.produce(new MongoConnectionNameBuildItem(MongoClientBeanUtil.DEFAULT_MONGOCLIENT_NAME));
284+
mongoConnections.produce(new MongoConnectionNameBuildItem(MongodbConfig.DEFAULT_CLIENT_NAME));
284285
for (MongoClientNameBuildItem bi : mongoClientNames) {
285286
mongoConnections.produce(new MongoConnectionNameBuildItem(bi.getName()));
286287
}
@@ -368,12 +369,12 @@ void generateClientBeans(MongoClientRecorder recorder,
368369
if (createDefaultBlockingMongoClient) {
369370
syntheticBeanBuildItemBuildProducer.produce(createBlockingSyntheticBean(recorder,
370371
makeUnremovable || mongoClientBuildTimeConfig.forceDefaultClients(),
371-
MongoClientBeanUtil.DEFAULT_MONGOCLIENT_NAME, false));
372+
MongodbConfig.DEFAULT_CLIENT_NAME, false));
372373
}
373374
if (createDefaultReactiveMongoClient) {
374375
syntheticBeanBuildItemBuildProducer.produce(createReactiveSyntheticBean(recorder,
375376
makeUnremovable || mongoClientBuildTimeConfig.forceDefaultClients(),
376-
MongoClientBeanUtil.DEFAULT_MONGOCLIENT_NAME, false));
377+
MongodbConfig.DEFAULT_CLIENT_NAME, false));
377378
}
378379

379380
for (MongoClientNameBuildItem mongoClientName : mongoClientNames) {
@@ -424,7 +425,7 @@ private SyntheticBeanBuildItem applyCommonBeanConfig(boolean makeUnremovable, St
424425
configurator.unremovable();
425426
}
426427

427-
if (MongoClientBeanUtil.isDefault(clientName)) {
428+
if (MongodbConfig.isDefaultClient(clientName)) {
428429
configurator.addQualifier(Default.class);
429430
} else {
430431
String namedQualifier = MongoClientBeanUtil.namedQualifier(clientName, isReactive);
@@ -505,7 +506,7 @@ void validateMongoConfigCustomizers(BeanDiscoveryFinishedBuildItem beans,
505506
String clientName = name.get().value().asString();
506507
customizers.computeIfAbsent(clientName, k -> new ArrayList<>()).add(bean.getBeanClass().toString());
507508
} else {
508-
customizers.computeIfAbsent(MongoClientBeanUtil.DEFAULT_MONGOCLIENT_NAME, k -> new ArrayList<>())
509+
customizers.computeIfAbsent(MongodbConfig.DEFAULT_CLIENT_NAME, k -> new ArrayList<>())
509510
.add(bean.getBeanClass().toString());
510511
}
511512
}

extensions/mongodb-client/runtime/src/main/java/io/quarkus/mongodb/health/MongoHealthCheck.java

Lines changed: 16 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
package io.quarkus.mongodb.health;
22

3+
import static io.quarkus.mongodb.runtime.MongodbConfig.isDefaultClient;
4+
35
import java.time.Duration;
46
import java.util.ArrayList;
57
import java.util.List;
6-
import java.util.function.BiConsumer;
8+
import java.util.Map.Entry;
79
import java.util.function.BiFunction;
810
import java.util.function.Function;
911
import java.util.function.Supplier;
@@ -42,40 +44,28 @@ public class MongoHealthCheck implements HealthCheck {
4244

4345
private static final Document COMMAND = new Document("ping", 1);
4446

47+
// TODO - Rewrite this with active / inactive. Follow Redis implementation
4548
public MongoHealthCheck(MongodbConfig config) {
46-
Iterable<InstanceHandle<MongoClient>> handle = Arc.container().select(MongoClient.class, Any.Literal.INSTANCE)
47-
.handles();
49+
Iterable<InstanceHandle<MongoClient>> handle = Arc.container()
50+
.select(MongoClient.class, Any.Literal.INSTANCE).handles();
4851
Iterable<InstanceHandle<ReactiveMongoClient>> reactiveHandlers = Arc.container()
4952
.select(ReactiveMongoClient.class, Any.Literal.INSTANCE).handles();
5053

51-
if (config.defaultMongoClientConfig() != null) {
52-
MongoClient client = getClient(handle, null);
53-
ReactiveMongoClient reactiveClient = getReactiveClient(reactiveHandlers, null);
54+
for (Entry<String, MongoClientConfig> entry : config.clients().entrySet()) {
55+
String clientName = entry.getKey();
56+
MongoClientConfig clientConfig = entry.getValue();
57+
MongoClient client = getClient(handle, isDefaultClient(clientName) ? null : entry.getKey());
58+
ReactiveMongoClient reactiveClient = getReactiveClient(reactiveHandlers,
59+
isDefaultClient(clientName) ? null : entry.getKey());
5460
if (client != null) {
55-
checks.add(new MongoClientCheck(CLIENT_DEFAULT, client, config.defaultMongoClientConfig()));
61+
checks.add(
62+
new MongoClientCheck(isDefaultClient(clientName) ? CLIENT_DEFAULT : clientName, client, clientConfig));
5663
}
5764
if (reactiveClient != null) {
58-
checks.add(new ReactiveMongoClientCheck(CLIENT_DEFAULT_REACTIVE,
59-
reactiveClient,
60-
config.defaultMongoClientConfig()));
65+
checks.add(new ReactiveMongoClientCheck(isDefaultClient(clientName) ? CLIENT_DEFAULT_REACTIVE : clientName,
66+
reactiveClient, clientConfig));
6167
}
6268
}
63-
64-
config.mongoClientConfigs().forEach(new BiConsumer<>() {
65-
@Override
66-
public void accept(String name, MongoClientConfig cfg) {
67-
MongoClient client = getClient(handle, name);
68-
ReactiveMongoClient reactiveClient = getReactiveClient(reactiveHandlers, name);
69-
if (client != null) {
70-
checks.add(new MongoClientCheck(name, client,
71-
config.defaultMongoClientConfig()));
72-
}
73-
if (reactiveClient != null) {
74-
checks.add(new ReactiveMongoClientCheck(name, reactiveClient,
75-
config.defaultMongoClientConfig()));
76-
}
77-
}
78-
});
7969
}
8070

8171
private MongoClient getClient(Iterable<InstanceHandle<MongoClient>> handle, String name) {

extensions/mongodb-client/runtime/src/main/java/io/quarkus/mongodb/runtime/MongoClientBeanUtil.java

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,27 +5,22 @@
55
import jakarta.enterprise.util.AnnotationLiteral;
66

77
public final class MongoClientBeanUtil {
8-
9-
public static final String DEFAULT_MONGOCLIENT_NAME = "<default>";
108
public static final String REACTIVE_CLIENT_NAME_SUFFIX = "reactive";
119

1210
private MongoClientBeanUtil() {
13-
}
14-
15-
public static boolean isDefault(String clientName) {
16-
return DEFAULT_MONGOCLIENT_NAME.equals(clientName);
11+
throw new UnsupportedOperationException();
1712
}
1813

1914
public static String namedQualifier(String clientName, boolean isReactive) {
20-
if (isDefault(clientName)) {
15+
if (MongodbConfig.isDefaultClient(clientName)) {
2116
throw new IllegalArgumentException("The default client should not have a named qualifier");
2217
}
2318
return isReactive ? clientName + REACTIVE_CLIENT_NAME_SUFFIX : clientName;
2419
}
2520

2621
@SuppressWarnings("rawtypes")
2722
public static AnnotationLiteral clientLiteral(String clientName, boolean isReactive) {
28-
if (MongoClientBeanUtil.isDefault(clientName)) {
23+
if (MongodbConfig.isDefaultClient(clientName)) {
2924
return Default.Literal.INSTANCE;
3025
}
3126
return NamedLiteral.of(namedQualifier(clientName, isReactive));

extensions/mongodb-client/runtime/src/main/java/io/quarkus/mongodb/runtime/MongoClientRecorder.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ public RuntimeValue<ReactiveMongoClient> getReactiveClient(String name) {
8787

8888
@SuppressWarnings("rawtypes")
8989
private AnnotationLiteral literal(String name) {
90-
if (name.startsWith(MongoClientBeanUtil.DEFAULT_MONGOCLIENT_NAME)) {
90+
if (name.startsWith(MongodbConfig.DEFAULT_CLIENT_NAME)) {
9191
return Default.Literal.INSTANCE;
9292
}
9393
return NamedLiteral.of(name);
@@ -118,8 +118,7 @@ public ConnectionPoolListener get() {
118118
*/
119119
public void performInitialization(RuntimeValue<Vertx> vertx) {
120120
MongoDnsClientProvider.vertx = vertx.getValue();
121-
initializeDNSLookup(runtimeConfig.getValue().defaultMongoClientConfig());
122-
for (MongoClientConfig mongoClientConfig : runtimeConfig.getValue().mongoClientConfigs().values()) {
121+
for (MongoClientConfig mongoClientConfig : runtimeConfig.getValue().clients().values()) {
123122
initializeDNSLookup(mongoClientConfig);
124123
}
125124
}

extensions/mongodb-client/runtime/src/main/java/io/quarkus/mongodb/runtime/MongoClients.java

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ public MongoClients(MongodbConfig mongodbConfig, MongoClientSupport mongoClientS
126126
}
127127

128128
public MongoClient createMongoClient(String clientName) throws MongoException {
129-
MongoClientSettings mongoConfiguration = createMongoConfiguration(clientName, getMatchingMongoClientConfig(clientName),
129+
MongoClientSettings mongoConfiguration = createMongoConfiguration(clientName, mongodbConfig.clients().get(clientName),
130130
false);
131131
MongoClient client = com.mongodb.client.MongoClients.create(mongoConfiguration, DRIVER_INFORMATION);
132132
mongoclients.put(clientName, client);
@@ -135,7 +135,7 @@ public MongoClient createMongoClient(String clientName) throws MongoException {
135135

136136
public ReactiveMongoClient createReactiveMongoClient(String clientName)
137137
throws MongoException {
138-
MongoClientSettings mongoConfiguration = createMongoConfiguration(clientName, getMatchingMongoClientConfig(clientName),
138+
MongoClientSettings mongoConfiguration = createMongoConfiguration(clientName, mongodbConfig.clients().get(clientName),
139139
true);
140140
com.mongodb.reactivestreams.client.MongoClient client = com.mongodb.reactivestreams.client.MongoClients
141141
.create(mongoConfiguration, DRIVER_INFORMATION);
@@ -144,11 +144,6 @@ public ReactiveMongoClient createReactiveMongoClient(String clientName)
144144
return reactive;
145145
}
146146

147-
public MongoClientConfig getMatchingMongoClientConfig(String clientName) {
148-
return MongoClientBeanUtil.isDefault(clientName) ? mongodbConfig.defaultMongoClientConfig()
149-
: mongodbConfig.mongoClientConfigs().get(clientName);
150-
}
151-
152147
private static class ClusterSettingBuilder implements Block<ClusterSettings.Builder> {
153148
public ClusterSettingBuilder(MongoClientConfig config) {
154149
this.config = config;
@@ -394,7 +389,7 @@ private MongoClientSettings.Builder customize(String name, MongoClientSettings.B
394389
// If the client name is the default one, we use a customizer that does not have the MongoClientName qualifier.
395390
// Otherwise, we use the one that has the qualifier.
396391
// Note that at build time, we check that we have at most one customizer per client, including for the default one.
397-
if (MongoClientBeanUtil.isDefault(name)) {
392+
if (MongodbConfig.isDefaultClient(name)) {
398393
var maybe = customizers.handlesStream()
399394
.filter(h -> doesNotHaveClientNameQualifier(h.getBean()))
400395
.findFirst(); // We have at most one customizer without the qualifier.

0 commit comments

Comments
 (0)