Skip to content

Commit 8018584

Browse files
Sergey Starosekmp911de
Sergey Starosek
authored andcommitted
Add sslMode option lowercase alias
For easier JDBC URL adaption [resolves #486]
1 parent df270f2 commit 8018584

File tree

2 files changed

+32
-1
lines changed

2 files changed

+32
-1
lines changed

src/main/java/io/r2dbc/postgresql/PostgresqlConnectionFactoryProvider.java

+17-1
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,11 @@ public final class PostgresqlConnectionFactoryProvider implements ConnectionFact
180180
*/
181181
public static final Option<SSLMode> SSL_MODE = Option.valueOf("sslMode");
182182

183+
/**
184+
* Ssl mode alias (JDBC style). Default: disabled
185+
*/
186+
public static final Option<SSLMode> SSL_MODE_ALIAS = Option.valueOf("sslmode");
187+
183188
/**
184189
* SSL key password
185190
*/
@@ -301,7 +306,18 @@ private static void setupSsl(PostgresqlConnectionConfiguration.Builder builder,
301306

302307
return (SSLMode) it;
303308

304-
}).to(builder::sslMode);
309+
}).to(builder::sslMode).otherwise(() -> {
310+
311+
mapper.from(SSL_MODE_ALIAS).map(it -> {
312+
313+
if (it instanceof String) {
314+
return SSLMode.fromValue(it.toString());
315+
}
316+
317+
return (SSLMode) it;
318+
319+
}).to(builder::sslMode);
320+
});
305321

306322
mapper.fromTyped(SSL_CERT).to(builder::sslCert);
307323
mapper.fromTyped(SSL_CONTEXT_BUILDER_CUSTOMIZER).to(builder::sslContextBuilderCustomizer);

src/test/java/io/r2dbc/postgresql/PostgresqlConnectionFactoryProviderUnitTests.java

+15
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,21 @@ void supportsSslMode() {
225225
assertThat(sslConfig.getSslMode()).isEqualTo(SSLMode.DISABLE);
226226
}
227227

228+
@Test
229+
void supportsSslModeAlias() {
230+
PostgresqlConnectionFactory factory = this.provider.create(builder()
231+
.option(DRIVER, POSTGRESQL_DRIVER)
232+
.option(HOST, "test-host")
233+
.option(PASSWORD, "test-password")
234+
.option(USER, "test-user")
235+
.option(Option.valueOf("sslmode"), "require")
236+
.build());
237+
238+
SSLConfig sslConfig = factory.getConfiguration().getSslConfig();
239+
240+
assertThat(sslConfig.getSslMode()).isEqualTo(SSLMode.REQUIRE);
241+
}
242+
228243
@Test
229244
void shouldCreateConnectionFactoryWithoutPassword() {
230245
assertThat(this.provider.create(ConnectionFactoryOptions.builder()

0 commit comments

Comments
 (0)