Skip to content

Commit 182024c

Browse files
authored
Adapted providers to new version of the driver (#148)
* Adapted providers to new version of the driver * For parser type to be JSON * Updated test * Undo test update * Updated service providers * Update name of PasswordProvider * Renaming service providers * Undo rename * implement OracleConfigurationSecretProvider instead of OracleConfigurationJsonSecretProvider * Implement both * Add both service providers * Trying with two different providers * Update test * Changes to secret providers * Updated javadoc * Removed old implementation. * Fixed test and provider * Test using secret properties * Added type parameter * OCI tests * Updated javadoc * Updated version to 1.0.3 * Removed unused method that was commented out + updated requiredments on README file * Removed unused class
1 parent dd3b171 commit 182024c

File tree

28 files changed

+96
-222
lines changed

28 files changed

+96
-222
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ consume the JDBC driver.
7070
The requirements for using a provider are:
7171
<ul>
7272
<li>The class path includes the provider's jar.</li>
73-
<li>The class path includes Oracle JDBC 23.3 or newer.</li>
73+
<li>The class path includes Oracle JDBC 23.7 or newer.</li>
7474
<li>Oracle JDBC is configured to use the provider.</li>
7575
</ul>
7676

ojdbc-provider-azure/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ JDK versions. The coordinates for the latest release are:
4444
<dependency>
4545
<groupId>com.oracle.database.jdbc</groupId>
4646
<artifactId>ojdbc-provider-azure</artifactId>
47-
<version>1.0.2</version>
47+
<version>1.0.3</version>
4848
</dependency>
4949
```
5050

ojdbc-provider-azure/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
<parent>
1111
<groupId>com.oracle.database.jdbc</groupId>
1212
<artifactId>ojdbc-extensions</artifactId>
13-
<version>1.0.2</version>
13+
<version>1.0.3</version>
1414
</parent>
1515

1616
<dependencyManagement>

ojdbc-provider-azure/src/main/java/oracle/jdbc/provider/azure/AzureResourceFactory.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@
5959
* {@link TokenCredential} created by {@link TokenCredentialFactory} is passed
6060
* to the {@link #request(TokenCredential, ParameterSet)} method of a subclass.
6161
* </p>
62+
* @param <T> the type
6263
*/
6364
public abstract class AzureResourceFactory<T> implements ResourceFactory<T> {
6465

ojdbc-provider-azure/src/main/java/oracle/jdbc/provider/azure/configuration/AzureAppConfigurationProvider.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,6 @@
5151
import oracle.jdbc.spi.OracleConfigurationCachableProvider;
5252
import oracle.jdbc.util.OracleConfigurationCache;
5353
import oracle.jdbc.util.OracleConfigurationProviderNetworkError;
54-
import oracle.jdbc.spi.OracleConfigurationProvider;
5554
import oracle.jdbc.provider.parameter.ParameterSet;
5655
import oracle.jdbc.provider.azure.authentication.TokenCredentialFactory;
5756
import oracle.sql.json.OracleJsonFactory;

ojdbc-provider-azure/src/main/java/oracle/jdbc/provider/azure/configuration/AzureVaultJsonProvider.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838

3939
package oracle.jdbc.provider.azure.configuration;
4040

41-
import oracle.jdbc.driver.OracleConfigurationJsonProvider;
41+
import oracle.jdbc.driver.configuration.OracleConfigurationParsableProvider;
4242
import oracle.jdbc.provider.azure.keyvault.KeyVaultSecretFactory;
4343
import oracle.jdbc.provider.parameter.Parameter;
4444
import oracle.jdbc.provider.parameter.ParameterSet;
@@ -52,9 +52,9 @@
5252

5353
/**
5454
* A provider for JSON payload which contains configuration from Azure Vault.
55-
* See {@link #getJson(String)} for the spec of the JSON payload.
55+
* See {@link #getInputStream(String)} for the spec of the JSON payload.
5656
*/
57-
public class AzureVaultJsonProvider extends OracleConfigurationJsonProvider {
57+
public class AzureVaultJsonProvider extends OracleConfigurationParsableProvider {
5858

5959
/**
6060
* Parser that recognizes the "key" and "value" field,
@@ -85,7 +85,7 @@ public class AzureVaultJsonProvider extends OracleConfigurationJsonProvider {
8585
* @return JSON payload
8686
**/
8787
@Override
88-
public InputStream getJson(String secretIdentifier) {
88+
public InputStream getInputStream(String secretIdentifier) {
8989
final String valueFieldName = "value";
9090
Map<String, String> optionsWithSecret = new HashMap<>(options);
9191
optionsWithSecret.put(valueFieldName, secretIdentifier);
@@ -116,6 +116,11 @@ public String getType() {
116116
return "azurevault";
117117
}
118118

119+
@Override
120+
public String getParserType(String arg0) {
121+
return "json";
122+
}
123+
119124
/**
120125
* {@inheritDoc}
121126
* @return cache of this provider which is used to store configuration

ojdbc-provider-azure/src/main/java/oracle/jdbc/provider/azure/configuration/AzureVaultSecretProvider.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -39,19 +39,19 @@
3939
package oracle.jdbc.provider.azure.configuration;
4040

4141
import oracle.jdbc.provider.azure.keyvault.KeyVaultSecretFactory;
42-
import oracle.jdbc.spi.OracleConfigurationJsonSecretProvider;
43-
import oracle.jdbc.provider.configuration.JsonSecretUtil;
42+
import oracle.jdbc.spi.OracleConfigurationSecretProvider;
43+
import oracle.jdbc.provider.parameter.Parameter;
4444
import oracle.jdbc.provider.parameter.ParameterSet;
4545
import oracle.jdbc.provider.parameter.ParameterSetParser;
46-
import oracle.sql.json.OracleJsonObject;
4746

4847
import java.util.Base64;
48+
import java.util.Map;
4949

5050
/**
5151
* A provider of Secret values from Azure Key Vault.
5252
*/
5353
public final class AzureVaultSecretProvider
54-
implements OracleConfigurationJsonSecretProvider {
54+
implements OracleConfigurationSecretProvider {
5555
/**
5656
* Parser that recognizes the "value" field and parses it as a Key Vault
5757
* secret URL.
@@ -62,15 +62,16 @@ public final class AzureVaultSecretProvider
6262
public static final ParameterSetParser PARAMETER_SET_PARSER =
6363
AzureConfigurationParameters.configureBuilder(
6464
ParameterSetParser.builder()
65+
.addParameter("type", Parameter.create())
6566
.addParameter("value", AzureVaultURLParser::parseVaultSecretUri))
6667
.build();
6768

6869
/**
6970
* {@inheritDoc}
7071
* <p>
71-
* Returns the password of the Secret that is retrieved from Azure Key Vault.
72+
* Returns the password of the Secret that is retrieved from Azure Key Vault.
7273
* </p><p>
73-
* The {@code secretJsonObject} has the following form:
74+
* The JSON object has the following form:
7475
* </p><pre>{@code
7576
* "password": {
7677
* "type": "azurevault",
@@ -81,16 +82,15 @@ public final class AzureVaultSecretProvider
8182
* }
8283
* }</pre>
8384
*
84-
* @param secretJsonObject json object to be parsed
85+
* @param secretProperties a map containing the flattened JSON object.
8586
* @return encoded char array in base64 format that represents the retrieved
8687
* Secret.
8788
*/
8889
@Override
89-
public char[] getSecret(OracleJsonObject secretJsonObject) {
90+
public char[] getSecret(Map<String, String> secretProperties) {
9091

9192
ParameterSet parameterSet =
92-
PARAMETER_SET_PARSER.parseNamedValues(
93-
JsonSecretUtil.toNamedValues(secretJsonObject));
93+
PARAMETER_SET_PARSER.parseNamedValues(secretProperties);
9494

9595
String secretString = KeyVaultSecretFactory.getInstance()
9696
.request(parameterSet)

ojdbc-provider-azure/src/test/java/oracle/jdbc/provider/azure/configuration/AzureVaultSecretProviderTest.java

Lines changed: 15 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -41,16 +41,16 @@
4141
import oracle.jdbc.provider.azure.authentication.AzureAuthenticationMethod;
4242
import oracle.jdbc.provider.azure.AzureTestProperty;
4343
import oracle.jdbc.spi.OracleConfigurationJsonSecretProvider;
44-
import oracle.sql.json.OracleJsonFactory;
45-
import oracle.sql.json.OracleJsonObject;
44+
import oracle.jdbc.spi.OracleConfigurationSecretProvider;
4645
import org.junit.jupiter.api.Assertions;
4746
import org.junit.jupiter.api.Test;
4847

49-
import static oracle.jdbc.provider.TestProperties.getOrAbort;
48+
import java.util.HashMap;
49+
import java.util.Map;
5050

5151
public class AzureVaultSecretProviderTest {
52-
private static final OracleConfigurationJsonSecretProvider PROVIDER =
53-
OracleConfigurationJsonSecretProvider.find("azurevault");
52+
private static final OracleConfigurationSecretProvider PROVIDER =
53+
OracleConfigurationSecretProvider.find("azurevault");
5454

5555
/**
5656
* Verifies {@link OracleConfigurationJsonSecretProvider} as implementing
@@ -61,7 +61,7 @@ public class AzureVaultSecretProviderTest {
6161
@Test
6262
public void test() {
6363
Assertions.assertNotNull(PROVIDER.getSecret(
64-
constructJsonObject(
64+
constructSecretProperties(
6565
TestProperties.getOrAbort(AzureTestProperty.AZURE_KEY_VAULT_URL),
6666
TestProperties.getOrAbort(AzureTestProperty.AZURE_KEY_VAULT_SECRET_NAME),
6767
TestProperties.getOrAbort(AzureTestProperty.AZURE_CLIENT_ID),
@@ -70,38 +70,16 @@ public void test() {
7070
)));
7171
}
7272

73-
/**
74-
* Returns a JSON object in following format:
75-
* <pre>
76-
* {
77-
* "type": "azurevault",
78-
* "value": "{"uri":"https://ojdbc-plugin-test-vault.vault.azure.net/secrets/test-db-password"}",
79-
* "authentication": {
80-
* "method": "AZURE_SERVICE_PRINCIPAL",
81-
* "AZURE_CLIENT_ID": "<client-id>",
82-
* "AZURE_CLIENT_SECRET": "<client-secret>",
83-
* "AZURE_TENANT_ID": "<tenant-id>",
84-
* }
85-
* }
86-
* </pre>
87-
*/
88-
private OracleJsonObject constructJsonObject(
73+
private Map<String,String> constructSecretProperties(
8974
String vaultUrl, String secretName, String clientId, String clientSecret, String tenantId) {
90-
91-
OracleJsonFactory factory = new OracleJsonFactory();
92-
93-
OracleJsonObject auth = factory.createObject();
94-
auth.put("method", "AZURE_SERVICE_PRINCIPAL");
95-
auth.put("AZURE_CLIENT_ID", clientId);
96-
auth.put("AZURE_CLIENT_SECRET", clientSecret);
97-
auth.put("AZURE_TENANT_ID", tenantId);
98-
99-
OracleJsonObject password = factory.createObject();
100-
password.put("type", "azurevault");
101-
password.put("value", constructSecretUri(vaultUrl, secretName));
102-
password.put("authentication", auth);
103-
104-
return password;
75+
Map<String,String> secretProperties = new HashMap<>();
76+
secretProperties.put("AUTHENTICATION", "AZURE_SERVICE_PRINCIPAL");
77+
secretProperties.put("AZURE_CLIENT_ID", clientId);
78+
secretProperties.put("AZURE_CLIENT_SECRET", clientSecret);
79+
secretProperties.put("AZURE_TENANT_ID", tenantId);
80+
secretProperties.put("type", "azurevault");
81+
secretProperties.put("value", constructSecretUri(vaultUrl, secretName));
82+
return secretProperties;
10583
}
10684

10785
private String constructSecretUri(String vaultUrl, String secretName) {

ojdbc-provider-common/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
<parent>
1212
<groupId>com.oracle.database.jdbc</groupId>
1313
<artifactId>ojdbc-extensions</artifactId>
14-
<version>1.0.2</version>
14+
<version>1.0.3</version>
1515
</parent>
1616

1717
<dependencies>

ojdbc-provider-common/src/main/java/oracle/jdbc/provider/configuration/JsonSecretUtil.java

Lines changed: 0 additions & 119 deletions
This file was deleted.

ojdbc-provider-jackson-oson/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ JDK versions. The coordinates for the latest release are:
4444
<dependency>
4545
<groupId>com.oracle.database.jdbc</groupId>
4646
<artifactId>ojdbc-provider-jackson-oson</artifactId>
47-
<version>1.0.2</version>
47+
<version>1.0.3</version>
4848
</dependency>
4949
```
5050
### Note
@@ -56,7 +56,7 @@ It can be done in maven as:
5656
<dependency>
5757
<groupId>com.oracle.database.jdbc</groupId>
5858
<artifactId>ojdbc-provider-jackson-oson</artifactId>
59-
<version>1.0.2</version>
59+
<version>1.0.3</version>
6060
<exclusions>
6161
<exclusion>
6262
<groupId>com.oracle.database.jdbc</groupId>

ojdbc-provider-jackson-oson/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<parent>
99
<groupId>com.oracle.database.jdbc</groupId>
1010
<artifactId>ojdbc-extensions</artifactId>
11-
<version>1.0.2</version>
11+
<version>1.0.3</version>
1212
</parent>
1313

1414
<artifactId>ojdbc-provider-jackson-oson</artifactId>
@@ -21,7 +21,7 @@
2121
<dependency>
2222
<groupId>com.oracle.database.jdbc</groupId>
2323
<artifactId>ojdbc-provider-common</artifactId>
24-
<version>1.0.2</version>
24+
<version>1.0.3</version>
2525
</dependency>
2626
<dependency>
2727
<groupId>com.oracle.database.jdbc</groupId>

0 commit comments

Comments
 (0)