diff --git a/CHANGELOG.md b/CHANGELOG.md index a6daa149774..f8b906e1ead 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/). +## 3.91.1 - 2026-06-07 +### Added +- Support for DAC hardware shapes for self-hosted models in the Generative AI service + ## 3.91.0 - 2026-06-30 ### Added - Support for Bitbucket Cloud email and API token configuration source providers in the Resource Manager service diff --git a/bmc-accessgovernancecp/pom.xml b/bmc-accessgovernancecp/pom.xml index 2c7d74ea743..009a31c742b 100644 --- a/bmc-accessgovernancecp/pom.xml +++ b/bmc-accessgovernancecp/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-accessgovernancecp @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-addons/bmc-adk/pom.xml b/bmc-addons/bmc-adk/pom.xml index 1285eb5dc95..d92baa639bd 100644 --- a/bmc-addons/bmc-adk/pom.xml +++ b/bmc-addons/bmc-adk/pom.xml @@ -6,7 +6,7 @@ com.oracle.oci.sdk oci-java-sdk-addons - 3.91.0 + 3.91.1 oci-java-sdk-addons-adk diff --git a/bmc-addons/bmc-aispeech-realtime/pom.xml b/bmc-addons/bmc-aispeech-realtime/pom.xml index ba0f92909bd..d11475d64d1 100644 --- a/bmc-addons/bmc-aispeech-realtime/pom.xml +++ b/bmc-addons/bmc-aispeech-realtime/pom.xml @@ -5,7 +5,7 @@ com.oracle.oci.sdk oci-java-sdk-addons - 3.91.0 + 3.91.1 ../pom.xml 4.0.0 @@ -53,12 +53,12 @@ com.oracle.oci.sdk oci-java-sdk-aispeech - 3.91.0 + 3.91.1 com.oracle.oci.sdk oci-java-sdk-common-httpclient-jersey - 3.91.0 + 3.91.1 compile diff --git a/bmc-addons/bmc-aispeech-realtime/src/main/java/com/oracle/bmc/aispeech/realtimespeech/AudioChunkProcessingDetails.java b/bmc-addons/bmc-aispeech-realtime/src/main/java/com/oracle/bmc/aispeech/realtimespeech/AudioChunkProcessingDetails.java new file mode 100644 index 00000000000..eadc788dae9 --- /dev/null +++ b/bmc-addons/bmc-aispeech-realtime/src/main/java/com/oracle/bmc/aispeech/realtimespeech/AudioChunkProcessingDetails.java @@ -0,0 +1,415 @@ +/** + * 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.aispeech.realtimespeech; + +/** + * Details about an audio chunk processed by the realtime speech client.
+ * Note: Objects should always be created or deserialized using the {@link Builder}. This model + * distinguishes fields that are {@code null} because they are unset from fields that are explicitly + * set to {@code null}. This is done in the setter methods of the {@link Builder}, which maintain a + * set of all explicitly set fields called {@link Builder#__explicitlySet__}. The {@link + * #hashCode()} and {@link #equals(Object)} methods are implemented to take the explicitly set + * fields into account. The constructor, on the other hand, does not take the explicitly set fields + * into account (since the constructor cannot distinguish explicit {@code null} from unset {@code + * null}). + */ +@com.fasterxml.jackson.databind.annotation.JsonDeserialize( + builder = AudioChunkProcessingDetails.Builder.class) +@com.fasterxml.jackson.annotation.JsonFilter( + com.oracle.bmc.http.client.internal.ExplicitlySetBmcModel.EXPLICITLY_SET_FILTER_NAME) +public final class AudioChunkProcessingDetails + extends com.oracle.bmc.http.client.internal.ExplicitlySetBmcModel { + /** + * Creates an audio chunk processing details model. + * + * @param sourceSampleRate The sample rate, in hertz, of the audio bytes provided by the caller. + * @param targetSampleRate The sample rate, in hertz, sent to the realtime speech service. + * @param inputBytes The number of audio bytes provided by the caller. + * @param outputBytes The number of audio bytes sent to the realtime speech service. + * @param resampled Whether the client resampled the audio chunk before sending it. + * @param resamplingNanos The time spent preparing and resampling the audio chunk, in + * nanoseconds. + * @param sendNanos The time spent sending the audio chunk to the websocket, in nanoseconds. + */ + @Deprecated + @java.beans.ConstructorProperties({ + "sourceSampleRate", + "targetSampleRate", + "inputBytes", + "outputBytes", + "resampled", + "resamplingNanos", + "sendNanos" + }) + public AudioChunkProcessingDetails( + Integer sourceSampleRate, + Integer targetSampleRate, + Integer inputBytes, + Integer outputBytes, + Boolean resampled, + Long resamplingNanos, + Long sendNanos) { + super(); + this.sourceSampleRate = sourceSampleRate; + this.targetSampleRate = targetSampleRate; + this.inputBytes = inputBytes; + this.outputBytes = outputBytes; + this.resampled = resampled; + this.resamplingNanos = resamplingNanos; + this.sendNanos = sendNanos; + } + + /** Builder for {@link AudioChunkProcessingDetails}. */ + @com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(withPrefix = "") + public static class Builder { + @com.fasterxml.jackson.annotation.JsonProperty("sourceSampleRate") + private Integer sourceSampleRate; + + /** + * The sample rate, in hertz, of the audio bytes provided by the caller. + * + * @param sourceSampleRate the value to set + * @return this builder + */ + public Builder sourceSampleRate(Integer sourceSampleRate) { + this.sourceSampleRate = sourceSampleRate; + this.__explicitlySet__.add("sourceSampleRate"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("targetSampleRate") + private Integer targetSampleRate; + + /** + * The sample rate, in hertz, sent to the realtime speech service. + * + * @param targetSampleRate the value to set + * @return this builder + */ + public Builder targetSampleRate(Integer targetSampleRate) { + this.targetSampleRate = targetSampleRate; + this.__explicitlySet__.add("targetSampleRate"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("inputBytes") + private Integer inputBytes; + + /** + * The number of audio bytes provided by the caller. + * + * @param inputBytes the value to set + * @return this builder + */ + public Builder inputBytes(Integer inputBytes) { + this.inputBytes = inputBytes; + this.__explicitlySet__.add("inputBytes"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("outputBytes") + private Integer outputBytes; + + /** + * The number of audio bytes sent to the realtime speech service. + * + * @param outputBytes the value to set + * @return this builder + */ + public Builder outputBytes(Integer outputBytes) { + this.outputBytes = outputBytes; + this.__explicitlySet__.add("outputBytes"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("resampled") + private Boolean resampled; + + /** + * Whether the client resampled the audio chunk before sending it. + * + * @param resampled the value to set + * @return this builder + */ + public Builder resampled(Boolean resampled) { + this.resampled = resampled; + this.__explicitlySet__.add("resampled"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("resamplingNanos") + private Long resamplingNanos; + + /** + * The time spent preparing and resampling the audio chunk, in nanoseconds. + * + * @param resamplingNanos the value to set + * @return this builder + */ + public Builder resamplingNanos(Long resamplingNanos) { + this.resamplingNanos = resamplingNanos; + this.__explicitlySet__.add("resamplingNanos"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("sendNanos") + private Long sendNanos; + + /** + * The time spent sending the audio chunk to the websocket, in nanoseconds. + * + * @param sendNanos the value to set + * @return this builder + */ + public Builder sendNanos(Long sendNanos) { + this.sendNanos = sendNanos; + this.__explicitlySet__.add("sendNanos"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonIgnore + private final java.util.Set __explicitlySet__ = new java.util.HashSet(); + + /** + * Builds an {@link AudioChunkProcessingDetails} instance. + * + * @return the model instance + */ + public AudioChunkProcessingDetails build() { + AudioChunkProcessingDetails model = + new AudioChunkProcessingDetails( + this.sourceSampleRate, + this.targetSampleRate, + this.inputBytes, + this.outputBytes, + this.resampled, + this.resamplingNanos, + this.sendNanos); + for (String explicitlySetProperty : this.__explicitlySet__) { + model.markPropertyAsExplicitlySet(explicitlySetProperty); + } + return model; + } + + /** + * Copies explicitly set values from another {@link AudioChunkProcessingDetails} instance. + * + * @param model the model to copy from + * @return this builder + */ + @com.fasterxml.jackson.annotation.JsonIgnore + public Builder copy(AudioChunkProcessingDetails model) { + if (model.wasPropertyExplicitlySet("sourceSampleRate")) { + this.sourceSampleRate(model.getSourceSampleRate()); + } + if (model.wasPropertyExplicitlySet("targetSampleRate")) { + this.targetSampleRate(model.getTargetSampleRate()); + } + if (model.wasPropertyExplicitlySet("inputBytes")) { + this.inputBytes(model.getInputBytes()); + } + if (model.wasPropertyExplicitlySet("outputBytes")) { + this.outputBytes(model.getOutputBytes()); + } + if (model.wasPropertyExplicitlySet("resampled")) { + this.resampled(model.getResampled()); + } + if (model.wasPropertyExplicitlySet("resamplingNanos")) { + this.resamplingNanos(model.getResamplingNanos()); + } + if (model.wasPropertyExplicitlySet("sendNanos")) { + this.sendNanos(model.getSendNanos()); + } + return this; + } + } + + /** + * Creates a new builder. + * + * @return a new builder + */ + public static Builder builder() { + return new Builder(); + } + + /** + * Creates a builder initialized with this model's explicitly set values. + * + * @return a builder copied from this model + */ + public Builder toBuilder() { + return new Builder().copy(this); + } + + @com.fasterxml.jackson.annotation.JsonProperty("sourceSampleRate") + private final Integer sourceSampleRate; + + /** + * Gets the sample rate, in hertz, of the audio bytes provided by the caller. + * + * @return the source sample rate + */ + public Integer getSourceSampleRate() { + return sourceSampleRate; + } + + @com.fasterxml.jackson.annotation.JsonProperty("targetSampleRate") + private final Integer targetSampleRate; + + /** + * Gets the sample rate, in hertz, sent to the realtime speech service. + * + * @return the target sample rate + */ + public Integer getTargetSampleRate() { + return targetSampleRate; + } + + @com.fasterxml.jackson.annotation.JsonProperty("inputBytes") + private final Integer inputBytes; + + /** + * Gets the number of audio bytes provided by the caller. + * + * @return the input byte count + */ + public Integer getInputBytes() { + return inputBytes; + } + + @com.fasterxml.jackson.annotation.JsonProperty("outputBytes") + private final Integer outputBytes; + + /** + * Gets the number of audio bytes sent to the realtime speech service. + * + * @return the output byte count + */ + public Integer getOutputBytes() { + return outputBytes; + } + + @com.fasterxml.jackson.annotation.JsonProperty("resampled") + private final Boolean resampled; + + /** + * Gets whether the client resampled the audio chunk before sending it. + * + * @return {@code true} if the chunk was resampled, otherwise {@code false} + */ + public Boolean getResampled() { + return resampled; + } + + @com.fasterxml.jackson.annotation.JsonProperty("resamplingNanos") + private final Long resamplingNanos; + + /** + * Gets the time spent preparing and resampling the audio chunk, in nanoseconds. + * + * @return the resampling duration in nanoseconds + */ + public Long getResamplingNanos() { + return resamplingNanos; + } + + /** + * Gets the time spent preparing and resampling the audio chunk, in milliseconds. + * + * @return the resampling duration in milliseconds, or {@code 0.0} when unset + */ + public double getResamplingMillis() { + return resamplingNanos == null ? 0.0d : resamplingNanos / 1_000_000.0d; + } + + @com.fasterxml.jackson.annotation.JsonProperty("sendNanos") + private final Long sendNanos; + + /** + * Gets the time spent sending the audio chunk to the websocket, in nanoseconds. + * + * @return the send duration in nanoseconds + */ + public Long getSendNanos() { + return sendNanos; + } + + /** + * Gets the time spent sending the audio chunk to the websocket, in milliseconds. + * + * @return the send duration in milliseconds, or {@code 0.0} when unset + */ + public double getSendMillis() { + return sendNanos == null ? 0.0d : sendNanos / 1_000_000.0d; + } + + @Override + public String toString() { + return this.toString(true); + } + + /** + * Return a string representation of the object. + * + * @param includeByteArrayContents true to include the full contents of byte arrays + * @return string representation + */ + public String toString(boolean includeByteArrayContents) { + java.lang.StringBuilder sb = new java.lang.StringBuilder(); + sb.append("AudioChunkProcessingDetails("); + sb.append("super=").append(super.toString()); + sb.append("sourceSampleRate=").append(String.valueOf(this.sourceSampleRate)); + sb.append(", targetSampleRate=").append(String.valueOf(this.targetSampleRate)); + sb.append(", inputBytes=").append(String.valueOf(this.inputBytes)); + sb.append(", outputBytes=").append(String.valueOf(this.outputBytes)); + sb.append(", resampled=").append(String.valueOf(this.resampled)); + sb.append(", resamplingNanos=").append(String.valueOf(this.resamplingNanos)); + sb.append(", sendNanos=").append(String.valueOf(this.sendNanos)); + sb.append(")"); + return sb.toString(); + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (!(o instanceof AudioChunkProcessingDetails)) { + return false; + } + + AudioChunkProcessingDetails other = (AudioChunkProcessingDetails) o; + return java.util.Objects.equals(this.sourceSampleRate, other.sourceSampleRate) + && java.util.Objects.equals(this.targetSampleRate, other.targetSampleRate) + && java.util.Objects.equals(this.inputBytes, other.inputBytes) + && java.util.Objects.equals(this.outputBytes, other.outputBytes) + && java.util.Objects.equals(this.resampled, other.resampled) + && java.util.Objects.equals(this.resamplingNanos, other.resamplingNanos) + && java.util.Objects.equals(this.sendNanos, other.sendNanos) + && super.equals(other); + } + + @Override + public int hashCode() { + final int prime = 59; + int result = 1; + result = + (result * prime) + + (this.sourceSampleRate == null ? 43 : this.sourceSampleRate.hashCode()); + result = + (result * prime) + + (this.targetSampleRate == null ? 43 : this.targetSampleRate.hashCode()); + result = (result * prime) + (this.inputBytes == null ? 43 : this.inputBytes.hashCode()); + result = (result * prime) + (this.outputBytes == null ? 43 : this.outputBytes.hashCode()); + result = (result * prime) + (this.resampled == null ? 43 : this.resampled.hashCode()); + result = + (result * prime) + + (this.resamplingNanos == null ? 43 : this.resamplingNanos.hashCode()); + result = (result * prime) + (this.sendNanos == null ? 43 : this.sendNanos.hashCode()); + result = (result * prime) + super.hashCode(); + return result; + } +} diff --git a/bmc-addons/bmc-aispeech-realtime/src/main/java/com/oracle/bmc/aispeech/realtimespeech/RealtimeSpeechClient.java b/bmc-addons/bmc-aispeech-realtime/src/main/java/com/oracle/bmc/aispeech/realtimespeech/RealtimeSpeechClient.java index e232ae51093..710540820ab 100644 --- a/bmc-addons/bmc-aispeech-realtime/src/main/java/com/oracle/bmc/aispeech/realtimespeech/RealtimeSpeechClient.java +++ b/bmc-addons/bmc-aispeech-realtime/src/main/java/com/oracle/bmc/aispeech/realtimespeech/RealtimeSpeechClient.java @@ -18,6 +18,7 @@ import com.oracle.bmc.aispeech.model.RealtimeMessageSendFinalResult; import com.oracle.bmc.aispeech.model.RealtimeParameters; import com.oracle.bmc.aispeech.model.RealtimeParameters.Punctuation; +import com.oracle.bmc.aispeech.realtimespeech.internal.AudioResamplingSupport; import com.oracle.bmc.auth.BasicAuthenticationDetailsProvider; import com.oracle.bmc.http.signing.DefaultRequestSigner; import com.oracle.bmc.http.signing.RequestSigner; @@ -42,6 +43,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.concurrent.TimeUnit; /** @@ -62,6 +64,10 @@ public class RealtimeSpeechClient { private BasicAuthenticationDetailsProvider authenticationDetailsProvider; private URI destUri; private Boolean isClosureClientInitiated = false; + private AudioResamplingSupport.AudioEncodingSettings audioEncodingSettings = + AudioResamplingSupport.AudioEncodingSettings.defaultSettings(); + private Integer defaultSourceSampleRate; + private AudioResamplingSupport.StreamingAudioResampler streamingAudioResampler; private Status status; @@ -76,7 +82,7 @@ public class RealtimeSpeechClient { private final ObjectMapper objectMapper = JacksonSerializer.getDefaultObjectMapper().copy().setFilterProvider(filters); - private static final String shoudIgnoreInvalidCustomizationsParamString = + private static final String shouldIgnoreInvalidCustomizationsParamString = "shouldIgnoreInvalidCustomizations"; private static final String isAckEnabledParamString = "isAckEnabled"; private static final String encodingParamString = "encoding"; @@ -281,6 +287,12 @@ public void open(String realtimeSpeechEndpoint, RealtimeParameters parameters) throws RealtimeSpeechConnectException { try { status = Status.CONNECTING; + final EncodingNormalizationResult encodingNormalizationResult = + normalizeEncodingForService(parameters.getEncoding()); + final String effectiveEncoding = encodingNormalizationResult.normalizedEncoding; + this.defaultSourceSampleRate = encodingNormalizationResult.defaultSourceSampleRate; + this.audioEncodingSettings = AudioResamplingSupport.parseEncoding(effectiveEncoding); + this.streamingAudioResampler = null; final String customizationsJson = objectMapper.writeValueAsString(parameters.getCustomizations()); @@ -293,14 +305,13 @@ public void open(String realtimeSpeechEndpoint, RealtimeParameters parameters) isAckEnabledParamString, parameters.getIsAckEnabled().toString()); } - if (parameters.getEncoding() != null && !parameters.getEncoding().isEmpty()) { - queryParameterStringBuilder.addParameter( - encodingParamString, parameters.getEncoding()); + if (effectiveEncoding != null && !effectiveEncoding.isEmpty()) { + queryParameterStringBuilder.addParameter(encodingParamString, effectiveEncoding); } if (parameters.getShouldIgnoreInvalidCustomizations() != null) { queryParameterStringBuilder.addParameter( - shoudIgnoreInvalidCustomizationsParamString, + shouldIgnoreInvalidCustomizationsParamString, parameters.getShouldIgnoreInvalidCustomizations().toString()); } @@ -355,7 +366,7 @@ public void open(String realtimeSpeechEndpoint, RealtimeParameters parameters) LOG.info("Connecting to {} \n", destUri); final ClientUpgradeRequest request = new ClientUpgradeRequest(); - LOG.debug("Content-Type: {}", parameters.getEncoding()); + LOG.debug("Content-Type: {}", effectiveEncoding); if (!webSocketClient.isStarted()) { LOG.info("Client not started, starting it now"); @@ -387,7 +398,7 @@ public boolean isConnected() { /** * Sends the audio data of bytes to remote. * - * @param audioBytes represeting the audio data + * @param audioBytes representing the audio data * @throws RealtimeSpeechConnectException If there are errors while sending audio data */ public void sendAudioData(byte[] audioBytes) throws RealtimeSpeechConnectException { @@ -398,7 +409,31 @@ public void sendAudioData(byte[] audioBytes) throws RealtimeSpeechConnectExcepti } else { try { if (this.status.equals(Status.CONNECTED)) { - this.session.getRemote().sendBytes(ByteBuffer.wrap(audioBytes)); + final int effectiveSourceSampleRate = + defaultSourceSampleRate == null + ? audioEncodingSettings.getSampleRate() + : defaultSourceSampleRate; + final long resamplingStartNanos = System.nanoTime(); + final byte[] normalizedAudioBytes = + normalizeAudioForStreaming(audioBytes, effectiveSourceSampleRate); + final long resamplingNanos = System.nanoTime() - resamplingStartNanos; + final long sendStartNanos = System.nanoTime(); + this.session.getRemote().sendBytes(ByteBuffer.wrap(normalizedAudioBytes)); + final long sendNanos = System.nanoTime() - sendStartNanos; + if (listener != null) { + listener.onAudioChunkProcessed( + AudioChunkProcessingDetails.builder() + .sourceSampleRate(effectiveSourceSampleRate) + .targetSampleRate(audioEncodingSettings.getSampleRate()) + .inputBytes(audioBytes.length) + .outputBytes(normalizedAudioBytes.length) + .resampled( + effectiveSourceSampleRate + != audioEncodingSettings.getSampleRate()) + .resamplingNanos(resamplingNanos) + .sendNanos(sendNanos) + .build()); + } } else { this.status = Status.ERROR; @@ -420,6 +455,7 @@ public void close() { try { if (this.session != null) { + flushPendingResampledAudio(); LOG.info( "Here are the sessions shared by the client: {}", webSocketClient.getOpenSessions().stream().count()); @@ -432,6 +468,8 @@ public void close() { this.isConnected = false; this.authenticationDetailsProvider = null; + this.streamingAudioResampler = null; + this.defaultSourceSampleRate = null; } private void sendCreds(String compartmentId) { @@ -476,6 +514,7 @@ public void sendMessage(String message) { */ public void requestFinalResult() { try { + flushPendingResampledAudio(); String message = objectMapper.writeValueAsString( RealtimeMessageSendFinalResult.builder().build()); @@ -497,6 +536,79 @@ public Status getStatus() { return status; } + private byte[] normalizeAudioForStreaming(byte[] audioBytes, Integer sourceSampleRate) { + if (sourceSampleRate == null + || sourceSampleRate.intValue() == audioEncodingSettings.getSampleRate()) { + return audioBytes; + } + + AudioResamplingSupport.validateStreamingRequest( + sourceSampleRate.intValue(), audioEncodingSettings); + + if (streamingAudioResampler == null) { + streamingAudioResampler = + AudioResamplingSupport.createStreamingResampler( + sourceSampleRate.intValue(), audioEncodingSettings); + } + + return streamingAudioResampler.process(audioBytes); + } + + private EncodingNormalizationResult normalizeEncodingForService(String requestedEncoding) { + final AudioResamplingSupport.AudioEncodingSettings requestedSettings = + AudioResamplingSupport.parseEncoding(requestedEncoding); + final int requestedSampleRate = requestedSettings.getSampleRate(); + + if (requestedEncoding == null || requestedEncoding.trim().isEmpty()) { + return new EncodingNormalizationResult(requestedEncoding, null); + } + + if (AudioResamplingSupport.isServiceSupportedSampleRate(requestedSampleRate)) { + return new EncodingNormalizationResult(requestedEncoding, null); + } + + final Optional serviceTargetSampleRate = + AudioResamplingSupport.resolveServiceTargetSampleRate(requestedSampleRate); + final boolean canAutoNormalize = + serviceTargetSampleRate.isPresent() + && AudioResamplingSupport.isAutoResamplingCompatible(requestedSettings); + if (!canAutoNormalize) { + return new EncodingNormalizationResult(requestedEncoding, null); + } + + return new EncodingNormalizationResult( + AudioResamplingSupport.rewriteEncodingSampleRate( + requestedEncoding, serviceTargetSampleRate.get().intValue()), + requestedSampleRate); + } + + private void flushPendingResampledAudio() { + if (streamingAudioResampler == null || session == null) { + return; + } + + try { + final byte[] flushedAudioBytes = streamingAudioResampler.flush(); + if (flushedAudioBytes.length > 0) { + session.getRemote().sendBytes(ByteBuffer.wrap(flushedAudioBytes)); + } + } catch (IOException e) { + LOG.error("Could not flush resampled audio before finalization", e); + this.status = Status.ERROR; + } + } + + private static final class EncodingNormalizationResult { + private final String normalizedEncoding; + private final Integer defaultSourceSampleRate; + + private EncodingNormalizationResult( + String normalizedEncoding, Integer defaultSourceSampleRate) { + this.normalizedEncoding = normalizedEncoding; + this.defaultSourceSampleRate = defaultSourceSampleRate; + } + } + public static enum Status { CONNECTED, // When the connection is active CONNECTING, // When the connection is being initiated diff --git a/bmc-addons/bmc-aispeech-realtime/src/main/java/com/oracle/bmc/aispeech/realtimespeech/RealtimeSpeechClientListener.java b/bmc-addons/bmc-aispeech-realtime/src/main/java/com/oracle/bmc/aispeech/realtimespeech/RealtimeSpeechClientListener.java index abcaaab173e..1dd5f39d4de 100644 --- a/bmc-addons/bmc-aispeech-realtime/src/main/java/com/oracle/bmc/aispeech/realtimespeech/RealtimeSpeechClientListener.java +++ b/bmc-addons/bmc-aispeech-realtime/src/main/java/com/oracle/bmc/aispeech/realtimespeech/RealtimeSpeechClientListener.java @@ -9,8 +9,8 @@ import com.oracle.bmc.aispeech.model.RealtimeMessageResult; /** - * This is the RealtimeSpeechClientListner Interface. This is meant to be extended so that users can - * determine the behavior of the client. + * This is the RealtimeSpeechClientListener Interface. This is meant to be extended so that users + * can determine the behavior of the client. */ public interface RealtimeSpeechClientListener { @@ -38,7 +38,7 @@ public interface RealtimeSpeechClientListener { void onResult(RealtimeMessageResult result); /** - * An error occured in the realtime speech client. + * An error occurred in the realtime speech client. * * @param error */ @@ -53,4 +53,12 @@ public interface RealtimeSpeechClientListener { * @param connectMessage */ void onConnectMessage(RealtimeMessageConnect connectMessage); + + /** + * Audio bytes were prepared and sent to the realtime speech service. Implement this optional + * callback to inspect client-side audio processing metrics such as resampling time. + * + * @param processingDetails details about the processed audio chunk + */ + default void onAudioChunkProcessed(AudioChunkProcessingDetails processingDetails) {} } diff --git a/bmc-addons/bmc-aispeech-realtime/src/main/java/com/oracle/bmc/aispeech/realtimespeech/internal/AudioResamplingSupport.java b/bmc-addons/bmc-aispeech-realtime/src/main/java/com/oracle/bmc/aispeech/realtimespeech/internal/AudioResamplingSupport.java new file mode 100644 index 00000000000..5f741c14705 --- /dev/null +++ b/bmc-addons/bmc-aispeech-realtime/src/main/java/com/oracle/bmc/aispeech/realtimespeech/internal/AudioResamplingSupport.java @@ -0,0 +1,701 @@ +/** + * 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.aispeech.realtimespeech.internal; + +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.Optional; +import java.util.stream.Collectors; + +/** + * Internal utilities for normalizing realtime speech PCM audio to sample rates accepted by the + * service. + */ +public final class AudioResamplingSupport { + private static final int DEFAULT_SAMPLE_RATE = 16000; + private static final int DEFAULT_BIT_DEPTH = 16; + private static final int DEFAULT_CHANNELS = 1; + private static final int[] SERVICE_SUPPORTED_SAMPLE_RATES = {8000, 16000}; + private static final int[][] NORMALIZATION_CONVERSIONS = { + {24000, 16000}, + {48000, 16000}, + }; + + /* + * Linear-phase low-pass FIR coefficients used before 3:1 decimation. The same tap set is used + * for 48 kHz -> 16 kHz direct decimation and for 24 kHz -> 16 kHz after 2x zero-stuffing + * interpolation. In the interpolation path, the polyphase loop only evaluates taps that + * contribute to the current output phase and applies the interpolation gain before writing PCM. + */ + private static final double[] LP_3_TO_1_FIR = { + -2.5033838264794034e-5, + -3.6451561137378568e-5, + -1.1489993827892933e-5, + 3.9324378887465603e-5, + 6.9984193520672766e-5, + 3.7556691270439976e-5, + -4.7696645534530499e-5, + -0.00011379935461751734, + -8.4009576971176187e-5, + 4.2088177776074692e-5, + 0.00016391587447478332, + 0.00015508372993570357, + -1.253765788919669e-5, + -0.00021258262011091092, + -0.00025240598961751948, + -5.1874329668708116e-5, + 0.00024792300097682143, + 0.00037351534477673157, + 0.00016157590781788105, + -0.00025410852391986031, + -0.00051048686533259301, + -0.00032461046175409392, + 0.00021219136947965464, + 0.00064888778256045612, + 0.00054444169352930365, + -0.0001016639071691704, + -0.0007673001147209819, + -0.00081767209129386914, + -9.7269698241155101e-5, + 0.00083761858525280384, + 0.0011319450250252222, + 0.00040081933397990521, + -0.0008262743020160207, + -0.0014643282305934196, + -0.00081833650450470333, + 0.00069644717721537768, + 0.0017804679224891051, + 0.0013489288090360295, + -0.00041122152287042, + -0.0020347535966250413, + -0.0019782994815083733, + -6.2477942460992689e-5, + 0.0021716438099647051, + 0.0026761621389245617, + 0.00074944268608934995, + -0.0021281777588728801, + -0.003394541347147186, + -0.0016615884301227524, + 0.001837545335885159, + 0.0040671707022465458, + 0.0027936171643976352, + -0.001233420727213658, + -0.0046100353145374761, + -0.0041193191532029718, + 0.00025459137646049936, + 0.00492286494534436, + 0.0055888057003698156, + 0.0011507624257558831, + -0.004891042781491068, + -0.0071267634777626675, + -0.0030219790398189408, + 0.0043868863131564196, + 0.008631467181982988, + 0.0053851392366346717, + -0.0032684060793252661, + -0.0099736612552352843, + -0.0082562565027453159, + 0.0013719935383757782, + 0.010993210336541666, + 0.011651337116264694, + 0.0015082475865128093, + -0.011488721952090169, + -0.015609515327517686, + -0.0056715044416709888, + 0.011188303272599716, + 0.020245190585021479, + 0.011637590928971467, + -0.009667754909210324, + -0.025878090076785515, + -0.020500381603699786, + 0.0060989081377006418, + 0.033428666116203716, + 0.035134870175731782, + 0.0017197396227647229, + -0.046085580848361105, + -0.066230781503150371, + -0.023349941728869696, + 0.082922132071591242, + 0.21069217442624302, + 0.29738297113974183, + 0.29738297113974188, + 0.21069217442624305, + 0.082922132071591242, + -0.023349941728869693, + -0.066230781503150371, + -0.046085580848361105, + 0.0017197396227647225, + 0.035134870175731782, + 0.033428666116203716, + 0.0060989081377006409, + -0.020500381603699783, + -0.025878090076785508, + -0.0096677549092103257, + 0.011637590928971469, + 0.020245190585021472, + 0.011188303272599716, + -0.0056715044416709897, + -0.015609515327517682, + -0.011488721952090169, + 0.0015082475865128089, + 0.011651337116264699, + 0.010993210336541666, + 0.0013719935383757782, + -0.0082562565027453141, + -0.0099736612552352825, + -0.0032684060793252657, + 0.0053851392366346699, + 0.008631467181982988, + 0.0043868863131564188, + -0.0030219790398189413, + -0.0071267634777626675, + -0.0048910427814910715, + 0.0011507624257558842, + 0.005588805700369813, + 0.00492286494534436, + 0.00025459137646049936, + -0.0041193191532029726, + -0.0046100353145374752, + -0.0012334207272136583, + 0.0027936171643976361, + 0.0040671707022465458, + 0.0018375453358851592, + -0.0016615884301227509, + -0.0033945413471471847, + -0.0021281777588728797, + 0.00074944268608935049, + 0.0026761621389245612, + 0.0021716438099647056, + -6.2477942460992527e-5, + -0.0019782994815083729, + -0.0020347535966250404, + -0.00041122152287042, + 0.0013489288090360292, + 0.0017804679224891048, + 0.00069644717721537768, + -0.00081833650450470257, + -0.00146432823059342, + -0.0008262743020160207, + 0.0004008193339799063, + 0.0011319450250252222, + 0.00083761858525280373, + -9.7269698241154938e-5, + -0.00081767209129386936, + -0.00076730011472097832, + -0.00010166390716916983, + 0.00054444169352930332, + 0.00064888778256045622, + 0.00021219136947965461, + -0.00032461046175409424, + -0.00051048686533259301, + -0.00025410852391986036, + 0.0001615759078178811, + 0.00037351534477673152, + 0.00024792300097682137, + -5.1874329668708082e-5, + -0.00025240598961751942, + -0.00021258262011091095, + -1.253765788919669e-5, + 0.0001550837299357036, + 0.00016391587447478329, + 4.2088177776074685e-5, + -8.4009576971176228e-5, + -0.00011379935461751733, + -4.7696645534530512e-5, + 3.7556691270440023e-5, + 6.9984193520672793e-5, + 3.9324378887465603e-5, + -1.1489993827892933e-5, + -3.6451561137378561e-5, + -2.503383826479402e-5 + }; + private static final Map SUPPORTED_CONVERSIONS = + createSupportedConversions(); + + private AudioResamplingSupport() {} + + /** + * Creates a streaming resampler for the source sample rate and requested service encoding. + * + * @param sourceSampleRate the sample rate, in hertz, of incoming PCM audio + * @param audioEncodingSettings the target encoding settings sent to the service + * @return a stateful streaming resampler + */ + public static StreamingAudioResampler createStreamingResampler( + int sourceSampleRate, AudioEncodingSettings audioEncodingSettings) { + return createStreamingResampler( + validateResamplingRequest(sourceSampleRate, audioEncodingSettings)); + } + + /** + * Validates that a streaming resampling request is supported. + * + * @param sourceSampleRate the sample rate, in hertz, of incoming PCM audio + * @param audioEncodingSettings the target encoding settings sent to the service + */ + public static void validateStreamingRequest( + int sourceSampleRate, AudioEncodingSettings audioEncodingSettings) { + validateResamplingRequest(sourceSampleRate, audioEncodingSettings); + } + + /** + * Parses a realtime speech encoding string into normalized audio settings. + * + * @param encoding the encoding string, for example {@code audio/raw;rate=16000} + * @return parsed audio encoding settings + */ + public static AudioEncodingSettings parseEncoding(String encoding) { + return AudioEncodingSettings.fromEncoding(encoding); + } + + /** + * Resolves the service-supported target sample rate for a source sample rate that can be + * resampled by the SDK. + * + * @param sourceSampleRate the sample rate, in hertz, requested by the caller + * @return the target sample rate when SDK-side normalization is supported + */ + public static Optional resolveServiceTargetSampleRate(int sourceSampleRate) { + for (int[] conversion : NORMALIZATION_CONVERSIONS) { + if (conversion[0] == sourceSampleRate) { + return Optional.of(Integer.valueOf(conversion[1])); + } + } + return Optional.empty(); + } + + /** + * Checks whether the realtime speech service accepts a sample rate without SDK-side + * normalization. + * + * @param sampleRate the sample rate, in hertz + * @return {@code true} when the service accepts the sample rate directly + */ + public static boolean isServiceSupportedSampleRate(int sampleRate) { + for (int supportedSampleRate : SERVICE_SUPPORTED_SAMPLE_RATES) { + if (supportedSampleRate == sampleRate) { + return true; + } + } + return false; + } + + /** + * Checks whether an encoding can be normalized by the SDK resampler. + * + * @param audioEncodingSettings parsed audio encoding settings + * @return {@code true} for raw 16-bit mono PCM without a codec + */ + public static boolean isAutoResamplingCompatible(AudioEncodingSettings audioEncodingSettings) { + return audioEncodingSettings.getCodec() == null + && audioEncodingSettings.getBitDepth() == 16 + && audioEncodingSettings.getChannels() == 1; + } + + /** + * Rewrites or adds the {@code rate=} segment in a realtime speech encoding string. + * + * @param encoding the original encoding string + * @param targetSampleRate the service-supported target sample rate + * @return the encoding string with the target sample rate + */ + public static String rewriteEncodingSampleRate(String encoding, int targetSampleRate) { + final String normalizedRateSegment = "rate=" + targetSampleRate; + if (encoding == null || encoding.trim().isEmpty()) { + return "audio/raw;" + normalizedRateSegment; + } + + if (encoding.matches(".*(^|;)rate=\\d+.*")) { + return encoding.replaceFirst("(^|;)rate=\\d+", "$1" + normalizedRateSegment); + } + + return encoding + ";" + normalizedRateSegment; + } + + private static StreamingAudioResampler createStreamingResampler( + SupportedResamplingConversion conversion) { + return new Pcm16MonoStreamingResampler(conversion); + } + + private static SupportedResamplingConversion validateResamplingRequest( + int sourceSampleRate, AudioEncodingSettings audioEncodingSettings) { + if (sourceSampleRate == audioEncodingSettings.getSampleRate()) { + return null; + } + + final SupportedResamplingConversion conversion = + SUPPORTED_CONVERSIONS.get( + key(sourceSampleRate, audioEncodingSettings.getSampleRate())); + if (conversion == null) { + throw new IllegalArgumentException( + "Resampling is only supported for the following PCM output conversions: " + + supportedConversionsDescription() + + ". Use 8000 Hz or 16000 Hz audio as-is with matching encoding."); + } + + if (audioEncodingSettings.getCodec() != null) { + throw new IllegalArgumentException( + "Audio resampling is only supported for raw PCM audio streams without a codec."); + } + + if (audioEncodingSettings.getBitDepth() != 16) { + throw new IllegalArgumentException( + "Audio resampling currently supports only 16-bit PCM audio."); + } + + if (audioEncodingSettings.getChannels() != 1) { + throw new IllegalArgumentException( + "Audio resampling currently supports only mono PCM audio."); + } + + return conversion; + } + + private static Map createSupportedConversions() { + final Map conversions = new LinkedHashMap<>(); + registerConversion( + conversions, + new SupportedResamplingConversion( + 24000, 16000, 2, 3, LP_3_TO_1_FIR, "24000 Hz -> 16000 Hz")); + registerConversion( + conversions, + new SupportedResamplingConversion( + 48000, 16000, 1, 3, LP_3_TO_1_FIR, "48000 Hz -> 16000 Hz")); + return conversions; + } + + private static void registerConversion( + Map conversions, + SupportedResamplingConversion conversion) { + conversions.put(key(conversion.sourceSampleRate, conversion.targetSampleRate), conversion); + } + + private static String supportedConversionsDescription() { + return SUPPORTED_CONVERSIONS.values().stream() + .map(conversion -> conversion.description) + .collect(Collectors.joining(", ")); + } + + private static String key(int sourceSampleRate, int targetSampleRate) { + return sourceSampleRate + "->" + targetSampleRate; + } + + /** Parsed audio encoding settings used to validate realtime speech audio streams. */ + public static final class AudioEncodingSettings { + private final int sampleRate; + private final String codec; + private final int bitDepth; + private final int channels; + + private AudioEncodingSettings(int sampleRate, String codec, int bitDepth, int channels) { + this.sampleRate = sampleRate; + this.codec = codec; + this.bitDepth = bitDepth; + this.channels = channels; + } + + /** Returns the default realtime speech PCM encoding settings. */ + public static AudioEncodingSettings defaultSettings() { + return new AudioEncodingSettings( + DEFAULT_SAMPLE_RATE, null, DEFAULT_BIT_DEPTH, DEFAULT_CHANNELS); + } + + /** + * Parses a realtime speech encoding string. + * + * @param encoding the encoding string to parse + * @return parsed audio encoding settings + */ + public static AudioEncodingSettings fromEncoding(String encoding) { + if (encoding == null || encoding.trim().isEmpty()) { + return defaultSettings(); + } + + int sampleRate = DEFAULT_SAMPLE_RATE; + int bitDepth = DEFAULT_BIT_DEPTH; + int channels = DEFAULT_CHANNELS; + String codec = null; + + final String[] segments = encoding.split(";"); + for (String segment : segments) { + final String[] keyValue = segment.split("=", 2); + if (keyValue.length != 2) { + continue; + } + + final String key = keyValue[0].trim(); + final String value = keyValue[1].trim(); + + switch (key) { + case "rate": + sampleRate = Integer.parseInt(value); + break; + case "codec": + codec = value; + break; + case "bitDepth": + bitDepth = Integer.parseInt(value); + break; + case "channels": + channels = Integer.parseInt(value); + break; + default: + break; + } + } + + return new AudioEncodingSettings(sampleRate, codec, bitDepth, channels); + } + + /** Returns the sample rate, in hertz. */ + public int getSampleRate() { + return sampleRate; + } + + /** Returns the codec name, or {@code null} for raw PCM audio. */ + public String getCodec() { + return codec; + } + + /** Returns the PCM bit depth. */ + public int getBitDepth() { + return bitDepth; + } + + /** Returns the number of PCM audio channels. */ + public int getChannels() { + return channels; + } + } + + /** + * Stateful resampler for processing realtime audio chunks without dropping boundary samples. + */ + public interface StreamingAudioResampler { + /** + * Resamples an audio chunk. + * + * @param audioBytes the PCM audio bytes to resample + * @return resampled PCM audio bytes + */ + byte[] process(byte[] audioBytes); + + /** + * Emits any delayed samples and resets the resampler state. + * + * @return remaining resampled PCM audio bytes + */ + byte[] flush(); + } + + /** Describes one supported source-to-target sample-rate conversion. */ + private static final class SupportedResamplingConversion { + private final int sourceSampleRate; + private final int targetSampleRate; + private final int interpolationFactor; + private final int decimationFactor; + private final double[] filter; + private final String description; + + private SupportedResamplingConversion( + int sourceSampleRate, + int targetSampleRate, + int interpolationFactor, + int decimationFactor, + double[] filter, + String description) { + this.sourceSampleRate = sourceSampleRate; + this.targetSampleRate = targetSampleRate; + this.interpolationFactor = interpolationFactor; + this.decimationFactor = decimationFactor; + this.filter = filter; + this.description = description; + } + } + + /** Streaming FIR resampler for 16-bit mono little-endian PCM audio. */ + private static final class Pcm16MonoStreamingResampler implements StreamingAudioResampler { + private final SupportedResamplingConversion conversion; + private float[] filterHistory = new float[0]; + private Float pendingSample; + private int decimationPhase = 0; + private long upsampledSampleIndex = 0L; + + private Pcm16MonoStreamingResampler(SupportedResamplingConversion conversion) { + this.conversion = conversion; + } + + @Override + public byte[] process(byte[] audioBytes) { + if (audioBytes.length == 0) { + return audioBytes; + } + + if (audioBytes.length % 2 != 0) { + throw new IllegalArgumentException( + "PCM resampling expects 16-bit audio aligned to 2-byte samples."); + } + + final float[] pcmSamples = decodePcm16(audioBytes); + final float[] upsampled = upsampleStreaming(pcmSamples, false); + return filterGainAndDecimateToPcm16Streaming(upsampled); + } + + @Override + public byte[] flush() { + final float[] upsampled = upsampleStreaming(new float[0], true); + final byte[] flushedAudioBytes = filterGainAndDecimateToPcm16Streaming(upsampled); + reset(); + return flushedAudioBytes; + } + + private static float[] decodePcm16(byte[] audioBytes) { + final float[] samples = new float[audioBytes.length / 2]; + for (int i = 0; i < samples.length; i++) { + final int lo = audioBytes[i * 2] & 0xff; + final int hi = audioBytes[i * 2 + 1]; + final short sample = (short) ((hi << 8) | lo); + samples[i] = sample / 32768.0f; + } + return samples; + } + + private float[] upsampleStreaming(float[] inputSamples, boolean finalize) { + if (conversion.interpolationFactor <= 1) { + return inputSamples; + } + + final int sourceLength = inputSamples.length + (pendingSample == null ? 0 : 1); + if (sourceLength == 0) { + return new float[0]; + } + + if (!finalize && sourceLength == 1) { + if (pendingSample == null) { + pendingSample = Float.valueOf(inputSamples[0]); + } + return new float[0]; + } + + final float[] sourceSamples = new float[sourceLength]; + int sourceIndex = 0; + if (pendingSample != null) { + sourceSamples[sourceIndex++] = pendingSample.floatValue(); + } + System.arraycopy(inputSamples, 0, sourceSamples, sourceIndex, inputSamples.length); + + final int interpolationFactor = conversion.interpolationFactor; + final int sourceSamplesToEmit = + finalize ? sourceSamples.length : sourceSamples.length - 1; + final float[] upsampled = new float[sourceSamplesToEmit * interpolationFactor]; + + for (int i = 0; i < sourceSamplesToEmit; i++) { + upsampled[i * interpolationFactor] = sourceSamples[i]; + } + + if (finalize) { + pendingSample = null; + } else { + pendingSample = sourceSamples[sourceSamples.length - 1]; + } + + return upsampled; + } + + private byte[] filterGainAndDecimateToPcm16Streaming(float[] inputSamples) { + if (inputSamples.length == 0) { + return new byte[0]; + } + + final double[] filter = conversion.filter; + final int interpolationFactor = conversion.interpolationFactor; + final int decimationFactor = conversion.decimationFactor; + final float gain = interpolationFactor; + + final float[] workBuffer = new float[filterHistory.length + inputSamples.length]; + System.arraycopy(filterHistory, 0, workBuffer, 0, filterHistory.length); + System.arraycopy( + inputSamples, 0, workBuffer, filterHistory.length, inputSamples.length); + + final int startIndex = decimationPhase == 0 ? 0 : decimationFactor - decimationPhase; + decimationPhase = (decimationPhase + inputSamples.length) % decimationFactor; + if (startIndex >= inputSamples.length) { + upsampledSampleIndex += inputSamples.length; + final int historyLength = Math.min(filter.length - 1, workBuffer.length); + filterHistory = new float[historyLength]; + System.arraycopy( + workBuffer, + workBuffer.length - historyLength, + filterHistory, + 0, + historyLength); + return new byte[0]; + } + + final int outputSamples = + 1 + ((inputSamples.length - 1 - startIndex) / decimationFactor); + final byte[] outputBytes = new byte[outputSamples * 2]; + int byteIndex = 0; + int nextEmit = startIndex; + + for (int i = 0; i < inputSamples.length; i++) { + double acc = 0; + final int workIndex = filterHistory.length + i; + if (interpolationFactor > 1) { + final int phase = (int) ((upsampledSampleIndex + i) % interpolationFactor); + for (int k = phase; k < filter.length; k += interpolationFactor) { + final int sampleIndex = workIndex - k; + if (sampleIndex < 0) { + break; + } + acc += workBuffer[sampleIndex] * filter[k]; + } + } else { + for (int k = 0; k < filter.length; k++) { + final int sampleIndex = workIndex - k; + if (sampleIndex < 0) { + break; + } + acc += workBuffer[sampleIndex] * filter[k]; + } + } + + if (i == nextEmit) { + final float sample = interpolationFactor > 1 ? clamp(acc * gain) : clamp(acc); + final short pcm16 = toPcm16(sample); + outputBytes[byteIndex++] = (byte) (pcm16 & 0xff); + outputBytes[byteIndex++] = (byte) ((pcm16 >> 8) & 0xff); + nextEmit += decimationFactor; + if (nextEmit >= inputSamples.length) { + nextEmit = inputSamples.length; + } + } + } + + upsampledSampleIndex += inputSamples.length; + final int historyLength = Math.min(filter.length - 1, workBuffer.length); + filterHistory = new float[historyLength]; + System.arraycopy( + workBuffer, workBuffer.length - historyLength, filterHistory, 0, historyLength); + return outputBytes; + } + + private void reset() { + filterHistory = new float[0]; + pendingSample = null; + decimationPhase = 0; + upsampledSampleIndex = 0L; + } + + private static float clamp(double value) { + return (float) Math.max(Math.min(value, 1.0d), -1.0d); + } + + private static short toPcm16(float value) { + final float clipped = Math.max(-1.0f, Math.min(1.0f, value)); + return (short) Math.round(clipped * 32767.0f); + } + } +} diff --git a/bmc-addons/bmc-aispeech-realtime/src/test/java/com/oracle/bmc/aispeech/realtimespeech/RealtimeSpeechClientTest.java b/bmc-addons/bmc-aispeech-realtime/src/test/java/com/oracle/bmc/aispeech/realtimespeech/RealtimeSpeechClientTest.java index 0ee0d4a0a2f..5789b3424c6 100644 --- a/bmc-addons/bmc-aispeech-realtime/src/test/java/com/oracle/bmc/aispeech/realtimespeech/RealtimeSpeechClientTest.java +++ b/bmc-addons/bmc-aispeech-realtime/src/test/java/com/oracle/bmc/aispeech/realtimespeech/RealtimeSpeechClientTest.java @@ -408,6 +408,33 @@ public void testModelTypeWhisper() Assert.assertEquals(expectedURIString, uriArgumentCaptor.getValue().toString()); } + @Test + public void testOpenNormalizesResampleableEncoding() + throws IOException, RealtimeSpeechConnectException, ExecutionException, + InterruptedException, TimeoutException { + Mockito.doReturn(true).when(mockWebsocketClient).isStarted(); + + Future futureMock = mock(Future.class); + when(mockWebsocketClient.connect(any(), any(), any())).thenReturn(futureMock); + doReturn(mockSession).when(futureMock).get(eq(10), eq(TimeUnit.SECONDS)); + + final RealtimeParameters realtimeParameters = + RealtimeParameters.builder().encoding("audio/raw;rate=48000").build(); + + realtimeSpeechClient.open("wss://test-endpoint.com", realtimeParameters); + + ArgumentCaptor uriArgumentCaptor = ArgumentCaptor.forClass(URI.class); + ArgumentCaptor upgradeRequestArgCaptor = + ArgumentCaptor.forClass(ClientUpgradeRequest.class); + Mockito.verify(mockWebsocketClient, times(1)) + .connect(any(), uriArgumentCaptor.capture(), upgradeRequestArgCaptor.capture()); + + final String expectedURIString = + "wss://test-endpoint.com/ws/transcribe/stream?encoding=audio%2Fraw%3Brate%3D16000"; + + Assert.assertEquals(expectedURIString, uriArgumentCaptor.getValue().toString()); + } + @Test public void testOnOpenWithSingleParameters() throws IOException, RealtimeSpeechConnectException, InvocationTargetException, diff --git a/bmc-addons/bmc-aispeech-realtime/src/test/java/com/oracle/bmc/aispeech/realtimespeech/internal/AudioResamplingSupportTest.java b/bmc-addons/bmc-aispeech-realtime/src/test/java/com/oracle/bmc/aispeech/realtimespeech/internal/AudioResamplingSupportTest.java new file mode 100644 index 00000000000..6f6e880878e --- /dev/null +++ b/bmc-addons/bmc-aispeech-realtime/src/test/java/com/oracle/bmc/aispeech/realtimespeech/internal/AudioResamplingSupportTest.java @@ -0,0 +1,166 @@ +/** + * 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.aispeech.realtimespeech.internal; + +import org.junit.Assert; +import org.junit.Test; + +import java.util.Arrays; +import java.util.Locale; +import java.util.Optional; + +public class AudioResamplingSupportTest { + @Test + public void testResolveServiceTargetSampleRate() { + Assert.assertEquals( + Optional.of(Integer.valueOf(16000)), + AudioResamplingSupport.resolveServiceTargetSampleRate(24000)); + Assert.assertEquals( + Optional.of(Integer.valueOf(16000)), + AudioResamplingSupport.resolveServiceTargetSampleRate(48000)); + Assert.assertFalse( + AudioResamplingSupport.resolveServiceTargetSampleRate(16000).isPresent()); + Assert.assertFalse( + AudioResamplingSupport.resolveServiceTargetSampleRate(44100).isPresent()); + } + + @Test + public void testParseEncodingDefaultsAndSegments() { + AudioResamplingSupport.AudioEncodingSettings defaultSettings = + AudioResamplingSupport.parseEncoding(null); + Assert.assertEquals(16000, defaultSettings.getSampleRate()); + Assert.assertNull(defaultSettings.getCodec()); + Assert.assertEquals(16, defaultSettings.getBitDepth()); + Assert.assertEquals(1, defaultSettings.getChannels()); + + AudioResamplingSupport.AudioEncodingSettings settings = + AudioResamplingSupport.parseEncoding( + "audio/raw;rate=48000;bitDepth=24;channels=2;codec=mulaw"); + Assert.assertEquals(48000, settings.getSampleRate()); + Assert.assertEquals("mulaw", settings.getCodec()); + Assert.assertEquals(24, settings.getBitDepth()); + Assert.assertEquals(2, settings.getChannels()); + } + + @Test + public void testServiceRateAndCompatibilityChecks() { + Assert.assertTrue(AudioResamplingSupport.isServiceSupportedSampleRate(8000)); + Assert.assertTrue(AudioResamplingSupport.isServiceSupportedSampleRate(16000)); + Assert.assertFalse(AudioResamplingSupport.isServiceSupportedSampleRate(24000)); + + Assert.assertTrue( + AudioResamplingSupport.isAutoResamplingCompatible( + AudioResamplingSupport.parseEncoding("audio/raw;rate=24000"))); + Assert.assertFalse( + AudioResamplingSupport.isAutoResamplingCompatible( + AudioResamplingSupport.parseEncoding("audio/raw;rate=24000;codec=mulaw"))); + Assert.assertFalse( + AudioResamplingSupport.isAutoResamplingCompatible( + AudioResamplingSupport.parseEncoding("audio/raw;rate=24000;bitDepth=24"))); + Assert.assertFalse( + AudioResamplingSupport.isAutoResamplingCompatible( + AudioResamplingSupport.parseEncoding("audio/raw;rate=24000;channels=2"))); + } + + @Test + public void testRewriteEncodingSampleRate() { + Assert.assertEquals( + "audio/raw;rate=16000", + AudioResamplingSupport.rewriteEncodingSampleRate(null, 16000)); + Assert.assertEquals( + "audio/raw;rate=16000", + AudioResamplingSupport.rewriteEncodingSampleRate("audio/raw;rate=24000", 16000)); + Assert.assertEquals( + "audio/raw;rate=16000;bitDepth=16", + AudioResamplingSupport.rewriteEncodingSampleRate( + "audio/raw;rate=48000;bitDepth=16", 16000)); + Assert.assertEquals( + "audio/raw;bitDepth=16;rate=16000", + AudioResamplingSupport.rewriteEncodingSampleRate("audio/raw;bitDepth=16", 16000)); + } + + @Test + public void testValidateStreamingRequestRejectsUnsupportedInputs() { + assertInvalidRequest("audio/raw;rate=16000", 44100); + assertInvalidRequest("audio/raw;rate=16000;codec=mulaw", 24000); + assertInvalidRequest("audio/raw;rate=16000;bitDepth=24", 24000); + assertInvalidRequest("audio/raw;rate=16000;channels=2", 24000); + } + + @Test + public void testStreamingResamplerMatchesOneShotForSupportedConversions() { + assertChunkedResamplingMatchesOneShot(24000, 16000); + assertChunkedResamplingMatchesOneShot(48000, 16000); + } + + @Test + public void testStreamingResamplerRejectsUnalignedPcm16Input() { + AudioResamplingSupport.StreamingAudioResampler resampler = + AudioResamplingSupport.createStreamingResampler( + 24000, AudioResamplingSupport.parseEncoding("audio/raw;rate=16000")); + + try { + resampler.process(new byte[] {1}); + Assert.fail("Expected unaligned PCM input to be rejected"); + } catch (IllegalArgumentException e) { + Assert.assertTrue(e.getMessage().contains("2-byte samples")); + } + } + + private static void assertInvalidRequest(String encoding, int sourceSampleRate) { + try { + AudioResamplingSupport.validateStreamingRequest( + sourceSampleRate, AudioResamplingSupport.parseEncoding(encoding)); + Assert.fail("Expected resampling request to be rejected for " + encoding); + } catch (IllegalArgumentException e) { + Assert.assertTrue(e.getMessage().toLowerCase(Locale.US).contains("resampling")); + } + } + + private static void assertChunkedResamplingMatchesOneShot( + int sourceSampleRate, int targetSampleRate) { + byte[] audioBytes = createPcm16Ramp(960); + AudioResamplingSupport.AudioEncodingSettings targetSettings = + AudioResamplingSupport.parseEncoding("audio/raw;rate=" + targetSampleRate); + + AudioResamplingSupport.StreamingAudioResampler oneShotResampler = + AudioResamplingSupport.createStreamingResampler(sourceSampleRate, targetSettings); + byte[] oneShot = append(oneShotResampler.process(audioBytes), oneShotResampler.flush()); + + AudioResamplingSupport.StreamingAudioResampler chunkedResampler = + AudioResamplingSupport.createStreamingResampler(sourceSampleRate, targetSettings); + byte[] chunked = + append( + append( + chunkedResampler.process(Arrays.copyOfRange(audioBytes, 0, 638)), + chunkedResampler.process( + Arrays.copyOfRange(audioBytes, 638, 1282))), + append( + chunkedResampler.process( + Arrays.copyOfRange(audioBytes, 1282, audioBytes.length)), + chunkedResampler.flush())); + + Assert.assertArrayEquals(oneShot, chunked); + Assert.assertTrue(oneShot.length > 0); + Assert.assertEquals(0, oneShot.length % 2); + } + + private static byte[] createPcm16Ramp(int sampleCount) { + byte[] audioBytes = new byte[sampleCount * 2]; + for (int i = 0; i < sampleCount; i++) { + short sample = (short) ((i % 200) * 120 - 12000); + audioBytes[i * 2] = (byte) (sample & 0xff); + audioBytes[i * 2 + 1] = (byte) ((sample >> 8) & 0xff); + } + return audioBytes; + } + + private static byte[] append(byte[] first, byte[] second) { + byte[] combined = new byte[first.length + second.length]; + System.arraycopy(first, 0, combined, 0, first.length); + System.arraycopy(second, 0, combined, first.length, second.length); + return combined; + } +} diff --git a/bmc-addons/bmc-apache-configurator-jersey-addon/pom.xml b/bmc-addons/bmc-apache-configurator-jersey-addon/pom.xml index 15c65bbfa60..9c020876b2a 100644 --- a/bmc-addons/bmc-apache-configurator-jersey-addon/pom.xml +++ b/bmc-addons/bmc-apache-configurator-jersey-addon/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk-addons - 3.91.0 + 3.91.1 ../pom.xml @@ -17,14 +17,14 @@ com.oracle.oci.sdk oci-java-sdk-bom - 3.91.0 + 3.91.1 pom import com.oracle.oci.sdk oci-java-sdk-common-httpclient-jersey - 3.91.0 + 3.91.1 pom import diff --git a/bmc-addons/bmc-apache-configurator-jersey3-addon/pom.xml b/bmc-addons/bmc-apache-configurator-jersey3-addon/pom.xml index c6776b7c3fa..e813dc91c21 100644 --- a/bmc-addons/bmc-apache-configurator-jersey3-addon/pom.xml +++ b/bmc-addons/bmc-apache-configurator-jersey3-addon/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk-addons - 3.91.0 + 3.91.1 ../pom.xml @@ -17,14 +17,14 @@ com.oracle.oci.sdk oci-java-sdk-bom - 3.91.0 + 3.91.1 pom import com.oracle.oci.sdk oci-java-sdk-common-httpclient-jersey3 - 3.91.0 + 3.91.1 pom import diff --git a/bmc-addons/bmc-apache-connector-provider/pom.xml b/bmc-addons/bmc-apache-connector-provider/pom.xml index 77c2fa0d06a..980982e88aa 100644 --- a/bmc-addons/bmc-apache-connector-provider/pom.xml +++ b/bmc-addons/bmc-apache-connector-provider/pom.xml @@ -5,7 +5,7 @@ com.oracle.oci.sdk oci-java-sdk-addons - 3.91.0 + 3.91.1 ../pom.xml @@ -18,7 +18,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-addons/bmc-oke-workload-identity/pom.xml b/bmc-addons/bmc-oke-workload-identity/pom.xml index 4136a84d4fa..77e29ef454b 100644 --- a/bmc-addons/bmc-oke-workload-identity/pom.xml +++ b/bmc-addons/bmc-oke-workload-identity/pom.xml @@ -4,7 +4,7 @@ oci-java-sdk-addons com.oracle.oci.sdk - 3.91.0 + 3.91.1 4.0.0 @@ -38,25 +38,25 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 compile com.oracle.oci.sdk oci-java-sdk-core - 3.91.0 + 3.91.1 test com.oracle.oci.sdk oci-java-sdk-identity - 3.91.0 + 3.91.1 test com.oracle.oci.sdk oci-java-sdk-keymanagement - 3.91.0 + 3.91.1 test diff --git a/bmc-addons/bmc-resteasy-client-configurator/pom.xml b/bmc-addons/bmc-resteasy-client-configurator/pom.xml index 3f377a1df93..487097a4c2f 100644 --- a/bmc-addons/bmc-resteasy-client-configurator/pom.xml +++ b/bmc-addons/bmc-resteasy-client-configurator/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk-addons - 3.91.0 + 3.91.1 ../pom.xml @@ -23,7 +23,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-addons/bmc-sasl-oke-workload-identity/pom.xml b/bmc-addons/bmc-sasl-oke-workload-identity/pom.xml index 90dd9293a81..983e7317326 100644 --- a/bmc-addons/bmc-sasl-oke-workload-identity/pom.xml +++ b/bmc-addons/bmc-sasl-oke-workload-identity/pom.xml @@ -4,7 +4,7 @@ oci-java-sdk-addons com.oracle.oci.sdk - 3.91.0 + 3.91.1 ../pom.xml 4.0.0 @@ -39,13 +39,13 @@ com.oracle.oci.sdk oci-java-sdk-addons-sasl - 3.91.0 + 3.91.1 compile com.oracle.oci.sdk oci-java-sdk-addons-oke-workload-identity - 3.91.0 + 3.91.1 compile diff --git a/bmc-addons/bmc-sasl/pom.xml b/bmc-addons/bmc-sasl/pom.xml index 4866bd1ff3a..1489845435b 100644 --- a/bmc-addons/bmc-sasl/pom.xml +++ b/bmc-addons/bmc-sasl/pom.xml @@ -5,7 +5,7 @@ com.oracle.oci.sdk oci-java-sdk-addons - 3.91.0 + 3.91.1 ../pom.xml @@ -61,7 +61,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 diff --git a/bmc-addons/bmc-sse-support-jersey3/pom.xml b/bmc-addons/bmc-sse-support-jersey3/pom.xml index 5307f680c24..bd696691eb9 100644 --- a/bmc-addons/bmc-sse-support-jersey3/pom.xml +++ b/bmc-addons/bmc-sse-support-jersey3/pom.xml @@ -5,7 +5,7 @@ oci-java-sdk-addons com.oracle.oci.sdk - 3.91.0 + 3.91.1 ../pom.xml 4.0.0 @@ -150,12 +150,12 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 com.oracle.oci.sdk oci-java-sdk-generativeaiinference - 3.91.0 + 3.91.1 test @@ -164,7 +164,7 @@ but the code in it needs it. --> com.oracle.oci.sdk oci-java-sdk-common-httpclient-jersey3 - 3.91.0 + 3.91.1 diff --git a/bmc-addons/bmc-sse-support/pom.xml b/bmc-addons/bmc-sse-support/pom.xml index 3bbdfe301be..1991df0d2d8 100644 --- a/bmc-addons/bmc-sse-support/pom.xml +++ b/bmc-addons/bmc-sse-support/pom.xml @@ -5,7 +5,7 @@ oci-java-sdk-addons com.oracle.oci.sdk - 3.91.0 + 3.91.1 ../pom.xml 4.0.0 @@ -150,12 +150,12 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 com.oracle.oci.sdk oci-java-sdk-generativeaiinference - 3.91.0 + 3.91.1 test @@ -164,7 +164,7 @@ but the code in it needs it. --> com.oracle.oci.sdk oci-java-sdk-common-httpclient-jersey - 3.91.0 + 3.91.1 diff --git a/bmc-addons/pom.xml b/bmc-addons/pom.xml index 2521d71e7fa..50ecdfa1ce2 100644 --- a/bmc-addons/pom.xml +++ b/bmc-addons/pom.xml @@ -5,7 +5,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml diff --git a/bmc-adm/pom.xml b/bmc-adm/pom.xml index f073e84902f..9fab15ae54b 100644 --- a/bmc-adm/pom.xml +++ b/bmc-adm/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-adm @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-aidataplatform/pom.xml b/bmc-aidataplatform/pom.xml index be6e3f8cf33..5814e18b948 100644 --- a/bmc-aidataplatform/pom.xml +++ b/bmc-aidataplatform/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-aidataplatform @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-aidocument/pom.xml b/bmc-aidocument/pom.xml index 3c34ef366aa..313d4487919 100644 --- a/bmc-aidocument/pom.xml +++ b/bmc-aidocument/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-aidocument @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-ailanguage/pom.xml b/bmc-ailanguage/pom.xml index 48c0a4049dd..c0df976bc73 100644 --- a/bmc-ailanguage/pom.xml +++ b/bmc-ailanguage/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-ailanguage @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-aispeech/pom.xml b/bmc-aispeech/pom.xml index 355c1d6a16c..2a0b2729236 100644 --- a/bmc-aispeech/pom.xml +++ b/bmc-aispeech/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-aispeech @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-aivision/pom.xml b/bmc-aivision/pom.xml index ef85f968bbe..113dd0b5602 100644 --- a/bmc-aivision/pom.xml +++ b/bmc-aivision/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-aivision @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-analytics/pom.xml b/bmc-analytics/pom.xml index 4de9b72711a..24f39d4199f 100644 --- a/bmc-analytics/pom.xml +++ b/bmc-analytics/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-analytics @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-announcementsservice/pom.xml b/bmc-announcementsservice/pom.xml index a077e0b420e..74fe763d2df 100644 --- a/bmc-announcementsservice/pom.xml +++ b/bmc-announcementsservice/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-announcementsservice @@ -16,7 +16,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-apiaccesscontrol/pom.xml b/bmc-apiaccesscontrol/pom.xml index 7749f9a3896..aea4e2f0f2c 100644 --- a/bmc-apiaccesscontrol/pom.xml +++ b/bmc-apiaccesscontrol/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-apiaccesscontrol @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-apigateway/pom.xml b/bmc-apigateway/pom.xml index 32c00b08319..ae194c2eea9 100644 --- a/bmc-apigateway/pom.xml +++ b/bmc-apigateway/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-apigateway @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-apiplatform/pom.xml b/bmc-apiplatform/pom.xml index d6c8c20c344..71ae648000b 100644 --- a/bmc-apiplatform/pom.xml +++ b/bmc-apiplatform/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-apiplatform @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-apmconfig/pom.xml b/bmc-apmconfig/pom.xml index 8813beb05ee..6cdcebf44a2 100644 --- a/bmc-apmconfig/pom.xml +++ b/bmc-apmconfig/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-apmconfig @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-apmcontrolplane/pom.xml b/bmc-apmcontrolplane/pom.xml index 7b68012a188..4bbc356c396 100644 --- a/bmc-apmcontrolplane/pom.xml +++ b/bmc-apmcontrolplane/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-apmcontrolplane @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-apmsynthetics/pom.xml b/bmc-apmsynthetics/pom.xml index 7e93d7da8fc..efc49c9cadb 100644 --- a/bmc-apmsynthetics/pom.xml +++ b/bmc-apmsynthetics/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-apmsynthetics @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-apmtraces/pom.xml b/bmc-apmtraces/pom.xml index d162539848d..2c0562081d6 100644 --- a/bmc-apmtraces/pom.xml +++ b/bmc-apmtraces/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-apmtraces @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-appmgmtcontrol/pom.xml b/bmc-appmgmtcontrol/pom.xml index 54f57cbff74..174021b93f2 100644 --- a/bmc-appmgmtcontrol/pom.xml +++ b/bmc-appmgmtcontrol/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-appmgmtcontrol @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-artifacts/pom.xml b/bmc-artifacts/pom.xml index 61f0b2dd7d8..0c58abd3a10 100644 --- a/bmc-artifacts/pom.xml +++ b/bmc-artifacts/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-artifacts @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-audit/pom.xml b/bmc-audit/pom.xml index c8d684aaa95..8d143f458a7 100644 --- a/bmc-audit/pom.xml +++ b/bmc-audit/pom.xml @@ -5,7 +5,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml @@ -18,7 +18,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 diff --git a/bmc-autoscaling/pom.xml b/bmc-autoscaling/pom.xml index e1070bd678a..da671f708d2 100644 --- a/bmc-autoscaling/pom.xml +++ b/bmc-autoscaling/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-autoscaling @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-bastion/pom.xml b/bmc-bastion/pom.xml index c7f8a00e0c5..efabddcb2b8 100644 --- a/bmc-bastion/pom.xml +++ b/bmc-bastion/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-bastion @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-batch/pom.xml b/bmc-batch/pom.xml index 668194a20cd..b0780a54b49 100644 --- a/bmc-batch/pom.xml +++ b/bmc-batch/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-batch @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-bds/pom.xml b/bmc-bds/pom.xml index 07265e0cd01..7421f40ddc0 100644 --- a/bmc-bds/pom.xml +++ b/bmc-bds/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-bds @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-blockchain/pom.xml b/bmc-blockchain/pom.xml index ca64d964c11..2e4dddd915a 100644 --- a/bmc-blockchain/pom.xml +++ b/bmc-blockchain/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-blockchain @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-bom/pom.xml b/bmc-bom/pom.xml index 27db67d164b..cd22222b73f 100644 --- a/bmc-bom/pom.xml +++ b/bmc-bom/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.oracle.oci.sdk - 3.91.0 + 3.91.1 oci-java-sdk-bom pom Oracle Cloud Infrastructure SDK - BOM @@ -38,1111 +38,1111 @@ com.oracle.oci.sdk oci-java-sdk-circuitbreaker - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-common-httpclient - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-common-httpclient-jersey - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-common-httpclient-jersey3 - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-enforcer-rules - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-shaded-full - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-audit - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-containerengine - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-core - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-database - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-dns - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-email - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-objectstorage-generated - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-objectstorage-extensions - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-filestorage - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-identity - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-loadbalancer - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-objectstorage - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-addons-apache-configurator-jersey - 3.91.0 + 3.91.1 com.oracle.oci.sdk oci-java-sdk-addons-apache-configurator-jersey3 - 3.91.0 + 3.91.1 com.oracle.oci.sdk oci-java-sdk-addons-resteasy-client-configurator - 3.91.0 + 3.91.1 com.oracle.oci.sdk oci-java-sdk-addons-sasl - 3.91.0 + 3.91.1 com.oracle.oci.sdk oci-java-sdk-addons-oke-workload-identity - 3.91.0 + 3.91.1 com.oracle.oci.sdk oci-java-sdk-addons-sasl-oke-workload-identity - 3.91.0 + 3.91.1 com.oracle.oci.sdk oci-java-sdk-addons-aispeech-realtime - 3.91.0 + 3.91.1 com.oracle.oci.sdk oci-java-sdk-resourcesearch - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-addons-apache - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-keymanagement - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-announcementsservice - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-healthchecks - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-waas - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-streaming - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-resourcemanager - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-monitoring - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-ons - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-autoscaling - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-budget - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-workrequests - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-limits - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-functions - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-events - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-oce - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-oda - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-analytics - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-integration - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-marketplace - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-apigateway - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-datacatalog - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-dataflow - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-datascience - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-nosql - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-secrets - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-vault - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-bds - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-encryption - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-cims - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-datasafe - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-mysql - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-dataintegration - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-ocvp - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-usageapi - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-blockchain - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-loggingingestion - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-logging - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-loganalytics - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-managementdashboard - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-sch - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-loggingsearch - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-managementagent - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-cloudguard - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-opsi - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-computeinstanceagent - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-optimizer - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-tenantmanagercontrolplane - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-rover - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-databasemanagement - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-artifacts - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-apmsynthetics - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-goldengate - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-apmcontrolplane - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-apmtraces - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-networkloadbalancer - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-vulnerabilityscanning - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-databasemigration - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-servicecatalog - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-ailanguage - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-operatoraccesscontrol - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-bastion - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-genericartifactscontent - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-jms - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-devops - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-datalabelingservice - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-datalabelingservicedataplane - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-apmconfig - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-waf - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-certificates - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-certificatesmanagement - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-usage - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-databasetools - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-servicemanagerproxy - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-appmgmtcontrol - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-ospgateway - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-identitydataplane - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-visualbuilder - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-osubusage - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-osubsubscription - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-osuborganizationsubscription - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-osubbillingschedule - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-dashboardservice - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-threatintelligence - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-aivision - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-aispeech - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-stackmonitoring - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-adm - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-licensemanager - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-onesubscription - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-governancerulescontrolplane - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-waa - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-networkfirewall - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-vnmonitoring - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-emwarehouse - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-lockbox - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-fusionapps - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-mediaservices - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-opa - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-opensearch - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-cloudmigrations - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-cloudbridge - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-disasterrecovery - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-containerinstances - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-aidocument - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-queue - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-recovery - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-vbsinst - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-identitydomains - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-accessgovernancecp - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-ocicontrolcenter - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-osmanagementhub - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-fleetsoftwareupdate - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-computecloudatcustomer - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-marketplacepublisher - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-redis - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-jmsjavadownloads - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-psql - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-generativeai - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-generativeaiinference - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-capacitymanagement - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-desktops - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-emaildataplane - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-clusterplacementgroups - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-resourcescheduler - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-demandsignal - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-fleetappsmanagement - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-delegateaccesscontrol - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-generativeaiagent - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-generativeaiagentruntime - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-securityattribute - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-zpr - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-dblm - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-mngdmac - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-lustrefilestorage - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-modeldeployment - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-distributeddatabase - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-apiaccesscontrol - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-wlms - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-addons-adk - 3.91.0 + 3.91.1 com.oracle.oci.sdk oci-java-sdk-dbmulticloud - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-apiplatform - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-managedkafka - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-aidataplatform - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-multicloud - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-resourceanalytics - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-jmsutils - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-iot - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-psa - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-dif - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-batch - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-marketplaceprivateoffer - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-gdp - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-limitsincrease - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-generativeaidata - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-self - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-containerregistry - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-databasetoolsruntime - 3.91.0 + 3.91.1 false com.oracle.oci.sdk oci-java-sdk-costad - 3.91.0 + 3.91.1 false diff --git a/bmc-budget/pom.xml b/bmc-budget/pom.xml index 0f8d7d1b447..7a9baafaeba 100644 --- a/bmc-budget/pom.xml +++ b/bmc-budget/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-budget @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-capacitymanagement/pom.xml b/bmc-capacitymanagement/pom.xml index 51b8c4bed0c..6a40d3d0d77 100644 --- a/bmc-capacitymanagement/pom.xml +++ b/bmc-capacitymanagement/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-capacitymanagement @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-certificates/pom.xml b/bmc-certificates/pom.xml index f1cb6ef509b..2ce617f2c38 100644 --- a/bmc-certificates/pom.xml +++ b/bmc-certificates/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-certificates @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-certificatesmanagement/pom.xml b/bmc-certificatesmanagement/pom.xml index 80b58ef5693..276f0497091 100644 --- a/bmc-certificatesmanagement/pom.xml +++ b/bmc-certificatesmanagement/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-certificatesmanagement @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-cims/pom.xml b/bmc-cims/pom.xml index 014f9b15199..1187869630c 100644 --- a/bmc-cims/pom.xml +++ b/bmc-cims/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-cims @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-circuitbreaker/pom.xml b/bmc-circuitbreaker/pom.xml index b6dd04c79fa..19f537b265b 100644 --- a/bmc-circuitbreaker/pom.xml +++ b/bmc-circuitbreaker/pom.xml @@ -5,7 +5,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-circuitbreaker diff --git a/bmc-cloudbridge/pom.xml b/bmc-cloudbridge/pom.xml index 725fe44142d..12b309e1175 100644 --- a/bmc-cloudbridge/pom.xml +++ b/bmc-cloudbridge/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-cloudbridge @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-cloudguard/pom.xml b/bmc-cloudguard/pom.xml index 3397f2bfbbe..ee900bdd150 100644 --- a/bmc-cloudguard/pom.xml +++ b/bmc-cloudguard/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-cloudguard @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-cloudmigrations/pom.xml b/bmc-cloudmigrations/pom.xml index 9b5280da287..1d59e1e4fc6 100644 --- a/bmc-cloudmigrations/pom.xml +++ b/bmc-cloudmigrations/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-cloudmigrations @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-clusterplacementgroups/pom.xml b/bmc-clusterplacementgroups/pom.xml index 57fffc41b86..b1e306fa97f 100644 --- a/bmc-clusterplacementgroups/pom.xml +++ b/bmc-clusterplacementgroups/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-clusterplacementgroups @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-common-httpclient-choices/bmc-common-httpclient-jersey/pom.xml b/bmc-common-httpclient-choices/bmc-common-httpclient-jersey/pom.xml index fa0e41f1cd6..6822249d735 100644 --- a/bmc-common-httpclient-choices/bmc-common-httpclient-jersey/pom.xml +++ b/bmc-common-httpclient-choices/bmc-common-httpclient-jersey/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk-common-httpclient-choices - 3.91.0 + 3.91.1 ../pom.xml @@ -93,7 +93,7 @@ com.oracle.oci.sdk oci-java-sdk-addons-apache-configurator-jersey - 3.91.0 + 3.91.1 @@ -102,7 +102,7 @@ com.oracle.oci.sdk oci-java-sdk-common-httpclient - 3.91.0 + 3.91.1 org.glassfish.jersey.core diff --git a/bmc-common-httpclient-choices/bmc-common-httpclient-jersey3/pom.xml b/bmc-common-httpclient-choices/bmc-common-httpclient-jersey3/pom.xml index cd7addba310..918b21c24c7 100644 --- a/bmc-common-httpclient-choices/bmc-common-httpclient-jersey3/pom.xml +++ b/bmc-common-httpclient-choices/bmc-common-httpclient-jersey3/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk-common-httpclient-choices - 3.91.0 + 3.91.1 ../pom.xml @@ -93,7 +93,7 @@ com.oracle.oci.sdk oci-java-sdk-addons-apache-configurator-jersey3 - 3.91.0 + 3.91.1 @@ -102,7 +102,7 @@ com.oracle.oci.sdk oci-java-sdk-common-httpclient - 3.91.0 + 3.91.1 jakarta.ws.rs diff --git a/bmc-common-httpclient-choices/pom.xml b/bmc-common-httpclient-choices/pom.xml index 8d3674d37dd..a483d83b6f6 100644 --- a/bmc-common-httpclient-choices/pom.xml +++ b/bmc-common-httpclient-choices/pom.xml @@ -5,7 +5,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml diff --git a/bmc-common-httpclient/pom.xml b/bmc-common-httpclient/pom.xml index f1f8d124d89..0b99855e248 100644 --- a/bmc-common-httpclient/pom.xml +++ b/bmc-common-httpclient/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml diff --git a/bmc-common-httpclient/src/main/java/com/oracle/bmc/http/client/internal/parameterizedendpoints/ParameterizedEndpointUtil.java b/bmc-common-httpclient/src/main/java/com/oracle/bmc/http/client/internal/parameterizedendpoints/ParameterizedEndpointUtil.java index 6f7b99ca85b..720c19be16b 100644 --- a/bmc-common-httpclient/src/main/java/com/oracle/bmc/http/client/internal/parameterizedendpoints/ParameterizedEndpointUtil.java +++ b/bmc-common-httpclient/src/main/java/com/oracle/bmc/http/client/internal/parameterizedendpoints/ParameterizedEndpointUtil.java @@ -23,6 +23,7 @@ public enum ParameterizedEndpointUtil { private static final org.slf4j.Logger LOG = org.slf4j.LoggerFactory.getLogger(ParameterizedEndpointUtil.class); private static final Pattern PLACEHOLDER_PATTERN = Pattern.compile("\\{(.*?)\\}"); + private static final Pattern HOST_COMPONENT_PATTERN = Pattern.compile("[A-Za-z0-9_.-]+"); /** * Regex to detect options defined in the endpoint template. It checks for the following @@ -138,6 +139,7 @@ public String getEndpointWithPopulatedServiceParameters( paramName); continue; } + validateHostComponent(paramName, (String) paramValue); updatedEndpointBuilder.append(paramValue); if (appendDot) { updatedEndpointBuilder.append('.'); @@ -149,7 +151,6 @@ public String getEndpointWithPopulatedServiceParameters( } } } - // append part after last match updatedEndpointBuilder.append(endpoint.substring(afterLastMatch)); @@ -181,4 +182,24 @@ public boolean isEndpointParameterized(String endpoint) { public String removeAllParametersFromEndpoint(String updatedEndpoint) { return updatedEndpoint.replaceAll("\\{.*?\\}", ""); } + + /** + * Validates that a parameter value can be safely substituted into a host component. + * + *

The value is restricted to characters that cannot introduce URL structure such as path, + * query, fragment, user-info, port, or percent-encoded delimiter syntax. + * + * @param paramName parameter name used for the exception message + * @param paramValue parameter value to validate + * @throws IllegalArgumentException if {@code paramValue} contains characters that are unsafe in + * a host component + */ + private void validateHostComponent(String paramName, String paramValue) { + if (!HOST_COMPONENT_PATTERN.matcher(paramValue).matches()) { + throw new IllegalArgumentException( + String.format( + "Endpoint parameter '%s' contains characters that are not valid in a host component", + paramName)); + } + } } diff --git a/bmc-common-httpclient/src/test/java/com/oracle/bmc/http/client/internal/parameterizedendpoints/ParameterizedEndpointUtilTest.java b/bmc-common-httpclient/src/test/java/com/oracle/bmc/http/client/internal/parameterizedendpoints/ParameterizedEndpointUtilTest.java index 9444e15a6de..15ea611557b 100644 --- a/bmc-common-httpclient/src/test/java/com/oracle/bmc/http/client/internal/parameterizedendpoints/ParameterizedEndpointUtilTest.java +++ b/bmc-common-httpclient/src/test/java/com/oracle/bmc/http/client/internal/parameterizedendpoints/ParameterizedEndpointUtilTest.java @@ -8,13 +8,16 @@ import java.util.Collections; import java.util.HashMap; +import java.util.HashSet; import java.util.Map; +import java.util.Set; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; public class ParameterizedEndpointUtilTest { + private static final Set ALLOWED_HOST_PARAMETER_CHARACTERS = allowedHostCharacters(); @Test public void testIsEndpointParameterized() { @@ -77,6 +80,59 @@ public void testGetEndpointWithPopulatedServiceParameters_ValidParameters() { endpoint, requiredParametersMap, Collections.emptyMap())); } + @Test + public void testGetEndpointWithPopulatedServiceParameters_ValidHostParameterCharacters() { + assertHostParameterAccepted( + "namespace_name", "https://namespace_name.objectstorage.example.com"); + assertHostParameterAccepted( + "namespace-name", "https://namespace-name.objectstorage.example.com"); + assertHostParameterAccepted( + "namespace.name", "https://namespace.name.objectstorage.example.com"); + } + + @Test + public void testGetEndpointWithPopulatedServiceParameters_AllAsciiHostParameterCharacters() { + for (char ch = 0; ch < 128; ch++) { + if (isAllowedHostParameterCharacter(ch)) { + assertHostParameterAccepted( + "namespace" + ch + "name", + "https://namespace" + ch + "name.objectstorage.example.com"); + } else { + assertHostParameterRejected("namespace" + ch + "name", "ASCII " + (int) ch); + } + } + } + + @Test + public void testGetEndpointWithPopulatedServiceParameters_InvalidHostParameterCharacters() { + assertHostParameterRejected("my-namespace/objectstorage"); + assertHostParameterRejected("my-namespace?query"); + assertHostParameterRejected("my-namespace#fragment"); + assertHostParameterRejected("user@my-namespace"); + assertHostParameterRejected("my-namespace:443"); + assertHostParameterRejected("my-namespace%2eexample"); + assertHostParameterRejected("my namespace"); + assertHostParameterRejected(""); + } + + @Test + public void + testGetEndpointWithPopulatedServiceParameters_RejectsUnsafeObjectStorageNamespace() { + String endpoint = + "https://{namespaceName+Dot}objectstorage.us-phoenix-1.oci.customer-oci.com"; + Map requiredParametersMap = new HashMap<>(); + requiredParametersMap.put("namespaceName", "namespace/objectstorage"); + + try { + ParameterizedEndpointUtil.INSTANCE.getEndpointWithPopulatedServiceParameters( + endpoint, requiredParametersMap, Collections.emptyMap()); + } catch (IllegalArgumentException e) { + assertTrue(e.getMessage().contains("namespaceName")); + return; + } + throw new AssertionError("Expected unsafe Object Storage namespace to be rejected"); + } + @Test public void testGetEndpointWithPopulatedServiceParameters_InvalidParameterType() { String endpoint = "https://{service+Dot}example.com"; @@ -156,4 +212,53 @@ public void testGetEndpointWithPopulatedServiceParameters_KnownOption() { ParameterizedEndpointUtil.INSTANCE.getEndpointWithPopulatedServiceParameters( ENDPOINT_WITH_DUAL_STACK_OPTION, requiredParametersMap, optionsMap)); } + + private void assertHostParameterRejected(String namespaceName) { + assertHostParameterRejected(namespaceName, namespaceName); + } + + private void assertHostParameterRejected(String namespaceName, String description) { + String endpoint = "https://{namespaceName+Dot}objectstorage.example.com"; + Map requiredParametersMap = new HashMap<>(); + requiredParametersMap.put("namespaceName", namespaceName); + try { + ParameterizedEndpointUtil.INSTANCE.getEndpointWithPopulatedServiceParameters( + endpoint, requiredParametersMap, Collections.emptyMap()); + } catch (IllegalArgumentException e) { + assertTrue(e.getMessage().contains("namespaceName")); + return; + } + throw new AssertionError("Expected host parameter to be rejected: " + description); + } + + private void assertHostParameterAccepted(String namespaceName, String expectedEndpoint) { + String endpoint = "https://{namespaceName+Dot}objectstorage.example.com"; + Map requiredParametersMap = new HashMap<>(); + requiredParametersMap.put("namespaceName", namespaceName); + assertEquals( + expectedEndpoint, + ParameterizedEndpointUtil.INSTANCE.getEndpointWithPopulatedServiceParameters( + endpoint, requiredParametersMap, Collections.emptyMap())); + } + + private boolean isAllowedHostParameterCharacter(char ch) { + return ALLOWED_HOST_PARAMETER_CHARACTERS.contains(ch); + } + + private static Set allowedHostCharacters() { + Set allowedCharacters = new HashSet<>(); + for (char ch = 'A'; ch <= 'Z'; ch++) { + allowedCharacters.add(ch); + } + for (char ch = 'a'; ch <= 'z'; ch++) { + allowedCharacters.add(ch); + } + for (char ch = '0'; ch <= '9'; ch++) { + allowedCharacters.add(ch); + } + allowedCharacters.add('_'); + allowedCharacters.add('-'); + allowedCharacters.add('.'); + return Collections.unmodifiableSet(allowedCharacters); + } } diff --git a/bmc-common/pom.xml b/bmc-common/pom.xml index 2f44d4896e3..c84fee1268a 100644 --- a/bmc-common/pom.xml +++ b/bmc-common/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml @@ -87,12 +87,12 @@ com.oracle.oci.sdk oci-java-sdk-circuitbreaker - 3.91.0 + 3.91.1 com.oracle.oci.sdk oci-java-sdk-common-httpclient - 3.91.0 + 3.91.1 @@ -137,7 +137,7 @@ com.oracle.oci.sdk oci-java-sdk-common-httpclient-jersey - 3.91.0 + 3.91.1 test diff --git a/bmc-common/src/main/java/com/oracle/bmc/http/internal/BaseClient.java b/bmc-common/src/main/java/com/oracle/bmc/http/internal/BaseClient.java index 8903ef49be9..67be42f6c29 100644 --- a/bmc-common/src/main/java/com/oracle/bmc/http/internal/BaseClient.java +++ b/bmc-common/src/main/java/com/oracle/bmc/http/internal/BaseClient.java @@ -40,6 +40,7 @@ import org.slf4j.LoggerFactory; import java.net.URI; +import java.net.URISyntaxException; import java.time.Duration; import java.util.ArrayList; import java.util.Arrays; @@ -336,6 +337,8 @@ public final synchronized void setEndpoint(String endpoint) { unparameterizedEndpoint); endpoint = unparameterizedEndpoint; } + } else { + validateEndpoint(endpoint); } logger.info("Setting endpoint to {}", endpoint); @@ -378,6 +381,41 @@ public final synchronized void setEndpoint(String endpoint) { httpClient, circuitBreakerConfiguration); } + /** + * Validates a resolved endpoint before it is used as an HTTP client base URI. + * + *

Parameterized endpoint templates are validated after their host parameters are resolved by + * {@link ParameterizedEndpointUtil}. + * + * @param endpoint resolved endpoint + * @throws IllegalArgumentException if the endpoint scheme is not HTTP(S), or if the endpoint + * contains user info, path, query, or fragment components + */ + private void validateEndpoint(String endpoint) { + final URI endpointUri; + try { + endpointUri = new URI(endpoint); + } catch (URISyntaxException e) { + throw new IllegalArgumentException("host is invalid. " + endpoint, e); + } + + String scheme = endpointUri.getScheme(); + if (!"http".equalsIgnoreCase(scheme) && !"https".equalsIgnoreCase(scheme)) { + throw new IllegalArgumentException( + "host is invalid. endpoint scheme must be http or https"); + } + + String path = endpointUri.getRawPath(); + boolean hasPath = path != null && !path.isEmpty() && !"/".equals(path); + if (endpointUri.getRawUserInfo() != null + || hasPath + || endpointUri.getRawQuery() != null + || endpointUri.getRawFragment() != null) { + throw new IllegalArgumentException( + "host is invalid. endpoint must not contain user info, path, query, or fragment"); + } + } + private boolean isAsyncThreadPoolCoreThreadTimeoutEnabled() { return this instanceof BaseAsyncClient ? clientConfigurationToUse.isAsyncRequestsAsyncCoreThreadTimeoutEnabled() diff --git a/bmc-common/src/main/java/com/oracle/bmc/http/internal/ClientCall.java b/bmc-common/src/main/java/com/oracle/bmc/http/internal/ClientCall.java index d078d294bee..9b302c74b4d 100644 --- a/bmc-common/src/main/java/com/oracle/bmc/http/internal/ClientCall.java +++ b/bmc-common/src/main/java/com/oracle/bmc/http/internal/ClientCall.java @@ -873,67 +873,91 @@ private CompletionStage checkError(HttpResponse response) { logger.warn("Unable to read response body", e); return "Cannot read response body!"; }); - return thenCompose( - responseBody, - s -> - failedFuture( - responseErrorExceptionFactory.createRuntimeException( - status, - "Unknown", - String.format( - "Unexpected Content-Type: %s instead of %s. Response body: %s", - contentType, APPLICATION_JSON_TYPE, s), - opcRequestId, - buildServiceDetails()))); - } - - return response.body(this.responseErrorExceptionFactory.getResponseErrorModelType()) - .handle( - (ecm, t) -> { - if (t != null) { - // failed to parse body - CompletionStage msgFuture = - response.textBody() - .thenApply( - s -> "Unable to parse error response: " + s) - .exceptionally( - e -> "Unable to parse error response."); - return thenCompose( - msgFuture, - msg -> - ClientCall.failedFuture( - responseErrorExceptionFactory - .createRuntimeException( - status, - "Unknown", - msg, - opcRequestId, - (Throwable) t, - buildServiceDetails()))); - } else { - if (ecm == null) { - String defaultMessage = - ResponseHelper.DEFAULT_ERROR_MESSAGES.getOrDefault( - status, - "Detailed exception information not available"); - return ClientCall.failedFuture( + CompletionStage failure = + thenCompose( + responseBody, + s -> + failedFuture( responseErrorExceptionFactory.createRuntimeException( status, "Unknown", - defaultMessage, - opcRequestId, - buildServiceDetails())); - } else { - return ClientCall.failedFuture( - responseErrorExceptionFactory.createRuntimeException( - status, + String.format( + "Unexpected Content-Type: %s instead of %s. Response body: %s", + contentType, APPLICATION_JSON_TYPE, s), opcRequestId, - ecm, - buildServiceDetails())); - } - } - }) - .thenCompose(Function.identity()); + buildServiceDetails()))); + return closeResponseOnCompletion(failure, response); + } + + CompletionStage failure = + response.body(this.responseErrorExceptionFactory.getResponseErrorModelType()) + .handle( + (ecm, t) -> { + if (t != null) { + // failed to parse body + CompletionStage msgFuture = + response.textBody() + .thenApply( + s -> + "Unable to parse error response: " + + s) + .exceptionally( + e -> + "Unable to parse error response."); + return thenCompose( + msgFuture, + msg -> + ClientCall.failedFuture( + responseErrorExceptionFactory + .createRuntimeException( + status, + "Unknown", + msg, + opcRequestId, + (Throwable) t, + buildServiceDetails()))); + } else { + if (ecm == null) { + String defaultMessage = + ResponseHelper.DEFAULT_ERROR_MESSAGES + .getOrDefault( + status, + "Detailed exception information not available"); + return ClientCall.failedFuture( + responseErrorExceptionFactory + .createRuntimeException( + status, + "Unknown", + defaultMessage, + opcRequestId, + buildServiceDetails())); + } else { + return ClientCall.failedFuture( + responseErrorExceptionFactory + .createRuntimeException( + status, + opcRequestId, + ecm, + buildServiceDetails())); + } + } + }) + .thenCompose(Function.identity()); + return closeResponseOnCompletion(failure, response); + } + + private CompletionStage closeResponseOnCompletion( + CompletionStage stage, HttpResponse response) { + return stage.whenComplete( + (ignored, throwable) -> { + try { + response.close(); + } catch (Exception e) { + if (logger != null) { + logger.debug("Unable to close error response", e); + } + } + }); } public Future callAsync(AsyncHandler handler) { diff --git a/bmc-common/src/test/java/com/oracle/bmc/http/internal/BaseClientTest.java b/bmc-common/src/test/java/com/oracle/bmc/http/internal/BaseClientTest.java index a57ca8fff4b..bbf4833980f 100644 --- a/bmc-common/src/test/java/com/oracle/bmc/http/internal/BaseClientTest.java +++ b/bmc-common/src/test/java/com/oracle/bmc/http/internal/BaseClientTest.java @@ -67,6 +67,42 @@ public void testCloseWithoutEndpoint() { client.close(); } + @Test + public void testSetEndpointRejectsInvalidEndpointScheme() { + assertEndpointRejected("file://objectstorage.us-phoenix-1.oci.customer-oci.com"); + } + + @Test + public void testSetEndpointRejectsEndpointWithUserInfo() { + assertEndpointRejected("https://foo@objectstorage.us-phoenix-1.oci.customer-oci.com"); + } + + @Test + public void testSetEndpointRejectsEndpointWithPath() { + assertEndpointRejected("https://objectstorage.us-phoenix-1.oci.customer-oci.com/foo"); + } + + @Test + public void testSetEndpointRejectsEndpointWithQuery() { + assertEndpointRejected("https://objectstorage.us-phoenix-1.oci.customer-oci.com?foo=bar"); + } + + @Test + public void testSetEndpointRejectsEndpointWithFragment() { + assertEndpointRejected("https://objectstorage.us-phoenix-1.oci.customer-oci.com#foo"); + } + + private void assertEndpointRejected(String endpoint) { + TestBaseClient client = TestBaseClient.builder().build(mockAuthProvider); + try { + client.setEndpoint(endpoint); + } catch (IllegalArgumentException e) { + assertTrue(e.getMessage().contains("host is invalid")); + return; + } + throw new AssertionError("Expected endpoint to be rejected: " + endpoint); + } + private static class TestBaseClient extends BaseClient { /** Service instance for ObjectStorage. */ public static final com.oracle.bmc.Service SERVICE = diff --git a/bmc-common/src/test/java/com/oracle/bmc/http/internal/ClientCallTest.java b/bmc-common/src/test/java/com/oracle/bmc/http/internal/ClientCallTest.java index 699b2701d80..fb508b8b05c 100644 --- a/bmc-common/src/test/java/com/oracle/bmc/http/internal/ClientCallTest.java +++ b/bmc-common/src/test/java/com/oracle/bmc/http/internal/ClientCallTest.java @@ -107,6 +107,7 @@ public void testCheckError() throws URISyntaxException { assertEquals(ecm.getOriginalMessageTemplate(), e.getOriginalMessageTemplate()); assertEquals(ecm.getMessageArguments(), e.getMessageArguments()); } + verify(mockResponse).close(); } public static class TestRequest extends com.oracle.bmc.requests.BmcRequest { @@ -532,6 +533,7 @@ public void test_throwIfNotSuccessful_ValidJsonResponse() { assertEquals("Unknown", e.getServiceCode()); assertTrue(e.getMessage().contains(OPC_REQUEST_ID)); } + verify(mockResponse).close(); } @Test @@ -555,6 +557,7 @@ public void test_throwIfNotSuccessful_InvalidHTMLResponse() throws IOException { assertTrue(e.getMessage().contains(OPC_REQUEST_ID)); assertTrue(e.getMessage().contains("Unexpected Content-Type: text/html")); } + verify(mockResponse).close(); } @Test @@ -591,6 +594,7 @@ public void test_throwIfNotSuccessful_InValidJsonResponseExtendedForLocalization assertEquals(ecm.getOriginalMessageTemplate(), e.getOriginalMessageTemplate()); assertEquals(ecm.getMessageArguments(), e.getMessageArguments()); } + verify(mockResponse).close(); } @Test @@ -626,6 +630,7 @@ public void test_throwIfNotSuccessful_InValidJsonResponseExtendedForPartialLocal assertEquals(ecm.getOriginalMessageTemplate(), e.getOriginalMessageTemplate()); assertEquals(ecm.getMessageArguments(), e.getMessageArguments()); } + verify(mockResponse).close(); } @Test @@ -656,6 +661,7 @@ public void test_throwIfNotSuccessful_CustomRuntimeExceptionFactory() { assertEquals(OPC_REQUEST_ID, e.opcRequestId); assertNotNull(e.serviceDetails); } + verify(mockResponse).close(); } @Test @@ -688,6 +694,34 @@ public void test_throwIfNotSuccessful_InvalidJsonResponse() { assertEquals(ecm.getOriginalMessageTemplate(), e.getOriginalMessageTemplate()); assertEquals(ecm.getMessageArguments(), e.getMessageArguments()); } + verify(mockResponse).close(); + } + + @Test + public void test_throwIfNotSuccessful_UnparseableJsonResponseClosesResponse() { + CompletableFuture parseFailure = + new CompletableFuture<>(); + parseFailure.completeExceptionally(new RuntimeException("Unable to parse")); + when(mockResponse.body(ResponseHelper.ErrorCodeAndMessage.class)) + .thenReturn(parseFailure); + when(mockResponse.textBody()).thenReturn(CompletableFuture.completedFuture("not-json")); + + when(mockResponse.status()).thenReturn(BAD_GATEWAY_STATUS); + when(mockResponse.header("content-type")).thenReturn(JSON_MEDIA_TYPE); + try { + ClientCall.builder(mockClient, new ClientCallTest.TestRequest(), responseBuilder) + .logger(mockLogger, "mockLogger") + .method(Method.GET) + .callSync(); + fail("Expected to throw"); + } catch (BmcException e) { + // expected + assertEquals(BAD_GATEWAY_STATUS, e.getStatusCode()); + assertEquals(OPC_REQUEST_ID, e.getOpcRequestId()); + assertEquals("Unknown", e.getServiceCode()); + assertTrue(e.getMessage().contains("Unable to parse error response")); + } + verify(mockResponse).close(); } @Test @@ -720,6 +754,7 @@ public void test_throwIfNotSuccessful_ValidUTF8JsonResponse() { assertEquals(ecm.getOriginalMessageTemplate(), e.getOriginalMessageTemplate()); assertEquals(ecm.getMessageArguments(), e.getMessageArguments()); } + verify(mockResponse).close(); } @Test diff --git a/bmc-computecloudatcustomer/pom.xml b/bmc-computecloudatcustomer/pom.xml index a95725b4bbd..0b2645b83aa 100644 --- a/bmc-computecloudatcustomer/pom.xml +++ b/bmc-computecloudatcustomer/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-computecloudatcustomer @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-computeinstanceagent/pom.xml b/bmc-computeinstanceagent/pom.xml index 4ebec781811..c7a8e1a9df9 100644 --- a/bmc-computeinstanceagent/pom.xml +++ b/bmc-computeinstanceagent/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-computeinstanceagent @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-containerengine/pom.xml b/bmc-containerengine/pom.xml index 70558fa6952..a1986ba114b 100644 --- a/bmc-containerengine/pom.xml +++ b/bmc-containerengine/pom.xml @@ -5,7 +5,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml @@ -18,7 +18,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 diff --git a/bmc-containerinstances/pom.xml b/bmc-containerinstances/pom.xml index 0ba3d0ae394..d0c87b1ef79 100644 --- a/bmc-containerinstances/pom.xml +++ b/bmc-containerinstances/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-containerinstances @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-containerregistry/pom.xml b/bmc-containerregistry/pom.xml index b09812572c7..f7c26b2b307 100644 --- a/bmc-containerregistry/pom.xml +++ b/bmc-containerregistry/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-containerregistry @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-core/pom.xml b/bmc-core/pom.xml index 7e27c751889..295408dd8d3 100644 --- a/bmc-core/pom.xml +++ b/bmc-core/pom.xml @@ -5,7 +5,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml @@ -18,12 +18,12 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 com.oracle.oci.sdk oci-java-sdk-workrequests - 3.91.0 + 3.91.1 diff --git a/bmc-costad/pom.xml b/bmc-costad/pom.xml index 25b7435a04b..0ca66868fb4 100644 --- a/bmc-costad/pom.xml +++ b/bmc-costad/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-costad @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-dashboardservice/pom.xml b/bmc-dashboardservice/pom.xml index d49573c255a..ee0a3d2329f 100644 --- a/bmc-dashboardservice/pom.xml +++ b/bmc-dashboardservice/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-dashboardservice @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-database/pom.xml b/bmc-database/pom.xml index 27caa07b2d6..c073fde1513 100644 --- a/bmc-database/pom.xml +++ b/bmc-database/pom.xml @@ -5,7 +5,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml @@ -18,12 +18,12 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 com.oracle.oci.sdk oci-java-sdk-workrequests - 3.91.0 + 3.91.1 diff --git a/bmc-databasemanagement/pom.xml b/bmc-databasemanagement/pom.xml index 698f3fad2bd..5618d449efd 100644 --- a/bmc-databasemanagement/pom.xml +++ b/bmc-databasemanagement/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-databasemanagement @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-databasemigration/pom.xml b/bmc-databasemigration/pom.xml index 04fc573c656..bbffbc65479 100644 --- a/bmc-databasemigration/pom.xml +++ b/bmc-databasemigration/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-databasemigration @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-databasetools/pom.xml b/bmc-databasetools/pom.xml index a15ee04cf1e..280c3e57c2a 100644 --- a/bmc-databasetools/pom.xml +++ b/bmc-databasetools/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-databasetools @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-databasetoolsruntime/pom.xml b/bmc-databasetoolsruntime/pom.xml index 8e23093fb08..2beb366315b 100644 --- a/bmc-databasetoolsruntime/pom.xml +++ b/bmc-databasetoolsruntime/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-databasetoolsruntime @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-datacatalog/pom.xml b/bmc-datacatalog/pom.xml index 93a81fcf0e3..2a263423a20 100644 --- a/bmc-datacatalog/pom.xml +++ b/bmc-datacatalog/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-datacatalog @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-dataflow/pom.xml b/bmc-dataflow/pom.xml index a9bf5c6243a..7139bf4d02d 100644 --- a/bmc-dataflow/pom.xml +++ b/bmc-dataflow/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-dataflow @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-dataintegration/pom.xml b/bmc-dataintegration/pom.xml index db44f0a015d..ea092bafcbd 100644 --- a/bmc-dataintegration/pom.xml +++ b/bmc-dataintegration/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-dataintegration @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-datalabelingservice/pom.xml b/bmc-datalabelingservice/pom.xml index ff9bb4d6b46..04c592b839b 100644 --- a/bmc-datalabelingservice/pom.xml +++ b/bmc-datalabelingservice/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-datalabelingservice @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-datalabelingservicedataplane/pom.xml b/bmc-datalabelingservicedataplane/pom.xml index df96ad7cfe3..10b457ed837 100644 --- a/bmc-datalabelingservicedataplane/pom.xml +++ b/bmc-datalabelingservicedataplane/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-datalabelingservicedataplane @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-datasafe/pom.xml b/bmc-datasafe/pom.xml index fd34554fafe..02c7eee137c 100644 --- a/bmc-datasafe/pom.xml +++ b/bmc-datasafe/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-datasafe @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-datascience/pom.xml b/bmc-datascience/pom.xml index b9f231f7a37..2684698659e 100644 --- a/bmc-datascience/pom.xml +++ b/bmc-datascience/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-datascience @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-dblm/pom.xml b/bmc-dblm/pom.xml index aaea08461bf..e74837d0ad0 100644 --- a/bmc-dblm/pom.xml +++ b/bmc-dblm/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-dblm @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-dbmulticloud/pom.xml b/bmc-dbmulticloud/pom.xml index a6ff878870c..2726b5fb789 100644 --- a/bmc-dbmulticloud/pom.xml +++ b/bmc-dbmulticloud/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-dbmulticloud @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-delegateaccesscontrol/pom.xml b/bmc-delegateaccesscontrol/pom.xml index 2b364e2fad2..18f40c0ea43 100644 --- a/bmc-delegateaccesscontrol/pom.xml +++ b/bmc-delegateaccesscontrol/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-delegateaccesscontrol @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-demandsignal/pom.xml b/bmc-demandsignal/pom.xml index ac0f80e005d..2535cc58f1b 100644 --- a/bmc-demandsignal/pom.xml +++ b/bmc-demandsignal/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-demandsignal @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-desktops/pom.xml b/bmc-desktops/pom.xml index 244486dc749..0b3da7002c4 100644 --- a/bmc-desktops/pom.xml +++ b/bmc-desktops/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-desktops @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-devops/pom.xml b/bmc-devops/pom.xml index de214d56007..d2249044598 100644 --- a/bmc-devops/pom.xml +++ b/bmc-devops/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-devops @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-dif/pom.xml b/bmc-dif/pom.xml index 1ecf92b5660..1a685fe8418 100644 --- a/bmc-dif/pom.xml +++ b/bmc-dif/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-dif @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-disasterrecovery/pom.xml b/bmc-disasterrecovery/pom.xml index 37290cc4129..97806f56feb 100644 --- a/bmc-disasterrecovery/pom.xml +++ b/bmc-disasterrecovery/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-disasterrecovery @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-distributeddatabase/pom.xml b/bmc-distributeddatabase/pom.xml index f139840f19b..a41a0fff842 100644 --- a/bmc-distributeddatabase/pom.xml +++ b/bmc-distributeddatabase/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-distributeddatabase @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-dns/pom.xml b/bmc-dns/pom.xml index d669a407f9e..9159939b884 100644 --- a/bmc-dns/pom.xml +++ b/bmc-dns/pom.xml @@ -5,7 +5,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml @@ -18,12 +18,12 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 com.oracle.oci.sdk oci-java-sdk-workrequests - 3.91.0 + 3.91.1 diff --git a/bmc-email/pom.xml b/bmc-email/pom.xml index cb698e2dada..2cfdf578704 100644 --- a/bmc-email/pom.xml +++ b/bmc-email/pom.xml @@ -5,7 +5,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml @@ -18,7 +18,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 diff --git a/bmc-emaildataplane/pom.xml b/bmc-emaildataplane/pom.xml index 4a7f3abe822..ad9b3184941 100644 --- a/bmc-emaildataplane/pom.xml +++ b/bmc-emaildataplane/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-emaildataplane @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-emwarehouse/pom.xml b/bmc-emwarehouse/pom.xml index 64283322872..7758675b270 100644 --- a/bmc-emwarehouse/pom.xml +++ b/bmc-emwarehouse/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-emwarehouse @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-encryption/pom.xml b/bmc-encryption/pom.xml index 8c598b1c4c0..46f143e3530 100644 --- a/bmc-encryption/pom.xml +++ b/bmc-encryption/pom.xml @@ -5,7 +5,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml @@ -18,17 +18,17 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 com.oracle.oci.sdk oci-java-sdk-common-httpclient - 3.91.0 + 3.91.1 com.oracle.oci.sdk oci-java-sdk-keymanagement - 3.91.0 + 3.91.1 com.fasterxml.jackson.core @@ -48,7 +48,7 @@ com.oracle.oci.sdk oci-java-sdk-common-httpclient-jersey - 3.91.0 + 3.91.1 test diff --git a/bmc-enforcer-rules/pom.xml b/bmc-enforcer-rules/pom.xml index 4df03b86f46..272f95cdfd5 100644 --- a/bmc-enforcer-rules/pom.xml +++ b/bmc-enforcer-rules/pom.xml @@ -6,7 +6,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 oci-java-sdk-enforcer-rules diff --git a/bmc-events/pom.xml b/bmc-events/pom.xml index 466861eafc1..064b98501e4 100644 --- a/bmc-events/pom.xml +++ b/bmc-events/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-events @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-examples/pom.xml b/bmc-examples/pom.xml index e0c303743d7..4a3b60d5360 100644 --- a/bmc-examples/pom.xml +++ b/bmc-examples/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-examples @@ -71,14 +71,14 @@ com.oracle.oci.sdk oci-java-sdk-bom - 3.91.0 + 3.91.1 pom import com.oracle.oci.sdk oci-java-sdk-common-httpclient-jersey - 3.91.0 + 3.91.1 pom import diff --git a/bmc-examples/src/main/java/RealtimeSpeechResamplingExampleClient.java b/bmc-examples/src/main/java/RealtimeSpeechResamplingExampleClient.java new file mode 100644 index 00000000000..bcc1fa81356 --- /dev/null +++ b/bmc-examples/src/main/java/RealtimeSpeechResamplingExampleClient.java @@ -0,0 +1,331 @@ +/** + * 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. + */ +import com.oracle.bmc.ConfigFileReader; +import com.oracle.bmc.aispeech.model.RealtimeMessageAckAudio; +import com.oracle.bmc.aispeech.model.RealtimeMessageConnect; +import com.oracle.bmc.aispeech.model.RealtimeMessageResult; +import com.oracle.bmc.aispeech.model.RealtimeParameters; +import com.oracle.bmc.aispeech.realtimespeech.AudioChunkProcessingDetails; +import com.oracle.bmc.aispeech.realtimespeech.RealtimeSpeechClient; +import com.oracle.bmc.aispeech.realtimespeech.RealtimeSpeechClientListener; +import com.oracle.bmc.aispeech.realtimespeech.RealtimeSpeechConnectException; +import com.oracle.bmc.auth.SessionTokenAuthenticationDetailsProvider; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.util.Arrays; +import javax.sound.sampled.AudioFormat; +import javax.sound.sampled.AudioInputStream; +import javax.sound.sampled.AudioSystem; +import javax.sound.sampled.DataLine; +import javax.sound.sampled.LineUnavailableException; +import javax.sound.sampled.TargetDataLine; +import javax.sound.sampled.UnsupportedAudioFileException; +import org.eclipse.jetty.websocket.client.WebSocketClient; + +/** + * Example realtime speech client that streams microphone audio or WAV audio and lets the Java SDK + * resample supported PCM inputs to a service-supported sample rate. + */ +public class RealtimeSpeechResamplingExampleClient implements RealtimeSpeechClientListener { + + private static final String DEFAULT_REALTIME_SPEECH_ENDPOINT = ""; + private static final String DEFAULT_COMPARTMENT = ""; + private static final String LANGUAGE_CODE = "en-US"; + private static final RealtimeParameters.ModelDomain MODEL_DOMAIN = + RealtimeParameters.ModelDomain.Generic; + private static final String MODEL_TYPE = "ORACLE"; + private static final RealtimeParameters.Punctuation PUNCTUATION = + RealtimeParameters.Punctuation.None; + + private static final float AUDIO_SAMPLE_RATE = 48_000.0f; + private static final int AUDIO_SAMPLE_SIZE = 16; + private static final int AUDIO_NUM_CHANNELS = 1; + private static final boolean AUDIO_SIGNED = true; + private static final boolean AUDIO_BIG_ENDIAN = false; + + private RealtimeSpeechClient realtimeClient; + + private final String endpoint; + private final String compartmentId; + private final String wavFile; + private String encoding = "audio/raw;rate=48000"; + + RealtimeSpeechResamplingExampleClient(String endpoint, String compartmentId, String wavFile) { + this.endpoint = endpoint; + this.compartmentId = compartmentId; + this.wavFile = wavFile; + } + + /** + * Runs the realtime speech resampling example. + * + * @param args optional endpoint, compartment ID, and WAV file path + * @throws IOException if the OCI configuration file cannot be read + */ + public static void main(String[] args) throws IOException { + try { + final ConfigFileReader.ConfigFile configFile = ConfigFileReader.parseDefault(); + + String endpoint = DEFAULT_REALTIME_SPEECH_ENDPOINT; + String compartmentId = DEFAULT_COMPARTMENT; + String wavFile = null; + + if (args.length >= 1) { + endpoint = args[0]; + } + + if (args.length >= 2) { + compartmentId = args[1]; + } + + if (args.length >= 3) { + wavFile = args[2]; + } + + WebSocketClient client = new WebSocketClient(); + client.start(); + + startSession( + new RealtimeSpeechResamplingExampleClient(endpoint, compartmentId, wavFile), + configFile, + client); + } catch (IOException e) { + System.out.println("Realtime Client: Unable to connect!"); + } catch (RealtimeSpeechConnectException e) { + System.out.println("Unable to connect to the realtime service " + e.getMessage()); + } catch (Exception e) { + System.out.println("Exception occurred: " + e.getMessage()); + } + } + + private void playMicrophone() { + final AudioFormat format = + new AudioFormat( + AUDIO_SAMPLE_RATE, + AUDIO_SAMPLE_SIZE, + AUDIO_NUM_CHANNELS, + AUDIO_SIGNED, + AUDIO_BIG_ENDIAN); + final DataLine.Info info = new DataLine.Info(TargetDataLine.class, format); + + try (TargetDataLine microphone = (TargetDataLine) AudioSystem.getLine(info)) { + microphone.open(format); + microphone.start(); + final AudioInputStream ais = new AudioInputStream(microphone); + final int bufferDuration = 96; + final int bufferSize = + ((int) ais.getFormat().getFrameRate() + * ais.getFormat().getFrameSize() + * bufferDuration) + / 1000; + + workLoop(ais, bufferDuration, bufferSize); + } catch (LineUnavailableException e) { + System.out.println("Realtime Client: Unable to get microphone"); + } catch (RealtimeSpeechConnectException e) { + System.out.println("Realtime Client: Connection is closed"); + } + } + + private void prepareWavEncoding() throws IOException, UnsupportedAudioFileException { + if (wavFile == null) { + return; + } + + try (AudioInputStream audioInputStream = + AudioSystem.getAudioInputStream(new File(wavFile))) { + final AudioFormat audioFormat = audioInputStream.getFormat(); + encoding = "audio/raw;rate=" + Math.round(audioFormat.getSampleRate()); + System.out.println( + "Detected WAV format: " + + audioFormat.getSampleRate() + + " Hz, " + + audioFormat.getSampleSizeInBits() + + " bit, " + + audioFormat.getChannels() + + " channel(s)"); + } + } + + private void playWav() { + try (AudioInputStream audioInputStream = + AudioSystem.getAudioInputStream(new File(wavFile))) { + final int bufferDuration = 96; + final int bufferSize = + ((int) audioInputStream.getFormat().getFrameRate() + * audioInputStream.getFormat().getFrameSize() + * bufferDuration) + / 1000; + workLoop(audioInputStream, bufferDuration, bufferSize); + realtimeClient.requestFinalResult(); + Thread.sleep(1000); + } catch (UnsupportedAudioFileException e) { + System.out.println("UnsupportedAudioFileException " + e.getMessage()); + } catch (IOException e) { + System.out.println("IOException " + e.getMessage()); + } catch (InterruptedException e) { + System.out.println("InterruptedException {}" + e.getMessage()); + Thread.currentThread().interrupt(); + } catch (RealtimeSpeechConnectException e) { + System.out.println("Realtime Client: Connection is closed"); + } + } + + private void workLoop(InputStream inputStream, int simulateRealtimeMs, int bufferSize) + throws RealtimeSpeechConnectException { + int res = 0; + final int zeroLength = 0; + final byte[] audioBytes = new byte[bufferSize]; + + try (InputStream ais = inputStream) { + System.out.println("Simulate start"); + while (res >= zeroLength) { + res = ais.read(audioBytes); + if (res > zeroLength) { + realtimeClient.sendAudioData(Arrays.copyOf(audioBytes, res)); + if (simulateRealtimeMs > 0) { + Thread.sleep(simulateRealtimeMs); + } + } + } + System.out.println("Simulate end"); + } catch (InterruptedException e) { + System.out.println("InterruptedException {}" + e.getMessage()); + Thread.currentThread().interrupt(); + } catch (IOException e) { + System.out.println( + "Realtime Client: Unable to read audio from microphone or send it for transcription!"); + } + } + + /** {@inheritDoc} */ + @Override + public void onClose(int statusCode, String statusMessage) { + System.out.println("onNetworkEvent"); + } + + /** {@inheritDoc} */ + @Override + public void onAckMessage(RealtimeMessageAckAudio ackMessage) { + System.out.println("Ack Message : {}" + ackMessage); + } + + /** {@inheritDoc} */ + @Override + public void onResult(RealtimeMessageResult result) { + if (result.getTranscriptions().size() > 0) { + System.out.println( + (result.getTranscriptions().get(0).getIsFinal() + ? "Final Result : " + : "Partial Result: ") + + result.getTranscriptions().get(0).getTranscription().trim()); + } else { + System.out.println("Result Error : " + result); + } + } + + /** {@inheritDoc} */ + @Override + public void onError(Throwable error) { + System.out.println("Error" + error); + error.printStackTrace(); + } + + /** {@inheritDoc} */ + @Override + public void onConnect() { + System.out.println("Connected"); + } + + /** {@inheritDoc} */ + @Override + public void onConnectMessage(RealtimeMessageConnect realtimeConnectMessage) { + System.out.println( + "Received Connect message for session id: " + + realtimeConnectMessage.getSessionId()); + } + + /** {@inheritDoc} */ + @Override + public void onAudioChunkProcessed(AudioChunkProcessingDetails processingDetails) { + if (processingDetails.getResampled()) { + System.out.println( + "Resampled audio chunk from " + + processingDetails.getSourceSampleRate() + + " Hz to " + + processingDetails.getTargetSampleRate() + + " Hz in " + + processingDetails.getResamplingMillis() + + " ms"); + } + } + + /** + * Opens a realtime speech session and streams either the configured WAV file or microphone + * audio. + * + * @param realtimeTestClient the example client instance + * @param configFile the OCI SDK configuration file + * @param client the websocket client used for the realtime speech connection + */ + public static void startSession( + RealtimeSpeechResamplingExampleClient realtimeTestClient, + ConfigFileReader.ConfigFile configFile, + WebSocketClient client) { + try { + realtimeTestClient.prepareWavEncoding(); + + realtimeTestClient.realtimeClient = + RealtimeSpeechClient.builder() + .listener(realtimeTestClient) + .authenticationDetailsProvider( + new SessionTokenAuthenticationDetailsProvider(configFile)) + .compartmentId(realtimeTestClient.compartmentId) + .webSocketClient(client) + .build(); + + final RealtimeParameters realtimeClientParameters = + RealtimeParameters.builder() + .isAckEnabled(false) + .languageCode(LANGUAGE_CODE) + .modelDomain(MODEL_DOMAIN) + .modelType(MODEL_TYPE) + .punctuation(PUNCTUATION) + .encoding(realtimeTestClient.encoding) + .build(); + + realtimeTestClient.realtimeClient.open( + realtimeTestClient.endpoint, realtimeClientParameters); + } catch (UnsupportedAudioFileException e) { + System.out.println("Unsupported audio file: " + e.getMessage()); + return; + } catch (RealtimeSpeechConnectException e) { + System.out.println("Could not connect to the realtime service: " + e.getMessage()); + realtimeTestClient.realtimeClient.close(); + } catch (IOException e) { + System.out.println("IO Exception: " + e.getMessage()); + realtimeTestClient.realtimeClient.close(); + } + + try { + while (realtimeTestClient.realtimeClient.getStatus() + != RealtimeSpeechClient.Status.CONNECTED) { + Thread.sleep(10); + } + } catch (InterruptedException e) { + System.out.println("Realtime Client: Unable to connect!"); + Thread.currentThread().interrupt(); + return; + } + + if (realtimeTestClient.wavFile != null) { + realtimeTestClient.playWav(); + } else { + realtimeTestClient.playMicrophone(); + } + realtimeTestClient.realtimeClient.close(); + } +} diff --git a/bmc-filestorage/pom.xml b/bmc-filestorage/pom.xml index 4d7170f3bd5..f2acf029116 100644 --- a/bmc-filestorage/pom.xml +++ b/bmc-filestorage/pom.xml @@ -5,7 +5,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml @@ -18,7 +18,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 diff --git a/bmc-fleetappsmanagement/pom.xml b/bmc-fleetappsmanagement/pom.xml index 51d17578d00..29d5dd96e82 100644 --- a/bmc-fleetappsmanagement/pom.xml +++ b/bmc-fleetappsmanagement/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-fleetappsmanagement @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-fleetsoftwareupdate/pom.xml b/bmc-fleetsoftwareupdate/pom.xml index 6ef55ab1249..0702ac58a22 100644 --- a/bmc-fleetsoftwareupdate/pom.xml +++ b/bmc-fleetsoftwareupdate/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-fleetsoftwareupdate @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-full/pom.xml b/bmc-full/pom.xml index d36b0577db7..2cb3ec9d445 100644 --- a/bmc-full/pom.xml +++ b/bmc-full/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-full @@ -16,7 +16,7 @@ com.oracle.oci.sdk oci-java-sdk-bom - 3.91.0 + 3.91.1 pom import diff --git a/bmc-functions/pom.xml b/bmc-functions/pom.xml index 837fefdef7c..7a3d5825f62 100644 --- a/bmc-functions/pom.xml +++ b/bmc-functions/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-functions @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-fusionapps/pom.xml b/bmc-fusionapps/pom.xml index 80a0f7fb684..5b41b37dc31 100644 --- a/bmc-fusionapps/pom.xml +++ b/bmc-fusionapps/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-fusionapps @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-gdp/pom.xml b/bmc-gdp/pom.xml index 45c273e5a0e..4426200cf10 100644 --- a/bmc-gdp/pom.xml +++ b/bmc-gdp/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-gdp @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-generativeai/pom.xml b/bmc-generativeai/pom.xml index eebebc5a19d..7dc9878040d 100644 --- a/bmc-generativeai/pom.xml +++ b/bmc-generativeai/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-generativeai @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-generativeai/src/main/java/com/oracle/bmc/generativeai/model/DedicatedAiCluster.java b/bmc-generativeai/src/main/java/com/oracle/bmc/generativeai/model/DedicatedAiCluster.java index 428826af2e6..0ccbbe8b592 100644 --- a/bmc-generativeai/src/main/java/com/oracle/bmc/generativeai/model/DedicatedAiCluster.java +++ b/bmc-generativeai/src/main/java/com/oracle/bmc/generativeai/model/DedicatedAiCluster.java @@ -718,6 +718,43 @@ public enum UnitShape implements com.oracle.bmc.http.internal.BmcEnum { CohereA10080GX1("COHERE_A100_80G_X1"), CohereA10040GX1("COHERE_A100_40G_X1"), CohereA10X1("COHERE_A10_X1"), + CohereA10040GX2("COHERE_A100_40G_X2"), + CohereA10040GX4("COHERE_A100_40G_X4"), + CohereA10040GX8("COHERE_A100_40G_X8"), + CohereA10080GX2("COHERE_A100_80G_X2"), + CohereA10080GX4("COHERE_A100_80G_X4"), + CohereA10080GX8("COHERE_A100_80G_X8"), + CohereH100X2("COHERE_H100_X2"), + CohereH100X4("COHERE_H100_X4"), + CohereH100X8("COHERE_H100_X8"), + CohereH200X1("COHERE_H200_X1"), + CohereH200X2("COHERE_H200_X2"), + CohereH200X4("COHERE_H200_X4"), + CohereH200X8("COHERE_H200_X8"), + CohereB200X1("COHERE_B200_X1"), + CohereB200X2("COHERE_B200_X2"), + CohereB200X4("COHERE_B200_X4"), + CohereB200X8("COHERE_B200_X8"), + MetaA10040GX1("META_A100_40G_X1"), + MetaA10040GX2("META_A100_40G_X2"), + MetaA10040GX4("META_A100_40G_X4"), + MetaA10040GX8("META_A100_40G_X8"), + MetaA10080GX1("META_A100_80G_X1"), + MetaA10080GX2("META_A100_80G_X2"), + MetaA10080GX4("META_A100_80G_X4"), + MetaA10080GX8("META_A100_80G_X8"), + MetaH100X1("META_H100_X1"), + MetaH100X2("META_H100_X2"), + MetaH100X4("META_H100_X4"), + MetaH100X8("META_H100_X8"), + MetaH200X1("META_H200_X1"), + MetaH200X2("META_H200_X2"), + MetaH200X4("META_H200_X4"), + MetaH200X8("META_H200_X8"), + MetaB200X1("META_B200_X1"), + MetaB200X2("META_B200_X2"), + MetaB200X4("META_B200_X4"), + MetaB200X8("META_B200_X8"), LargeCohereV3("LARGE_COHERE_V3"), RerankCohere("RERANK_COHERE"), SmallGenericV1("SMALL_GENERIC_V1"), diff --git a/bmc-generativeaiagent/pom.xml b/bmc-generativeaiagent/pom.xml index b70ad8dab0b..4f89d8c1409 100644 --- a/bmc-generativeaiagent/pom.xml +++ b/bmc-generativeaiagent/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-generativeaiagent @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-generativeaiagentruntime/pom.xml b/bmc-generativeaiagentruntime/pom.xml index 8ad8d08ac95..9774c177b90 100644 --- a/bmc-generativeaiagentruntime/pom.xml +++ b/bmc-generativeaiagentruntime/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-generativeaiagentruntime @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-generativeaidata/pom.xml b/bmc-generativeaidata/pom.xml index a8a5e2bb4e8..98fa6e0d6be 100644 --- a/bmc-generativeaidata/pom.xml +++ b/bmc-generativeaidata/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-generativeaidata @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-generativeaiinference/pom.xml b/bmc-generativeaiinference/pom.xml index 1d1860b2953..e21f47ef3da 100644 --- a/bmc-generativeaiinference/pom.xml +++ b/bmc-generativeaiinference/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-generativeaiinference @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-genericartifactscontent/pom.xml b/bmc-genericartifactscontent/pom.xml index 1e8b35b74f9..bf74509f32f 100644 --- a/bmc-genericartifactscontent/pom.xml +++ b/bmc-genericartifactscontent/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-genericartifactscontent @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-goldengate/pom.xml b/bmc-goldengate/pom.xml index ac4483015fb..e16b11da374 100644 --- a/bmc-goldengate/pom.xml +++ b/bmc-goldengate/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-goldengate @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-governancerulescontrolplane/pom.xml b/bmc-governancerulescontrolplane/pom.xml index cd0b4df28cc..70ac7e428e1 100644 --- a/bmc-governancerulescontrolplane/pom.xml +++ b/bmc-governancerulescontrolplane/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-governancerulescontrolplane @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-healthchecks/pom.xml b/bmc-healthchecks/pom.xml index 8ba6bddc8a7..e69dd15c85f 100644 --- a/bmc-healthchecks/pom.xml +++ b/bmc-healthchecks/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-healthchecks @@ -16,7 +16,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-identity/pom.xml b/bmc-identity/pom.xml index 3d7ed4decb6..321d178bf7d 100644 --- a/bmc-identity/pom.xml +++ b/bmc-identity/pom.xml @@ -5,7 +5,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml @@ -18,7 +18,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 diff --git a/bmc-identitydataplane/pom.xml b/bmc-identitydataplane/pom.xml index 0ff4f625006..c29d2731fd0 100644 --- a/bmc-identitydataplane/pom.xml +++ b/bmc-identitydataplane/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-identitydataplane @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-identitydomains/pom.xml b/bmc-identitydomains/pom.xml index 1a58b472dad..beafa845129 100644 --- a/bmc-identitydomains/pom.xml +++ b/bmc-identitydomains/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-identitydomains @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-integration/pom.xml b/bmc-integration/pom.xml index b2b0a0146a0..26fbf8d0ca6 100644 --- a/bmc-integration/pom.xml +++ b/bmc-integration/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-integration @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-iot/pom.xml b/bmc-iot/pom.xml index 44c5c2c22bc..27692aa4d28 100644 --- a/bmc-iot/pom.xml +++ b/bmc-iot/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-iot @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-jms/pom.xml b/bmc-jms/pom.xml index 932a3175d3f..8a2bb26447c 100644 --- a/bmc-jms/pom.xml +++ b/bmc-jms/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-jms @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-jmsjavadownloads/pom.xml b/bmc-jmsjavadownloads/pom.xml index b96f0392cff..ab960fddb1d 100644 --- a/bmc-jmsjavadownloads/pom.xml +++ b/bmc-jmsjavadownloads/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-jmsjavadownloads @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-jmsutils/pom.xml b/bmc-jmsutils/pom.xml index 100d356bc93..58b691eadfa 100644 --- a/bmc-jmsutils/pom.xml +++ b/bmc-jmsutils/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-jmsutils @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-keymanagement/pom.xml b/bmc-keymanagement/pom.xml index f87b8ba9de2..d352b532d31 100644 --- a/bmc-keymanagement/pom.xml +++ b/bmc-keymanagement/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-keymanagement @@ -16,7 +16,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-licensemanager/pom.xml b/bmc-licensemanager/pom.xml index 10aa9a5c74a..5d20c354feb 100644 --- a/bmc-licensemanager/pom.xml +++ b/bmc-licensemanager/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-licensemanager @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-limits/pom.xml b/bmc-limits/pom.xml index f6014aa728f..54794fb5705 100644 --- a/bmc-limits/pom.xml +++ b/bmc-limits/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-limits @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-limitsincrease/pom.xml b/bmc-limitsincrease/pom.xml index 1e18ed8310f..4685e495bec 100644 --- a/bmc-limitsincrease/pom.xml +++ b/bmc-limitsincrease/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-limitsincrease @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-loadbalancer/pom.xml b/bmc-loadbalancer/pom.xml index b0da44d67d5..89e217223f0 100644 --- a/bmc-loadbalancer/pom.xml +++ b/bmc-loadbalancer/pom.xml @@ -5,7 +5,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml @@ -18,7 +18,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 diff --git a/bmc-lockbox/pom.xml b/bmc-lockbox/pom.xml index 5a1b2b74e4a..788ff57db8f 100644 --- a/bmc-lockbox/pom.xml +++ b/bmc-lockbox/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-lockbox @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-loganalytics/pom.xml b/bmc-loganalytics/pom.xml index 94e3ca5c546..91326bc0d8c 100644 --- a/bmc-loganalytics/pom.xml +++ b/bmc-loganalytics/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-loganalytics @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-logging/pom.xml b/bmc-logging/pom.xml index 672cc6b3040..3eaafa1275a 100644 --- a/bmc-logging/pom.xml +++ b/bmc-logging/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-logging @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-loggingingestion/pom.xml b/bmc-loggingingestion/pom.xml index 4193a5d1417..246c92135f7 100644 --- a/bmc-loggingingestion/pom.xml +++ b/bmc-loggingingestion/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-loggingingestion @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-loggingsearch/pom.xml b/bmc-loggingsearch/pom.xml index 4c9109433b8..8e138fab946 100644 --- a/bmc-loggingsearch/pom.xml +++ b/bmc-loggingsearch/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-loggingsearch @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-lustrefilestorage/pom.xml b/bmc-lustrefilestorage/pom.xml index 7bf10862081..043d1db3666 100644 --- a/bmc-lustrefilestorage/pom.xml +++ b/bmc-lustrefilestorage/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-lustrefilestorage @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-managedkafka/pom.xml b/bmc-managedkafka/pom.xml index 877c2a85862..1a0b42dbce5 100644 --- a/bmc-managedkafka/pom.xml +++ b/bmc-managedkafka/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-managedkafka @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-managementagent/pom.xml b/bmc-managementagent/pom.xml index 915c66c57e9..9205347207d 100644 --- a/bmc-managementagent/pom.xml +++ b/bmc-managementagent/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-managementagent @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-managementdashboard/pom.xml b/bmc-managementdashboard/pom.xml index 428c638a326..cb08da660e9 100644 --- a/bmc-managementdashboard/pom.xml +++ b/bmc-managementdashboard/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-managementdashboard @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-marketplace/pom.xml b/bmc-marketplace/pom.xml index 04864d4f727..d26fbf56176 100644 --- a/bmc-marketplace/pom.xml +++ b/bmc-marketplace/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-marketplace @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-marketplaceprivateoffer/pom.xml b/bmc-marketplaceprivateoffer/pom.xml index e00f878276a..685896317b5 100644 --- a/bmc-marketplaceprivateoffer/pom.xml +++ b/bmc-marketplaceprivateoffer/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-marketplaceprivateoffer @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-marketplacepublisher/pom.xml b/bmc-marketplacepublisher/pom.xml index c4e1e80c1b2..603ce363387 100644 --- a/bmc-marketplacepublisher/pom.xml +++ b/bmc-marketplacepublisher/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-marketplacepublisher @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-mediaservices/pom.xml b/bmc-mediaservices/pom.xml index 4f16c420c31..f687665e014 100644 --- a/bmc-mediaservices/pom.xml +++ b/bmc-mediaservices/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-mediaservices @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-mngdmac/pom.xml b/bmc-mngdmac/pom.xml index 6ddeff455e7..26ff54136e9 100644 --- a/bmc-mngdmac/pom.xml +++ b/bmc-mngdmac/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-mngdmac @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-modeldeployment/pom.xml b/bmc-modeldeployment/pom.xml index fe704d55c9f..196d870508b 100644 --- a/bmc-modeldeployment/pom.xml +++ b/bmc-modeldeployment/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-modeldeployment @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-monitoring/pom.xml b/bmc-monitoring/pom.xml index 9e2579db83b..eb15d7d4648 100644 --- a/bmc-monitoring/pom.xml +++ b/bmc-monitoring/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-monitoring @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-multicloud/pom.xml b/bmc-multicloud/pom.xml index 0ead0914285..0ef287941fb 100644 --- a/bmc-multicloud/pom.xml +++ b/bmc-multicloud/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-multicloud @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-mysql/pom.xml b/bmc-mysql/pom.xml index 72dce90d10d..046aad522f6 100644 --- a/bmc-mysql/pom.xml +++ b/bmc-mysql/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-mysql @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-networkfirewall/pom.xml b/bmc-networkfirewall/pom.xml index a2d58d3574d..17ab4f243ef 100644 --- a/bmc-networkfirewall/pom.xml +++ b/bmc-networkfirewall/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-networkfirewall @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-networkloadbalancer/pom.xml b/bmc-networkloadbalancer/pom.xml index 010b45f0ddb..e5c99f52910 100644 --- a/bmc-networkloadbalancer/pom.xml +++ b/bmc-networkloadbalancer/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-networkloadbalancer @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-nosql/pom.xml b/bmc-nosql/pom.xml index a0fe5785b23..87901fafb0a 100644 --- a/bmc-nosql/pom.xml +++ b/bmc-nosql/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-nosql @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-objectstorage/bmc-objectstorage-combined/pom.xml b/bmc-objectstorage/bmc-objectstorage-combined/pom.xml index 523d7ac42f4..87647afb801 100644 --- a/bmc-objectstorage/bmc-objectstorage-combined/pom.xml +++ b/bmc-objectstorage/bmc-objectstorage-combined/pom.xml @@ -5,7 +5,7 @@ com.oracle.oci.sdk oci-java-sdk-objectstorage-parent - 3.91.0 + 3.91.1 ../pom.xml @@ -18,12 +18,12 @@ com.oracle.oci.sdk oci-java-sdk-objectstorage-generated - 3.91.0 + 3.91.1 com.oracle.oci.sdk oci-java-sdk-objectstorage-extensions - 3.91.0 + 3.91.1 diff --git a/bmc-objectstorage/bmc-objectstorage-extensions/pom.xml b/bmc-objectstorage/bmc-objectstorage-extensions/pom.xml index d1520ab1564..ff78f2b7d70 100644 --- a/bmc-objectstorage/bmc-objectstorage-extensions/pom.xml +++ b/bmc-objectstorage/bmc-objectstorage-extensions/pom.xml @@ -5,7 +5,7 @@ com.oracle.oci.sdk oci-java-sdk-objectstorage-parent - 3.91.0 + 3.91.1 ../pom.xml @@ -25,17 +25,17 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 com.oracle.oci.sdk oci-java-sdk-common-httpclient - 3.91.0 + 3.91.1 com.oracle.oci.sdk oci-java-sdk-objectstorage-generated - 3.91.0 + 3.91.1 org.slf4j diff --git a/bmc-objectstorage/bmc-objectstorage-generated/pom.xml b/bmc-objectstorage/bmc-objectstorage-generated/pom.xml index a114ec94608..601d9a82eab 100644 --- a/bmc-objectstorage/bmc-objectstorage-generated/pom.xml +++ b/bmc-objectstorage/bmc-objectstorage-generated/pom.xml @@ -5,7 +5,7 @@ com.oracle.oci.sdk oci-java-sdk-objectstorage-parent - 3.91.0 + 3.91.1 ../pom.xml @@ -19,7 +19,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 diff --git a/bmc-objectstorage/pom.xml b/bmc-objectstorage/pom.xml index 8e2bfe3d0b5..da3d597e3f5 100644 --- a/bmc-objectstorage/pom.xml +++ b/bmc-objectstorage/pom.xml @@ -5,7 +5,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml diff --git a/bmc-oce/pom.xml b/bmc-oce/pom.xml index 9ffe6b6172f..b2382c1e088 100644 --- a/bmc-oce/pom.xml +++ b/bmc-oce/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-oce @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-ocicontrolcenter/pom.xml b/bmc-ocicontrolcenter/pom.xml index 6b868aa6ed8..7ba1ff5accb 100644 --- a/bmc-ocicontrolcenter/pom.xml +++ b/bmc-ocicontrolcenter/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-ocicontrolcenter @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-ocvp/pom.xml b/bmc-ocvp/pom.xml index ce5d5700599..e5beb98013b 100644 --- a/bmc-ocvp/pom.xml +++ b/bmc-ocvp/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-ocvp @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-oda/pom.xml b/bmc-oda/pom.xml index b4b6c9b5cfd..d3edc1167b6 100644 --- a/bmc-oda/pom.xml +++ b/bmc-oda/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-oda @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-onesubscription/pom.xml b/bmc-onesubscription/pom.xml index 13ea6411916..bd88375d594 100644 --- a/bmc-onesubscription/pom.xml +++ b/bmc-onesubscription/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-onesubscription @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-ons/pom.xml b/bmc-ons/pom.xml index dd526ad8027..669c276d9c7 100644 --- a/bmc-ons/pom.xml +++ b/bmc-ons/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-ons @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-opa/pom.xml b/bmc-opa/pom.xml index 7f9f32e8ea1..d659ae40ecb 100644 --- a/bmc-opa/pom.xml +++ b/bmc-opa/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-opa @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-opensearch/pom.xml b/bmc-opensearch/pom.xml index 03118921a45..2a42a7ec667 100644 --- a/bmc-opensearch/pom.xml +++ b/bmc-opensearch/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-opensearch @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-operatoraccesscontrol/pom.xml b/bmc-operatoraccesscontrol/pom.xml index c9595417ebb..bcfbba7a1fa 100644 --- a/bmc-operatoraccesscontrol/pom.xml +++ b/bmc-operatoraccesscontrol/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-operatoraccesscontrol @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-opsi/pom.xml b/bmc-opsi/pom.xml index eac344c0a4f..c3ac83ce813 100644 --- a/bmc-opsi/pom.xml +++ b/bmc-opsi/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-opsi @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-optimizer/pom.xml b/bmc-optimizer/pom.xml index c1470d7e21b..1d0111a7f0a 100644 --- a/bmc-optimizer/pom.xml +++ b/bmc-optimizer/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-optimizer @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-osmanagementhub/pom.xml b/bmc-osmanagementhub/pom.xml index 14d5841bfc7..4550bb91118 100644 --- a/bmc-osmanagementhub/pom.xml +++ b/bmc-osmanagementhub/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-osmanagementhub @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-ospgateway/pom.xml b/bmc-ospgateway/pom.xml index 28568fa86d4..60034b7fa58 100644 --- a/bmc-ospgateway/pom.xml +++ b/bmc-ospgateway/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-ospgateway @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-osubbillingschedule/pom.xml b/bmc-osubbillingschedule/pom.xml index 6f1b2652006..f9efa731735 100644 --- a/bmc-osubbillingschedule/pom.xml +++ b/bmc-osubbillingschedule/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-osubbillingschedule @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-osuborganizationsubscription/pom.xml b/bmc-osuborganizationsubscription/pom.xml index 88a9890589d..9ec4f0d8bec 100644 --- a/bmc-osuborganizationsubscription/pom.xml +++ b/bmc-osuborganizationsubscription/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-osuborganizationsubscription @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-osubsubscription/pom.xml b/bmc-osubsubscription/pom.xml index 2ab9531b9d5..255784ebdcc 100644 --- a/bmc-osubsubscription/pom.xml +++ b/bmc-osubsubscription/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-osubsubscription @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-osubusage/pom.xml b/bmc-osubusage/pom.xml index 11594d788d3..03e13b35e35 100644 --- a/bmc-osubusage/pom.xml +++ b/bmc-osubusage/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-osubusage @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-other-examples/bmc-jersey-examples/pom.xml b/bmc-other-examples/bmc-jersey-examples/pom.xml index 047eea764ef..d94b092cb3b 100644 --- a/bmc-other-examples/bmc-jersey-examples/pom.xml +++ b/bmc-other-examples/bmc-jersey-examples/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.oracle.oci.sdk oci-java-sdk-jersey-examples - 3.91.0 + 3.91.1 Oracle Cloud Infrastructure SDK - Examples using Jersey 2 HTTP client This project contains the examples on how to use the SDK used for Oracle Cloud Infrastructure with the Jersey 2 HTTP client https://docs.oracle.com/iaas/Content/API/SDKDocs/javasdk.htm @@ -58,7 +58,7 @@ com.oracle.oci.sdk oci-java-sdk-enforcer-rules - 3.91.0 + 3.91.1 false @@ -95,14 +95,14 @@ com.oracle.oci.sdk oci-java-sdk-bom - 3.91.0 + 3.91.1 pom import com.oracle.oci.sdk oci-java-sdk-common-httpclient-jersey - 3.91.0 + 3.91.1 pom import diff --git a/bmc-other-examples/bmc-jersey3-examples/pom.xml b/bmc-other-examples/bmc-jersey3-examples/pom.xml index abdcf7b9e94..5054f261d98 100644 --- a/bmc-other-examples/bmc-jersey3-examples/pom.xml +++ b/bmc-other-examples/bmc-jersey3-examples/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.oracle.oci.sdk oci-java-sdk-jersey3-examples - 3.91.0 + 3.91.1 Oracle Cloud Infrastructure SDK - Examples using Jersey 3 HTTP client This project contains the examples on how to use the SDK used for Oracle Cloud Infrastructure with the Jersey 3 HTTP client https://docs.oracle.com/iaas/Content/API/SDKDocs/javasdk.htm @@ -58,7 +58,7 @@ com.oracle.oci.sdk oci-java-sdk-enforcer-rules - 3.91.0 + 3.91.1 false @@ -95,14 +95,14 @@ com.oracle.oci.sdk oci-java-sdk-bom - 3.91.0 + 3.91.1 pom import com.oracle.oci.sdk oci-java-sdk-common-httpclient-jersey3 - 3.91.0 + 3.91.1 pom import diff --git a/bmc-other-examples/native-maven-example/pom.xml b/bmc-other-examples/native-maven-example/pom.xml index 553c6f691ad..296bfb67d68 100644 --- a/bmc-other-examples/native-maven-example/pom.xml +++ b/bmc-other-examples/native-maven-example/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.oracle.oci.sdk oci-java-sdk-examples-native - 3.91.0 + 3.91.1 Oracle Cloud Infrastructure SDK - Native Example This project contains an example on how to use the SDK used for Oracle Cloud Infrastructure in a native executable https://docs.oracle.com/iaas/Content/API/SDKDocs/javasdk.htm @@ -98,14 +98,14 @@ com.oracle.oci.sdk oci-java-sdk-bom - 3.91.0 + 3.91.1 pom import com.oracle.oci.sdk oci-java-sdk-common-httpclient-jersey - 3.91.0 + 3.91.1 pom import diff --git a/bmc-other-examples/pom.xml b/bmc-other-examples/pom.xml index 7e90aba7f1f..b5f79ef3eb7 100644 --- a/bmc-other-examples/pom.xml +++ b/bmc-other-examples/pom.xml @@ -5,7 +5,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml diff --git a/bmc-psa/pom.xml b/bmc-psa/pom.xml index 31fd78c2c03..2a207bb53e2 100644 --- a/bmc-psa/pom.xml +++ b/bmc-psa/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-psa @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-psql/pom.xml b/bmc-psql/pom.xml index 1897ea0f68a..8f5204e76f0 100644 --- a/bmc-psql/pom.xml +++ b/bmc-psql/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-psql @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-queue/pom.xml b/bmc-queue/pom.xml index b0e8f1f9951..0d32d5f15ce 100644 --- a/bmc-queue/pom.xml +++ b/bmc-queue/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-queue @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-recovery/pom.xml b/bmc-recovery/pom.xml index 739f65be911..aedae428f68 100644 --- a/bmc-recovery/pom.xml +++ b/bmc-recovery/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-recovery @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-redis/pom.xml b/bmc-redis/pom.xml index f963f95f661..ff0f5fef011 100644 --- a/bmc-redis/pom.xml +++ b/bmc-redis/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-redis @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-resourceanalytics/pom.xml b/bmc-resourceanalytics/pom.xml index f82fe0c8380..3c6b2ea7f82 100644 --- a/bmc-resourceanalytics/pom.xml +++ b/bmc-resourceanalytics/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-resourceanalytics @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-resourcemanager/pom.xml b/bmc-resourcemanager/pom.xml index 1eb20ea36bc..3d360cccb15 100644 --- a/bmc-resourcemanager/pom.xml +++ b/bmc-resourcemanager/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-resourcemanager @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-resourcescheduler/pom.xml b/bmc-resourcescheduler/pom.xml index c7e7ab14a42..d9f44b8f62f 100644 --- a/bmc-resourcescheduler/pom.xml +++ b/bmc-resourcescheduler/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-resourcescheduler @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-resourcesearch/pom.xml b/bmc-resourcesearch/pom.xml index 389e587d885..b7648c7649f 100644 --- a/bmc-resourcesearch/pom.xml +++ b/bmc-resourcesearch/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-resourcesearch @@ -16,7 +16,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-rover/pom.xml b/bmc-rover/pom.xml index c1fcd6dc609..df266ce2c65 100644 --- a/bmc-rover/pom.xml +++ b/bmc-rover/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-rover @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-sch/pom.xml b/bmc-sch/pom.xml index 7eb943f8940..913a481a2ed 100644 --- a/bmc-sch/pom.xml +++ b/bmc-sch/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-sch @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-secrets/pom.xml b/bmc-secrets/pom.xml index c54fbf1a80f..aba1792ee4c 100644 --- a/bmc-secrets/pom.xml +++ b/bmc-secrets/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-secrets @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-securityattribute/pom.xml b/bmc-securityattribute/pom.xml index 2df4b9d324a..d91edbc5bad 100644 --- a/bmc-securityattribute/pom.xml +++ b/bmc-securityattribute/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-securityattribute @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-self/pom.xml b/bmc-self/pom.xml index 281bcd55ff7..450f92ab9fb 100644 --- a/bmc-self/pom.xml +++ b/bmc-self/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-self @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-servicecatalog/pom.xml b/bmc-servicecatalog/pom.xml index 0f357c90aa7..aa1dba4cc34 100644 --- a/bmc-servicecatalog/pom.xml +++ b/bmc-servicecatalog/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-servicecatalog @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-servicemanagerproxy/pom.xml b/bmc-servicemanagerproxy/pom.xml index 62bd8be74be..c6715751032 100644 --- a/bmc-servicemanagerproxy/pom.xml +++ b/bmc-servicemanagerproxy/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-servicemanagerproxy @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-shaded/bmc-shaded-full/pom.xml b/bmc-shaded/bmc-shaded-full/pom.xml index cdfbdd797b9..554f84bdbbe 100644 --- a/bmc-shaded/bmc-shaded-full/pom.xml +++ b/bmc-shaded/bmc-shaded-full/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk-shaded - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-shaded-full diff --git a/bmc-shaded/pom.xml b/bmc-shaded/pom.xml index 6ea28d6f581..6901fa89ea7 100644 --- a/bmc-shaded/pom.xml +++ b/bmc-shaded/pom.xml @@ -5,7 +5,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml diff --git a/bmc-stackmonitoring/pom.xml b/bmc-stackmonitoring/pom.xml index 9860716e853..48515ae0bbf 100644 --- a/bmc-stackmonitoring/pom.xml +++ b/bmc-stackmonitoring/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-stackmonitoring @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-streaming/pom.xml b/bmc-streaming/pom.xml index dd3f6d1c6c4..a7795d9ce89 100644 --- a/bmc-streaming/pom.xml +++ b/bmc-streaming/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-streaming @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-tenantmanagercontrolplane/pom.xml b/bmc-tenantmanagercontrolplane/pom.xml index 8884963da4c..ecca2c8564a 100644 --- a/bmc-tenantmanagercontrolplane/pom.xml +++ b/bmc-tenantmanagercontrolplane/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-tenantmanagercontrolplane @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-threatintelligence/pom.xml b/bmc-threatintelligence/pom.xml index 3902bf90b49..562677548ea 100644 --- a/bmc-threatintelligence/pom.xml +++ b/bmc-threatintelligence/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-threatintelligence @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-usage/pom.xml b/bmc-usage/pom.xml index 05c36cfceae..18e3da68c33 100644 --- a/bmc-usage/pom.xml +++ b/bmc-usage/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-usage @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-usageapi/pom.xml b/bmc-usageapi/pom.xml index 54a60444b15..bae575d0447 100644 --- a/bmc-usageapi/pom.xml +++ b/bmc-usageapi/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-usageapi @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-vault/pom.xml b/bmc-vault/pom.xml index d480a4385c3..acdd1af6399 100644 --- a/bmc-vault/pom.xml +++ b/bmc-vault/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-vault @@ -15,12 +15,12 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 com.oracle.oci.sdk oci-java-sdk-workrequests - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-vbsinst/pom.xml b/bmc-vbsinst/pom.xml index 186dfd7bb1a..26d548e01f7 100644 --- a/bmc-vbsinst/pom.xml +++ b/bmc-vbsinst/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-vbsinst @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-visualbuilder/pom.xml b/bmc-visualbuilder/pom.xml index 7a05b15ac5e..6ba6e911da8 100644 --- a/bmc-visualbuilder/pom.xml +++ b/bmc-visualbuilder/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-visualbuilder @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-vnmonitoring/pom.xml b/bmc-vnmonitoring/pom.xml index 3863aec52df..2980dadb2dc 100644 --- a/bmc-vnmonitoring/pom.xml +++ b/bmc-vnmonitoring/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-vnmonitoring @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-vulnerabilityscanning/pom.xml b/bmc-vulnerabilityscanning/pom.xml index a2922a7a014..c722730b7a8 100644 --- a/bmc-vulnerabilityscanning/pom.xml +++ b/bmc-vulnerabilityscanning/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-vulnerabilityscanning @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-waa/pom.xml b/bmc-waa/pom.xml index 53449685407..ad24b05f87d 100644 --- a/bmc-waa/pom.xml +++ b/bmc-waa/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-waa @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-waas/pom.xml b/bmc-waas/pom.xml index 07d41c8b685..561f2d9e925 100644 --- a/bmc-waas/pom.xml +++ b/bmc-waas/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-waas @@ -16,7 +16,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-waf/pom.xml b/bmc-waf/pom.xml index c3be6b5162f..6871c205716 100644 --- a/bmc-waf/pom.xml +++ b/bmc-waf/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-waf @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-wlms/pom.xml b/bmc-wlms/pom.xml index dd23a3aecb2..5d7202b8e61 100644 --- a/bmc-wlms/pom.xml +++ b/bmc-wlms/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-wlms @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-workrequests/pom.xml b/bmc-workrequests/pom.xml index f70276cd2f3..77cfd4b4842 100644 --- a/bmc-workrequests/pom.xml +++ b/bmc-workrequests/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-workrequests @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/bmc-zpr/pom.xml b/bmc-zpr/pom.xml index 723d6f0abd9..d694f8fca2d 100644 --- a/bmc-zpr/pom.xml +++ b/bmc-zpr/pom.xml @@ -4,7 +4,7 @@ com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 ../pom.xml oci-java-sdk-zpr @@ -15,7 +15,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 3.91.0 + 3.91.1 \ No newline at end of file diff --git a/pom.xml b/pom.xml index e4ac5237aa6..5dee96ef8e0 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.oracle.oci.sdk oci-java-sdk - 3.91.0 + 3.91.1 pom Oracle Cloud Infrastructure SDK This project contains the SDK used for Oracle Cloud Infrastructure