diff --git a/r2dbc-mysql/src/main/java/io/asyncer/r2dbc/mysql/MySqlConnectionFactory.java b/r2dbc-mysql/src/main/java/io/asyncer/r2dbc/mysql/MySqlConnectionFactory.java index a6880cc8..094674f2 100644 --- a/r2dbc-mysql/src/main/java/io/asyncer/r2dbc/mysql/MySqlConnectionFactory.java +++ b/r2dbc-mysql/src/main/java/io/asyncer/r2dbc/mysql/MySqlConnectionFactory.java @@ -42,68 +42,65 @@ */ public final class MySqlConnectionFactory implements ConnectionFactory { - private final Mono client; + private final MySqlConnectionConfiguration configuration; + private final LazyQueryCache queryCache; - private MySqlConnectionFactory(Mono client) { - this.client = client; + private MySqlConnectionFactory(MySqlConnectionConfiguration configuration) { + this.configuration = configuration; + this.queryCache = new LazyQueryCache(configuration.getQueryCacheSize()); } @Override public Mono 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 passwordPublisher = configuration.getPasswordPublisher(); + String user = configuration.getUser(); + CharSequence password = configuration.getPassword(); + Publisher 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); } /**