Skip to content

Commit

Permalink
Refactor create method of MySQLConnectionFactory
Browse files Browse the repository at this point in the history
  • Loading branch information
JohnNiang authored and jchrys committed Feb 10, 2025
1 parent abaa2d1 commit 0764d05
Showing 1 changed file with 39 additions and 42 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -42,68 +42,65 @@
*/
public final class MySqlConnectionFactory implements ConnectionFactory {

private final Mono<? extends MySqlConnection> client;
private final MySqlConnectionConfiguration configuration;
private final LazyQueryCache queryCache;

private MySqlConnectionFactory(Mono<? extends MySqlConnection> client) {
this.client = client;
private MySqlConnectionFactory(MySqlConnectionConfiguration configuration) {
this.configuration = configuration;
this.queryCache = new LazyQueryCache(configuration.getQueryCacheSize());
}

@Override
public Mono<? extends MySqlConnection> create() {
return client;
}

@Override
public ConnectionFactoryMetadata getMetadata() {
return MySqlConnectionFactoryMetadata.INSTANCE;
}
MySqlSslConfiguration ssl;
SocketAddress address;

/**
* Creates a {@link MySqlConnectionFactory} with a {@link MySqlConnectionConfiguration}.
*
* @param configuration the {@link MySqlConnectionConfiguration}.
* @return configured {@link MySqlConnectionFactory}.
*/
public static MySqlConnectionFactory from(MySqlConnectionConfiguration configuration) {
requireNonNull(configuration, "configuration must not be null");

LazyQueryCache queryCache = new LazyQueryCache(configuration.getQueryCacheSize());

return new MySqlConnectionFactory(Mono.defer(() -> {
MySqlSslConfiguration ssl;
SocketAddress address;

if (configuration.isHost()) {
ssl = configuration.getSsl();
address = InetSocketAddress.createUnresolved(configuration.getDomain(),
if (configuration.isHost()) {
ssl = configuration.getSsl();
address = InetSocketAddress.createUnresolved(configuration.getDomain(),
configuration.getPort());
} else {
ssl = MySqlSslConfiguration.disabled();
address = new DomainSocketAddress(configuration.getDomain());
}
} else {
ssl = MySqlSslConfiguration.disabled();
address = new DomainSocketAddress(configuration.getDomain());
}

String user = configuration.getUser();
CharSequence password = configuration.getPassword();
Publisher<String> passwordPublisher = configuration.getPasswordPublisher();
String user = configuration.getUser();
CharSequence password = configuration.getPassword();
Publisher<String> passwordPublisher = configuration.getPasswordPublisher();

if (Objects.nonNull(passwordPublisher)) {
return Mono.from(passwordPublisher).flatMap(token -> getMySqlConnection(
if (Objects.nonNull(passwordPublisher)) {
return Mono.from(passwordPublisher).flatMap(token -> getMySqlConnection(
configuration, ssl,
queryCache,
address,
user,
token
));
}
));
}

return getMySqlConnection(
return getMySqlConnection(
configuration, ssl,
queryCache,
address,
user,
password
);
}));
);
}

@Override
public ConnectionFactoryMetadata getMetadata() {
return MySqlConnectionFactoryMetadata.INSTANCE;
}

/**
* Creates a {@link MySqlConnectionFactory} with a {@link MySqlConnectionConfiguration}.
*
* @param configuration the {@link MySqlConnectionConfiguration}.
* @return configured {@link MySqlConnectionFactory}.
*/
public static MySqlConnectionFactory from(MySqlConnectionConfiguration configuration) {
requireNonNull(configuration, "configuration must not be null");
return new MySqlConnectionFactory(configuration);
}

/**
Expand Down

0 comments on commit 0764d05

Please sign in to comment.