jwkRsa = AuthUtils.toPublicKeyFromJson(jwk);
if (jwkRsa.isPresent()
&& isEqualPublicKey(
- jwkRsa.get(), sessionKeySupplier.getPublicKey())) {
+ jwkRsa.get(),
+ (RSAPublicKey)
+ sessionKeySupplier.getKeyPair().getPublic())) {
LOG.debug(
"Security token is still valid. Public key matches with the JWK.");
diff --git a/bmc-common/src/main/java/com/oracle/bmc/auth/internal/X509FederationClient.java b/bmc-common/src/main/java/com/oracle/bmc/auth/internal/X509FederationClient.java
index fc44f1a6454..9bde4d12771 100644
--- a/bmc-common/src/main/java/com/oracle/bmc/auth/internal/X509FederationClient.java
+++ b/bmc-common/src/main/java/com/oracle/bmc/auth/internal/X509FederationClient.java
@@ -7,22 +7,15 @@
import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Function;
-import com.google.common.base.Optional;
import com.google.common.base.Preconditions;
-import com.google.common.base.Supplier;
import com.oracle.bmc.auth.SessionKeySupplier;
import com.oracle.bmc.auth.X509CertificateSupplier;
import com.oracle.bmc.http.ClientConfigurator;
import com.oracle.bmc.http.internal.ResponseConversionFunctionFactory;
import com.oracle.bmc.http.internal.RestClient;
-import com.oracle.bmc.http.internal.RestClientFactory;
-import com.oracle.bmc.http.internal.RestClientFactoryBuilder;
import com.oracle.bmc.http.internal.WithHeaders;
import com.oracle.bmc.http.internal.WrappedInvocationBuilder;
-import com.oracle.bmc.http.signing.RequestSigner;
import com.oracle.bmc.http.signing.internal.Constants;
-import com.oracle.bmc.http.signing.internal.KeySupplier;
-import com.oracle.bmc.http.signing.internal.RequestSignerImpl;
import com.oracle.bmc.model.BmcException;
import com.oracle.bmc.requests.BmcRequest;
import lombok.AllArgsConstructor;
@@ -36,14 +29,13 @@
import javax.ws.rs.client.Invocation.Builder;
import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.Response;
+import java.security.KeyPair;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
-import java.security.interfaces.RSAPrivateKey;
import java.security.interfaces.RSAPublicKey;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
-import java.util.Map;
import java.util.Set;
/**
@@ -62,7 +54,9 @@ public class X509FederationClient implements FederationClient {
private final RestClient federationHttpClient;
- private SecurityTokenAdapter securityTokenAdapter = null;
+ // needs to be volatile to make double-checked locking work
+ // see https://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html
+ private volatile SecurityTokenAdapter securityTokenAdapter = null;
/**
* The constructor.
@@ -210,17 +204,28 @@ private static String keyIdForX509Request(String tenantId, X509Certificate certi
private SecurityTokenAdapter getSecurityTokenFromServer() {
LOG.info("Getting security token from the auth server");
- RSAPublicKey publicKey = sessionKeySupplier.getPublicKey();
+ KeyPair keyPair = sessionKeySupplier.getKeyPair();
+ if (keyPair == null) {
+ throw new IllegalStateException("Keypair for session was not provided");
+ }
+
+ RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic();
if (publicKey == null) {
throw new IllegalArgumentException("Public key is not present");
}
- X509Certificate leafCertificate = leafCertificateSupplier.getCertificate();
+ X509CertificateSupplier.CertificateAndPrivateKeyPair certificateAndKeyPair =
+ leafCertificateSupplier.getCertificateAndKeyPair();
+ if (certificateAndKeyPair == null) {
+ throw new IllegalArgumentException("Certificate and key pair are not present");
+ }
+
+ X509Certificate leafCertificate = certificateAndKeyPair.getCertificate();
if (leafCertificate == null) {
throw new IllegalArgumentException("Leaf certificate is not present");
}
- if (leafCertificateSupplier.getPrivateKey() == null) {
+ if (certificateAndKeyPair.getPrivateKey() == null) {
throw new IllegalArgumentException("Leaf certificate's private key is not present");
}
@@ -233,9 +238,13 @@ private SecurityTokenAdapter getSecurityTokenFromServer() {
intermediateStrings = new HashSet<>();
for (X509CertificateSupplier supplier : intermediateCertificateSuppliers) {
- if (supplier.getCertificate() != null) {
+ X509CertificateSupplier.CertificateAndPrivateKeyPair
+ supplierCertificateAndKeyPair = supplier.getCertificateAndKeyPair();
+ if (supplierCertificateAndKeyPair != null
+ && supplierCertificateAndKeyPair.getCertificate() != null) {
intermediateStrings.add(
- AuthUtils.base64EncodeNoChunking(supplier.getCertificate()));
+ AuthUtils.base64EncodeNoChunking(
+ supplierCertificateAndKeyPair.getCertificate()));
}
}
}
diff --git a/bmc-common/src/main/java/com/oracle/bmc/http/internal/EntityFactory.java b/bmc-common/src/main/java/com/oracle/bmc/http/internal/EntityFactory.java
index 1d7d4e39d27..9b3750016fd 100644
--- a/bmc-common/src/main/java/com/oracle/bmc/http/internal/EntityFactory.java
+++ b/bmc-common/src/main/java/com/oracle/bmc/http/internal/EntityFactory.java
@@ -11,7 +11,6 @@
import javax.ws.rs.core.Variant;
import com.fasterxml.jackson.core.JsonProcessingException;
-import org.glassfish.jersey.client.ClientRequest;
import com.oracle.bmc.util.internal.ReflectionUtils;
@@ -98,7 +97,7 @@ Entity> forPut(Object request, Object body) {
/**
* Need to preserve the content headers that get overridden by the Variant provided
- * by the Entity. See {@link ClientRequest#variant(javax.ws.rs.core.Variant)}.
+ * by the Entity. See {@link org.glassfish.jersey.client.ClientRequest#variant(javax.ws.rs.core.Variant)}.
*
* NOTE: this should ideally only be inspecting the headers (in case there were query
* params with the same names, for example), but we don't have access to just the headers
diff --git a/bmc-common/src/main/java/com/oracle/bmc/http/internal/ExplicitlySetFilter.java b/bmc-common/src/main/java/com/oracle/bmc/http/internal/ExplicitlySetFilter.java
index 357ea2d5d23..e859cafa7e7 100644
--- a/bmc-common/src/main/java/com/oracle/bmc/http/internal/ExplicitlySetFilter.java
+++ b/bmc-common/src/main/java/com/oracle/bmc/http/internal/ExplicitlySetFilter.java
@@ -8,10 +8,13 @@
import com.fasterxml.jackson.databind.ser.BeanPropertyWriter;
import com.fasterxml.jackson.databind.ser.PropertyWriter;
import com.fasterxml.jackson.databind.ser.impl.SimpleBeanPropertyFilter;
+import com.google.common.base.CaseFormat;
+import lombok.extern.slf4j.Slf4j;
import java.lang.reflect.Field;
import java.util.Set;
+@Slf4j
public class ExplicitlySetFilter extends SimpleBeanPropertyFilter {
public static final ExplicitlySetFilter INSTANCE = new ExplicitlySetFilter();
public static final String NAME = "explicitlySetFilter";
@@ -24,7 +27,7 @@ public void serializeAsField(
Object pojo, JsonGenerator jgen, SerializerProvider provider, PropertyWriter writer)
throws Exception {
if (include(writer)) {
- Field field = getDeclaredField(pojo.getClass(), writer.getName());
+ Field field = getMatchingDeclaredField(pojo.getClass(), writer.getName());
boolean accessible = field.isAccessible();
try {
field.setAccessible(true);
@@ -69,6 +72,19 @@ private static Field getDeclaredField(Class> pojoClass, String fieldName)
}
}
+ private static Field getMatchingDeclaredField(Class> pojoClass, String fieldName)
+ throws NoSuchFieldException {
+ // Try matching the exact field name
+ try {
+ return getDeclaredField(pojoClass, fieldName);
+ } catch (NoSuchFieldException nsfe) {
+ LOG.debug("Exact field name match failed for {}", fieldName);
+ }
+ // If not found, try converting the field name from snake case to camel case
+ return getDeclaredField(
+ pojoClass, CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, fieldName));
+ }
+
@Override
protected boolean include(BeanPropertyWriter writer) {
return !FIELD_NAME.equals(writer.getName());
diff --git a/bmc-common/src/main/java/com/oracle/bmc/http/internal/ForwardingInvocationBuilder.java b/bmc-common/src/main/java/com/oracle/bmc/http/internal/ForwardingInvocationBuilder.java
index 226e22111fd..0c518af8aaf 100644
--- a/bmc-common/src/main/java/com/oracle/bmc/http/internal/ForwardingInvocationBuilder.java
+++ b/bmc-common/src/main/java/com/oracle/bmc/http/internal/ForwardingInvocationBuilder.java
@@ -6,7 +6,12 @@
import javax.ws.rs.client.AsyncInvoker;
import javax.ws.rs.client.Entity;
import javax.ws.rs.client.Invocation;
-import javax.ws.rs.core.*;
+import javax.ws.rs.core.CacheControl;
+import javax.ws.rs.core.Cookie;
+import javax.ws.rs.core.GenericType;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.MultivaluedMap;
+import javax.ws.rs.core.Response;
import java.util.Locale;
public abstract class ForwardingInvocationBuilder implements Invocation.Builder {
diff --git a/bmc-common/src/main/java/com/oracle/bmc/http/internal/ResponseHelper.java b/bmc-common/src/main/java/com/oracle/bmc/http/internal/ResponseHelper.java
index 3238208a0e1..9b77f9e6219 100644
--- a/bmc-common/src/main/java/com/oracle/bmc/http/internal/ResponseHelper.java
+++ b/bmc-common/src/main/java/com/oracle/bmc/http/internal/ResponseHelper.java
@@ -6,7 +6,6 @@
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
-import java.util.Locale;
import javax.ws.rs.ProcessingException;
import javax.ws.rs.core.GenericType;
diff --git a/bmc-common/src/main/java/com/oracle/bmc/http/internal/RestClient.java b/bmc-common/src/main/java/com/oracle/bmc/http/internal/RestClient.java
index b7feed3f492..5ea866a4169 100644
--- a/bmc-common/src/main/java/com/oracle/bmc/http/internal/RestClient.java
+++ b/bmc-common/src/main/java/com/oracle/bmc/http/internal/RestClient.java
@@ -16,7 +16,12 @@
import javax.annotation.Nullable;
import javax.ws.rs.ProcessingException;
-import javax.ws.rs.client.*;
+import javax.ws.rs.client.AsyncInvoker;
+import javax.ws.rs.client.Client;
+import javax.ws.rs.client.Entity;
+import javax.ws.rs.client.Invocation;
+import javax.ws.rs.client.InvocationCallback;
+import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.GenericType;
import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.core.Response;
diff --git a/bmc-common/src/main/java/com/oracle/bmc/http/internal/RestClientFactory.java b/bmc-common/src/main/java/com/oracle/bmc/http/internal/RestClientFactory.java
index 7ff6a6e6e06..f9e42fee9f2 100644
--- a/bmc-common/src/main/java/com/oracle/bmc/http/internal/RestClientFactory.java
+++ b/bmc-common/src/main/java/com/oracle/bmc/http/internal/RestClientFactory.java
@@ -11,7 +11,6 @@
import com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider;
import com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider;
import com.oracle.bmc.ClientConfiguration;
-import com.oracle.bmc.auth.AuthenticationDetailsProvider;
import com.oracle.bmc.http.ClientConfigurator;
import com.oracle.bmc.http.signing.RequestSigner;
import com.oracle.bmc.http.signing.SigningStrategy;
@@ -70,7 +69,7 @@ public RestClientFactory(@Nonnull ClientConfigurator clientConfigurator) {
/**
* Creates a new client that will use the given
- * {@link AuthenticationDetailsProvider}.
+ * {@link com.oracle.bmc.auth.AuthenticationDetailsProvider}.
*
* @param requestSigner The strategy used to sign requests.
* @return A new RestClient instance.
@@ -84,7 +83,7 @@ public RestClient create(RequestSigner requestSigner) {
/**
* Creates a new client that will use the given
- * {@link AuthenticationDetailsProvider} and {@link ClientConfiguration}.
+ * {@link com.oracle.bmc.auth.AuthenticationDetailsProvider} and {@link ClientConfiguration}.
*
* @param requestSigner The strategy used to sign requests.
* @param configuration
@@ -104,7 +103,7 @@ public RestClient create(RequestSigner requestSigner, ClientConfiguration config
/**
* Creates a new client that will use the given
- * {@link AuthenticationDetailsProvider}.
+ * {@link com.oracle.bmc.auth.AuthenticationDetailsProvider}.
*
* @param defaultRequestSigner
* The default strategy used to sign requests.
@@ -120,7 +119,7 @@ public RestClient create(
/**
* Creates a new client that will use the given
- * {@link AuthenticationDetailsProvider} and {@link ClientConfiguration}.
+ * {@link com.oracle.bmc.auth.AuthenticationDetailsProvider} and {@link ClientConfiguration}.
*
* @param defaultRequestSigner
* The default strategy used to sign requests.
diff --git a/bmc-common/src/main/java/com/oracle/bmc/http/internal/WrappedInvocationBuilder.java b/bmc-common/src/main/java/com/oracle/bmc/http/internal/WrappedInvocationBuilder.java
index 5aec6e306e2..750e441c58a 100644
--- a/bmc-common/src/main/java/com/oracle/bmc/http/internal/WrappedInvocationBuilder.java
+++ b/bmc-common/src/main/java/com/oracle/bmc/http/internal/WrappedInvocationBuilder.java
@@ -6,11 +6,9 @@
import lombok.Getter;
import lombok.RequiredArgsConstructor;
-import javax.ws.rs.client.AsyncInvoker;
-import javax.ws.rs.client.Entity;
import javax.ws.rs.client.Invocation;
-import javax.ws.rs.core.*;
-import java.util.Locale;
+import javax.ws.rs.core.MultivaluedHashMap;
+import javax.ws.rs.core.MultivaluedMap;
/**
* An {@link Invocation.Builder} that stores the headers being set, allowing access to them.
diff --git a/bmc-common/src/main/java/com/oracle/bmc/http/internal/WrappedWebTarget.java b/bmc-common/src/main/java/com/oracle/bmc/http/internal/WrappedWebTarget.java
index 20c309c1bbc..b4c113597b9 100644
--- a/bmc-common/src/main/java/com/oracle/bmc/http/internal/WrappedWebTarget.java
+++ b/bmc-common/src/main/java/com/oracle/bmc/http/internal/WrappedWebTarget.java
@@ -5,7 +5,6 @@
import lombok.AllArgsConstructor;
-import javax.ws.rs.client.Invocation;
import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.Configuration;
import javax.ws.rs.core.MediaType;
@@ -15,7 +14,7 @@
/**
* A {@link WebTarget} that delegates to another {@link WebTarget}, but creates {@link WrappedInvocationBuilder}
- * instances instead of plain {@link Invocation.Builder} instances.
+ * instances instead of plain {@link javax.ws.rs.client.Invocation.Builder} instances.
*/
@AllArgsConstructor
public class WrappedWebTarget implements WebTarget {
diff --git a/bmc-common/src/main/java/com/oracle/bmc/http/signing/internal/BouncyCastleHelper.java b/bmc-common/src/main/java/com/oracle/bmc/http/signing/internal/BouncyCastleHelper.java
index 23a61be52f9..a42024ba4a1 100644
--- a/bmc-common/src/main/java/com/oracle/bmc/http/signing/internal/BouncyCastleHelper.java
+++ b/bmc-common/src/main/java/com/oracle/bmc/http/signing/internal/BouncyCastleHelper.java
@@ -23,7 +23,7 @@ private BouncyCastleHelper() {
LOG.info("Instantiated provider: " + bouncyCastleProviderClass.getName());
} catch (InstantiationException | IllegalAccessException ex) {
LOG.error("Failed to instantiate provider", ex);
- throw Throwables.propagate(ex);
+ throw new BouncyCastleHelperException(ex);
}
}
@@ -60,4 +60,17 @@ private static Class getBouncyCastleProviderClass() {
throw new IllegalStateException("No matching BouncyCastle provider found.");
}
+
+ /**
+ * An exception in the {@link BouncyCastleHelper}.
+ */
+ public static class BouncyCastleHelperException extends RuntimeException {
+ public BouncyCastleHelperException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ public BouncyCastleHelperException(Throwable cause) {
+ super(cause);
+ }
+ }
}
diff --git a/bmc-common/src/main/java/com/oracle/bmc/http/signing/internal/Constants.java b/bmc-common/src/main/java/com/oracle/bmc/http/signing/internal/Constants.java
index c936761bbfa..3019ff1ccca 100644
--- a/bmc-common/src/main/java/com/oracle/bmc/http/signing/internal/Constants.java
+++ b/bmc-common/src/main/java/com/oracle/bmc/http/signing/internal/Constants.java
@@ -22,8 +22,8 @@ public class Constants {
public static final String HOST = "host";
// Optional
- static final String CROSS_TENANCY_REQUEST_HEADER_NAME = "x-cross-tenancy-request";
static final String X_SUBSCRIPTION = "x-subscription";
+ public static final String CROSS_TENANCY_REQUEST_HEADER_NAME = "x-cross-tenancy-request";
static final String JSON_CONTENT_TYPE = "application/json";
diff --git a/bmc-common/src/main/java/com/oracle/bmc/http/signing/internal/DefaultRequestSignerFactory.java b/bmc-common/src/main/java/com/oracle/bmc/http/signing/internal/DefaultRequestSignerFactory.java
index d256f92236d..aa775830a54 100644
--- a/bmc-common/src/main/java/com/oracle/bmc/http/signing/internal/DefaultRequestSignerFactory.java
+++ b/bmc-common/src/main/java/com/oracle/bmc/http/signing/internal/DefaultRequestSignerFactory.java
@@ -4,7 +4,6 @@
package com.oracle.bmc.http.signing.internal;
import java.security.interfaces.RSAPrivateKey;
-import java.util.HashMap;
import java.util.Map;
import com.google.common.base.Optional;
diff --git a/bmc-common/src/main/java/com/oracle/bmc/http/signing/internal/PEMFileRSAPrivateKeySupplier.java b/bmc-common/src/main/java/com/oracle/bmc/http/signing/internal/PEMFileRSAPrivateKeySupplier.java
index 5703e952560..6055d04a7da 100644
--- a/bmc-common/src/main/java/com/oracle/bmc/http/signing/internal/PEMFileRSAPrivateKeySupplier.java
+++ b/bmc-common/src/main/java/com/oracle/bmc/http/signing/internal/PEMFileRSAPrivateKeySupplier.java
@@ -6,8 +6,6 @@
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
-import java.security.Provider;
-import java.security.Security;
import java.security.interfaces.RSAPrivateKey;
import javax.annotation.Nonnull;
@@ -119,7 +117,7 @@ public PEMFileRSAPrivateKeySupplier(
}
} catch (IOException ex) {
LOG.debug("Failed to read RSA private key from file", ex);
- throw Throwables.propagate(ex);
+ throw new PEMFileRSAPrivateKeySupplierException(ex);
}
}
@@ -144,4 +142,17 @@ public Optional getKey(@Nonnull String ignored) {
public Optional getKey() {
return Optional.of(key);
}
+
+ /**
+ * An exception in the {@link PEMFileRSAPrivateKeySupplier}.
+ */
+ public static class PEMFileRSAPrivateKeySupplierException extends RuntimeException {
+ public PEMFileRSAPrivateKeySupplierException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ public PEMFileRSAPrivateKeySupplierException(Throwable cause) {
+ super(cause);
+ }
+ }
}
diff --git a/bmc-common/src/main/java/com/oracle/bmc/http/signing/internal/RequestSignerImpl.java b/bmc-common/src/main/java/com/oracle/bmc/http/signing/internal/RequestSignerImpl.java
index 429a80f1ed7..a524bd49ed4 100644
--- a/bmc-common/src/main/java/com/oracle/bmc/http/signing/internal/RequestSignerImpl.java
+++ b/bmc-common/src/main/java/com/oracle/bmc/http/signing/internal/RequestSignerImpl.java
@@ -323,15 +323,13 @@ static Map calculateMissingHeaders(
// the one exception for the below is when doing a PUT if the body is an InputStream
// and the configuration allows it to be skipped
- if (isPut || isPatch) {
- if (body instanceof InputStream) {
- if (signingConfiguration.skipContentHeadersForStreamingPutRequests) {
- return missingHeaders;
- } else {
- // TODO: support DuplicatableInputStream to be able to calculate length/sha-256
- throw new IllegalArgumentException(
- "Streaming body not supported for signing strategy");
- }
+ if ((isPut || isPatch) && (body instanceof InputStream)) {
+ if (signingConfiguration.skipContentHeadersForStreamingPutRequests) {
+ return missingHeaders;
+ } else {
+ // TODO: support DuplicatableInputStream to be able to calculate length/sha-256
+ throw new IllegalArgumentException(
+ "Streaming body not supported for signing strategy");
}
}
@@ -468,7 +466,7 @@ private static List getIgnoreCaseHeaders(List headerNames) {
if (headerNames == null) {
return new ArrayList<>(0);
}
- ArrayList result = new ArrayList<>();
+ ArrayList result = new ArrayList<>(headerNames.size());
for (String headerName : headerNames) {
result.add(headerName.toLowerCase());
}
diff --git a/bmc-common/src/main/java/com/oracle/bmc/paginator/internal/AbstractResponseIterator.java b/bmc-common/src/main/java/com/oracle/bmc/paginator/internal/AbstractResponseIterator.java
index fb8e0d18e40..15a465c2124 100644
--- a/bmc-common/src/main/java/com/oracle/bmc/paginator/internal/AbstractResponseIterator.java
+++ b/bmc-common/src/main/java/com/oracle/bmc/paginator/internal/AbstractResponseIterator.java
@@ -6,9 +6,6 @@
import com.google.common.base.Function;
import com.google.common.base.Optional;
-import java.util.Iterator;
-import java.util.NoSuchElementException;
-
/**
* Contains common functionality for classes which will iterate over the results of paginated
* list operations in a service.
diff --git a/bmc-common/src/main/java/com/oracle/bmc/requests/BmcRequest.java b/bmc-common/src/main/java/com/oracle/bmc/requests/BmcRequest.java
index 1bdfd7996f1..667057bc878 100644
--- a/bmc-common/src/main/java/com/oracle/bmc/requests/BmcRequest.java
+++ b/bmc-common/src/main/java/com/oracle/bmc/requests/BmcRequest.java
@@ -4,7 +4,6 @@
package com.oracle.bmc.requests;
import javax.ws.rs.client.Invocation;
-import javax.ws.rs.core.MultivaluedMap;
import com.oracle.bmc.util.internal.Consumer;
@@ -18,7 +17,7 @@ public class BmcRequest {
* configurable otherwise. Attempting to invoke or build the builder in any
* way will result in an exception.
*
- * For the {@link Invocation.Builder#headers(MultivaluedMap)} method, note that
+ * For the {@link Invocation.Builder#headers(javax.ws.rs.core.MultivaluedMap)} method, note that
* modifying the passed in {@code headers} map after the call does not have any
* effect on headers set.
*/
diff --git a/bmc-common/src/main/java/com/oracle/bmc/util/internal/HttpUtils.java b/bmc-common/src/main/java/com/oracle/bmc/util/internal/HttpUtils.java
index 0b26d80e2c1..bdf5672e6dc 100644
--- a/bmc-common/src/main/java/com/oracle/bmc/util/internal/HttpUtils.java
+++ b/bmc-common/src/main/java/com/oracle/bmc/util/internal/HttpUtils.java
@@ -13,10 +13,8 @@
import java.util.UUID;
import javax.annotation.Nonnull;
-import javax.ws.rs.client.WebTarget;
import com.oracle.bmc.http.internal.HttpDateUtils;
-import com.oracle.bmc.http.internal.WrappedInvocationBuilder;
import com.oracle.bmc.http.internal.WrappedWebTarget;
import org.apache.commons.lang3.StringUtils;
diff --git a/bmc-common/src/main/java/com/oracle/bmc/util/internal/ReflectionUtils.java b/bmc-common/src/main/java/com/oracle/bmc/util/internal/ReflectionUtils.java
index 4e92c634260..77c5a62ae55 100644
--- a/bmc-common/src/main/java/com/oracle/bmc/util/internal/ReflectionUtils.java
+++ b/bmc-common/src/main/java/com/oracle/bmc/util/internal/ReflectionUtils.java
@@ -28,7 +28,7 @@ public class ReflectionUtils {
public static Object invokeGetter(Object instance, String methodName) {
try {
Method method = instance.getClass().getMethod(methodName, NO_ARGS);
- return method.invoke(instance, NO_ARGS);
+ return method.invoke(instance, (Object[]) NO_ARGS);
} catch (Exception e) {
return null;
}
diff --git a/bmc-common/src/main/java/com/oracle/bmc/util/internal/RefreshAuthTokenTransformingFuture.java b/bmc-common/src/main/java/com/oracle/bmc/util/internal/RefreshAuthTokenTransformingFuture.java
index 626ea3c227e..43b26ba42c3 100644
--- a/bmc-common/src/main/java/com/oracle/bmc/util/internal/RefreshAuthTokenTransformingFuture.java
+++ b/bmc-common/src/main/java/com/oracle/bmc/util/internal/RefreshAuthTokenTransformingFuture.java
@@ -3,25 +3,18 @@
*/
package com.oracle.bmc.util.internal;
-import com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider;
+import com.google.common.base.Function;
+import com.google.common.base.Supplier;
import com.oracle.bmc.auth.RefreshableOnNotAuthenticatedProvider;
-import com.oracle.bmc.http.internal.WrappedInvocationBuilder;
import com.oracle.bmc.model.BmcException;
+import lombok.NonNull;
+import lombok.RequiredArgsConstructor;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
-import javax.ws.rs.core.Response;
-
-import com.google.common.base.Function;
-import com.google.common.base.Supplier;
-
-import lombok.Getter;
-import lombok.NonNull;
-import lombok.RequiredArgsConstructor;
-
/**
* Future that both delegates to another one and provides the ability to transform
* the response to another type. This is intended to work with some authenticated calls, like instance principals,
diff --git a/bmc-common/src/main/java/com/oracle/bmc/util/internal/RefreshAuthTokenWrappingAsyncHandler.java b/bmc-common/src/main/java/com/oracle/bmc/util/internal/RefreshAuthTokenWrappingAsyncHandler.java
index f035fc2337e..11c616be01e 100644
--- a/bmc-common/src/main/java/com/oracle/bmc/util/internal/RefreshAuthTokenWrappingAsyncHandler.java
+++ b/bmc-common/src/main/java/com/oracle/bmc/util/internal/RefreshAuthTokenWrappingAsyncHandler.java
@@ -3,7 +3,6 @@
*/
package com.oracle.bmc.util.internal;
-import com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider;
import com.oracle.bmc.auth.RefreshableOnNotAuthenticatedProvider;
import com.oracle.bmc.model.BmcException;
import com.oracle.bmc.responses.AsyncHandler;
diff --git a/bmc-common/src/test/java/com/oracle/bmc/http/internal/ExplicitlySetFilterTest.java b/bmc-common/src/test/java/com/oracle/bmc/http/internal/ExplicitlySetFilterTest.java
index c6ca1cb3f5b..3d3f518f771 100644
--- a/bmc-common/src/test/java/com/oracle/bmc/http/internal/ExplicitlySetFilterTest.java
+++ b/bmc-common/src/test/java/com/oracle/bmc/http/internal/ExplicitlySetFilterTest.java
@@ -6,8 +6,6 @@
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.ser.PropertyWriter;
-import com.oracle.bmc.ClientConfiguration;
-import com.oracle.bmc.http.signing.RequestSigner;
import com.oracle.bmc.requests.BmcRequest;
import org.junit.Ignore;
import org.junit.Test;
@@ -15,7 +13,6 @@
import javax.ws.rs.client.Client;
import javax.ws.rs.client.Invocation;
-import javax.ws.rs.core.Response;
import java.io.IOException;
import static org.junit.Assert.assertEquals;
@@ -121,22 +118,8 @@ public void testNullInSubclass() throws Exception {
@Test
public void deserializeNoDiscriminator() throws IOException {
Subclass sub = Subclass.builder().baseVal(1).subVal("two").build();
+ String serialized = serializeForPost(sub);
- RequestSigner signer = mock(RequestSigner.class);
-
- Client client = mock(Client.class);
- EntityFactory ef = mock(EntityFactory.class);
- RestClient rc = new RestClient(client, ef);
-
- Invocation.Builder ib = mock(Invocation.Builder.class);
- rc.post(new WrappedInvocationBuilder(ib), sub, new BmcRequest());
-
- ArgumentCaptor