Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
28 changes: 27 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,32 @@ All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](http://keepachangelog.com/).

## Unreleased
### Breaking Changes
- Apache configurator add-ons now propagate `SSLInitializationException` when TLS initialization fails instead of silently registering a plaintext socket factory for `https`. Applications that require plaintext transport must explicitly provide a connection manager; see [PlainConnectionSocketFactoryExample.java](bmc-other-examples/bmc-jersey-examples/src/main/java/PlainConnectionSocketFactoryExample.java) and [PlainConnectionSocketFactoryExample.java](bmc-other-examples/bmc-jersey3-examples/src/main/java/PlainConnectionSocketFactoryExample.java) (Jersey 3).

## 3.93.0 - 2026-07-28
### Added
- Support for retention locks for block backups in the Block Volume service
- Support for Data Guard creation with Azure encryption keys and changing encryption key locations to Azure in the Database service
- Support for registering and unregistering PKCS for Exadata Database Service on Dedicated Infrastructure VM clusters in the Database service
- Support for Exadata DomU OS live updates in Exadata Cloud and Exadata Cloud@Customer in the Database service
- Support for Oracle Base Database Cloud@Customer VM clusters in the Database service
- Support for autonomous database and two-level approver groups in the Oracle API Access Control service
- Support for creating virtual circuits with AWS as the provider in the Networking service
- Support for listing available provider regions in the Networking service
- Support for Oracle Exadata Exascale, Oracle Exadata Exascale at Azure, and Oracle Exadata Exascale at Google Cloud connection technology types in the GoldenGate service
- Support for Google Cloud Managed Service for Apache Kafka connection technology types in the GoldenGate service
- Support for AI model connections in the GoldenGate service
- Support for listing supported AI models by provider, region, and tenancy in the GoldenGate service
- Support for NEEDS_ATTENTION lifecycle state for connection resources in the GoldenGate service
- Support for connectionType metadata and connectionTypeNotEqualTo filtering on connection assignment resources in the GoldenGate service
- Support for H100_X16 and H100_X32 Dedicated AI Cluster shapes for model import in the Generative AI service

### Breaking Changes
- The field `compartmentId` has been made required in the requests `ListApiMetadataByEntityTypesRequest`, `ListApiMetadataRequest`, `ListPrivilegedApiControlsRequest`, `ListPrivilegedApiRequestsRequest`, and `ListWorkRequestsRequest` in the Oracle API Access Control service
- The field `compartmentId` has been made required in the model `CreatePrivilegedApiRequestDetails` in the Oracle API Access Control service

## 3.92.1 - 2026-07-21
### Added
- Support for multiple FastConnect enhancements in the Networking service
Expand Down Expand Up @@ -31,7 +57,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/).
- The return type of method `public com.oracle.bmc.generativeai.model.HostedApplication$LifecycleState getLifecycleState()` has been changed to `com.oracle.bmc.generativeai.model.HostedApplicationBase$LifecycleState` in the model `com.oracle.bmc.generativeai.model.HostedApplicationSummary` in the Generative AI service
- The return type of method `public com.oracle.bmc.generativeai.model.HostedApplication$LifecycleState getLifecycleState()` has been changed to `com.oracle.bmc.generativeai.model.HostedApplicationBase$LifecycleState` in the request class `com.oracle.bmc.generativeai.requests.ListHostedApplicationsRequest` in the Generative AI service

## 3.91.1 - 2026-06-07
## 3.91.1 - 2026-07-07
### Added
- Support for DAC hardware shapes for self-hosted models in the Generative AI service

Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -162,6 +162,7 @@ There were numerous changes to decouple the implementation from the choice of th

- Also consider using `com.oracle.bmc.http.client.jersey.apacheconfigurator.ApacheConfigurator from the `oci-java-sdk-addons-apache-configurator-jersey` add-on module; or `com.oracle.bmc.http.client.jersey3.apacheconfigurator.ApacheConfigurator` from the `oci-java-sdk-addons-apache-configurator-jersey3` add-on module.
- See [DisableNoConnectionReuseStrategyUsingApacheConfiguratorExample.java](https://github.com/oracle/oci-java-sdk/blob/v3.0.0/bmc-other-examples/bmc-jersey-examples/src/main/java/DisableNoConnectionReuseStrategyUsingApacheConfiguratorExample.java) and [DisableNoConnectionReuseStrategyUsingApacheConfiguratorExample.java](https://github.com/oracle/oci-java-sdk/blob/v3.0.0/bmc-other-examples/bmc-jersey3-examples/src/main/java/DisableNoConnectionReuseStrategyUsingApacheConfiguratorExample.java) (Jersey 3)
- If TLS initialization fails, these configurators now throw `SSLInitializationException`; they no longer map `https` routes to plaintext. Applications that intentionally require plaintext transport can provide an explicit connection manager, as shown in [PlainConnectionSocketFactoryExample.java](https://github.com/oracle/oci-java-sdk/blob/master/bmc-other-examples/bmc-jersey-examples/src/main/java/PlainConnectionSocketFactoryExample.java) and [PlainConnectionSocketFactoryExample.java](https://github.com/oracle/oci-java-sdk/blob/master/bmc-other-examples/bmc-jersey3-examples/src/main/java/PlainConnectionSocketFactoryExample.java) (Jersey 3).

### Circuit breaker changes
- The circuit breaker interface has been renamed from `com.oracle.bmc.circuitbreaker.JaxRsCircuitBreaker` to `com.oracle.bmc.circuitbreaker.OciCircuitBreaker`
Expand Down
4 changes: 2 additions & 2 deletions bmc-accessgovernancecp/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<parent>
<groupId>com.oracle.oci.sdk</groupId>
<artifactId>oci-java-sdk</artifactId>
<version>3.92.1</version>
<version>3.93.0</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>oci-java-sdk-accessgovernancecp</artifactId>
Expand All @@ -15,7 +15,7 @@
<dependency>
<groupId>com.oracle.oci.sdk</groupId>
<artifactId>oci-java-sdk-common</artifactId>
<version>3.92.1</version>
<version>3.93.0</version>
</dependency>
</dependencies>
</project>
2 changes: 1 addition & 1 deletion bmc-addons/bmc-adk/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<parent>
<groupId>com.oracle.oci.sdk</groupId>
<artifactId>oci-java-sdk-addons</artifactId>
<version>3.92.1</version>
<version>3.93.0</version>
</parent>

<artifactId>oci-java-sdk-addons-adk</artifactId>
Expand Down
6 changes: 3 additions & 3 deletions bmc-addons/bmc-aispeech-realtime/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<parent>
<groupId>com.oracle.oci.sdk</groupId>
<artifactId>oci-java-sdk-addons</artifactId>
<version>3.92.1</version>
<version>3.93.0</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
Expand Down Expand Up @@ -53,12 +53,12 @@
<dependency>
<groupId>com.oracle.oci.sdk</groupId>
<artifactId>oci-java-sdk-aispeech</artifactId>
<version>3.92.1</version>
<version>3.93.0</version>
</dependency>
<dependency>
<groupId>com.oracle.oci.sdk</groupId>
<artifactId>oci-java-sdk-common-httpclient-jersey</artifactId>
<version>3.92.1</version>
<version>3.93.0</version>
<scope>compile</scope>
</dependency>
<dependency>
Expand Down
23 changes: 19 additions & 4 deletions bmc-addons/bmc-apache-configurator-jersey-addon/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<parent>
<groupId>com.oracle.oci.sdk</groupId>
<artifactId>oci-java-sdk-addons</artifactId>
<version>3.92.1</version>
<version>3.93.0</version>
<relativePath>../pom.xml</relativePath>
</parent>

Expand All @@ -17,14 +17,14 @@
<dependency>
<groupId>com.oracle.oci.sdk</groupId>
<artifactId>oci-java-sdk-bom</artifactId>
<version>3.92.1</version>
<version>3.93.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.oracle.oci.sdk</groupId>
<artifactId>oci-java-sdk-common-httpclient-jersey</artifactId>
<version>3.92.1</version>
<version>3.93.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
Expand Down Expand Up @@ -63,5 +63,20 @@
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-api-mockito2</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-module-junit4</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
</project>
</project>
Original file line number Diff line number Diff line change
Expand Up @@ -262,6 +262,18 @@ else if (!apacheConnectorProperties.isConnectionPooling()) {
}
}

/**
* Creates the connection socket factory registry.
*
* <p>SSL initialization failures are intentionally propagated. This configurator must not
* register a plaintext socket factory for the {@code https} scheme. Applications that require
* plaintext transport must explicitly provide a connection manager through {@link
* ApacheConnectorProperties}.
*
* @return the connection socket factory registry
* @throws org.apache.http.ssl.SSLInitializationException if the default SSL socket factory
* cannot be initialized
*/
private Registry<ConnectionSocketFactory> getRegistry() {
final RegistryBuilder<ConnectionSocketFactory> registryBuilder =
RegistryBuilder.<ConnectionSocketFactory>create()
Expand All @@ -284,10 +296,11 @@ private Registry<ConnectionSocketFactory> getRegistry() {
.build();
}
} catch (SSLInitializationException e) {
registry =
registryBuilder
.register("https", PlainConnectionSocketFactory.getSocketFactory())
.build();
// Fail closed: never fall back to a plaintext socket factory for the "https" scheme.
LOG.info(
"Failed to initialize SSL context for the 'https' scheme; refusing to fall"
+ " back to plain text");
throw e;
}
return registry;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
/**
* Copyright (c) 2016, 2026, Oracle and/or its affiliates. All rights reserved.
* This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license.
*/
package com.oracle.bmc.http.client.jersey.apacheconfigurator;

import com.oracle.bmc.http.client.HttpClientBuilder;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.ssl.SSLInitializationException;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;

import static org.junit.Assert.assertSame;
import static org.junit.Assert.fail;
import static org.mockito.Mockito.mock;

@RunWith(PowerMockRunner.class)
@PrepareForTest(SSLConnectionSocketFactory.class)
public class ApacheConfiguratorTest {
@Test
public void sslInitializationExceptionPropagates() {
final SSLInitializationException expected =
new SSLInitializationException("Unable to initialize SSL", null);
PowerMockito.mockStatic(SSLConnectionSocketFactory.class);
PowerMockito.when(SSLConnectionSocketFactory.getSocketFactory()).thenThrow(expected);

try {
new ApacheConfigurator().customizeClient(mock(HttpClientBuilder.class));
fail("Expected SSLInitializationException");
} catch (SSLInitializationException actual) {
assertSame(expected, actual);
}
}
}
23 changes: 19 additions & 4 deletions bmc-addons/bmc-apache-configurator-jersey3-addon/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<parent>
<groupId>com.oracle.oci.sdk</groupId>
<artifactId>oci-java-sdk-addons</artifactId>
<version>3.92.1</version>
<version>3.93.0</version>
<relativePath>../pom.xml</relativePath>
</parent>

Expand All @@ -17,14 +17,14 @@
<dependency>
<groupId>com.oracle.oci.sdk</groupId>
<artifactId>oci-java-sdk-bom</artifactId>
<version>3.92.1</version>
<version>3.93.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.oracle.oci.sdk</groupId>
<artifactId>oci-java-sdk-common-httpclient-jersey3</artifactId>
<version>3.92.1</version>
<version>3.93.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
Expand Down Expand Up @@ -63,5 +63,20 @@
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-api-mockito2</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-module-junit4</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
</project>
</project>
Original file line number Diff line number Diff line change
Expand Up @@ -262,6 +262,18 @@ else if (!apacheConnectorProperties.isConnectionPooling()) {
}
}

/**
* Creates the connection socket factory registry.
*
* <p>SSL initialization failures are intentionally propagated. This configurator must not
* register a plaintext socket factory for the {@code https} scheme. Applications that require
* plaintext transport must explicitly provide a connection manager through {@link
* ApacheConnectorProperties}.
*
* @return the connection socket factory registry
* @throws org.apache.http.ssl.SSLInitializationException if the default SSL socket factory
* cannot be initialized
*/
private Registry<ConnectionSocketFactory> getRegistry() {
final RegistryBuilder<ConnectionSocketFactory> registryBuilder =
RegistryBuilder.<ConnectionSocketFactory>create()
Expand All @@ -284,10 +296,11 @@ private Registry<ConnectionSocketFactory> getRegistry() {
.build();
}
} catch (SSLInitializationException e) {
registry =
registryBuilder
.register("https", PlainConnectionSocketFactory.getSocketFactory())
.build();
// Fail closed: never fall back to a plaintext socket factory for the "https" scheme.
LOG.info(
"Failed to initialize SSL context for the 'https' scheme; refusing to fall"
+ " back to plain text");
throw e;
}
return registry;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
/**
* Copyright (c) 2016, 2026, Oracle and/or its affiliates. All rights reserved.
* This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license.
*/
package com.oracle.bmc.http.client.jersey3.apacheconfigurator;

import com.oracle.bmc.http.client.HttpClientBuilder;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.ssl.SSLInitializationException;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;

import static org.junit.Assert.assertSame;
import static org.junit.Assert.fail;
import static org.mockito.Mockito.mock;

@RunWith(PowerMockRunner.class)
@PrepareForTest(SSLConnectionSocketFactory.class)
public class ApacheConfiguratorTest {
@Test
public void sslInitializationExceptionPropagates() {
final SSLInitializationException expected =
new SSLInitializationException("Unable to initialize SSL", null);
PowerMockito.mockStatic(SSLConnectionSocketFactory.class);
PowerMockito.when(SSLConnectionSocketFactory.getSocketFactory()).thenThrow(expected);

try {
new ApacheConfigurator().customizeClient(mock(HttpClientBuilder.class));
fail("Expected SSLInitializationException");
} catch (SSLInitializationException actual) {
assertSame(expected, actual);
}
}
}
4 changes: 2 additions & 2 deletions bmc-addons/bmc-apache-connector-provider/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<parent>
<groupId>com.oracle.oci.sdk</groupId>
<artifactId>oci-java-sdk-addons</artifactId>
<version>3.92.1</version>
<version>3.93.0</version>
<relativePath>../pom.xml</relativePath>
</parent>

Expand All @@ -18,7 +18,7 @@
<dependency>
<groupId>com.oracle.oci.sdk</groupId>
<artifactId>oci-java-sdk-common</artifactId>
<version>3.92.1</version>
<version>3.93.0</version>
</dependency>
</dependencies>
</project>
Loading