Skip to content

Commit dc18841

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

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
@@ -169,6 +169,11 @@ public final class PostgresqlConnectionFactoryProvider implements ConnectionFact
169169
*/
170170
public static final Option<SSLMode> SSL_MODE = Option.valueOf("sslMode");
171171

172+
/**
173+
* Ssl mode alias (JDBC style). Default: disabled
174+
*/
175+
public static final Option<SSLMode> SSL_MODE_ALIAS = Option.valueOf("sslmode");
176+
172177
/**
173178
* SSL key password
174179
*/
@@ -288,7 +293,18 @@ private static void setupSsl(PostgresqlConnectionConfiguration.Builder builder,
288293

289294
return (SSLMode) it;
290295

291-
}).to(builder::sslMode);
296+
}).to(builder::sslMode).otherwise(() -> {
297+
298+
mapper.from(SSL_MODE_ALIAS).map(it -> {
299+
300+
if (it instanceof String) {
301+
return SSLMode.fromValue(it.toString());
302+
}
303+
304+
return (SSLMode) it;
305+
306+
}).to(builder::sslMode);
307+
});
292308

293309
mapper.from(SSL_CERT).to(builder::sslCert);
294310
mapper.from(SSL_CONTEXT_BUILDER_CUSTOMIZER).to(builder::sslContextBuilderCustomizer);

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

+15
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,21 @@ void supportsSslMode() {
219219
assertThat(sslConfig.getSslMode()).isEqualTo(SSLMode.DISABLE);
220220
}
221221

222+
@Test
223+
void supportsSslModeAlias() {
224+
PostgresqlConnectionFactory factory = this.provider.create(builder()
225+
.option(DRIVER, POSTGRESQL_DRIVER)
226+
.option(HOST, "test-host")
227+
.option(PASSWORD, "test-password")
228+
.option(USER, "test-user")
229+
.option(Option.valueOf("sslmode"), "require")
230+
.build());
231+
232+
SSLConfig sslConfig = factory.getConfiguration().getSslConfig();
233+
234+
assertThat(sslConfig.getSslMode()).isEqualTo(SSLMode.REQUIRE);
235+
}
236+
222237
@Test
223238
void shouldCreateConnectionFactoryWithoutPassword() {
224239
assertThat(this.provider.create(ConnectionFactoryOptions.builder()

0 commit comments

Comments
 (0)