From c8bf3f573d82597d835ba51e20cbc59f3d6dec95 Mon Sep 17 00:00:00 2001 From: Titouan Compiegne Date: Tue, 30 May 2023 09:17:02 +0200 Subject: [PATCH] feat(idp): support Oracle database for JDBC IdP closes AM-586 --- .../gravitee-am-identityprovider-jdbc/pom.xml | 40 ++++++++++++++++--- .../JdbcIdentityProviderConfiguration.java | 7 +++- .../jdbc/user/JdbcUserProvider.java | 11 +++-- .../jdbc/utils/ColumnMapRowMapper.java | 7 ++-- .../jdbc/utils/ParametersUtils.java | 4 +- .../src/main/resources/database/oracle.schema | 7 ++++ .../main/resources/schemas/schema-form.json | 10 ++++- ...JdbcAuthenticationProvider_OracleTest.java | 28 +++++++++++++ ...ationProviderConfigurationTest_Oracle.java | 35 ++++++++++++++++ .../user/JdbcUserProvider_OracleTest.java | 28 +++++++++++++ .../jdbc/JdbcReporterConfiguration.java | 4 +- .../gravitee-am-repository-jdbc-api/pom.xml | 2 +- .../impl/ConnectionFactoryProvider.java | 20 +++++++--- .../gravitee-am-repository-jdbc/pom.xml | 28 ++++++++++++- .../AbstractTestRepositoryConfiguration.java | 4 +- 15 files changed, 204 insertions(+), 31 deletions(-) create mode 100644 gravitee-am-identityprovider/gravitee-am-identityprovider-jdbc/src/main/resources/database/oracle.schema create mode 100644 gravitee-am-identityprovider/gravitee-am-identityprovider-jdbc/src/test/java/io/gravitee/am/identityprovider/jdbc/authentication/JdbcAuthenticationProvider_OracleTest.java create mode 100644 gravitee-am-identityprovider/gravitee-am-identityprovider-jdbc/src/test/java/io/gravitee/am/identityprovider/jdbc/configuration/JdbcAuthenticationProviderConfigurationTest_Oracle.java create mode 100644 gravitee-am-identityprovider/gravitee-am-identityprovider-jdbc/src/test/java/io/gravitee/am/identityprovider/jdbc/user/JdbcUserProvider_OracleTest.java diff --git a/gravitee-am-identityprovider/gravitee-am-identityprovider-jdbc/pom.xml b/gravitee-am-identityprovider/gravitee-am-identityprovider-jdbc/pom.xml index 74eead03a5a..32e04b5dcf3 100644 --- a/gravitee-am-identityprovider/gravitee-am-identityprovider-jdbc/pom.xml +++ b/gravitee-am-identityprovider/gravitee-am-identityprovider-jdbc/pom.xml @@ -33,12 +33,13 @@ Gravitee IO - Access Management - Identity Provider - JDBC - 0.8.6.RELEASE - 0.8.11.RELEASE - 0.8.7.RELEASE + 0.9.2.RELEASE + 0.9.2.RELEASE + 0.9.0.RELEASE 0.8.2.RELEASE - 1.0.0 - 0.8.4.RELEASE + 1.1.2 + 0.4.0 + 0.9.1.RELEASE 1.4.1 @@ -86,7 +87,7 @@ - io.r2dbc + org.postgresql r2dbc-postgresql ${r2dbc-postgresql.version} @@ -145,6 +146,21 @@ + + com.oracle.database.r2dbc + oracle-r2dbc + ${r2dbc-oracle.version} + + + r2dbc-spi + io.r2dbc + + + reactor-core + io.projectreactor + + + @@ -214,6 +230,18 @@ ${test-container.version} test + + org.testcontainers + oracle-xe + 1.18.1 + test + + + com.oracle.database.jdbc + ojdbc11 + 21.7.0.0 + test + - io.r2dbc + org.postgresql r2dbc-postgresql @@ -163,6 +164,7 @@ dev.miku r2dbc-mysql + 0.8.2.RELEASE reactor-core @@ -190,6 +192,21 @@ provided + + com.oracle.database.r2dbc + oracle-r2dbc + + + r2dbc-spi + io.r2dbc + + + reactor-core + io.projectreactor + + + provided + diff --git a/gravitee-am-repository/gravitee-am-repository-jdbc/src/test/java/io/gravitee/am/repository/jdbc/common/AbstractTestRepositoryConfiguration.java b/gravitee-am-repository/gravitee-am-repository-jdbc/src/test/java/io/gravitee/am/repository/jdbc/common/AbstractTestRepositoryConfiguration.java index 1b95acd5324..1d8e77644a5 100644 --- a/gravitee-am-repository/gravitee-am-repository-jdbc/src/test/java/io/gravitee/am/repository/jdbc/common/AbstractTestRepositoryConfiguration.java +++ b/gravitee-am-repository/gravitee-am-repository-jdbc/src/test/java/io/gravitee/am/repository/jdbc/common/AbstractTestRepositoryConfiguration.java @@ -64,7 +64,7 @@ protected void initializeDatabaseSchema(ConnectionFactoryOptions options, Enviro final String jdbcUrl = container.getJdbcUrl(); try (Connection connection = DriverManager.getConnection(jdbcUrl, - options.getValue(USER), options.getValue(PASSWORD).toString())) { + options.getValue(USER).toString(), options.getValue(PASSWORD).toString())) { LOGGER.debug("Running Liquibase on {}", jdbcUrl); runLiquibase(connection); runLiquibase_addSpecificTestIndexes(connection); @@ -124,7 +124,7 @@ public ConnectionFactory connectionFactory() { options = ConnectionFactoryOptions.builder() .from(options) .option(DRIVER, "pool") - .option(PROTOCOL, options.getValue(DRIVER)) + .option(PROTOCOL, options.getValue(DRIVER).toString()) .build(); return ConnectionFactories.get(options); }