diff --git a/CHANGELOG.md b/CHANGELOG.md index 123bdf4157e..6024b01953b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,14 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/). ### Added - N/A +## 1.2.28 - 2018-02-22 + +### Added +- Added support for the File Storage Service. An example on how to call this service can be found [here](https://github.com/oracle/oci-java-sdk/blob/master/bmc-examples/src/main/java/FileStorageServiceExample.java) +- Added support for tagging Bucket resources in the Object Storage Service +- Added support for specifying a restore period for archived objects in the `restoreObjects` operation of the Object Storage service +- Added `paginators` to provide an `Iterable` interface over list operations offered by the SDK + ## 1.2.27 - 2018-02-08 ### Fixed diff --git a/bmc-audit/pom.xml b/bmc-audit/pom.xml index 6ceca5bb6e2..36fb0f61428 100644 --- a/bmc-audit/pom.xml +++ b/bmc-audit/pom.xml @@ -5,7 +5,7 @@ com.oracle.oci.sdk oci-java-sdk - 1.2.27 + 1.2.28 ../pom.xml @@ -18,7 +18,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 1.2.27 + 1.2.28 diff --git a/bmc-audit/src/main/java/com/oracle/bmc/audit/Audit.java b/bmc-audit/src/main/java/com/oracle/bmc/audit/Audit.java index 79497a3a9a4..5419a6a5fab 100644 --- a/bmc-audit/src/main/java/com/oracle/bmc/audit/Audit.java +++ b/bmc-audit/src/main/java/com/oracle/bmc/audit/Audit.java @@ -59,4 +59,13 @@ public interface Audit extends AutoCloseable { * @throws BmcException when an error occurs. */ UpdateConfigurationResponse updateConfiguration(UpdateConfigurationRequest request); + + /** + * Gets the pre-configured paginators available for list operations in this service which may return multiple + * pages of data. These paginators provide an {@link java.lang.Iterable} interface so that service responses, or + * resources/records, can be iterated through without having to manually deal with pagination and page tokens. + * + * @return The service paginators. + */ + AuditPaginators getPaginators(); } diff --git a/bmc-audit/src/main/java/com/oracle/bmc/audit/AuditClient.java b/bmc-audit/src/main/java/com/oracle/bmc/audit/AuditClient.java index e5def968fe8..4d1ed116a5d 100644 --- a/bmc-audit/src/main/java/com/oracle/bmc/audit/AuditClient.java +++ b/bmc-audit/src/main/java/com/oracle/bmc/audit/AuditClient.java @@ -16,6 +16,10 @@ public class AuditClient implements Audit { */ public static final com.oracle.bmc.Service SERVICE = com.oracle.bmc.Services.create("AUDIT", "audit"); + // attempt twice if it's instance principals, immediately failures will try to refresh the token + private static final int MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS = 2; + + private final AuditPaginators paginators; @lombok.Getter(value = lombok.AccessLevel.PACKAGE) private final com.oracle.bmc.http.internal.RestClient client; @@ -87,6 +91,8 @@ public AuditClient( SERVICE, this.authenticationDetailsProvider); this.client = restClientFactory.create(requestSigner, configuration); + this.paginators = new AuditPaginators(this); + if (this.authenticationDetailsProvider instanceof com.oracle.bmc.auth.RegionProvider) { com.oracle.bmc.auth.RegionProvider provider = (com.oracle.bmc.auth.RegionProvider) this.authenticationDetailsProvider; @@ -141,25 +147,19 @@ public GetConfigurationResponse getConfiguration(GetConfigurationRequest request com.google.common.base.Function transformer = GetConfigurationConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -172,25 +172,19 @@ public ListEventsResponse listEvents(ListEventsRequest request) { com.google.common.base.Function transformer = ListEventsConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -203,28 +197,38 @@ public UpdateConfigurationResponse updateConfiguration(UpdateConfigurationReques com.google.common.base.Function transformer = UpdateConfigurationConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.put(ib, request.getUpdateConfigurationDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateConfigurationDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateConfigurationDetails(), request); - return transformer.apply(response); } } + + private boolean canRetryRequestIfInstancePrincipalsUsed(com.oracle.bmc.model.BmcException e) { + if (e.getStatusCode() == 401 + && this.authenticationDetailsProvider + instanceof + com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) + this.authenticationDetailsProvider) + .refreshSecurityToken(); + return true; + } + return false; + } + + @Override + public AuditPaginators getPaginators() { + return paginators; + } } diff --git a/bmc-audit/src/main/java/com/oracle/bmc/audit/AuditPaginators.java b/bmc-audit/src/main/java/com/oracle/bmc/audit/AuditPaginators.java new file mode 100644 index 00000000000..006e6f5f1ae --- /dev/null +++ b/bmc-audit/src/main/java/com/oracle/bmc/audit/AuditPaginators.java @@ -0,0 +1,141 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.audit; + +import com.oracle.bmc.audit.requests.*; +import com.oracle.bmc.audit.responses.*; + +/** + * Collection of helper methods that can be used to provide an {@link java.lang.Iterable} interface + * to any list operations of Audit where multiple pages of data may be fetched. + * Two styles of iteration are supported: + * + *
    + *
  • Iterating over the Response objects returned by the list operation. These are referred to as ResponseIterators, and the methods are suffixed with ResponseIterator. For example: listUsersResponseIterator
  • + *
  • Iterating over the resources/records being listed. These are referred to as RecordIterators, and the methods are suffixed with RecordIterator. For example: listUsersRecordIterator
  • + *
+ * + * These iterables abstract away the need to write code to manually handle pagination via looping and using the page tokens. + * They will automatically fetch more data from the service when required. + * + * As an example, if we were using the ListUsers operation in IdentityService, then the {@link java.lang.Interable} returned by calling a + * ResponseIterator method would iterate over the ListUsersResponse objects returned by each ListUsers call, whereas the {@link java.lang.Iterable} + * returned by calling a RecordIterator method would iterate over the User records and we don't have to deal with ListUsersResponse objects at all. + * In either case, pagination will be automatically handled so we can iterate until there are no more responses or no more resources/records available. + */ +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20160918") +@lombok.RequiredArgsConstructor +public class AuditPaginators { + private final Audit client; + + /** + * Creates a new iterable which will iterate over the responses received from the listEvents operation. This iterable + * will fetch more data from the server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the responses received from the service. + */ + public Iterable listEventsResponseIterator( + final ListEventsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseIterable< + ListEventsRequest.Builder, ListEventsRequest, ListEventsResponse>( + new com.google.common.base.Supplier() { + @Override + public ListEventsRequest.Builder get() { + return ListEventsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListEventsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListEventsRequest.Builder>, + ListEventsRequest>() { + @Override + public ListEventsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListEventsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function() { + @Override + public ListEventsResponse apply(ListEventsRequest request) { + return client.listEvents(request); + } + }); + } + + /** + * Creates a new iterable which will iterate over the {@link com.oracle.bmc.audit.model.AuditEvent} objects + * contained in responses from the listEvents operation. This iterable will fetch more data from the + * server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link com.oracle.bmc.audit.model.AuditEvent} objects + * contained in responses received from the service. + */ + public Iterable listEventsRecordIterator( + final ListEventsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseRecordIterable< + ListEventsRequest.Builder, ListEventsRequest, ListEventsResponse, + com.oracle.bmc.audit.model.AuditEvent>( + new com.google.common.base.Supplier() { + @Override + public ListEventsRequest.Builder get() { + return ListEventsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListEventsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListEventsRequest.Builder>, + ListEventsRequest>() { + @Override + public ListEventsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListEventsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function() { + @Override + public ListEventsResponse apply(ListEventsRequest request) { + return client.listEvents(request); + } + }, + new com.google.common.base.Function< + ListEventsResponse, + java.util.List>() { + @Override + public java.util.List apply( + ListEventsResponse response) { + return response.getItems(); + } + }); + } +} diff --git a/bmc-bom/pom.xml b/bmc-bom/pom.xml index 1383575b404..379b05a02e6 100644 --- a/bmc-bom/pom.xml +++ b/bmc-bom/pom.xml @@ -1,78 +1,76 @@ - + + 4.0.0 - - com.oracle.oci.sdk oci-java-sdk - 1.2.27 + 1.2.28 ../pom.xml - oci-java-sdk-bom pom Oracle Cloud Infrastructure SDK - BOM This project contains the BOM defining the SDK used for Oracle Cloud Infrastructure https://docs.us-phoenix-1.oraclecloud.com/Content/API/SDKDocs/javasdk.htm - - com.oracle.oci.sdk oci-java-sdk-common - 1.2.27 + 1.2.28 false - - com.oracle.oci.sdk oci-java-sdk-audit - 1.2.27 + 1.2.28 false com.oracle.oci.sdk oci-java-sdk-core - 1.2.27 + 1.2.28 false com.oracle.oci.sdk oci-java-sdk-database - 1.2.27 + 1.2.28 false com.oracle.oci.sdk oci-java-sdk-dns - 1.2.27 + 1.2.28 + false + + + com.oracle.oci.sdk + oci-java-sdk-filestorage + 1.2.28 false com.oracle.oci.sdk oci-java-sdk-identity - 1.2.27 + 1.2.28 false com.oracle.oci.sdk oci-java-sdk-loadbalancer - 1.2.27 + 1.2.28 false com.oracle.oci.sdk oci-java-sdk-objectstorage - 1.2.27 + 1.2.28 false - diff --git a/bmc-common/pom.xml b/bmc-common/pom.xml index a6724436525..c21fda82aad 100644 --- a/bmc-common/pom.xml +++ b/bmc-common/pom.xml @@ -5,7 +5,7 @@ com.oracle.oci.sdk oci-java-sdk - 1.2.27 + 1.2.28 ../pom.xml 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 new file mode 100644 index 00000000000..fb8e0d18e40 --- /dev/null +++ b/bmc-common/src/main/java/com/oracle/bmc/paginator/internal/AbstractResponseIterator.java @@ -0,0 +1,116 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.paginator.internal; + +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. + * + * @param the type of a builder which can produce requests for a list operation + * @param the type of a request to a list operation. This type must match the type produced + * by REQUESTBUILDER + * @param the type of the response from a list operation + */ +public abstract class AbstractResponseIterator { + /** + * A builder which can be used to construct requests to the list operation + */ + protected final REQUESTBUILDER requestBuilder; + + /** + * A function which can be used to extract the next page token from a response from a list + * operation + */ + protected final Function nextPageTokenRetrievalFunction; + + /** + * A function which can call a list operation with a request and return the response from + * that call + */ + protected final Function pageRetrievalFunction; + + /** + * A function which constructs a request to a list operation based on a builder object + * and pagination token + */ + protected final Function, REQUEST> + requestBuilderFunction; + + /** + * The most recent response/result of calling the list operation. If the operation has never + * been called, then this will be null + */ + protected RESPONSE currentResponse; + + /** + * The page token to use on the next request to the list operation + */ + protected String nextPageToken; + + /** + * Constructs a new AbstractResponseIterator. + * + * @param requestBuilder a builder object which can create requests for a list operation + * @param nextPageTokenRetrievalFunction a function which can extract the next page token from a + * response produced by a list operation + * @param requestBuilderFunction a function which can build a request for a list operation based on + * a builder object and a pagination token to use + * @param pageRetrievalFunction a function which will call a list operation with a request and return + * the response of the call + */ + public AbstractResponseIterator( + final REQUESTBUILDER requestBuilder, + final Function nextPageTokenRetrievalFunction, + final Function, REQUEST> requestBuilderFunction, + final Function pageRetrievalFunction) { + + this.requestBuilder = requestBuilder; + this.nextPageTokenRetrievalFunction = nextPageTokenRetrievalFunction; + this.requestBuilderFunction = requestBuilderFunction; + this.pageRetrievalFunction = pageRetrievalFunction; + } + + /** + * Based on the state of this class, produces the next request that should be used when calling + * the list operation so that the next page of results will be returned. This will just create the + * request and not make any service calls + * + * @return the next request that should be used when calling the list operation + */ + protected REQUEST getNextRequest() { + final RequestBuilderAndToken requestBuilderAndToken = + new RequestBuilderAndToken(requestBuilder, getNextPageToken()); + + return requestBuilderFunction.apply(requestBuilderAndToken); + } + + /** + * Gets the page token that should be used when the list operation is next called. + * + * @return null if we have not previously made a request to fetch any results. Otherwise, + * an Optional containing the next page token to use. If there is no next page token + * to use then an empty/absent Optional will be returned + */ + protected Optional getNextPageToken() { + if (currentResponse == null) { + return null; + } + + return Optional.fromNullable(nextPageTokenRetrievalFunction.apply(currentResponse)); + } + + /** + * Updates the state of this class with the next page of results + */ + protected void fetchNextPage() { + currentResponse = pageRetrievalFunction.apply(getNextRequest()); + nextPageToken = nextPageTokenRetrievalFunction.apply(currentResponse); + } +} diff --git a/bmc-common/src/main/java/com/oracle/bmc/paginator/internal/RequestBuilderAndToken.java b/bmc-common/src/main/java/com/oracle/bmc/paginator/internal/RequestBuilderAndToken.java new file mode 100644 index 00000000000..85465a8e681 --- /dev/null +++ b/bmc-common/src/main/java/com/oracle/bmc/paginator/internal/RequestBuilderAndToken.java @@ -0,0 +1,38 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.paginator.internal; + +import com.google.common.base.Optional; + +/** + * A container class for a request builder and next page token. These pieces will be used to create + * a request to a list operation. + * + * There are three possible values for the token: + * + *
    + *
  • A null reference, in which case we should use the builder as-is to construct a request
  • + *
  • A populated Optional, in which case we should use the value in the Optional as the page token in the builder
  • + *
  • An empty/absent Optional, in which case we should use null as the page token in the builder
  • + *
+ * + * @param The type of the request builder object + */ +public class RequestBuilderAndToken { + private T requestBuilder; + private Optional token; + + public RequestBuilderAndToken(final T requestBuilder, final Optional token) { + this.requestBuilder = requestBuilder; + this.token = token; + } + + public T getRequestBuilder() { + return this.requestBuilder; + } + + public Optional getToken() { + return token; + } +} diff --git a/bmc-common/src/main/java/com/oracle/bmc/paginator/internal/ResponseIterable.java b/bmc-common/src/main/java/com/oracle/bmc/paginator/internal/ResponseIterable.java new file mode 100644 index 00000000000..c927571980a --- /dev/null +++ b/bmc-common/src/main/java/com/oracle/bmc/paginator/internal/ResponseIterable.java @@ -0,0 +1,58 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.paginator.internal; + +import com.google.common.base.Function; +import com.google.common.base.Supplier; + +import java.util.Iterator; + +/** + * An iterable which can be used to iterate over responses returned from calling a list operation. Since + * this deals in responses, the returned response objects will contain a collection of results. This iterable + * will handle calling the service to retrieve more results when required. + * + * @param the type of a builder which can produce requests for a list operation + * @param the type of a request to a list operation. This type must match the type produced + * by REQUESTBUILDER + * @param the type of the response from a list operation + */ +public class ResponseIterable implements Iterable { + private final Supplier requestBuilderSupplier; + private final Function nextPageTokenRetrievalFunction; + private final Function pageRetrievalFunction; + private final Function, REQUEST> requestBuilderFunction; + + /** + * Creates a new iterable. + * + * @param requestBuilderSupplier a supplier which can called to produce a builder object for requests + * @param nextPageTokenRetrievalFunction a function which can extract the next page token from a + * response produced by a list operation + * @param requestBuilderFunction a function which can build a request for a list operation based on + * a builder object and a pagination token to use + * @param pageRetrievalFunction a function which will call a list operation with a request and return + * the response of the call + */ + public ResponseIterable( + final Supplier requestBuilderSupplier, + final Function nextPageTokenRetrievalFunction, + final Function, REQUEST> requestBuilderFunction, + final Function pageRetrievalFunction) { + + this.requestBuilderSupplier = requestBuilderSupplier; + this.nextPageTokenRetrievalFunction = nextPageTokenRetrievalFunction; + this.requestBuilderFunction = requestBuilderFunction; + this.pageRetrievalFunction = pageRetrievalFunction; + } + + @Override + public Iterator iterator() { + return new ResponseIterator( + requestBuilderSupplier.get(), + nextPageTokenRetrievalFunction, + requestBuilderFunction, + pageRetrievalFunction); + } +} diff --git a/bmc-common/src/main/java/com/oracle/bmc/paginator/internal/ResponseIterator.java b/bmc-common/src/main/java/com/oracle/bmc/paginator/internal/ResponseIterator.java new file mode 100644 index 00000000000..5a4c2c32d99 --- /dev/null +++ b/bmc-common/src/main/java/com/oracle/bmc/paginator/internal/ResponseIterator.java @@ -0,0 +1,73 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.paginator.internal; + +import com.google.common.base.Function; + +import java.util.Iterator; +import java.util.NoSuchElementException; + +/** + * An iterator for iterating over response objects returned from a list operation. Each time we advance + * the iterator (via its {@link #next()} method) we will call the list operation of the service for the + * next response. + * + * This iterator does not support removal of elements. + * + * @param the type of a builder which can produce requests for a list operation + * @param the type of a request to a list operation. This type must match the type produced + * by REQUESTBUILDER + * @param the type of the response from a list operation + */ +public class ResponseIterator + extends AbstractResponseIterator + implements Iterator { + + private boolean anyFetchPerformed; + + /** + * Constructs a new ResponseIterator. + * + * @param requestBuilder a builder object which can create requests for a list operation + * @param nextPageTokenRetrievalFunction a function which can extract the next page token from a + * response produced by a list operation + * @param requestBuilderFunction a function which can build a request for a list operation based on + * a builder object and a pagination token to use + * @param pageRetrievalFunction a function which will call a list operation with a request and return + * the response of the call + */ + public ResponseIterator( + final REQUESTBUILDER requestBuilder, + final Function nextPageTokenRetrievalFunction, + final Function, REQUEST> requestBuilderFunction, + final Function pageRetrievalFunction) { + + super( + requestBuilder, + nextPageTokenRetrievalFunction, + requestBuilderFunction, + pageRetrievalFunction); + } + + @Override + public RESPONSE next() { + if (currentResponse != null && nextPageToken == null) { + throw new NoSuchElementException( + "There are no more elements available to this iterator"); + } + + fetchNextPage(); + return currentResponse; + } + + @Override + public boolean hasNext() { + return currentResponse == null || nextPageToken != null; + } + + @Override + public void remove() { + throw new UnsupportedOperationException("Removal is not supported"); + } +} diff --git a/bmc-common/src/main/java/com/oracle/bmc/paginator/internal/ResponseRecordIterable.java b/bmc-common/src/main/java/com/oracle/bmc/paginator/internal/ResponseRecordIterable.java new file mode 100644 index 00000000000..68d0de3c152 --- /dev/null +++ b/bmc-common/src/main/java/com/oracle/bmc/paginator/internal/ResponseRecordIterable.java @@ -0,0 +1,67 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.paginator.internal; + +import com.google.common.base.Function; +import com.google.common.base.Supplier; + +import java.util.List; +import java.util.Iterator; + +/** + * An iterable which can be used to iterate over the models/resources returned by a list operation. These + * are the items which are contained with the response received from a list operation (e.g. by calling + * getItems() method on the response object). This iterable + * will handle calling the service to retrieve more results when required. + * + * @param the type of a builder which can produce requests for a list operation + * @param the type of a request to a list operation. This type must match the type produced + * by REQUESTBUILDER + * @param the type of the response from a list operation + * @param the type of the model/resource returned inside the response + */ +public class ResponseRecordIterable + implements Iterable { + + private final Supplier requestBuilderSupplier; + private final Function nextPageTokenRetrievalFunction; + private final Function pageRetrievalFunction; + private final Function, REQUEST> requestBuilderFunction; + private final Function> retrieveItemsFromResponseFunction; + + /** + * Creates a new iterable. + * + * @param requestBuilderSupplier a supplier which can called to produce a builder object for requests + * @param nextPageTokenRetrievalFunction a function which can extract the next page token from a + * response produced by a list operation + * @param requestBuilderFunction a function which can build a request for a list operation based on + * a builder object and a pagination token to use + * @param pageRetrievalFunction a function which will call a list operation with a request and return + * the response of the call + */ + public ResponseRecordIterable( + final Supplier requestBuilderSupplier, + final Function nextPageTokenRetrievalFunction, + final Function, REQUEST> requestBuilderFunction, + final Function pageRetrievalFunction, + final Function> retrieveItemsFromResponseFunction) { + + this.requestBuilderSupplier = requestBuilderSupplier; + this.nextPageTokenRetrievalFunction = nextPageTokenRetrievalFunction; + this.requestBuilderFunction = requestBuilderFunction; + this.pageRetrievalFunction = pageRetrievalFunction; + this.retrieveItemsFromResponseFunction = retrieveItemsFromResponseFunction; + } + + @Override + public Iterator iterator() { + return new ResponseRecordIterator( + requestBuilderSupplier.get(), + nextPageTokenRetrievalFunction, + requestBuilderFunction, + pageRetrievalFunction, + retrieveItemsFromResponseFunction); + } +} diff --git a/bmc-common/src/main/java/com/oracle/bmc/paginator/internal/ResponseRecordIterator.java b/bmc-common/src/main/java/com/oracle/bmc/paginator/internal/ResponseRecordIterator.java new file mode 100644 index 00000000000..67346928f3a --- /dev/null +++ b/bmc-common/src/main/java/com/oracle/bmc/paginator/internal/ResponseRecordIterator.java @@ -0,0 +1,130 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.paginator.internal; + +import com.google.common.base.Function; + +import java.util.Iterator; +import java.util.List; +import java.util.NoSuchElementException; + +/** + * An iterator for iterating over response objects returned from a list operation. This iterator handles + * calling the service for additional data when needed. However, not every advancement of the iterator + * (via its {@link #next()} method) will result in a method call. Instead, the logic of this iterator + * can be described as: + * + *
    + *
  1. Fetch a page of results from the service
  2. + *
  3. {@link #next()} will vend individual model/resource objects from that page until there are no more to vend
  4. + *
  5. Call the service for the next page of results
  6. + *
  7. Repeat steps 2 and 3 until there are no more results
  8. + *
      + * + * This iterator does not support removal of elements. + * + * @param the type of a builder which can produce requests for a list operation + * @param the type of a request to a list operation. This type must match the type produced + * by REQUESTBUILDER + * @param the type of the response from a list operation + * @param the type of the model/resource returned inside the response + */ +public class ResponseRecordIterator + extends AbstractResponseIterator + implements Iterator { + + private final Function> retrieveItemsFromResponseFunction; + + private List currentItems; + private Iterator currentIterator; + + /** Constructs a new ResponseRecordIterator. + * + * @param requestBuilder a builder object which can create requests for a list operation + * @param nextPageTokenRetrievalFunction a function which can extract the next page token from a + * response produced by a list operation + * @param requestBuilderFunction a function which can build a request for a list operation based on + * a builder object and a pagination token to use + * @param pageRetrievalFunction a function which will call a list operation with a request and return + * the response of the call + * @param retrieveItemsFromResponseFunction a function which can extract the collection of results + * from a response produced by a list operation + */ + public ResponseRecordIterator( + final REQUESTBUILDER requestBuilder, + final Function nextPageTokenRetrievalFunction, + final Function, REQUEST> requestBuilderFunction, + final Function pageRetrievalFunction, + final Function> retrieveItemsFromResponseFunction) { + + super( + requestBuilder, + nextPageTokenRetrievalFunction, + requestBuilderFunction, + pageRetrievalFunction); + this.retrieveItemsFromResponseFunction = retrieveItemsFromResponseFunction; + } + + @Override + public ITEMTYPE next() { + if (currentResponse == null) { + getFirstPage(); + } + + if (currentIterator.hasNext()) { + return currentIterator.next(); + } else { + // If the current iterator doesn't have any items, then hasNext will advance us to the next + // page of results (if there are any) + if (hasNext()) { + return currentIterator.next(); + } else { + throw new NoSuchElementException( + "There are no more elements available to this iterator"); + } + } + } + + @Override + public boolean hasNext() { + if (currentResponse == null) { + getFirstPage(); + } + + /* + * We have more results if: + * - The current iterator can still vend results + * - The current iterator cannot vend more results, but there are more results on the next page + * + * If there is no next page token at this stage, then there are no more results + */ + if (currentIterator.hasNext()) { + return true; + } else if (nextPageToken == null) { + return false; + } else { + fetchNextPage(); + currentItems = retrieveItemsFromResponseFunction.apply(currentResponse); + currentIterator = currentItems.iterator(); + + return currentIterator.hasNext(); + } + } + + @Override + public void remove() { + throw new UnsupportedOperationException("Removal is not supported"); + } + + private void getFirstPage() { + final RequestBuilderAndToken requestBuilderAndToken = + new RequestBuilderAndToken(requestBuilder, null); + + currentResponse = + pageRetrievalFunction.apply(requestBuilderFunction.apply(requestBuilderAndToken)); + nextPageToken = nextPageTokenRetrievalFunction.apply(currentResponse); + currentItems = retrieveItemsFromResponseFunction.apply(currentResponse); + currentIterator = currentItems.iterator(); + } +} diff --git a/bmc-core/pom.xml b/bmc-core/pom.xml index cc1691b9aa6..460c2475ec7 100644 --- a/bmc-core/pom.xml +++ b/bmc-core/pom.xml @@ -5,7 +5,7 @@ com.oracle.oci.sdk oci-java-sdk - 1.2.27 + 1.2.28 ../pom.xml @@ -18,7 +18,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 1.2.27 + 1.2.28 diff --git a/bmc-core/src/main/java/com/oracle/bmc/core/Blockstorage.java b/bmc-core/src/main/java/com/oracle/bmc/core/Blockstorage.java index a8f0bcbb5f4..78639773c66 100644 --- a/bmc-core/src/main/java/com/oracle/bmc/core/Blockstorage.java +++ b/bmc-core/src/main/java/com/oracle/bmc/core/Blockstorage.java @@ -248,4 +248,13 @@ ListVolumeBackupPoliciesResponse listVolumeBackupPolicies( * @return The service waiters. */ BlockstorageWaiters getWaiters(); + + /** + * Gets the pre-configured paginators available for list operations in this service which may return multiple + * pages of data. These paginators provide an {@link java.lang.Iterable} interface so that service responses, or + * resources/records, can be iterated through without having to manually deal with pagination and page tokens. + * + * @return The service paginators. + */ + BlockstoragePaginators getPaginators(); } diff --git a/bmc-core/src/main/java/com/oracle/bmc/core/BlockstorageClient.java b/bmc-core/src/main/java/com/oracle/bmc/core/BlockstorageClient.java index 62efeba085f..d620d72a275 100644 --- a/bmc-core/src/main/java/com/oracle/bmc/core/BlockstorageClient.java +++ b/bmc-core/src/main/java/com/oracle/bmc/core/BlockstorageClient.java @@ -16,10 +16,11 @@ public class BlockstorageClient implements Blockstorage { */ public static final com.oracle.bmc.Service SERVICE = com.oracle.bmc.Services.create("BLOCKSTORAGE", "iaas"); + // attempt twice if it's instance principals, immediately failures will try to refresh the token + private static final int MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS = 2; - private final java.util.concurrent.ExecutorService executorService = - java.util.concurrent.Executors.newFixedThreadPool(50); private final BlockstorageWaiters waiters; + private final BlockstoragePaginators paginators; @lombok.Getter(value = lombok.AccessLevel.PACKAGE) private final com.oracle.bmc.http.internal.RestClient client; @@ -106,6 +107,8 @@ public BlockstorageClient( this.waiters = new BlockstorageWaiters(executorService, this); + this.paginators = new BlockstoragePaginators(this); + if (this.authenticationDetailsProvider instanceof com.oracle.bmc.auth.RegionProvider) { com.oracle.bmc.auth.RegionProvider provider = (com.oracle.bmc.auth.RegionProvider) this.authenticationDetailsProvider; @@ -160,28 +163,20 @@ public CreateVolumeResponse createVolume(CreateVolumeRequest request) { com.google.common.base.Function transformer = CreateVolumeConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.post(ib, request.getCreateVolumeDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateVolumeDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateVolumeDetails(), request); - return transformer.apply(response); } } @@ -194,28 +189,20 @@ public CreateVolumeBackupResponse createVolumeBackup(CreateVolumeBackupRequest r com.google.common.base.Function transformer = CreateVolumeBackupConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.post(ib, request.getCreateVolumeBackupDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateVolumeBackupDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateVolumeBackupDetails(), request); - return transformer.apply(response); } } @@ -230,8 +217,8 @@ public CreateVolumeBackupPolicyAssignmentResponse createVolumeBackupPolicyAssign javax.ws.rs.core.Response, CreateVolumeBackupPolicyAssignmentResponse> transformer = CreateVolumeBackupPolicyAssignmentConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.post( @@ -240,25 +227,13 @@ public CreateVolumeBackupPolicyAssignmentResponse createVolumeBackupPolicyAssign request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.post( - ib, - request.getCreateVolumeBackupPolicyAssignmentDetails(), - request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.post( - ib, request.getCreateVolumeBackupPolicyAssignmentDetails(), request); - return transformer.apply(response); } } @@ -271,25 +246,19 @@ public DeleteBootVolumeResponse deleteBootVolume(DeleteBootVolumeRequest request com.google.common.base.Function transformer = DeleteBootVolumeConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.delete(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); } } @@ -302,25 +271,19 @@ public DeleteVolumeResponse deleteVolume(DeleteVolumeRequest request) { com.google.common.base.Function transformer = DeleteVolumeConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.delete(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); } } @@ -333,25 +296,19 @@ public DeleteVolumeBackupResponse deleteVolumeBackup(DeleteVolumeBackupRequest r com.google.common.base.Function transformer = DeleteVolumeBackupConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.delete(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); } } @@ -366,25 +323,19 @@ public DeleteVolumeBackupPolicyAssignmentResponse deleteVolumeBackupPolicyAssign javax.ws.rs.core.Response, DeleteVolumeBackupPolicyAssignmentResponse> transformer = DeleteVolumeBackupPolicyAssignmentConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.delete(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); } } @@ -397,25 +348,19 @@ public GetBootVolumeResponse getBootVolume(GetBootVolumeRequest request) { com.google.common.base.Function transformer = GetBootVolumeConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -428,25 +373,19 @@ public GetVolumeResponse getVolume(GetVolumeRequest request) { com.google.common.base.Function transformer = GetVolumeConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -459,25 +398,19 @@ public GetVolumeBackupResponse getVolumeBackup(GetVolumeBackupRequest request) { com.google.common.base.Function transformer = GetVolumeBackupConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -491,25 +424,19 @@ public GetVolumeBackupPolicyResponse getVolumeBackupPolicy( com.google.common.base.Function transformer = GetVolumeBackupPolicyConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -524,25 +451,19 @@ public GetVolumeBackupPolicyAssetAssignmentResponse getVolumeBackupPolicyAssetAs javax.ws.rs.core.Response, GetVolumeBackupPolicyAssetAssignmentResponse> transformer = GetVolumeBackupPolicyAssetAssignmentConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -557,25 +478,19 @@ public GetVolumeBackupPolicyAssignmentResponse getVolumeBackupPolicyAssignment( javax.ws.rs.core.Response, GetVolumeBackupPolicyAssignmentResponse> transformer = GetVolumeBackupPolicyAssignmentConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -588,25 +503,19 @@ public ListBootVolumesResponse listBootVolumes(ListBootVolumesRequest request) { com.google.common.base.Function transformer = ListBootVolumesConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -620,25 +529,19 @@ public ListVolumeBackupPoliciesResponse listVolumeBackupPolicies( com.google.common.base.Function transformer = ListVolumeBackupPoliciesConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -651,25 +554,19 @@ public ListVolumeBackupsResponse listVolumeBackups(ListVolumeBackupsRequest requ com.google.common.base.Function transformer = ListVolumeBackupsConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -682,25 +579,19 @@ public ListVolumesResponse listVolumes(ListVolumesRequest request) { com.google.common.base.Function transformer = ListVolumesConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -713,28 +604,20 @@ public UpdateBootVolumeResponse updateBootVolume(UpdateBootVolumeRequest request com.google.common.base.Function transformer = UpdateBootVolumeConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.put(ib, request.getUpdateBootVolumeDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateBootVolumeDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateBootVolumeDetails(), request); - return transformer.apply(response); } } @@ -747,28 +630,20 @@ public UpdateVolumeResponse updateVolume(UpdateVolumeRequest request) { com.google.common.base.Function transformer = UpdateVolumeConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.put(ib, request.getUpdateVolumeDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateVolumeDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateVolumeDetails(), request); - return transformer.apply(response); } } @@ -781,33 +656,43 @@ public UpdateVolumeBackupResponse updateVolumeBackup(UpdateVolumeBackupRequest r com.google.common.base.Function transformer = UpdateVolumeBackupConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.put(ib, request.getUpdateVolumeBackupDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateVolumeBackupDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateVolumeBackupDetails(), request); - return transformer.apply(response); } } + private boolean canRetryRequestIfInstancePrincipalsUsed(com.oracle.bmc.model.BmcException e) { + if (e.getStatusCode() == 401 + && this.authenticationDetailsProvider + instanceof + com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) + this.authenticationDetailsProvider) + .refreshSecurityToken(); + return true; + } + return false; + } + @Override public BlockstorageWaiters getWaiters() { return waiters; } + + @Override + public BlockstoragePaginators getPaginators() { + return paginators; + } } diff --git a/bmc-core/src/main/java/com/oracle/bmc/core/BlockstoragePaginators.java b/bmc-core/src/main/java/com/oracle/bmc/core/BlockstoragePaginators.java new file mode 100644 index 00000000000..c1dd51dec75 --- /dev/null +++ b/bmc-core/src/main/java/com/oracle/bmc/core/BlockstoragePaginators.java @@ -0,0 +1,606 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.core; + +import com.oracle.bmc.core.requests.*; +import com.oracle.bmc.core.responses.*; + +/** + * Collection of helper methods that can be used to provide an {@link java.lang.Iterable} interface + * to any list operations of Blockstorage where multiple pages of data may be fetched. + * Two styles of iteration are supported: + * + *
        + *
      • Iterating over the Response objects returned by the list operation. These are referred to as ResponseIterators, and the methods are suffixed with ResponseIterator. For example: listUsersResponseIterator
      • + *
      • Iterating over the resources/records being listed. These are referred to as RecordIterators, and the methods are suffixed with RecordIterator. For example: listUsersRecordIterator
      • + *
      + * + * These iterables abstract away the need to write code to manually handle pagination via looping and using the page tokens. + * They will automatically fetch more data from the service when required. + * + * As an example, if we were using the ListUsers operation in IdentityService, then the {@link java.lang.Interable} returned by calling a + * ResponseIterator method would iterate over the ListUsersResponse objects returned by each ListUsers call, whereas the {@link java.lang.Iterable} + * returned by calling a RecordIterator method would iterate over the User records and we don't have to deal with ListUsersResponse objects at all. + * In either case, pagination will be automatically handled so we can iterate until there are no more responses or no more resources/records available. + */ +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20160918") +@lombok.RequiredArgsConstructor +public class BlockstoragePaginators { + private final Blockstorage client; + + /** + * Creates a new iterable which will iterate over the responses received from the getVolumeBackupPolicyAssetAssignment operation. This iterable + * will fetch more data from the server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the responses received from the service. + */ + public Iterable + getVolumeBackupPolicyAssetAssignmentResponseIterator( + final GetVolumeBackupPolicyAssetAssignmentRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseIterable< + GetVolumeBackupPolicyAssetAssignmentRequest.Builder, + GetVolumeBackupPolicyAssetAssignmentRequest, + GetVolumeBackupPolicyAssetAssignmentResponse>( + new com.google.common.base.Supplier< + GetVolumeBackupPolicyAssetAssignmentRequest.Builder>() { + @Override + public GetVolumeBackupPolicyAssetAssignmentRequest.Builder get() { + return GetVolumeBackupPolicyAssetAssignmentRequest.builder().copy(request); + } + }, + new com.google.common.base.Function< + GetVolumeBackupPolicyAssetAssignmentResponse, String>() { + @Override + public String apply(GetVolumeBackupPolicyAssetAssignmentResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + GetVolumeBackupPolicyAssetAssignmentRequest.Builder>, + GetVolumeBackupPolicyAssetAssignmentRequest>() { + @Override + public GetVolumeBackupPolicyAssetAssignmentRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + GetVolumeBackupPolicyAssetAssignmentRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + GetVolumeBackupPolicyAssetAssignmentRequest, + GetVolumeBackupPolicyAssetAssignmentResponse>() { + @Override + public GetVolumeBackupPolicyAssetAssignmentResponse apply( + GetVolumeBackupPolicyAssetAssignmentRequest request) { + return client.getVolumeBackupPolicyAssetAssignment(request); + } + }); + } + + /** + * Creates a new iterable which will iterate over the {@link com.oracle.bmc.core.model.VolumeBackupPolicyAssignment} objects + * contained in responses from the getVolumeBackupPolicyAssetAssignment operation. This iterable will fetch more data from the + * server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link com.oracle.bmc.core.model.VolumeBackupPolicyAssignment} objects + * contained in responses received from the service. + */ + public Iterable + getVolumeBackupPolicyAssetAssignmentRecordIterator( + final GetVolumeBackupPolicyAssetAssignmentRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseRecordIterable< + GetVolumeBackupPolicyAssetAssignmentRequest.Builder, + GetVolumeBackupPolicyAssetAssignmentRequest, + GetVolumeBackupPolicyAssetAssignmentResponse, + com.oracle.bmc.core.model.VolumeBackupPolicyAssignment>( + new com.google.common.base.Supplier< + GetVolumeBackupPolicyAssetAssignmentRequest.Builder>() { + @Override + public GetVolumeBackupPolicyAssetAssignmentRequest.Builder get() { + return GetVolumeBackupPolicyAssetAssignmentRequest.builder().copy(request); + } + }, + new com.google.common.base.Function< + GetVolumeBackupPolicyAssetAssignmentResponse, String>() { + @Override + public String apply(GetVolumeBackupPolicyAssetAssignmentResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + GetVolumeBackupPolicyAssetAssignmentRequest.Builder>, + GetVolumeBackupPolicyAssetAssignmentRequest>() { + @Override + public GetVolumeBackupPolicyAssetAssignmentRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + GetVolumeBackupPolicyAssetAssignmentRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + GetVolumeBackupPolicyAssetAssignmentRequest, + GetVolumeBackupPolicyAssetAssignmentResponse>() { + @Override + public GetVolumeBackupPolicyAssetAssignmentResponse apply( + GetVolumeBackupPolicyAssetAssignmentRequest request) { + return client.getVolumeBackupPolicyAssetAssignment(request); + } + }, + new com.google.common.base.Function< + GetVolumeBackupPolicyAssetAssignmentResponse, + java.util.List>() { + @Override + public java.util.List + apply(GetVolumeBackupPolicyAssetAssignmentResponse response) { + return response.getItems(); + } + }); + } + + /** + * Creates a new iterable which will iterate over the responses received from the listBootVolumes operation. This iterable + * will fetch more data from the server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the responses received from the service. + */ + public Iterable listBootVolumesResponseIterator( + final ListBootVolumesRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseIterable< + ListBootVolumesRequest.Builder, ListBootVolumesRequest, ListBootVolumesResponse>( + new com.google.common.base.Supplier() { + @Override + public ListBootVolumesRequest.Builder get() { + return ListBootVolumesRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListBootVolumesResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListBootVolumesRequest.Builder>, + ListBootVolumesRequest>() { + @Override + public ListBootVolumesRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListBootVolumesRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListBootVolumesRequest, ListBootVolumesResponse>() { + @Override + public ListBootVolumesResponse apply(ListBootVolumesRequest request) { + return client.listBootVolumes(request); + } + }); + } + + /** + * Creates a new iterable which will iterate over the {@link com.oracle.bmc.core.model.BootVolume} objects + * contained in responses from the listBootVolumes operation. This iterable will fetch more data from the + * server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link com.oracle.bmc.core.model.BootVolume} objects + * contained in responses received from the service. + */ + public Iterable listBootVolumesRecordIterator( + final ListBootVolumesRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseRecordIterable< + ListBootVolumesRequest.Builder, ListBootVolumesRequest, ListBootVolumesResponse, + com.oracle.bmc.core.model.BootVolume>( + new com.google.common.base.Supplier() { + @Override + public ListBootVolumesRequest.Builder get() { + return ListBootVolumesRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListBootVolumesResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListBootVolumesRequest.Builder>, + ListBootVolumesRequest>() { + @Override + public ListBootVolumesRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListBootVolumesRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListBootVolumesRequest, ListBootVolumesResponse>() { + @Override + public ListBootVolumesResponse apply(ListBootVolumesRequest request) { + return client.listBootVolumes(request); + } + }, + new com.google.common.base.Function< + ListBootVolumesResponse, + java.util.List>() { + @Override + public java.util.List apply( + ListBootVolumesResponse response) { + return response.getItems(); + } + }); + } + + /** + * Creates a new iterable which will iterate over the responses received from the listVolumeBackupPolicies operation. This iterable + * will fetch more data from the server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the responses received from the service. + */ + public Iterable listVolumeBackupPoliciesResponseIterator( + final ListVolumeBackupPoliciesRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseIterable< + ListVolumeBackupPoliciesRequest.Builder, ListVolumeBackupPoliciesRequest, + ListVolumeBackupPoliciesResponse>( + new com.google.common.base.Supplier() { + @Override + public ListVolumeBackupPoliciesRequest.Builder get() { + return ListVolumeBackupPoliciesRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListVolumeBackupPoliciesResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListVolumeBackupPoliciesRequest.Builder>, + ListVolumeBackupPoliciesRequest>() { + @Override + public ListVolumeBackupPoliciesRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListVolumeBackupPoliciesRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListVolumeBackupPoliciesRequest, ListVolumeBackupPoliciesResponse>() { + @Override + public ListVolumeBackupPoliciesResponse apply( + ListVolumeBackupPoliciesRequest request) { + return client.listVolumeBackupPolicies(request); + } + }); + } + + /** + * Creates a new iterable which will iterate over the {@link com.oracle.bmc.core.model.VolumeBackupPolicy} objects + * contained in responses from the listVolumeBackupPolicies operation. This iterable will fetch more data from the + * server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link com.oracle.bmc.core.model.VolumeBackupPolicy} objects + * contained in responses received from the service. + */ + public Iterable + listVolumeBackupPoliciesRecordIterator(final ListVolumeBackupPoliciesRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseRecordIterable< + ListVolumeBackupPoliciesRequest.Builder, ListVolumeBackupPoliciesRequest, + ListVolumeBackupPoliciesResponse, com.oracle.bmc.core.model.VolumeBackupPolicy>( + new com.google.common.base.Supplier() { + @Override + public ListVolumeBackupPoliciesRequest.Builder get() { + return ListVolumeBackupPoliciesRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListVolumeBackupPoliciesResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListVolumeBackupPoliciesRequest.Builder>, + ListVolumeBackupPoliciesRequest>() { + @Override + public ListVolumeBackupPoliciesRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListVolumeBackupPoliciesRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListVolumeBackupPoliciesRequest, ListVolumeBackupPoliciesResponse>() { + @Override + public ListVolumeBackupPoliciesResponse apply( + ListVolumeBackupPoliciesRequest request) { + return client.listVolumeBackupPolicies(request); + } + }, + new com.google.common.base.Function< + ListVolumeBackupPoliciesResponse, + java.util.List>() { + @Override + public java.util.List apply( + ListVolumeBackupPoliciesResponse response) { + return response.getItems(); + } + }); + } + + /** + * Creates a new iterable which will iterate over the responses received from the listVolumeBackups operation. This iterable + * will fetch more data from the server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the responses received from the service. + */ + public Iterable listVolumeBackupsResponseIterator( + final ListVolumeBackupsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseIterable< + ListVolumeBackupsRequest.Builder, ListVolumeBackupsRequest, + ListVolumeBackupsResponse>( + new com.google.common.base.Supplier() { + @Override + public ListVolumeBackupsRequest.Builder get() { + return ListVolumeBackupsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListVolumeBackupsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListVolumeBackupsRequest.Builder>, + ListVolumeBackupsRequest>() { + @Override + public ListVolumeBackupsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListVolumeBackupsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListVolumeBackupsRequest, ListVolumeBackupsResponse>() { + @Override + public ListVolumeBackupsResponse apply(ListVolumeBackupsRequest request) { + return client.listVolumeBackups(request); + } + }); + } + + /** + * Creates a new iterable which will iterate over the {@link com.oracle.bmc.core.model.VolumeBackup} objects + * contained in responses from the listVolumeBackups operation. This iterable will fetch more data from the + * server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link com.oracle.bmc.core.model.VolumeBackup} objects + * contained in responses received from the service. + */ + public Iterable listVolumeBackupsRecordIterator( + final ListVolumeBackupsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseRecordIterable< + ListVolumeBackupsRequest.Builder, ListVolumeBackupsRequest, + ListVolumeBackupsResponse, com.oracle.bmc.core.model.VolumeBackup>( + new com.google.common.base.Supplier() { + @Override + public ListVolumeBackupsRequest.Builder get() { + return ListVolumeBackupsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListVolumeBackupsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListVolumeBackupsRequest.Builder>, + ListVolumeBackupsRequest>() { + @Override + public ListVolumeBackupsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListVolumeBackupsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListVolumeBackupsRequest, ListVolumeBackupsResponse>() { + @Override + public ListVolumeBackupsResponse apply(ListVolumeBackupsRequest request) { + return client.listVolumeBackups(request); + } + }, + new com.google.common.base.Function< + ListVolumeBackupsResponse, + java.util.List>() { + @Override + public java.util.List apply( + ListVolumeBackupsResponse response) { + return response.getItems(); + } + }); + } + + /** + * Creates a new iterable which will iterate over the responses received from the listVolumes operation. This iterable + * will fetch more data from the server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the responses received from the service. + */ + public Iterable listVolumesResponseIterator( + final ListVolumesRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseIterable< + ListVolumesRequest.Builder, ListVolumesRequest, ListVolumesResponse>( + new com.google.common.base.Supplier() { + @Override + public ListVolumesRequest.Builder get() { + return ListVolumesRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListVolumesResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListVolumesRequest.Builder>, + ListVolumesRequest>() { + @Override + public ListVolumesRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListVolumesRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function() { + @Override + public ListVolumesResponse apply(ListVolumesRequest request) { + return client.listVolumes(request); + } + }); + } + + /** + * Creates a new iterable which will iterate over the {@link com.oracle.bmc.core.model.Volume} objects + * contained in responses from the listVolumes operation. This iterable will fetch more data from the + * server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link com.oracle.bmc.core.model.Volume} objects + * contained in responses received from the service. + */ + public Iterable listVolumesRecordIterator( + final ListVolumesRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseRecordIterable< + ListVolumesRequest.Builder, ListVolumesRequest, ListVolumesResponse, + com.oracle.bmc.core.model.Volume>( + new com.google.common.base.Supplier() { + @Override + public ListVolumesRequest.Builder get() { + return ListVolumesRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListVolumesResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListVolumesRequest.Builder>, + ListVolumesRequest>() { + @Override + public ListVolumesRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListVolumesRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function() { + @Override + public ListVolumesResponse apply(ListVolumesRequest request) { + return client.listVolumes(request); + } + }, + new com.google.common.base.Function< + ListVolumesResponse, java.util.List>() { + @Override + public java.util.List apply( + ListVolumesResponse response) { + return response.getItems(); + } + }); + } +} diff --git a/bmc-core/src/main/java/com/oracle/bmc/core/Compute.java b/bmc-core/src/main/java/com/oracle/bmc/core/Compute.java index 60c33b861b8..507ec71971d 100644 --- a/bmc-core/src/main/java/com/oracle/bmc/core/Compute.java +++ b/bmc-core/src/main/java/com/oracle/bmc/core/Compute.java @@ -504,4 +504,13 @@ ListInstanceConsoleConnectionsResponse listInstanceConsoleConnections( * @return The service waiters. */ ComputeWaiters getWaiters(); + + /** + * Gets the pre-configured paginators available for list operations in this service which may return multiple + * pages of data. These paginators provide an {@link java.lang.Iterable} interface so that service responses, or + * resources/records, can be iterated through without having to manually deal with pagination and page tokens. + * + * @return The service paginators. + */ + ComputePaginators getPaginators(); } diff --git a/bmc-core/src/main/java/com/oracle/bmc/core/ComputeClient.java b/bmc-core/src/main/java/com/oracle/bmc/core/ComputeClient.java index 39a31a8a55e..aa30df0f4d4 100644 --- a/bmc-core/src/main/java/com/oracle/bmc/core/ComputeClient.java +++ b/bmc-core/src/main/java/com/oracle/bmc/core/ComputeClient.java @@ -16,10 +16,11 @@ public class ComputeClient implements Compute { */ public static final com.oracle.bmc.Service SERVICE = com.oracle.bmc.Services.create("COMPUTE", "iaas"); + // attempt twice if it's instance principals, immediately failures will try to refresh the token + private static final int MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS = 2; - private final java.util.concurrent.ExecutorService executorService = - java.util.concurrent.Executors.newFixedThreadPool(50); private final ComputeWaiters waiters; + private final ComputePaginators paginators; @lombok.Getter(value = lombok.AccessLevel.PACKAGE) private final com.oracle.bmc.http.internal.RestClient client; @@ -106,6 +107,8 @@ public ComputeClient( this.waiters = new ComputeWaiters(executorService, this); + this.paginators = new ComputePaginators(this); + if (this.authenticationDetailsProvider instanceof com.oracle.bmc.auth.RegionProvider) { com.oracle.bmc.auth.RegionProvider provider = (com.oracle.bmc.auth.RegionProvider) this.authenticationDetailsProvider; @@ -160,28 +163,20 @@ public AttachBootVolumeResponse attachBootVolume(AttachBootVolumeRequest request com.google.common.base.Function transformer = AttachBootVolumeConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.post(ib, request.getAttachBootVolumeDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.post(ib, request.getAttachBootVolumeDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.post(ib, request.getAttachBootVolumeDetails(), request); - return transformer.apply(response); } } @@ -194,28 +189,20 @@ public AttachVnicResponse attachVnic(AttachVnicRequest request) { com.google.common.base.Function transformer = AttachVnicConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.post(ib, request.getAttachVnicDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.post(ib, request.getAttachVnicDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.post(ib, request.getAttachVnicDetails(), request); - return transformer.apply(response); } } @@ -228,28 +215,20 @@ public AttachVolumeResponse attachVolume(AttachVolumeRequest request) { com.google.common.base.Function transformer = AttachVolumeConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.post(ib, request.getAttachVolumeDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.post(ib, request.getAttachVolumeDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.post(ib, request.getAttachVolumeDetails(), request); - return transformer.apply(response); } } @@ -263,28 +242,20 @@ public CaptureConsoleHistoryResponse captureConsoleHistory( com.google.common.base.Function transformer = CaptureConsoleHistoryConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.post(ib, request.getCaptureConsoleHistoryDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.post(ib, request.getCaptureConsoleHistoryDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.post(ib, request.getCaptureConsoleHistoryDetails(), request); - return transformer.apply(response); } } @@ -297,28 +268,20 @@ public CreateImageResponse createImage(CreateImageRequest request) { com.google.common.base.Function transformer = CreateImageConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.post(ib, request.getCreateImageDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateImageDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateImageDetails(), request); - return transformer.apply(response); } } @@ -333,32 +296,21 @@ public CreateInstanceConsoleConnectionResponse createInstanceConsoleConnection( javax.ws.rs.core.Response, CreateInstanceConsoleConnectionResponse> transformer = CreateInstanceConsoleConnectionConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.post( ib, request.getCreateInstanceConsoleConnectionDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.post( - ib, - request.getCreateInstanceConsoleConnectionDetails(), - request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateInstanceConsoleConnectionDetails(), request); - return transformer.apply(response); } } @@ -371,25 +323,19 @@ public DeleteConsoleHistoryResponse deleteConsoleHistory(DeleteConsoleHistoryReq com.google.common.base.Function transformer = DeleteConsoleHistoryConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.delete(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); } } @@ -402,25 +348,19 @@ public DeleteImageResponse deleteImage(DeleteImageRequest request) { com.google.common.base.Function transformer = DeleteImageConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.delete(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); } } @@ -435,25 +375,19 @@ public DeleteInstanceConsoleConnectionResponse deleteInstanceConsoleConnection( javax.ws.rs.core.Response, DeleteInstanceConsoleConnectionResponse> transformer = DeleteInstanceConsoleConnectionConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.delete(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); } } @@ -466,25 +400,19 @@ public DetachBootVolumeResponse detachBootVolume(DetachBootVolumeRequest request com.google.common.base.Function transformer = DetachBootVolumeConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.delete(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); } } @@ -497,25 +425,19 @@ public DetachVnicResponse detachVnic(DetachVnicRequest request) { com.google.common.base.Function transformer = DetachVnicConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.delete(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); } } @@ -528,25 +450,19 @@ public DetachVolumeResponse detachVolume(DetachVolumeRequest request) { com.google.common.base.Function transformer = DetachVolumeConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.delete(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); } } @@ -559,28 +475,20 @@ public ExportImageResponse exportImage(ExportImageRequest request) { com.google.common.base.Function transformer = ExportImageConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.post(ib, request.getExportImageDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.post(ib, request.getExportImageDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.post(ib, request.getExportImageDetails(), request); - return transformer.apply(response); } } @@ -594,25 +502,19 @@ public GetBootVolumeAttachmentResponse getBootVolumeAttachment( com.google.common.base.Function transformer = GetBootVolumeAttachmentConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -625,25 +527,19 @@ public GetConsoleHistoryResponse getConsoleHistory(GetConsoleHistoryRequest requ com.google.common.base.Function transformer = GetConsoleHistoryConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -657,25 +553,19 @@ public GetConsoleHistoryContentResponse getConsoleHistoryContent( com.google.common.base.Function transformer = GetConsoleHistoryContentConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -688,25 +578,19 @@ public GetImageResponse getImage(GetImageRequest request) { com.google.common.base.Function transformer = GetImageConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -719,25 +603,19 @@ public GetInstanceResponse getInstance(GetInstanceRequest request) { com.google.common.base.Function transformer = GetInstanceConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -752,25 +630,19 @@ public GetInstanceConsoleConnectionResponse getInstanceConsoleConnection( javax.ws.rs.core.Response, GetInstanceConsoleConnectionResponse> transformer = GetInstanceConsoleConnectionConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -783,25 +655,19 @@ public GetVnicAttachmentResponse getVnicAttachment(GetVnicAttachmentRequest requ com.google.common.base.Function transformer = GetVnicAttachmentConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -814,25 +680,19 @@ public GetVolumeAttachmentResponse getVolumeAttachment(GetVolumeAttachmentReques com.google.common.base.Function transformer = GetVolumeAttachmentConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -847,25 +707,19 @@ public GetWindowsInstanceInitialCredentialsResponse getWindowsInstanceInitialCre javax.ws.rs.core.Response, GetWindowsInstanceInitialCredentialsResponse> transformer = GetWindowsInstanceInitialCredentialsConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -878,25 +732,19 @@ public InstanceActionResponse instanceAction(InstanceActionRequest request) { com.google.common.base.Function transformer = InstanceActionConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.post(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.post(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.post(ib, request); - return transformer.apply(response); } } @@ -909,28 +757,20 @@ public LaunchInstanceResponse launchInstance(LaunchInstanceRequest request) { com.google.common.base.Function transformer = LaunchInstanceConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.post(ib, request.getLaunchInstanceDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.post(ib, request.getLaunchInstanceDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.post(ib, request.getLaunchInstanceDetails(), request); - return transformer.apply(response); } } @@ -945,25 +785,19 @@ public ListBootVolumeAttachmentsResponse listBootVolumeAttachments( javax.ws.rs.core.Response, ListBootVolumeAttachmentsResponse> transformer = ListBootVolumeAttachmentsConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -976,25 +810,19 @@ public ListConsoleHistoriesResponse listConsoleHistories(ListConsoleHistoriesReq com.google.common.base.Function transformer = ListConsoleHistoriesConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -1007,25 +835,19 @@ public ListImagesResponse listImages(ListImagesRequest request) { com.google.common.base.Function transformer = ListImagesConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -1040,25 +862,19 @@ public ListInstanceConsoleConnectionsResponse listInstanceConsoleConnections( javax.ws.rs.core.Response, ListInstanceConsoleConnectionsResponse> transformer = ListInstanceConsoleConnectionsConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -1071,25 +887,19 @@ public ListInstancesResponse listInstances(ListInstancesRequest request) { com.google.common.base.Function transformer = ListInstancesConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -1102,25 +912,19 @@ public ListShapesResponse listShapes(ListShapesRequest request) { com.google.common.base.Function transformer = ListShapesConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -1133,25 +937,19 @@ public ListVnicAttachmentsResponse listVnicAttachments(ListVnicAttachmentsReques com.google.common.base.Function transformer = ListVnicAttachmentsConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -1165,25 +963,19 @@ public ListVolumeAttachmentsResponse listVolumeAttachments( com.google.common.base.Function transformer = ListVolumeAttachmentsConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -1196,25 +988,19 @@ public TerminateInstanceResponse terminateInstance(TerminateInstanceRequest requ com.google.common.base.Function transformer = TerminateInstanceConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.delete(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); } } @@ -1227,28 +1013,20 @@ public UpdateConsoleHistoryResponse updateConsoleHistory(UpdateConsoleHistoryReq com.google.common.base.Function transformer = UpdateConsoleHistoryConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.put(ib, request.getUpdateConsoleHistoryDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateConsoleHistoryDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateConsoleHistoryDetails(), request); - return transformer.apply(response); } } @@ -1261,28 +1039,20 @@ public UpdateImageResponse updateImage(UpdateImageRequest request) { com.google.common.base.Function transformer = UpdateImageConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.put(ib, request.getUpdateImageDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateImageDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateImageDetails(), request); - return transformer.apply(response); } } @@ -1295,33 +1065,43 @@ public UpdateInstanceResponse updateInstance(UpdateInstanceRequest request) { com.google.common.base.Function transformer = UpdateInstanceConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.put(ib, request.getUpdateInstanceDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateInstanceDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateInstanceDetails(), request); - return transformer.apply(response); } } + private boolean canRetryRequestIfInstancePrincipalsUsed(com.oracle.bmc.model.BmcException e) { + if (e.getStatusCode() == 401 + && this.authenticationDetailsProvider + instanceof + com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) + this.authenticationDetailsProvider) + .refreshSecurityToken(); + return true; + } + return false; + } + @Override public ComputeWaiters getWaiters() { return waiters; } + + @Override + public ComputePaginators getPaginators() { + return paginators; + } } diff --git a/bmc-core/src/main/java/com/oracle/bmc/core/ComputePaginators.java b/bmc-core/src/main/java/com/oracle/bmc/core/ComputePaginators.java new file mode 100644 index 00000000000..89fee6e0758 --- /dev/null +++ b/bmc-core/src/main/java/com/oracle/bmc/core/ComputePaginators.java @@ -0,0 +1,940 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.core; + +import com.oracle.bmc.core.requests.*; +import com.oracle.bmc.core.responses.*; + +/** + * Collection of helper methods that can be used to provide an {@link java.lang.Iterable} interface + * to any list operations of Compute where multiple pages of data may be fetched. + * Two styles of iteration are supported: + * + *
        + *
      • Iterating over the Response objects returned by the list operation. These are referred to as ResponseIterators, and the methods are suffixed with ResponseIterator. For example: listUsersResponseIterator
      • + *
      • Iterating over the resources/records being listed. These are referred to as RecordIterators, and the methods are suffixed with RecordIterator. For example: listUsersRecordIterator
      • + *
      + * + * These iterables abstract away the need to write code to manually handle pagination via looping and using the page tokens. + * They will automatically fetch more data from the service when required. + * + * As an example, if we were using the ListUsers operation in IdentityService, then the {@link java.lang.Interable} returned by calling a + * ResponseIterator method would iterate over the ListUsersResponse objects returned by each ListUsers call, whereas the {@link java.lang.Iterable} + * returned by calling a RecordIterator method would iterate over the User records and we don't have to deal with ListUsersResponse objects at all. + * In either case, pagination will be automatically handled so we can iterate until there are no more responses or no more resources/records available. + */ +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20160918") +@lombok.RequiredArgsConstructor +public class ComputePaginators { + private final Compute client; + + /** + * Creates a new iterable which will iterate over the responses received from the listBootVolumeAttachments operation. This iterable + * will fetch more data from the server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the responses received from the service. + */ + public Iterable listBootVolumeAttachmentsResponseIterator( + final ListBootVolumeAttachmentsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseIterable< + ListBootVolumeAttachmentsRequest.Builder, ListBootVolumeAttachmentsRequest, + ListBootVolumeAttachmentsResponse>( + new com.google.common.base.Supplier() { + @Override + public ListBootVolumeAttachmentsRequest.Builder get() { + return ListBootVolumeAttachmentsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListBootVolumeAttachmentsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListBootVolumeAttachmentsRequest.Builder>, + ListBootVolumeAttachmentsRequest>() { + @Override + public ListBootVolumeAttachmentsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListBootVolumeAttachmentsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListBootVolumeAttachmentsRequest, ListBootVolumeAttachmentsResponse>() { + @Override + public ListBootVolumeAttachmentsResponse apply( + ListBootVolumeAttachmentsRequest request) { + return client.listBootVolumeAttachments(request); + } + }); + } + + /** + * Creates a new iterable which will iterate over the {@link com.oracle.bmc.core.model.BootVolumeAttachment} objects + * contained in responses from the listBootVolumeAttachments operation. This iterable will fetch more data from the + * server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link com.oracle.bmc.core.model.BootVolumeAttachment} objects + * contained in responses received from the service. + */ + public Iterable + listBootVolumeAttachmentsRecordIterator( + final ListBootVolumeAttachmentsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseRecordIterable< + ListBootVolumeAttachmentsRequest.Builder, ListBootVolumeAttachmentsRequest, + ListBootVolumeAttachmentsResponse, com.oracle.bmc.core.model.BootVolumeAttachment>( + new com.google.common.base.Supplier() { + @Override + public ListBootVolumeAttachmentsRequest.Builder get() { + return ListBootVolumeAttachmentsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListBootVolumeAttachmentsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListBootVolumeAttachmentsRequest.Builder>, + ListBootVolumeAttachmentsRequest>() { + @Override + public ListBootVolumeAttachmentsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListBootVolumeAttachmentsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListBootVolumeAttachmentsRequest, ListBootVolumeAttachmentsResponse>() { + @Override + public ListBootVolumeAttachmentsResponse apply( + ListBootVolumeAttachmentsRequest request) { + return client.listBootVolumeAttachments(request); + } + }, + new com.google.common.base.Function< + ListBootVolumeAttachmentsResponse, + java.util.List>() { + @Override + public java.util.List apply( + ListBootVolumeAttachmentsResponse response) { + return response.getItems(); + } + }); + } + + /** + * Creates a new iterable which will iterate over the responses received from the listConsoleHistories operation. This iterable + * will fetch more data from the server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the responses received from the service. + */ + public Iterable listConsoleHistoriesResponseIterator( + final ListConsoleHistoriesRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseIterable< + ListConsoleHistoriesRequest.Builder, ListConsoleHistoriesRequest, + ListConsoleHistoriesResponse>( + new com.google.common.base.Supplier() { + @Override + public ListConsoleHistoriesRequest.Builder get() { + return ListConsoleHistoriesRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListConsoleHistoriesResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListConsoleHistoriesRequest.Builder>, + ListConsoleHistoriesRequest>() { + @Override + public ListConsoleHistoriesRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListConsoleHistoriesRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListConsoleHistoriesRequest, ListConsoleHistoriesResponse>() { + @Override + public ListConsoleHistoriesResponse apply(ListConsoleHistoriesRequest request) { + return client.listConsoleHistories(request); + } + }); + } + + /** + * Creates a new iterable which will iterate over the {@link com.oracle.bmc.core.model.ConsoleHistory} objects + * contained in responses from the listConsoleHistories operation. This iterable will fetch more data from the + * server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link com.oracle.bmc.core.model.ConsoleHistory} objects + * contained in responses received from the service. + */ + public Iterable listConsoleHistoriesRecordIterator( + final ListConsoleHistoriesRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseRecordIterable< + ListConsoleHistoriesRequest.Builder, ListConsoleHistoriesRequest, + ListConsoleHistoriesResponse, com.oracle.bmc.core.model.ConsoleHistory>( + new com.google.common.base.Supplier() { + @Override + public ListConsoleHistoriesRequest.Builder get() { + return ListConsoleHistoriesRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListConsoleHistoriesResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListConsoleHistoriesRequest.Builder>, + ListConsoleHistoriesRequest>() { + @Override + public ListConsoleHistoriesRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListConsoleHistoriesRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListConsoleHistoriesRequest, ListConsoleHistoriesResponse>() { + @Override + public ListConsoleHistoriesResponse apply(ListConsoleHistoriesRequest request) { + return client.listConsoleHistories(request); + } + }, + new com.google.common.base.Function< + ListConsoleHistoriesResponse, + java.util.List>() { + @Override + public java.util.List apply( + ListConsoleHistoriesResponse response) { + return response.getItems(); + } + }); + } + + /** + * Creates a new iterable which will iterate over the responses received from the listImages operation. This iterable + * will fetch more data from the server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the responses received from the service. + */ + public Iterable listImagesResponseIterator( + final ListImagesRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseIterable< + ListImagesRequest.Builder, ListImagesRequest, ListImagesResponse>( + new com.google.common.base.Supplier() { + @Override + public ListImagesRequest.Builder get() { + return ListImagesRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListImagesResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListImagesRequest.Builder>, + ListImagesRequest>() { + @Override + public ListImagesRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListImagesRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function() { + @Override + public ListImagesResponse apply(ListImagesRequest request) { + return client.listImages(request); + } + }); + } + + /** + * Creates a new iterable which will iterate over the {@link com.oracle.bmc.core.model.Image} objects + * contained in responses from the listImages operation. This iterable will fetch more data from the + * server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link com.oracle.bmc.core.model.Image} objects + * contained in responses received from the service. + */ + public Iterable listImagesRecordIterator( + final ListImagesRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseRecordIterable< + ListImagesRequest.Builder, ListImagesRequest, ListImagesResponse, + com.oracle.bmc.core.model.Image>( + new com.google.common.base.Supplier() { + @Override + public ListImagesRequest.Builder get() { + return ListImagesRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListImagesResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListImagesRequest.Builder>, + ListImagesRequest>() { + @Override + public ListImagesRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListImagesRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function() { + @Override + public ListImagesResponse apply(ListImagesRequest request) { + return client.listImages(request); + } + }, + new com.google.common.base.Function< + ListImagesResponse, java.util.List>() { + @Override + public java.util.List apply( + ListImagesResponse response) { + return response.getItems(); + } + }); + } + + /** + * Creates a new iterable which will iterate over the responses received from the listInstanceConsoleConnections operation. This iterable + * will fetch more data from the server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the responses received from the service. + */ + public Iterable + listInstanceConsoleConnectionsResponseIterator( + final ListInstanceConsoleConnectionsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseIterable< + ListInstanceConsoleConnectionsRequest.Builder, + ListInstanceConsoleConnectionsRequest, ListInstanceConsoleConnectionsResponse>( + new com.google.common.base.Supplier< + ListInstanceConsoleConnectionsRequest.Builder>() { + @Override + public ListInstanceConsoleConnectionsRequest.Builder get() { + return ListInstanceConsoleConnectionsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function< + ListInstanceConsoleConnectionsResponse, String>() { + @Override + public String apply(ListInstanceConsoleConnectionsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListInstanceConsoleConnectionsRequest.Builder>, + ListInstanceConsoleConnectionsRequest>() { + @Override + public ListInstanceConsoleConnectionsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListInstanceConsoleConnectionsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListInstanceConsoleConnectionsRequest, + ListInstanceConsoleConnectionsResponse>() { + @Override + public ListInstanceConsoleConnectionsResponse apply( + ListInstanceConsoleConnectionsRequest request) { + return client.listInstanceConsoleConnections(request); + } + }); + } + + /** + * Creates a new iterable which will iterate over the {@link com.oracle.bmc.core.model.InstanceConsoleConnection} objects + * contained in responses from the listInstanceConsoleConnections operation. This iterable will fetch more data from the + * server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link com.oracle.bmc.core.model.InstanceConsoleConnection} objects + * contained in responses received from the service. + */ + public Iterable + listInstanceConsoleConnectionsRecordIterator( + final ListInstanceConsoleConnectionsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseRecordIterable< + ListInstanceConsoleConnectionsRequest.Builder, + ListInstanceConsoleConnectionsRequest, ListInstanceConsoleConnectionsResponse, + com.oracle.bmc.core.model.InstanceConsoleConnection>( + new com.google.common.base.Supplier< + ListInstanceConsoleConnectionsRequest.Builder>() { + @Override + public ListInstanceConsoleConnectionsRequest.Builder get() { + return ListInstanceConsoleConnectionsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function< + ListInstanceConsoleConnectionsResponse, String>() { + @Override + public String apply(ListInstanceConsoleConnectionsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListInstanceConsoleConnectionsRequest.Builder>, + ListInstanceConsoleConnectionsRequest>() { + @Override + public ListInstanceConsoleConnectionsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListInstanceConsoleConnectionsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListInstanceConsoleConnectionsRequest, + ListInstanceConsoleConnectionsResponse>() { + @Override + public ListInstanceConsoleConnectionsResponse apply( + ListInstanceConsoleConnectionsRequest request) { + return client.listInstanceConsoleConnections(request); + } + }, + new com.google.common.base.Function< + ListInstanceConsoleConnectionsResponse, + java.util.List>() { + @Override + public java.util.List + apply(ListInstanceConsoleConnectionsResponse response) { + return response.getItems(); + } + }); + } + + /** + * Creates a new iterable which will iterate over the responses received from the listInstances operation. This iterable + * will fetch more data from the server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the responses received from the service. + */ + public Iterable listInstancesResponseIterator( + final ListInstancesRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseIterable< + ListInstancesRequest.Builder, ListInstancesRequest, ListInstancesResponse>( + new com.google.common.base.Supplier() { + @Override + public ListInstancesRequest.Builder get() { + return ListInstancesRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListInstancesResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListInstancesRequest.Builder>, + ListInstancesRequest>() { + @Override + public ListInstancesRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListInstancesRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function() { + @Override + public ListInstancesResponse apply(ListInstancesRequest request) { + return client.listInstances(request); + } + }); + } + + /** + * Creates a new iterable which will iterate over the {@link com.oracle.bmc.core.model.Instance} objects + * contained in responses from the listInstances operation. This iterable will fetch more data from the + * server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link com.oracle.bmc.core.model.Instance} objects + * contained in responses received from the service. + */ + public Iterable listInstancesRecordIterator( + final ListInstancesRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseRecordIterable< + ListInstancesRequest.Builder, ListInstancesRequest, ListInstancesResponse, + com.oracle.bmc.core.model.Instance>( + new com.google.common.base.Supplier() { + @Override + public ListInstancesRequest.Builder get() { + return ListInstancesRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListInstancesResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListInstancesRequest.Builder>, + ListInstancesRequest>() { + @Override + public ListInstancesRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListInstancesRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function() { + @Override + public ListInstancesResponse apply(ListInstancesRequest request) { + return client.listInstances(request); + } + }, + new com.google.common.base.Function< + ListInstancesResponse, + java.util.List>() { + @Override + public java.util.List apply( + ListInstancesResponse response) { + return response.getItems(); + } + }); + } + + /** + * Creates a new iterable which will iterate over the responses received from the listShapes operation. This iterable + * will fetch more data from the server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the responses received from the service. + */ + public Iterable listShapesResponseIterator( + final ListShapesRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseIterable< + ListShapesRequest.Builder, ListShapesRequest, ListShapesResponse>( + new com.google.common.base.Supplier() { + @Override + public ListShapesRequest.Builder get() { + return ListShapesRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListShapesResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListShapesRequest.Builder>, + ListShapesRequest>() { + @Override + public ListShapesRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListShapesRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function() { + @Override + public ListShapesResponse apply(ListShapesRequest request) { + return client.listShapes(request); + } + }); + } + + /** + * Creates a new iterable which will iterate over the {@link com.oracle.bmc.core.model.Shape} objects + * contained in responses from the listShapes operation. This iterable will fetch more data from the + * server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link com.oracle.bmc.core.model.Shape} objects + * contained in responses received from the service. + */ + public Iterable listShapesRecordIterator( + final ListShapesRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseRecordIterable< + ListShapesRequest.Builder, ListShapesRequest, ListShapesResponse, + com.oracle.bmc.core.model.Shape>( + new com.google.common.base.Supplier() { + @Override + public ListShapesRequest.Builder get() { + return ListShapesRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListShapesResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListShapesRequest.Builder>, + ListShapesRequest>() { + @Override + public ListShapesRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListShapesRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function() { + @Override + public ListShapesResponse apply(ListShapesRequest request) { + return client.listShapes(request); + } + }, + new com.google.common.base.Function< + ListShapesResponse, java.util.List>() { + @Override + public java.util.List apply( + ListShapesResponse response) { + return response.getItems(); + } + }); + } + + /** + * Creates a new iterable which will iterate over the responses received from the listVnicAttachments operation. This iterable + * will fetch more data from the server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the responses received from the service. + */ + public Iterable listVnicAttachmentsResponseIterator( + final ListVnicAttachmentsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseIterable< + ListVnicAttachmentsRequest.Builder, ListVnicAttachmentsRequest, + ListVnicAttachmentsResponse>( + new com.google.common.base.Supplier() { + @Override + public ListVnicAttachmentsRequest.Builder get() { + return ListVnicAttachmentsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListVnicAttachmentsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListVnicAttachmentsRequest.Builder>, + ListVnicAttachmentsRequest>() { + @Override + public ListVnicAttachmentsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListVnicAttachmentsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListVnicAttachmentsRequest, ListVnicAttachmentsResponse>() { + @Override + public ListVnicAttachmentsResponse apply(ListVnicAttachmentsRequest request) { + return client.listVnicAttachments(request); + } + }); + } + + /** + * Creates a new iterable which will iterate over the {@link com.oracle.bmc.core.model.VnicAttachment} objects + * contained in responses from the listVnicAttachments operation. This iterable will fetch more data from the + * server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link com.oracle.bmc.core.model.VnicAttachment} objects + * contained in responses received from the service. + */ + public Iterable listVnicAttachmentsRecordIterator( + final ListVnicAttachmentsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseRecordIterable< + ListVnicAttachmentsRequest.Builder, ListVnicAttachmentsRequest, + ListVnicAttachmentsResponse, com.oracle.bmc.core.model.VnicAttachment>( + new com.google.common.base.Supplier() { + @Override + public ListVnicAttachmentsRequest.Builder get() { + return ListVnicAttachmentsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListVnicAttachmentsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListVnicAttachmentsRequest.Builder>, + ListVnicAttachmentsRequest>() { + @Override + public ListVnicAttachmentsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListVnicAttachmentsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListVnicAttachmentsRequest, ListVnicAttachmentsResponse>() { + @Override + public ListVnicAttachmentsResponse apply(ListVnicAttachmentsRequest request) { + return client.listVnicAttachments(request); + } + }, + new com.google.common.base.Function< + ListVnicAttachmentsResponse, + java.util.List>() { + @Override + public java.util.List apply( + ListVnicAttachmentsResponse response) { + return response.getItems(); + } + }); + } + + /** + * Creates a new iterable which will iterate over the responses received from the listVolumeAttachments operation. This iterable + * will fetch more data from the server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the responses received from the service. + */ + public Iterable listVolumeAttachmentsResponseIterator( + final ListVolumeAttachmentsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseIterable< + ListVolumeAttachmentsRequest.Builder, ListVolumeAttachmentsRequest, + ListVolumeAttachmentsResponse>( + new com.google.common.base.Supplier() { + @Override + public ListVolumeAttachmentsRequest.Builder get() { + return ListVolumeAttachmentsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListVolumeAttachmentsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListVolumeAttachmentsRequest.Builder>, + ListVolumeAttachmentsRequest>() { + @Override + public ListVolumeAttachmentsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListVolumeAttachmentsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListVolumeAttachmentsRequest, ListVolumeAttachmentsResponse>() { + @Override + public ListVolumeAttachmentsResponse apply( + ListVolumeAttachmentsRequest request) { + return client.listVolumeAttachments(request); + } + }); + } + + /** + * Creates a new iterable which will iterate over the {@link com.oracle.bmc.core.model.VolumeAttachment} objects + * contained in responses from the listVolumeAttachments operation. This iterable will fetch more data from the + * server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link com.oracle.bmc.core.model.VolumeAttachment} objects + * contained in responses received from the service. + */ + public Iterable listVolumeAttachmentsRecordIterator( + final ListVolumeAttachmentsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseRecordIterable< + ListVolumeAttachmentsRequest.Builder, ListVolumeAttachmentsRequest, + ListVolumeAttachmentsResponse, com.oracle.bmc.core.model.VolumeAttachment>( + new com.google.common.base.Supplier() { + @Override + public ListVolumeAttachmentsRequest.Builder get() { + return ListVolumeAttachmentsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListVolumeAttachmentsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListVolumeAttachmentsRequest.Builder>, + ListVolumeAttachmentsRequest>() { + @Override + public ListVolumeAttachmentsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListVolumeAttachmentsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListVolumeAttachmentsRequest, ListVolumeAttachmentsResponse>() { + @Override + public ListVolumeAttachmentsResponse apply( + ListVolumeAttachmentsRequest request) { + return client.listVolumeAttachments(request); + } + }, + new com.google.common.base.Function< + ListVolumeAttachmentsResponse, + java.util.List>() { + @Override + public java.util.List apply( + ListVolumeAttachmentsResponse response) { + return response.getItems(); + } + }); + } +} diff --git a/bmc-core/src/main/java/com/oracle/bmc/core/VirtualNetwork.java b/bmc-core/src/main/java/com/oracle/bmc/core/VirtualNetwork.java index 52a245e0437..e53f1b57aaf 100644 --- a/bmc-core/src/main/java/com/oracle/bmc/core/VirtualNetwork.java +++ b/bmc-core/src/main/java/com/oracle/bmc/core/VirtualNetwork.java @@ -1418,4 +1418,13 @@ UpdateLocalPeeringGatewayResponse updateLocalPeeringGateway( * @return The service waiters. */ VirtualNetworkWaiters getWaiters(); + + /** + * Gets the pre-configured paginators available for list operations in this service which may return multiple + * pages of data. These paginators provide an {@link java.lang.Iterable} interface so that service responses, or + * resources/records, can be iterated through without having to manually deal with pagination and page tokens. + * + * @return The service paginators. + */ + VirtualNetworkPaginators getPaginators(); } diff --git a/bmc-core/src/main/java/com/oracle/bmc/core/VirtualNetworkClient.java b/bmc-core/src/main/java/com/oracle/bmc/core/VirtualNetworkClient.java index fa236a14356..c978b2e34fc 100644 --- a/bmc-core/src/main/java/com/oracle/bmc/core/VirtualNetworkClient.java +++ b/bmc-core/src/main/java/com/oracle/bmc/core/VirtualNetworkClient.java @@ -16,10 +16,11 @@ public class VirtualNetworkClient implements VirtualNetwork { */ public static final com.oracle.bmc.Service SERVICE = com.oracle.bmc.Services.create("VIRTUALNETWORK", "iaas"); + // attempt twice if it's instance principals, immediately failures will try to refresh the token + private static final int MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS = 2; - private final java.util.concurrent.ExecutorService executorService = - java.util.concurrent.Executors.newFixedThreadPool(50); private final VirtualNetworkWaiters waiters; + private final VirtualNetworkPaginators paginators; @lombok.Getter(value = lombok.AccessLevel.PACKAGE) private final com.oracle.bmc.http.internal.RestClient client; @@ -106,6 +107,8 @@ public VirtualNetworkClient( this.waiters = new VirtualNetworkWaiters(executorService, this); + this.paginators = new VirtualNetworkPaginators(this); + if (this.authenticationDetailsProvider instanceof com.oracle.bmc.auth.RegionProvider) { com.oracle.bmc.auth.RegionProvider provider = (com.oracle.bmc.auth.RegionProvider) this.authenticationDetailsProvider; @@ -162,8 +165,8 @@ public BulkAddVirtualCircuitPublicPrefixesResponse bulkAddVirtualCircuitPublicPr javax.ws.rs.core.Response, BulkAddVirtualCircuitPublicPrefixesResponse> transformer = BulkAddVirtualCircuitPublicPrefixesConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.post( @@ -172,25 +175,13 @@ public BulkAddVirtualCircuitPublicPrefixesResponse bulkAddVirtualCircuitPublicPr request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.post( - ib, - request.getBulkAddVirtualCircuitPublicPrefixesDetails(), - request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.post( - ib, request.getBulkAddVirtualCircuitPublicPrefixesDetails(), request); - return transformer.apply(response); } } @@ -205,8 +196,8 @@ public BulkDeleteVirtualCircuitPublicPrefixesResponse bulkDeleteVirtualCircuitPu javax.ws.rs.core.Response, BulkDeleteVirtualCircuitPublicPrefixesResponse> transformer = BulkDeleteVirtualCircuitPublicPrefixesConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.post( @@ -215,27 +206,13 @@ public BulkDeleteVirtualCircuitPublicPrefixesResponse bulkDeleteVirtualCircuitPu request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.post( - ib, - request.getBulkDeleteVirtualCircuitPublicPrefixesDetails(), - request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.post( - ib, - request.getBulkDeleteVirtualCircuitPublicPrefixesDetails(), - request); - return transformer.apply(response); } } @@ -250,29 +227,20 @@ public ConnectLocalPeeringGatewaysResponse connectLocalPeeringGateways( javax.ws.rs.core.Response, ConnectLocalPeeringGatewaysResponse> transformer = ConnectLocalPeeringGatewaysConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.post(ib, request.getConnectLocalPeeringGatewaysDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.post( - ib, request.getConnectLocalPeeringGatewaysDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.post(ib, request.getConnectLocalPeeringGatewaysDetails(), request); - return transformer.apply(response); } } @@ -285,28 +253,20 @@ public CreateCpeResponse createCpe(CreateCpeRequest request) { com.google.common.base.Function transformer = CreateCpeConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.post(ib, request.getCreateCpeDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateCpeDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateCpeDetails(), request); - return transformer.apply(response); } } @@ -319,28 +279,20 @@ public CreateCrossConnectResponse createCrossConnect(CreateCrossConnectRequest r com.google.common.base.Function transformer = CreateCrossConnectConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.post(ib, request.getCreateCrossConnectDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateCrossConnectDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateCrossConnectDetails(), request); - return transformer.apply(response); } } @@ -354,28 +306,20 @@ public CreateCrossConnectGroupResponse createCrossConnectGroup( com.google.common.base.Function transformer = CreateCrossConnectGroupConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.post(ib, request.getCreateCrossConnectGroupDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateCrossConnectGroupDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateCrossConnectGroupDetails(), request); - return transformer.apply(response); } } @@ -388,28 +332,20 @@ public CreateDhcpOptionsResponse createDhcpOptions(CreateDhcpOptionsRequest requ com.google.common.base.Function transformer = CreateDhcpOptionsConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.post(ib, request.getCreateDhcpDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateDhcpDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateDhcpDetails(), request); - return transformer.apply(response); } } @@ -422,28 +358,20 @@ public CreateDrgResponse createDrg(CreateDrgRequest request) { com.google.common.base.Function transformer = CreateDrgConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.post(ib, request.getCreateDrgDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateDrgDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateDrgDetails(), request); - return transformer.apply(response); } } @@ -456,28 +384,20 @@ public CreateDrgAttachmentResponse createDrgAttachment(CreateDrgAttachmentReques com.google.common.base.Function transformer = CreateDrgAttachmentConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.post(ib, request.getCreateDrgAttachmentDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateDrgAttachmentDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateDrgAttachmentDetails(), request); - return transformer.apply(response); } } @@ -491,28 +411,20 @@ public CreateIPSecConnectionResponse createIPSecConnection( com.google.common.base.Function transformer = CreateIPSecConnectionConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.post(ib, request.getCreateIPSecConnectionDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateIPSecConnectionDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateIPSecConnectionDetails(), request); - return transformer.apply(response); } } @@ -526,28 +438,20 @@ public CreateInternetGatewayResponse createInternetGateway( com.google.common.base.Function transformer = CreateInternetGatewayConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.post(ib, request.getCreateInternetGatewayDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateInternetGatewayDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateInternetGatewayDetails(), request); - return transformer.apply(response); } } @@ -562,28 +466,20 @@ public CreateLocalPeeringGatewayResponse createLocalPeeringGateway( javax.ws.rs.core.Response, CreateLocalPeeringGatewayResponse> transformer = CreateLocalPeeringGatewayConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.post(ib, request.getCreateLocalPeeringGatewayDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateLocalPeeringGatewayDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateLocalPeeringGatewayDetails(), request); - return transformer.apply(response); } } @@ -596,28 +492,20 @@ public CreatePrivateIpResponse createPrivateIp(CreatePrivateIpRequest request) { com.google.common.base.Function transformer = CreatePrivateIpConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.post(ib, request.getCreatePrivateIpDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.post(ib, request.getCreatePrivateIpDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.post(ib, request.getCreatePrivateIpDetails(), request); - return transformer.apply(response); } } @@ -630,28 +518,20 @@ public CreatePublicIpResponse createPublicIp(CreatePublicIpRequest request) { com.google.common.base.Function transformer = CreatePublicIpConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.post(ib, request.getCreatePublicIpDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.post(ib, request.getCreatePublicIpDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.post(ib, request.getCreatePublicIpDetails(), request); - return transformer.apply(response); } } @@ -664,28 +544,20 @@ public CreateRouteTableResponse createRouteTable(CreateRouteTableRequest request com.google.common.base.Function transformer = CreateRouteTableConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.post(ib, request.getCreateRouteTableDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateRouteTableDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateRouteTableDetails(), request); - return transformer.apply(response); } } @@ -698,28 +570,20 @@ public CreateSecurityListResponse createSecurityList(CreateSecurityListRequest r com.google.common.base.Function transformer = CreateSecurityListConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.post(ib, request.getCreateSecurityListDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateSecurityListDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateSecurityListDetails(), request); - return transformer.apply(response); } } @@ -732,28 +596,20 @@ public CreateSubnetResponse createSubnet(CreateSubnetRequest request) { com.google.common.base.Function transformer = CreateSubnetConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.post(ib, request.getCreateSubnetDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateSubnetDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateSubnetDetails(), request); - return transformer.apply(response); } } @@ -766,28 +622,20 @@ public CreateVcnResponse createVcn(CreateVcnRequest request) { com.google.common.base.Function transformer = CreateVcnConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.post(ib, request.getCreateVcnDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateVcnDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateVcnDetails(), request); - return transformer.apply(response); } } @@ -800,28 +648,20 @@ public CreateVirtualCircuitResponse createVirtualCircuit(CreateVirtualCircuitReq com.google.common.base.Function transformer = CreateVirtualCircuitConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.post(ib, request.getCreateVirtualCircuitDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateVirtualCircuitDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateVirtualCircuitDetails(), request); - return transformer.apply(response); } } @@ -834,25 +674,19 @@ public DeleteCpeResponse deleteCpe(DeleteCpeRequest request) { com.google.common.base.Function transformer = DeleteCpeConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.delete(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); } } @@ -865,25 +699,19 @@ public DeleteCrossConnectResponse deleteCrossConnect(DeleteCrossConnectRequest r com.google.common.base.Function transformer = DeleteCrossConnectConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.delete(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); } } @@ -897,25 +725,19 @@ public DeleteCrossConnectGroupResponse deleteCrossConnectGroup( com.google.common.base.Function transformer = DeleteCrossConnectGroupConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.delete(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); } } @@ -928,25 +750,19 @@ public DeleteDhcpOptionsResponse deleteDhcpOptions(DeleteDhcpOptionsRequest requ com.google.common.base.Function transformer = DeleteDhcpOptionsConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.delete(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); } } @@ -959,25 +775,19 @@ public DeleteDrgResponse deleteDrg(DeleteDrgRequest request) { com.google.common.base.Function transformer = DeleteDrgConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.delete(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); } } @@ -990,25 +800,19 @@ public DeleteDrgAttachmentResponse deleteDrgAttachment(DeleteDrgAttachmentReques com.google.common.base.Function transformer = DeleteDrgAttachmentConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.delete(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); } } @@ -1022,25 +826,19 @@ public DeleteIPSecConnectionResponse deleteIPSecConnection( com.google.common.base.Function transformer = DeleteIPSecConnectionConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.delete(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); } } @@ -1054,25 +852,19 @@ public DeleteInternetGatewayResponse deleteInternetGateway( com.google.common.base.Function transformer = DeleteInternetGatewayConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.delete(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); } } @@ -1087,25 +879,19 @@ public DeleteLocalPeeringGatewayResponse deleteLocalPeeringGateway( javax.ws.rs.core.Response, DeleteLocalPeeringGatewayResponse> transformer = DeleteLocalPeeringGatewayConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.delete(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); } } @@ -1118,25 +904,19 @@ public DeletePrivateIpResponse deletePrivateIp(DeletePrivateIpRequest request) { com.google.common.base.Function transformer = DeletePrivateIpConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.delete(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); } } @@ -1149,25 +929,19 @@ public DeletePublicIpResponse deletePublicIp(DeletePublicIpRequest request) { com.google.common.base.Function transformer = DeletePublicIpConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.delete(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); } } @@ -1180,25 +954,19 @@ public DeleteRouteTableResponse deleteRouteTable(DeleteRouteTableRequest request com.google.common.base.Function transformer = DeleteRouteTableConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.delete(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); } } @@ -1211,25 +979,19 @@ public DeleteSecurityListResponse deleteSecurityList(DeleteSecurityListRequest r com.google.common.base.Function transformer = DeleteSecurityListConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.delete(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); } } @@ -1242,25 +1004,19 @@ public DeleteSubnetResponse deleteSubnet(DeleteSubnetRequest request) { com.google.common.base.Function transformer = DeleteSubnetConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.delete(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); } } @@ -1273,25 +1029,19 @@ public DeleteVcnResponse deleteVcn(DeleteVcnRequest request) { com.google.common.base.Function transformer = DeleteVcnConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.delete(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); } } @@ -1304,25 +1054,19 @@ public DeleteVirtualCircuitResponse deleteVirtualCircuit(DeleteVirtualCircuitReq com.google.common.base.Function transformer = DeleteVirtualCircuitConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.delete(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); } } @@ -1335,25 +1079,19 @@ public GetCpeResponse getCpe(GetCpeRequest request) { com.google.common.base.Function transformer = GetCpeConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -1366,25 +1104,19 @@ public GetCrossConnectResponse getCrossConnect(GetCrossConnectRequest request) { com.google.common.base.Function transformer = GetCrossConnectConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -1397,25 +1129,19 @@ public GetCrossConnectGroupResponse getCrossConnectGroup(GetCrossConnectGroupReq com.google.common.base.Function transformer = GetCrossConnectGroupConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -1430,25 +1156,19 @@ public GetCrossConnectLetterOfAuthorityResponse getCrossConnectLetterOfAuthority javax.ws.rs.core.Response, GetCrossConnectLetterOfAuthorityResponse> transformer = GetCrossConnectLetterOfAuthorityConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -1462,25 +1182,19 @@ public GetCrossConnectStatusResponse getCrossConnectStatus( com.google.common.base.Function transformer = GetCrossConnectStatusConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -1493,25 +1207,19 @@ public GetDhcpOptionsResponse getDhcpOptions(GetDhcpOptionsRequest request) { com.google.common.base.Function transformer = GetDhcpOptionsConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -1524,25 +1232,19 @@ public GetDrgResponse getDrg(GetDrgRequest request) { com.google.common.base.Function transformer = GetDrgConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -1555,25 +1257,19 @@ public GetDrgAttachmentResponse getDrgAttachment(GetDrgAttachmentRequest request com.google.common.base.Function transformer = GetDrgAttachmentConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -1588,25 +1284,19 @@ public GetFastConnectProviderServiceResponse getFastConnectProviderService( javax.ws.rs.core.Response, GetFastConnectProviderServiceResponse> transformer = GetFastConnectProviderServiceConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -1619,25 +1309,19 @@ public GetIPSecConnectionResponse getIPSecConnection(GetIPSecConnectionRequest r com.google.common.base.Function transformer = GetIPSecConnectionConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -1652,25 +1336,19 @@ public GetIPSecConnectionDeviceConfigResponse getIPSecConnectionDeviceConfig( javax.ws.rs.core.Response, GetIPSecConnectionDeviceConfigResponse> transformer = GetIPSecConnectionDeviceConfigConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -1685,25 +1363,19 @@ public GetIPSecConnectionDeviceStatusResponse getIPSecConnectionDeviceStatus( javax.ws.rs.core.Response, GetIPSecConnectionDeviceStatusResponse> transformer = GetIPSecConnectionDeviceStatusConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -1716,25 +1388,19 @@ public GetInternetGatewayResponse getInternetGateway(GetInternetGatewayRequest r com.google.common.base.Function transformer = GetInternetGatewayConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -1748,25 +1414,19 @@ public GetLocalPeeringGatewayResponse getLocalPeeringGateway( com.google.common.base.Function transformer = GetLocalPeeringGatewayConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -1779,25 +1439,19 @@ public GetPrivateIpResponse getPrivateIp(GetPrivateIpRequest request) { com.google.common.base.Function transformer = GetPrivateIpConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -1810,25 +1464,19 @@ public GetPublicIpResponse getPublicIp(GetPublicIpRequest request) { com.google.common.base.Function transformer = GetPublicIpConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -1842,28 +1490,20 @@ public GetPublicIpByIpAddressResponse getPublicIpByIpAddress( com.google.common.base.Function transformer = GetPublicIpByIpAddressConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.post(ib, request.getGetPublicIpByIpAddressDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.post(ib, request.getGetPublicIpByIpAddressDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.post(ib, request.getGetPublicIpByIpAddressDetails(), request); - return transformer.apply(response); } } @@ -1877,28 +1517,20 @@ public GetPublicIpByPrivateIpIdResponse getPublicIpByPrivateIpId( com.google.common.base.Function transformer = GetPublicIpByPrivateIpIdConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.post(ib, request.getGetPublicIpByPrivateIpIdDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.post(ib, request.getGetPublicIpByPrivateIpIdDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.post(ib, request.getGetPublicIpByPrivateIpIdDetails(), request); - return transformer.apply(response); } } @@ -1911,25 +1543,19 @@ public GetRouteTableResponse getRouteTable(GetRouteTableRequest request) { com.google.common.base.Function transformer = GetRouteTableConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -1942,25 +1568,19 @@ public GetSecurityListResponse getSecurityList(GetSecurityListRequest request) { com.google.common.base.Function transformer = GetSecurityListConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -1973,25 +1593,19 @@ public GetSubnetResponse getSubnet(GetSubnetRequest request) { com.google.common.base.Function transformer = GetSubnetConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -2004,25 +1618,19 @@ public GetVcnResponse getVcn(GetVcnRequest request) { com.google.common.base.Function transformer = GetVcnConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -2035,25 +1643,19 @@ public GetVirtualCircuitResponse getVirtualCircuit(GetVirtualCircuitRequest requ com.google.common.base.Function transformer = GetVirtualCircuitConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -2066,25 +1668,19 @@ public GetVnicResponse getVnic(GetVnicRequest request) { com.google.common.base.Function transformer = GetVnicConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -2097,25 +1693,19 @@ public ListCpesResponse listCpes(ListCpesRequest request) { com.google.common.base.Function transformer = ListCpesConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -2129,25 +1719,19 @@ public ListCrossConnectGroupsResponse listCrossConnectGroups( com.google.common.base.Function transformer = ListCrossConnectGroupsConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -2162,25 +1746,19 @@ public ListCrossConnectLocationsResponse listCrossConnectLocations( javax.ws.rs.core.Response, ListCrossConnectLocationsResponse> transformer = ListCrossConnectLocationsConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -2193,25 +1771,19 @@ public ListCrossConnectsResponse listCrossConnects(ListCrossConnectsRequest requ com.google.common.base.Function transformer = ListCrossConnectsConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -2226,25 +1798,19 @@ public ListCrossconnectPortSpeedShapesResponse listCrossconnectPortSpeedShapes( javax.ws.rs.core.Response, ListCrossconnectPortSpeedShapesResponse> transformer = ListCrossconnectPortSpeedShapesConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -2257,25 +1823,19 @@ public ListDhcpOptionsResponse listDhcpOptions(ListDhcpOptionsRequest request) { com.google.common.base.Function transformer = ListDhcpOptionsConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -2288,25 +1848,19 @@ public ListDrgAttachmentsResponse listDrgAttachments(ListDrgAttachmentsRequest r com.google.common.base.Function transformer = ListDrgAttachmentsConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -2319,25 +1873,19 @@ public ListDrgsResponse listDrgs(ListDrgsRequest request) { com.google.common.base.Function transformer = ListDrgsConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -2352,25 +1900,19 @@ public ListFastConnectProviderServicesResponse listFastConnectProviderServices( javax.ws.rs.core.Response, ListFastConnectProviderServicesResponse> transformer = ListFastConnectProviderServicesConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -2392,25 +1934,19 @@ public ListFastConnectProviderServicesResponse listFastConnectProviderServices( ListFastConnectProviderVirtualCircuitBandwidthShapesConverter .fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -2423,25 +1959,19 @@ public ListIPSecConnectionsResponse listIPSecConnections(ListIPSecConnectionsReq com.google.common.base.Function transformer = ListIPSecConnectionsConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -2454,25 +1984,19 @@ public ListInternetGatewaysResponse listInternetGateways(ListInternetGatewaysReq com.google.common.base.Function transformer = ListInternetGatewaysConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -2486,25 +2010,19 @@ public ListLocalPeeringGatewaysResponse listLocalPeeringGateways( com.google.common.base.Function transformer = ListLocalPeeringGatewaysConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -2517,25 +2035,19 @@ public ListPrivateIpsResponse listPrivateIps(ListPrivateIpsRequest request) { com.google.common.base.Function transformer = ListPrivateIpsConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -2548,25 +2060,19 @@ public ListPublicIpsResponse listPublicIps(ListPublicIpsRequest request) { com.google.common.base.Function transformer = ListPublicIpsConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -2579,25 +2085,19 @@ public ListRouteTablesResponse listRouteTables(ListRouteTablesRequest request) { com.google.common.base.Function transformer = ListRouteTablesConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -2610,25 +2110,19 @@ public ListSecurityListsResponse listSecurityLists(ListSecurityListsRequest requ com.google.common.base.Function transformer = ListSecurityListsConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -2641,25 +2135,19 @@ public ListSubnetsResponse listSubnets(ListSubnetsRequest request) { com.google.common.base.Function transformer = ListSubnetsConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -2672,25 +2160,19 @@ public ListVcnsResponse listVcns(ListVcnsRequest request) { com.google.common.base.Function transformer = ListVcnsConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -2705,25 +2187,19 @@ public ListVirtualCircuitBandwidthShapesResponse listVirtualCircuitBandwidthShap javax.ws.rs.core.Response, ListVirtualCircuitBandwidthShapesResponse> transformer = ListVirtualCircuitBandwidthShapesConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -2738,25 +2214,19 @@ public ListVirtualCircuitPublicPrefixesResponse listVirtualCircuitPublicPrefixes javax.ws.rs.core.Response, ListVirtualCircuitPublicPrefixesResponse> transformer = ListVirtualCircuitPublicPrefixesConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -2769,25 +2239,19 @@ public ListVirtualCircuitsResponse listVirtualCircuits(ListVirtualCircuitsReques com.google.common.base.Function transformer = ListVirtualCircuitsConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -2800,28 +2264,20 @@ public UpdateCpeResponse updateCpe(UpdateCpeRequest request) { com.google.common.base.Function transformer = UpdateCpeConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.put(ib, request.getUpdateCpeDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateCpeDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateCpeDetails(), request); - return transformer.apply(response); } } @@ -2834,28 +2290,20 @@ public UpdateCrossConnectResponse updateCrossConnect(UpdateCrossConnectRequest r com.google.common.base.Function transformer = UpdateCrossConnectConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.put(ib, request.getUpdateCrossConnectDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateCrossConnectDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateCrossConnectDetails(), request); - return transformer.apply(response); } } @@ -2869,28 +2317,20 @@ public UpdateCrossConnectGroupResponse updateCrossConnectGroup( com.google.common.base.Function transformer = UpdateCrossConnectGroupConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.put(ib, request.getUpdateCrossConnectGroupDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateCrossConnectGroupDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateCrossConnectGroupDetails(), request); - return transformer.apply(response); } } @@ -2903,28 +2343,20 @@ public UpdateDhcpOptionsResponse updateDhcpOptions(UpdateDhcpOptionsRequest requ com.google.common.base.Function transformer = UpdateDhcpOptionsConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.put(ib, request.getUpdateDhcpDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateDhcpDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateDhcpDetails(), request); - return transformer.apply(response); } } @@ -2937,28 +2369,20 @@ public UpdateDrgResponse updateDrg(UpdateDrgRequest request) { com.google.common.base.Function transformer = UpdateDrgConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.put(ib, request.getUpdateDrgDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateDrgDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateDrgDetails(), request); - return transformer.apply(response); } } @@ -2971,28 +2395,20 @@ public UpdateDrgAttachmentResponse updateDrgAttachment(UpdateDrgAttachmentReques com.google.common.base.Function transformer = UpdateDrgAttachmentConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.put(ib, request.getUpdateDrgAttachmentDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateDrgAttachmentDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateDrgAttachmentDetails(), request); - return transformer.apply(response); } } @@ -3006,28 +2422,20 @@ public UpdateIPSecConnectionResponse updateIPSecConnection( com.google.common.base.Function transformer = UpdateIPSecConnectionConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.put(ib, request.getUpdateIPSecConnectionDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateIPSecConnectionDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateIPSecConnectionDetails(), request); - return transformer.apply(response); } } @@ -3041,28 +2449,20 @@ public UpdateInternetGatewayResponse updateInternetGateway( com.google.common.base.Function transformer = UpdateInternetGatewayConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.put(ib, request.getUpdateInternetGatewayDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateInternetGatewayDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateInternetGatewayDetails(), request); - return transformer.apply(response); } } @@ -3077,28 +2477,20 @@ public UpdateLocalPeeringGatewayResponse updateLocalPeeringGateway( javax.ws.rs.core.Response, UpdateLocalPeeringGatewayResponse> transformer = UpdateLocalPeeringGatewayConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.put(ib, request.getUpdateLocalPeeringGatewayDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateLocalPeeringGatewayDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateLocalPeeringGatewayDetails(), request); - return transformer.apply(response); } } @@ -3111,28 +2503,20 @@ public UpdatePrivateIpResponse updatePrivateIp(UpdatePrivateIpRequest request) { com.google.common.base.Function transformer = UpdatePrivateIpConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.put(ib, request.getUpdatePrivateIpDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdatePrivateIpDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdatePrivateIpDetails(), request); - return transformer.apply(response); } } @@ -3145,28 +2529,20 @@ public UpdatePublicIpResponse updatePublicIp(UpdatePublicIpRequest request) { com.google.common.base.Function transformer = UpdatePublicIpConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.put(ib, request.getUpdatePublicIpDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdatePublicIpDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdatePublicIpDetails(), request); - return transformer.apply(response); } } @@ -3179,28 +2555,20 @@ public UpdateRouteTableResponse updateRouteTable(UpdateRouteTableRequest request com.google.common.base.Function transformer = UpdateRouteTableConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.put(ib, request.getUpdateRouteTableDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateRouteTableDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateRouteTableDetails(), request); - return transformer.apply(response); } } @@ -3213,28 +2581,20 @@ public UpdateSecurityListResponse updateSecurityList(UpdateSecurityListRequest r com.google.common.base.Function transformer = UpdateSecurityListConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.put(ib, request.getUpdateSecurityListDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateSecurityListDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateSecurityListDetails(), request); - return transformer.apply(response); } } @@ -3247,28 +2607,20 @@ public UpdateSubnetResponse updateSubnet(UpdateSubnetRequest request) { com.google.common.base.Function transformer = UpdateSubnetConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.put(ib, request.getUpdateSubnetDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateSubnetDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateSubnetDetails(), request); - return transformer.apply(response); } } @@ -3281,28 +2633,20 @@ public UpdateVcnResponse updateVcn(UpdateVcnRequest request) { com.google.common.base.Function transformer = UpdateVcnConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.put(ib, request.getUpdateVcnDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateVcnDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateVcnDetails(), request); - return transformer.apply(response); } } @@ -3315,28 +2659,20 @@ public UpdateVirtualCircuitResponse updateVirtualCircuit(UpdateVirtualCircuitReq com.google.common.base.Function transformer = UpdateVirtualCircuitConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.put(ib, request.getUpdateVirtualCircuitDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateVirtualCircuitDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateVirtualCircuitDetails(), request); - return transformer.apply(response); } } @@ -3349,33 +2685,43 @@ public UpdateVnicResponse updateVnic(UpdateVnicRequest request) { com.google.common.base.Function transformer = UpdateVnicConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.put(ib, request.getUpdateVnicDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateVnicDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateVnicDetails(), request); - return transformer.apply(response); } } + private boolean canRetryRequestIfInstancePrincipalsUsed(com.oracle.bmc.model.BmcException e) { + if (e.getStatusCode() == 401 + && this.authenticationDetailsProvider + instanceof + com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) + this.authenticationDetailsProvider) + .refreshSecurityToken(); + return true; + } + return false; + } + @Override public VirtualNetworkWaiters getWaiters() { return waiters; } + + @Override + public VirtualNetworkPaginators getPaginators() { + return paginators; + } } diff --git a/bmc-core/src/main/java/com/oracle/bmc/core/VirtualNetworkPaginators.java b/bmc-core/src/main/java/com/oracle/bmc/core/VirtualNetworkPaginators.java new file mode 100644 index 00000000000..02ef283b4db --- /dev/null +++ b/bmc-core/src/main/java/com/oracle/bmc/core/VirtualNetworkPaginators.java @@ -0,0 +1,2445 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.core; + +import com.oracle.bmc.core.requests.*; +import com.oracle.bmc.core.responses.*; + +/** + * Collection of helper methods that can be used to provide an {@link java.lang.Iterable} interface + * to any list operations of VirtualNetwork where multiple pages of data may be fetched. + * Two styles of iteration are supported: + * + *
        + *
      • Iterating over the Response objects returned by the list operation. These are referred to as ResponseIterators, and the methods are suffixed with ResponseIterator. For example: listUsersResponseIterator
      • + *
      • Iterating over the resources/records being listed. These are referred to as RecordIterators, and the methods are suffixed with RecordIterator. For example: listUsersRecordIterator
      • + *
      + * + * These iterables abstract away the need to write code to manually handle pagination via looping and using the page tokens. + * They will automatically fetch more data from the service when required. + * + * As an example, if we were using the ListUsers operation in IdentityService, then the {@link java.lang.Interable} returned by calling a + * ResponseIterator method would iterate over the ListUsersResponse objects returned by each ListUsers call, whereas the {@link java.lang.Iterable} + * returned by calling a RecordIterator method would iterate over the User records and we don't have to deal with ListUsersResponse objects at all. + * In either case, pagination will be automatically handled so we can iterate until there are no more responses or no more resources/records available. + */ +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20160918") +@lombok.RequiredArgsConstructor +public class VirtualNetworkPaginators { + private final VirtualNetwork client; + + /** + * Creates a new iterable which will iterate over the responses received from the listCpes operation. This iterable + * will fetch more data from the server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the responses received from the service. + */ + public Iterable listCpesResponseIterator(final ListCpesRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseIterable< + ListCpesRequest.Builder, ListCpesRequest, ListCpesResponse>( + new com.google.common.base.Supplier() { + @Override + public ListCpesRequest.Builder get() { + return ListCpesRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListCpesResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListCpesRequest.Builder>, + ListCpesRequest>() { + @Override + public ListCpesRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListCpesRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function() { + @Override + public ListCpesResponse apply(ListCpesRequest request) { + return client.listCpes(request); + } + }); + } + + /** + * Creates a new iterable which will iterate over the {@link com.oracle.bmc.core.model.Cpe} objects + * contained in responses from the listCpes operation. This iterable will fetch more data from the + * server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link com.oracle.bmc.core.model.Cpe} objects + * contained in responses received from the service. + */ + public Iterable listCpesRecordIterator( + final ListCpesRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseRecordIterable< + ListCpesRequest.Builder, ListCpesRequest, ListCpesResponse, + com.oracle.bmc.core.model.Cpe>( + new com.google.common.base.Supplier() { + @Override + public ListCpesRequest.Builder get() { + return ListCpesRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListCpesResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListCpesRequest.Builder>, + ListCpesRequest>() { + @Override + public ListCpesRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListCpesRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function() { + @Override + public ListCpesResponse apply(ListCpesRequest request) { + return client.listCpes(request); + } + }, + new com.google.common.base.Function< + ListCpesResponse, java.util.List>() { + @Override + public java.util.List apply( + ListCpesResponse response) { + return response.getItems(); + } + }); + } + + /** + * Creates a new iterable which will iterate over the responses received from the listCrossConnectGroups operation. This iterable + * will fetch more data from the server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the responses received from the service. + */ + public Iterable listCrossConnectGroupsResponseIterator( + final ListCrossConnectGroupsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseIterable< + ListCrossConnectGroupsRequest.Builder, ListCrossConnectGroupsRequest, + ListCrossConnectGroupsResponse>( + new com.google.common.base.Supplier() { + @Override + public ListCrossConnectGroupsRequest.Builder get() { + return ListCrossConnectGroupsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListCrossConnectGroupsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListCrossConnectGroupsRequest.Builder>, + ListCrossConnectGroupsRequest>() { + @Override + public ListCrossConnectGroupsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListCrossConnectGroupsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListCrossConnectGroupsRequest, ListCrossConnectGroupsResponse>() { + @Override + public ListCrossConnectGroupsResponse apply( + ListCrossConnectGroupsRequest request) { + return client.listCrossConnectGroups(request); + } + }); + } + + /** + * Creates a new iterable which will iterate over the {@link com.oracle.bmc.core.model.CrossConnectGroup} objects + * contained in responses from the listCrossConnectGroups operation. This iterable will fetch more data from the + * server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link com.oracle.bmc.core.model.CrossConnectGroup} objects + * contained in responses received from the service. + */ + public Iterable + listCrossConnectGroupsRecordIterator(final ListCrossConnectGroupsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseRecordIterable< + ListCrossConnectGroupsRequest.Builder, ListCrossConnectGroupsRequest, + ListCrossConnectGroupsResponse, com.oracle.bmc.core.model.CrossConnectGroup>( + new com.google.common.base.Supplier() { + @Override + public ListCrossConnectGroupsRequest.Builder get() { + return ListCrossConnectGroupsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListCrossConnectGroupsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListCrossConnectGroupsRequest.Builder>, + ListCrossConnectGroupsRequest>() { + @Override + public ListCrossConnectGroupsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListCrossConnectGroupsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListCrossConnectGroupsRequest, ListCrossConnectGroupsResponse>() { + @Override + public ListCrossConnectGroupsResponse apply( + ListCrossConnectGroupsRequest request) { + return client.listCrossConnectGroups(request); + } + }, + new com.google.common.base.Function< + ListCrossConnectGroupsResponse, + java.util.List>() { + @Override + public java.util.List apply( + ListCrossConnectGroupsResponse response) { + return response.getItems(); + } + }); + } + + /** + * Creates a new iterable which will iterate over the responses received from the listCrossConnectLocations operation. This iterable + * will fetch more data from the server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the responses received from the service. + */ + public Iterable listCrossConnectLocationsResponseIterator( + final ListCrossConnectLocationsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseIterable< + ListCrossConnectLocationsRequest.Builder, ListCrossConnectLocationsRequest, + ListCrossConnectLocationsResponse>( + new com.google.common.base.Supplier() { + @Override + public ListCrossConnectLocationsRequest.Builder get() { + return ListCrossConnectLocationsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListCrossConnectLocationsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListCrossConnectLocationsRequest.Builder>, + ListCrossConnectLocationsRequest>() { + @Override + public ListCrossConnectLocationsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListCrossConnectLocationsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListCrossConnectLocationsRequest, ListCrossConnectLocationsResponse>() { + @Override + public ListCrossConnectLocationsResponse apply( + ListCrossConnectLocationsRequest request) { + return client.listCrossConnectLocations(request); + } + }); + } + + /** + * Creates a new iterable which will iterate over the {@link com.oracle.bmc.core.model.CrossConnectLocation} objects + * contained in responses from the listCrossConnectLocations operation. This iterable will fetch more data from the + * server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link com.oracle.bmc.core.model.CrossConnectLocation} objects + * contained in responses received from the service. + */ + public Iterable + listCrossConnectLocationsRecordIterator( + final ListCrossConnectLocationsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseRecordIterable< + ListCrossConnectLocationsRequest.Builder, ListCrossConnectLocationsRequest, + ListCrossConnectLocationsResponse, com.oracle.bmc.core.model.CrossConnectLocation>( + new com.google.common.base.Supplier() { + @Override + public ListCrossConnectLocationsRequest.Builder get() { + return ListCrossConnectLocationsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListCrossConnectLocationsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListCrossConnectLocationsRequest.Builder>, + ListCrossConnectLocationsRequest>() { + @Override + public ListCrossConnectLocationsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListCrossConnectLocationsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListCrossConnectLocationsRequest, ListCrossConnectLocationsResponse>() { + @Override + public ListCrossConnectLocationsResponse apply( + ListCrossConnectLocationsRequest request) { + return client.listCrossConnectLocations(request); + } + }, + new com.google.common.base.Function< + ListCrossConnectLocationsResponse, + java.util.List>() { + @Override + public java.util.List apply( + ListCrossConnectLocationsResponse response) { + return response.getItems(); + } + }); + } + + /** + * Creates a new iterable which will iterate over the responses received from the listCrossConnects operation. This iterable + * will fetch more data from the server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the responses received from the service. + */ + public Iterable listCrossConnectsResponseIterator( + final ListCrossConnectsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseIterable< + ListCrossConnectsRequest.Builder, ListCrossConnectsRequest, + ListCrossConnectsResponse>( + new com.google.common.base.Supplier() { + @Override + public ListCrossConnectsRequest.Builder get() { + return ListCrossConnectsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListCrossConnectsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListCrossConnectsRequest.Builder>, + ListCrossConnectsRequest>() { + @Override + public ListCrossConnectsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListCrossConnectsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListCrossConnectsRequest, ListCrossConnectsResponse>() { + @Override + public ListCrossConnectsResponse apply(ListCrossConnectsRequest request) { + return client.listCrossConnects(request); + } + }); + } + + /** + * Creates a new iterable which will iterate over the {@link com.oracle.bmc.core.model.CrossConnect} objects + * contained in responses from the listCrossConnects operation. This iterable will fetch more data from the + * server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link com.oracle.bmc.core.model.CrossConnect} objects + * contained in responses received from the service. + */ + public Iterable listCrossConnectsRecordIterator( + final ListCrossConnectsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseRecordIterable< + ListCrossConnectsRequest.Builder, ListCrossConnectsRequest, + ListCrossConnectsResponse, com.oracle.bmc.core.model.CrossConnect>( + new com.google.common.base.Supplier() { + @Override + public ListCrossConnectsRequest.Builder get() { + return ListCrossConnectsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListCrossConnectsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListCrossConnectsRequest.Builder>, + ListCrossConnectsRequest>() { + @Override + public ListCrossConnectsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListCrossConnectsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListCrossConnectsRequest, ListCrossConnectsResponse>() { + @Override + public ListCrossConnectsResponse apply(ListCrossConnectsRequest request) { + return client.listCrossConnects(request); + } + }, + new com.google.common.base.Function< + ListCrossConnectsResponse, + java.util.List>() { + @Override + public java.util.List apply( + ListCrossConnectsResponse response) { + return response.getItems(); + } + }); + } + + /** + * Creates a new iterable which will iterate over the responses received from the listCrossconnectPortSpeedShapes operation. This iterable + * will fetch more data from the server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the responses received from the service. + */ + public Iterable + listCrossconnectPortSpeedShapesResponseIterator( + final ListCrossconnectPortSpeedShapesRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseIterable< + ListCrossconnectPortSpeedShapesRequest.Builder, + ListCrossconnectPortSpeedShapesRequest, ListCrossconnectPortSpeedShapesResponse>( + new com.google.common.base.Supplier< + ListCrossconnectPortSpeedShapesRequest.Builder>() { + @Override + public ListCrossconnectPortSpeedShapesRequest.Builder get() { + return ListCrossconnectPortSpeedShapesRequest.builder().copy(request); + } + }, + new com.google.common.base.Function< + ListCrossconnectPortSpeedShapesResponse, String>() { + @Override + public String apply(ListCrossconnectPortSpeedShapesResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListCrossconnectPortSpeedShapesRequest.Builder>, + ListCrossconnectPortSpeedShapesRequest>() { + @Override + public ListCrossconnectPortSpeedShapesRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListCrossconnectPortSpeedShapesRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListCrossconnectPortSpeedShapesRequest, + ListCrossconnectPortSpeedShapesResponse>() { + @Override + public ListCrossconnectPortSpeedShapesResponse apply( + ListCrossconnectPortSpeedShapesRequest request) { + return client.listCrossconnectPortSpeedShapes(request); + } + }); + } + + /** + * Creates a new iterable which will iterate over the {@link com.oracle.bmc.core.model.CrossConnectPortSpeedShape} objects + * contained in responses from the listCrossconnectPortSpeedShapes operation. This iterable will fetch more data from the + * server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link com.oracle.bmc.core.model.CrossConnectPortSpeedShape} objects + * contained in responses received from the service. + */ + public Iterable + listCrossconnectPortSpeedShapesRecordIterator( + final ListCrossconnectPortSpeedShapesRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseRecordIterable< + ListCrossconnectPortSpeedShapesRequest.Builder, + ListCrossconnectPortSpeedShapesRequest, ListCrossconnectPortSpeedShapesResponse, + com.oracle.bmc.core.model.CrossConnectPortSpeedShape>( + new com.google.common.base.Supplier< + ListCrossconnectPortSpeedShapesRequest.Builder>() { + @Override + public ListCrossconnectPortSpeedShapesRequest.Builder get() { + return ListCrossconnectPortSpeedShapesRequest.builder().copy(request); + } + }, + new com.google.common.base.Function< + ListCrossconnectPortSpeedShapesResponse, String>() { + @Override + public String apply(ListCrossconnectPortSpeedShapesResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListCrossconnectPortSpeedShapesRequest.Builder>, + ListCrossconnectPortSpeedShapesRequest>() { + @Override + public ListCrossconnectPortSpeedShapesRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListCrossconnectPortSpeedShapesRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListCrossconnectPortSpeedShapesRequest, + ListCrossconnectPortSpeedShapesResponse>() { + @Override + public ListCrossconnectPortSpeedShapesResponse apply( + ListCrossconnectPortSpeedShapesRequest request) { + return client.listCrossconnectPortSpeedShapes(request); + } + }, + new com.google.common.base.Function< + ListCrossconnectPortSpeedShapesResponse, + java.util.List>() { + @Override + public java.util.List + apply(ListCrossconnectPortSpeedShapesResponse response) { + return response.getItems(); + } + }); + } + + /** + * Creates a new iterable which will iterate over the responses received from the listDhcpOptions operation. This iterable + * will fetch more data from the server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the responses received from the service. + */ + public Iterable listDhcpOptionsResponseIterator( + final ListDhcpOptionsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseIterable< + ListDhcpOptionsRequest.Builder, ListDhcpOptionsRequest, ListDhcpOptionsResponse>( + new com.google.common.base.Supplier() { + @Override + public ListDhcpOptionsRequest.Builder get() { + return ListDhcpOptionsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListDhcpOptionsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListDhcpOptionsRequest.Builder>, + ListDhcpOptionsRequest>() { + @Override + public ListDhcpOptionsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListDhcpOptionsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListDhcpOptionsRequest, ListDhcpOptionsResponse>() { + @Override + public ListDhcpOptionsResponse apply(ListDhcpOptionsRequest request) { + return client.listDhcpOptions(request); + } + }); + } + + /** + * Creates a new iterable which will iterate over the {@link com.oracle.bmc.core.model.DhcpOptions} objects + * contained in responses from the listDhcpOptions operation. This iterable will fetch more data from the + * server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link com.oracle.bmc.core.model.DhcpOptions} objects + * contained in responses received from the service. + */ + public Iterable listDhcpOptionsRecordIterator( + final ListDhcpOptionsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseRecordIterable< + ListDhcpOptionsRequest.Builder, ListDhcpOptionsRequest, ListDhcpOptionsResponse, + com.oracle.bmc.core.model.DhcpOptions>( + new com.google.common.base.Supplier() { + @Override + public ListDhcpOptionsRequest.Builder get() { + return ListDhcpOptionsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListDhcpOptionsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListDhcpOptionsRequest.Builder>, + ListDhcpOptionsRequest>() { + @Override + public ListDhcpOptionsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListDhcpOptionsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListDhcpOptionsRequest, ListDhcpOptionsResponse>() { + @Override + public ListDhcpOptionsResponse apply(ListDhcpOptionsRequest request) { + return client.listDhcpOptions(request); + } + }, + new com.google.common.base.Function< + ListDhcpOptionsResponse, + java.util.List>() { + @Override + public java.util.List apply( + ListDhcpOptionsResponse response) { + return response.getItems(); + } + }); + } + + /** + * Creates a new iterable which will iterate over the responses received from the listDrgAttachments operation. This iterable + * will fetch more data from the server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the responses received from the service. + */ + public Iterable listDrgAttachmentsResponseIterator( + final ListDrgAttachmentsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseIterable< + ListDrgAttachmentsRequest.Builder, ListDrgAttachmentsRequest, + ListDrgAttachmentsResponse>( + new com.google.common.base.Supplier() { + @Override + public ListDrgAttachmentsRequest.Builder get() { + return ListDrgAttachmentsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListDrgAttachmentsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListDrgAttachmentsRequest.Builder>, + ListDrgAttachmentsRequest>() { + @Override + public ListDrgAttachmentsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListDrgAttachmentsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListDrgAttachmentsRequest, ListDrgAttachmentsResponse>() { + @Override + public ListDrgAttachmentsResponse apply(ListDrgAttachmentsRequest request) { + return client.listDrgAttachments(request); + } + }); + } + + /** + * Creates a new iterable which will iterate over the {@link com.oracle.bmc.core.model.DrgAttachment} objects + * contained in responses from the listDrgAttachments operation. This iterable will fetch more data from the + * server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link com.oracle.bmc.core.model.DrgAttachment} objects + * contained in responses received from the service. + */ + public Iterable listDrgAttachmentsRecordIterator( + final ListDrgAttachmentsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseRecordIterable< + ListDrgAttachmentsRequest.Builder, ListDrgAttachmentsRequest, + ListDrgAttachmentsResponse, com.oracle.bmc.core.model.DrgAttachment>( + new com.google.common.base.Supplier() { + @Override + public ListDrgAttachmentsRequest.Builder get() { + return ListDrgAttachmentsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListDrgAttachmentsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListDrgAttachmentsRequest.Builder>, + ListDrgAttachmentsRequest>() { + @Override + public ListDrgAttachmentsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListDrgAttachmentsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListDrgAttachmentsRequest, ListDrgAttachmentsResponse>() { + @Override + public ListDrgAttachmentsResponse apply(ListDrgAttachmentsRequest request) { + return client.listDrgAttachments(request); + } + }, + new com.google.common.base.Function< + ListDrgAttachmentsResponse, + java.util.List>() { + @Override + public java.util.List apply( + ListDrgAttachmentsResponse response) { + return response.getItems(); + } + }); + } + + /** + * Creates a new iterable which will iterate over the responses received from the listDrgs operation. This iterable + * will fetch more data from the server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the responses received from the service. + */ + public Iterable listDrgsResponseIterator(final ListDrgsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseIterable< + ListDrgsRequest.Builder, ListDrgsRequest, ListDrgsResponse>( + new com.google.common.base.Supplier() { + @Override + public ListDrgsRequest.Builder get() { + return ListDrgsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListDrgsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListDrgsRequest.Builder>, + ListDrgsRequest>() { + @Override + public ListDrgsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListDrgsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function() { + @Override + public ListDrgsResponse apply(ListDrgsRequest request) { + return client.listDrgs(request); + } + }); + } + + /** + * Creates a new iterable which will iterate over the {@link com.oracle.bmc.core.model.Drg} objects + * contained in responses from the listDrgs operation. This iterable will fetch more data from the + * server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link com.oracle.bmc.core.model.Drg} objects + * contained in responses received from the service. + */ + public Iterable listDrgsRecordIterator( + final ListDrgsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseRecordIterable< + ListDrgsRequest.Builder, ListDrgsRequest, ListDrgsResponse, + com.oracle.bmc.core.model.Drg>( + new com.google.common.base.Supplier() { + @Override + public ListDrgsRequest.Builder get() { + return ListDrgsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListDrgsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListDrgsRequest.Builder>, + ListDrgsRequest>() { + @Override + public ListDrgsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListDrgsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function() { + @Override + public ListDrgsResponse apply(ListDrgsRequest request) { + return client.listDrgs(request); + } + }, + new com.google.common.base.Function< + ListDrgsResponse, java.util.List>() { + @Override + public java.util.List apply( + ListDrgsResponse response) { + return response.getItems(); + } + }); + } + + /** + * Creates a new iterable which will iterate over the responses received from the listFastConnectProviderServices operation. This iterable + * will fetch more data from the server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the responses received from the service. + */ + public Iterable + listFastConnectProviderServicesResponseIterator( + final ListFastConnectProviderServicesRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseIterable< + ListFastConnectProviderServicesRequest.Builder, + ListFastConnectProviderServicesRequest, ListFastConnectProviderServicesResponse>( + new com.google.common.base.Supplier< + ListFastConnectProviderServicesRequest.Builder>() { + @Override + public ListFastConnectProviderServicesRequest.Builder get() { + return ListFastConnectProviderServicesRequest.builder().copy(request); + } + }, + new com.google.common.base.Function< + ListFastConnectProviderServicesResponse, String>() { + @Override + public String apply(ListFastConnectProviderServicesResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListFastConnectProviderServicesRequest.Builder>, + ListFastConnectProviderServicesRequest>() { + @Override + public ListFastConnectProviderServicesRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListFastConnectProviderServicesRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListFastConnectProviderServicesRequest, + ListFastConnectProviderServicesResponse>() { + @Override + public ListFastConnectProviderServicesResponse apply( + ListFastConnectProviderServicesRequest request) { + return client.listFastConnectProviderServices(request); + } + }); + } + + /** + * Creates a new iterable which will iterate over the {@link com.oracle.bmc.core.model.FastConnectProviderService} objects + * contained in responses from the listFastConnectProviderServices operation. This iterable will fetch more data from the + * server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link com.oracle.bmc.core.model.FastConnectProviderService} objects + * contained in responses received from the service. + */ + public Iterable + listFastConnectProviderServicesRecordIterator( + final ListFastConnectProviderServicesRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseRecordIterable< + ListFastConnectProviderServicesRequest.Builder, + ListFastConnectProviderServicesRequest, ListFastConnectProviderServicesResponse, + com.oracle.bmc.core.model.FastConnectProviderService>( + new com.google.common.base.Supplier< + ListFastConnectProviderServicesRequest.Builder>() { + @Override + public ListFastConnectProviderServicesRequest.Builder get() { + return ListFastConnectProviderServicesRequest.builder().copy(request); + } + }, + new com.google.common.base.Function< + ListFastConnectProviderServicesResponse, String>() { + @Override + public String apply(ListFastConnectProviderServicesResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListFastConnectProviderServicesRequest.Builder>, + ListFastConnectProviderServicesRequest>() { + @Override + public ListFastConnectProviderServicesRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListFastConnectProviderServicesRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListFastConnectProviderServicesRequest, + ListFastConnectProviderServicesResponse>() { + @Override + public ListFastConnectProviderServicesResponse apply( + ListFastConnectProviderServicesRequest request) { + return client.listFastConnectProviderServices(request); + } + }, + new com.google.common.base.Function< + ListFastConnectProviderServicesResponse, + java.util.List>() { + @Override + public java.util.List + apply(ListFastConnectProviderServicesResponse response) { + return response.getItems(); + } + }); + } + + /** + * Creates a new iterable which will iterate over the responses received from the listFastConnectProviderVirtualCircuitBandwidthShapes operation. This iterable + * will fetch more data from the server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the responses received from the service. + */ + public Iterable + listFastConnectProviderVirtualCircuitBandwidthShapesResponseIterator( + final ListFastConnectProviderVirtualCircuitBandwidthShapesRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseIterable< + ListFastConnectProviderVirtualCircuitBandwidthShapesRequest.Builder, + ListFastConnectProviderVirtualCircuitBandwidthShapesRequest, + ListFastConnectProviderVirtualCircuitBandwidthShapesResponse>( + new com.google.common.base.Supplier< + ListFastConnectProviderVirtualCircuitBandwidthShapesRequest.Builder>() { + @Override + public ListFastConnectProviderVirtualCircuitBandwidthShapesRequest.Builder + get() { + return ListFastConnectProviderVirtualCircuitBandwidthShapesRequest.builder() + .copy(request); + } + }, + new com.google.common.base.Function< + ListFastConnectProviderVirtualCircuitBandwidthShapesResponse, String>() { + @Override + public String apply( + ListFastConnectProviderVirtualCircuitBandwidthShapesResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListFastConnectProviderVirtualCircuitBandwidthShapesRequest + .Builder>, + ListFastConnectProviderVirtualCircuitBandwidthShapesRequest>() { + @Override + public ListFastConnectProviderVirtualCircuitBandwidthShapesRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListFastConnectProviderVirtualCircuitBandwidthShapesRequest + .Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListFastConnectProviderVirtualCircuitBandwidthShapesRequest, + ListFastConnectProviderVirtualCircuitBandwidthShapesResponse>() { + @Override + public ListFastConnectProviderVirtualCircuitBandwidthShapesResponse apply( + ListFastConnectProviderVirtualCircuitBandwidthShapesRequest request) { + return client.listFastConnectProviderVirtualCircuitBandwidthShapes(request); + } + }); + } + + /** + * Creates a new iterable which will iterate over the {@link com.oracle.bmc.core.model.VirtualCircuitBandwidthShape} objects + * contained in responses from the listFastConnectProviderVirtualCircuitBandwidthShapes operation. This iterable will fetch more data from the + * server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link com.oracle.bmc.core.model.VirtualCircuitBandwidthShape} objects + * contained in responses received from the service. + */ + public Iterable + listFastConnectProviderVirtualCircuitBandwidthShapesRecordIterator( + final ListFastConnectProviderVirtualCircuitBandwidthShapesRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseRecordIterable< + ListFastConnectProviderVirtualCircuitBandwidthShapesRequest.Builder, + ListFastConnectProviderVirtualCircuitBandwidthShapesRequest, + ListFastConnectProviderVirtualCircuitBandwidthShapesResponse, + com.oracle.bmc.core.model.VirtualCircuitBandwidthShape>( + new com.google.common.base.Supplier< + ListFastConnectProviderVirtualCircuitBandwidthShapesRequest.Builder>() { + @Override + public ListFastConnectProviderVirtualCircuitBandwidthShapesRequest.Builder + get() { + return ListFastConnectProviderVirtualCircuitBandwidthShapesRequest.builder() + .copy(request); + } + }, + new com.google.common.base.Function< + ListFastConnectProviderVirtualCircuitBandwidthShapesResponse, String>() { + @Override + public String apply( + ListFastConnectProviderVirtualCircuitBandwidthShapesResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListFastConnectProviderVirtualCircuitBandwidthShapesRequest + .Builder>, + ListFastConnectProviderVirtualCircuitBandwidthShapesRequest>() { + @Override + public ListFastConnectProviderVirtualCircuitBandwidthShapesRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListFastConnectProviderVirtualCircuitBandwidthShapesRequest + .Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListFastConnectProviderVirtualCircuitBandwidthShapesRequest, + ListFastConnectProviderVirtualCircuitBandwidthShapesResponse>() { + @Override + public ListFastConnectProviderVirtualCircuitBandwidthShapesResponse apply( + ListFastConnectProviderVirtualCircuitBandwidthShapesRequest request) { + return client.listFastConnectProviderVirtualCircuitBandwidthShapes(request); + } + }, + new com.google.common.base.Function< + ListFastConnectProviderVirtualCircuitBandwidthShapesResponse, + java.util.List>() { + @Override + public java.util.List + apply( + ListFastConnectProviderVirtualCircuitBandwidthShapesResponse + response) { + return response.getItems(); + } + }); + } + + /** + * Creates a new iterable which will iterate over the responses received from the listIPSecConnections operation. This iterable + * will fetch more data from the server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the responses received from the service. + */ + public Iterable listIPSecConnectionsResponseIterator( + final ListIPSecConnectionsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseIterable< + ListIPSecConnectionsRequest.Builder, ListIPSecConnectionsRequest, + ListIPSecConnectionsResponse>( + new com.google.common.base.Supplier() { + @Override + public ListIPSecConnectionsRequest.Builder get() { + return ListIPSecConnectionsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListIPSecConnectionsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListIPSecConnectionsRequest.Builder>, + ListIPSecConnectionsRequest>() { + @Override + public ListIPSecConnectionsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListIPSecConnectionsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListIPSecConnectionsRequest, ListIPSecConnectionsResponse>() { + @Override + public ListIPSecConnectionsResponse apply(ListIPSecConnectionsRequest request) { + return client.listIPSecConnections(request); + } + }); + } + + /** + * Creates a new iterable which will iterate over the {@link com.oracle.bmc.core.model.IPSecConnection} objects + * contained in responses from the listIPSecConnections operation. This iterable will fetch more data from the + * server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link com.oracle.bmc.core.model.IPSecConnection} objects + * contained in responses received from the service. + */ + public Iterable listIPSecConnectionsRecordIterator( + final ListIPSecConnectionsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseRecordIterable< + ListIPSecConnectionsRequest.Builder, ListIPSecConnectionsRequest, + ListIPSecConnectionsResponse, com.oracle.bmc.core.model.IPSecConnection>( + new com.google.common.base.Supplier() { + @Override + public ListIPSecConnectionsRequest.Builder get() { + return ListIPSecConnectionsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListIPSecConnectionsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListIPSecConnectionsRequest.Builder>, + ListIPSecConnectionsRequest>() { + @Override + public ListIPSecConnectionsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListIPSecConnectionsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListIPSecConnectionsRequest, ListIPSecConnectionsResponse>() { + @Override + public ListIPSecConnectionsResponse apply(ListIPSecConnectionsRequest request) { + return client.listIPSecConnections(request); + } + }, + new com.google.common.base.Function< + ListIPSecConnectionsResponse, + java.util.List>() { + @Override + public java.util.List apply( + ListIPSecConnectionsResponse response) { + return response.getItems(); + } + }); + } + + /** + * Creates a new iterable which will iterate over the responses received from the listInternetGateways operation. This iterable + * will fetch more data from the server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the responses received from the service. + */ + public Iterable listInternetGatewaysResponseIterator( + final ListInternetGatewaysRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseIterable< + ListInternetGatewaysRequest.Builder, ListInternetGatewaysRequest, + ListInternetGatewaysResponse>( + new com.google.common.base.Supplier() { + @Override + public ListInternetGatewaysRequest.Builder get() { + return ListInternetGatewaysRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListInternetGatewaysResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListInternetGatewaysRequest.Builder>, + ListInternetGatewaysRequest>() { + @Override + public ListInternetGatewaysRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListInternetGatewaysRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListInternetGatewaysRequest, ListInternetGatewaysResponse>() { + @Override + public ListInternetGatewaysResponse apply(ListInternetGatewaysRequest request) { + return client.listInternetGateways(request); + } + }); + } + + /** + * Creates a new iterable which will iterate over the {@link com.oracle.bmc.core.model.InternetGateway} objects + * contained in responses from the listInternetGateways operation. This iterable will fetch more data from the + * server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link com.oracle.bmc.core.model.InternetGateway} objects + * contained in responses received from the service. + */ + public Iterable listInternetGatewaysRecordIterator( + final ListInternetGatewaysRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseRecordIterable< + ListInternetGatewaysRequest.Builder, ListInternetGatewaysRequest, + ListInternetGatewaysResponse, com.oracle.bmc.core.model.InternetGateway>( + new com.google.common.base.Supplier() { + @Override + public ListInternetGatewaysRequest.Builder get() { + return ListInternetGatewaysRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListInternetGatewaysResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListInternetGatewaysRequest.Builder>, + ListInternetGatewaysRequest>() { + @Override + public ListInternetGatewaysRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListInternetGatewaysRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListInternetGatewaysRequest, ListInternetGatewaysResponse>() { + @Override + public ListInternetGatewaysResponse apply(ListInternetGatewaysRequest request) { + return client.listInternetGateways(request); + } + }, + new com.google.common.base.Function< + ListInternetGatewaysResponse, + java.util.List>() { + @Override + public java.util.List apply( + ListInternetGatewaysResponse response) { + return response.getItems(); + } + }); + } + + /** + * Creates a new iterable which will iterate over the responses received from the listLocalPeeringGateways operation. This iterable + * will fetch more data from the server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the responses received from the service. + */ + public Iterable listLocalPeeringGatewaysResponseIterator( + final ListLocalPeeringGatewaysRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseIterable< + ListLocalPeeringGatewaysRequest.Builder, ListLocalPeeringGatewaysRequest, + ListLocalPeeringGatewaysResponse>( + new com.google.common.base.Supplier() { + @Override + public ListLocalPeeringGatewaysRequest.Builder get() { + return ListLocalPeeringGatewaysRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListLocalPeeringGatewaysResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListLocalPeeringGatewaysRequest.Builder>, + ListLocalPeeringGatewaysRequest>() { + @Override + public ListLocalPeeringGatewaysRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListLocalPeeringGatewaysRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListLocalPeeringGatewaysRequest, ListLocalPeeringGatewaysResponse>() { + @Override + public ListLocalPeeringGatewaysResponse apply( + ListLocalPeeringGatewaysRequest request) { + return client.listLocalPeeringGateways(request); + } + }); + } + + /** + * Creates a new iterable which will iterate over the {@link com.oracle.bmc.core.model.LocalPeeringGateway} objects + * contained in responses from the listLocalPeeringGateways operation. This iterable will fetch more data from the + * server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link com.oracle.bmc.core.model.LocalPeeringGateway} objects + * contained in responses received from the service. + */ + public Iterable + listLocalPeeringGatewaysRecordIterator(final ListLocalPeeringGatewaysRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseRecordIterable< + ListLocalPeeringGatewaysRequest.Builder, ListLocalPeeringGatewaysRequest, + ListLocalPeeringGatewaysResponse, com.oracle.bmc.core.model.LocalPeeringGateway>( + new com.google.common.base.Supplier() { + @Override + public ListLocalPeeringGatewaysRequest.Builder get() { + return ListLocalPeeringGatewaysRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListLocalPeeringGatewaysResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListLocalPeeringGatewaysRequest.Builder>, + ListLocalPeeringGatewaysRequest>() { + @Override + public ListLocalPeeringGatewaysRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListLocalPeeringGatewaysRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListLocalPeeringGatewaysRequest, ListLocalPeeringGatewaysResponse>() { + @Override + public ListLocalPeeringGatewaysResponse apply( + ListLocalPeeringGatewaysRequest request) { + return client.listLocalPeeringGateways(request); + } + }, + new com.google.common.base.Function< + ListLocalPeeringGatewaysResponse, + java.util.List>() { + @Override + public java.util.List apply( + ListLocalPeeringGatewaysResponse response) { + return response.getItems(); + } + }); + } + + /** + * Creates a new iterable which will iterate over the responses received from the listPrivateIps operation. This iterable + * will fetch more data from the server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the responses received from the service. + */ + public Iterable listPrivateIpsResponseIterator( + final ListPrivateIpsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseIterable< + ListPrivateIpsRequest.Builder, ListPrivateIpsRequest, ListPrivateIpsResponse>( + new com.google.common.base.Supplier() { + @Override + public ListPrivateIpsRequest.Builder get() { + return ListPrivateIpsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListPrivateIpsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListPrivateIpsRequest.Builder>, + ListPrivateIpsRequest>() { + @Override + public ListPrivateIpsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListPrivateIpsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListPrivateIpsRequest, ListPrivateIpsResponse>() { + @Override + public ListPrivateIpsResponse apply(ListPrivateIpsRequest request) { + return client.listPrivateIps(request); + } + }); + } + + /** + * Creates a new iterable which will iterate over the {@link com.oracle.bmc.core.model.PrivateIp} objects + * contained in responses from the listPrivateIps operation. This iterable will fetch more data from the + * server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link com.oracle.bmc.core.model.PrivateIp} objects + * contained in responses received from the service. + */ + public Iterable listPrivateIpsRecordIterator( + final ListPrivateIpsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseRecordIterable< + ListPrivateIpsRequest.Builder, ListPrivateIpsRequest, ListPrivateIpsResponse, + com.oracle.bmc.core.model.PrivateIp>( + new com.google.common.base.Supplier() { + @Override + public ListPrivateIpsRequest.Builder get() { + return ListPrivateIpsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListPrivateIpsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListPrivateIpsRequest.Builder>, + ListPrivateIpsRequest>() { + @Override + public ListPrivateIpsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListPrivateIpsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListPrivateIpsRequest, ListPrivateIpsResponse>() { + @Override + public ListPrivateIpsResponse apply(ListPrivateIpsRequest request) { + return client.listPrivateIps(request); + } + }, + new com.google.common.base.Function< + ListPrivateIpsResponse, + java.util.List>() { + @Override + public java.util.List apply( + ListPrivateIpsResponse response) { + return response.getItems(); + } + }); + } + + /** + * Creates a new iterable which will iterate over the responses received from the listPublicIps operation. This iterable + * will fetch more data from the server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the responses received from the service. + */ + public Iterable listPublicIpsResponseIterator( + final ListPublicIpsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseIterable< + ListPublicIpsRequest.Builder, ListPublicIpsRequest, ListPublicIpsResponse>( + new com.google.common.base.Supplier() { + @Override + public ListPublicIpsRequest.Builder get() { + return ListPublicIpsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListPublicIpsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListPublicIpsRequest.Builder>, + ListPublicIpsRequest>() { + @Override + public ListPublicIpsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListPublicIpsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function() { + @Override + public ListPublicIpsResponse apply(ListPublicIpsRequest request) { + return client.listPublicIps(request); + } + }); + } + + /** + * Creates a new iterable which will iterate over the {@link com.oracle.bmc.core.model.PublicIp} objects + * contained in responses from the listPublicIps operation. This iterable will fetch more data from the + * server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link com.oracle.bmc.core.model.PublicIp} objects + * contained in responses received from the service. + */ + public Iterable listPublicIpsRecordIterator( + final ListPublicIpsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseRecordIterable< + ListPublicIpsRequest.Builder, ListPublicIpsRequest, ListPublicIpsResponse, + com.oracle.bmc.core.model.PublicIp>( + new com.google.common.base.Supplier() { + @Override + public ListPublicIpsRequest.Builder get() { + return ListPublicIpsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListPublicIpsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListPublicIpsRequest.Builder>, + ListPublicIpsRequest>() { + @Override + public ListPublicIpsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListPublicIpsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function() { + @Override + public ListPublicIpsResponse apply(ListPublicIpsRequest request) { + return client.listPublicIps(request); + } + }, + new com.google.common.base.Function< + ListPublicIpsResponse, + java.util.List>() { + @Override + public java.util.List apply( + ListPublicIpsResponse response) { + return response.getItems(); + } + }); + } + + /** + * Creates a new iterable which will iterate over the responses received from the listRouteTables operation. This iterable + * will fetch more data from the server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the responses received from the service. + */ + public Iterable listRouteTablesResponseIterator( + final ListRouteTablesRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseIterable< + ListRouteTablesRequest.Builder, ListRouteTablesRequest, ListRouteTablesResponse>( + new com.google.common.base.Supplier() { + @Override + public ListRouteTablesRequest.Builder get() { + return ListRouteTablesRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListRouteTablesResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListRouteTablesRequest.Builder>, + ListRouteTablesRequest>() { + @Override + public ListRouteTablesRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListRouteTablesRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListRouteTablesRequest, ListRouteTablesResponse>() { + @Override + public ListRouteTablesResponse apply(ListRouteTablesRequest request) { + return client.listRouteTables(request); + } + }); + } + + /** + * Creates a new iterable which will iterate over the {@link com.oracle.bmc.core.model.RouteTable} objects + * contained in responses from the listRouteTables operation. This iterable will fetch more data from the + * server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link com.oracle.bmc.core.model.RouteTable} objects + * contained in responses received from the service. + */ + public Iterable listRouteTablesRecordIterator( + final ListRouteTablesRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseRecordIterable< + ListRouteTablesRequest.Builder, ListRouteTablesRequest, ListRouteTablesResponse, + com.oracle.bmc.core.model.RouteTable>( + new com.google.common.base.Supplier() { + @Override + public ListRouteTablesRequest.Builder get() { + return ListRouteTablesRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListRouteTablesResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListRouteTablesRequest.Builder>, + ListRouteTablesRequest>() { + @Override + public ListRouteTablesRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListRouteTablesRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListRouteTablesRequest, ListRouteTablesResponse>() { + @Override + public ListRouteTablesResponse apply(ListRouteTablesRequest request) { + return client.listRouteTables(request); + } + }, + new com.google.common.base.Function< + ListRouteTablesResponse, + java.util.List>() { + @Override + public java.util.List apply( + ListRouteTablesResponse response) { + return response.getItems(); + } + }); + } + + /** + * Creates a new iterable which will iterate over the responses received from the listSecurityLists operation. This iterable + * will fetch more data from the server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the responses received from the service. + */ + public Iterable listSecurityListsResponseIterator( + final ListSecurityListsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseIterable< + ListSecurityListsRequest.Builder, ListSecurityListsRequest, + ListSecurityListsResponse>( + new com.google.common.base.Supplier() { + @Override + public ListSecurityListsRequest.Builder get() { + return ListSecurityListsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListSecurityListsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListSecurityListsRequest.Builder>, + ListSecurityListsRequest>() { + @Override + public ListSecurityListsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListSecurityListsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListSecurityListsRequest, ListSecurityListsResponse>() { + @Override + public ListSecurityListsResponse apply(ListSecurityListsRequest request) { + return client.listSecurityLists(request); + } + }); + } + + /** + * Creates a new iterable which will iterate over the {@link com.oracle.bmc.core.model.SecurityList} objects + * contained in responses from the listSecurityLists operation. This iterable will fetch more data from the + * server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link com.oracle.bmc.core.model.SecurityList} objects + * contained in responses received from the service. + */ + public Iterable listSecurityListsRecordIterator( + final ListSecurityListsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseRecordIterable< + ListSecurityListsRequest.Builder, ListSecurityListsRequest, + ListSecurityListsResponse, com.oracle.bmc.core.model.SecurityList>( + new com.google.common.base.Supplier() { + @Override + public ListSecurityListsRequest.Builder get() { + return ListSecurityListsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListSecurityListsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListSecurityListsRequest.Builder>, + ListSecurityListsRequest>() { + @Override + public ListSecurityListsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListSecurityListsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListSecurityListsRequest, ListSecurityListsResponse>() { + @Override + public ListSecurityListsResponse apply(ListSecurityListsRequest request) { + return client.listSecurityLists(request); + } + }, + new com.google.common.base.Function< + ListSecurityListsResponse, + java.util.List>() { + @Override + public java.util.List apply( + ListSecurityListsResponse response) { + return response.getItems(); + } + }); + } + + /** + * Creates a new iterable which will iterate over the responses received from the listSubnets operation. This iterable + * will fetch more data from the server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the responses received from the service. + */ + public Iterable listSubnetsResponseIterator( + final ListSubnetsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseIterable< + ListSubnetsRequest.Builder, ListSubnetsRequest, ListSubnetsResponse>( + new com.google.common.base.Supplier() { + @Override + public ListSubnetsRequest.Builder get() { + return ListSubnetsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListSubnetsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListSubnetsRequest.Builder>, + ListSubnetsRequest>() { + @Override + public ListSubnetsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListSubnetsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function() { + @Override + public ListSubnetsResponse apply(ListSubnetsRequest request) { + return client.listSubnets(request); + } + }); + } + + /** + * Creates a new iterable which will iterate over the {@link com.oracle.bmc.core.model.Subnet} objects + * contained in responses from the listSubnets operation. This iterable will fetch more data from the + * server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link com.oracle.bmc.core.model.Subnet} objects + * contained in responses received from the service. + */ + public Iterable listSubnetsRecordIterator( + final ListSubnetsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseRecordIterable< + ListSubnetsRequest.Builder, ListSubnetsRequest, ListSubnetsResponse, + com.oracle.bmc.core.model.Subnet>( + new com.google.common.base.Supplier() { + @Override + public ListSubnetsRequest.Builder get() { + return ListSubnetsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListSubnetsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListSubnetsRequest.Builder>, + ListSubnetsRequest>() { + @Override + public ListSubnetsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListSubnetsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function() { + @Override + public ListSubnetsResponse apply(ListSubnetsRequest request) { + return client.listSubnets(request); + } + }, + new com.google.common.base.Function< + ListSubnetsResponse, java.util.List>() { + @Override + public java.util.List apply( + ListSubnetsResponse response) { + return response.getItems(); + } + }); + } + + /** + * Creates a new iterable which will iterate over the responses received from the listVcns operation. This iterable + * will fetch more data from the server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the responses received from the service. + */ + public Iterable listVcnsResponseIterator(final ListVcnsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseIterable< + ListVcnsRequest.Builder, ListVcnsRequest, ListVcnsResponse>( + new com.google.common.base.Supplier() { + @Override + public ListVcnsRequest.Builder get() { + return ListVcnsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListVcnsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListVcnsRequest.Builder>, + ListVcnsRequest>() { + @Override + public ListVcnsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListVcnsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function() { + @Override + public ListVcnsResponse apply(ListVcnsRequest request) { + return client.listVcns(request); + } + }); + } + + /** + * Creates a new iterable which will iterate over the {@link com.oracle.bmc.core.model.Vcn} objects + * contained in responses from the listVcns operation. This iterable will fetch more data from the + * server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link com.oracle.bmc.core.model.Vcn} objects + * contained in responses received from the service. + */ + public Iterable listVcnsRecordIterator( + final ListVcnsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseRecordIterable< + ListVcnsRequest.Builder, ListVcnsRequest, ListVcnsResponse, + com.oracle.bmc.core.model.Vcn>( + new com.google.common.base.Supplier() { + @Override + public ListVcnsRequest.Builder get() { + return ListVcnsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListVcnsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListVcnsRequest.Builder>, + ListVcnsRequest>() { + @Override + public ListVcnsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListVcnsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function() { + @Override + public ListVcnsResponse apply(ListVcnsRequest request) { + return client.listVcns(request); + } + }, + new com.google.common.base.Function< + ListVcnsResponse, java.util.List>() { + @Override + public java.util.List apply( + ListVcnsResponse response) { + return response.getItems(); + } + }); + } + + /** + * Creates a new iterable which will iterate over the responses received from the listVirtualCircuitBandwidthShapes operation. This iterable + * will fetch more data from the server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the responses received from the service. + */ + public Iterable + listVirtualCircuitBandwidthShapesResponseIterator( + final ListVirtualCircuitBandwidthShapesRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseIterable< + ListVirtualCircuitBandwidthShapesRequest.Builder, + ListVirtualCircuitBandwidthShapesRequest, + ListVirtualCircuitBandwidthShapesResponse>( + new com.google.common.base.Supplier< + ListVirtualCircuitBandwidthShapesRequest.Builder>() { + @Override + public ListVirtualCircuitBandwidthShapesRequest.Builder get() { + return ListVirtualCircuitBandwidthShapesRequest.builder().copy(request); + } + }, + new com.google.common.base.Function< + ListVirtualCircuitBandwidthShapesResponse, String>() { + @Override + public String apply(ListVirtualCircuitBandwidthShapesResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListVirtualCircuitBandwidthShapesRequest.Builder>, + ListVirtualCircuitBandwidthShapesRequest>() { + @Override + public ListVirtualCircuitBandwidthShapesRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListVirtualCircuitBandwidthShapesRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListVirtualCircuitBandwidthShapesRequest, + ListVirtualCircuitBandwidthShapesResponse>() { + @Override + public ListVirtualCircuitBandwidthShapesResponse apply( + ListVirtualCircuitBandwidthShapesRequest request) { + return client.listVirtualCircuitBandwidthShapes(request); + } + }); + } + + /** + * Creates a new iterable which will iterate over the {@link com.oracle.bmc.core.model.VirtualCircuitBandwidthShape} objects + * contained in responses from the listVirtualCircuitBandwidthShapes operation. This iterable will fetch more data from the + * server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link com.oracle.bmc.core.model.VirtualCircuitBandwidthShape} objects + * contained in responses received from the service. + */ + public Iterable + listVirtualCircuitBandwidthShapesRecordIterator( + final ListVirtualCircuitBandwidthShapesRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseRecordIterable< + ListVirtualCircuitBandwidthShapesRequest.Builder, + ListVirtualCircuitBandwidthShapesRequest, ListVirtualCircuitBandwidthShapesResponse, + com.oracle.bmc.core.model.VirtualCircuitBandwidthShape>( + new com.google.common.base.Supplier< + ListVirtualCircuitBandwidthShapesRequest.Builder>() { + @Override + public ListVirtualCircuitBandwidthShapesRequest.Builder get() { + return ListVirtualCircuitBandwidthShapesRequest.builder().copy(request); + } + }, + new com.google.common.base.Function< + ListVirtualCircuitBandwidthShapesResponse, String>() { + @Override + public String apply(ListVirtualCircuitBandwidthShapesResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListVirtualCircuitBandwidthShapesRequest.Builder>, + ListVirtualCircuitBandwidthShapesRequest>() { + @Override + public ListVirtualCircuitBandwidthShapesRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListVirtualCircuitBandwidthShapesRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListVirtualCircuitBandwidthShapesRequest, + ListVirtualCircuitBandwidthShapesResponse>() { + @Override + public ListVirtualCircuitBandwidthShapesResponse apply( + ListVirtualCircuitBandwidthShapesRequest request) { + return client.listVirtualCircuitBandwidthShapes(request); + } + }, + new com.google.common.base.Function< + ListVirtualCircuitBandwidthShapesResponse, + java.util.List>() { + @Override + public java.util.List + apply(ListVirtualCircuitBandwidthShapesResponse response) { + return response.getItems(); + } + }); + } + + /** + * Creates a new iterable which will iterate over the responses received from the listVirtualCircuits operation. This iterable + * will fetch more data from the server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the responses received from the service. + */ + public Iterable listVirtualCircuitsResponseIterator( + final ListVirtualCircuitsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseIterable< + ListVirtualCircuitsRequest.Builder, ListVirtualCircuitsRequest, + ListVirtualCircuitsResponse>( + new com.google.common.base.Supplier() { + @Override + public ListVirtualCircuitsRequest.Builder get() { + return ListVirtualCircuitsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListVirtualCircuitsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListVirtualCircuitsRequest.Builder>, + ListVirtualCircuitsRequest>() { + @Override + public ListVirtualCircuitsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListVirtualCircuitsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListVirtualCircuitsRequest, ListVirtualCircuitsResponse>() { + @Override + public ListVirtualCircuitsResponse apply(ListVirtualCircuitsRequest request) { + return client.listVirtualCircuits(request); + } + }); + } + + /** + * Creates a new iterable which will iterate over the {@link com.oracle.bmc.core.model.VirtualCircuit} objects + * contained in responses from the listVirtualCircuits operation. This iterable will fetch more data from the + * server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link com.oracle.bmc.core.model.VirtualCircuit} objects + * contained in responses received from the service. + */ + public Iterable listVirtualCircuitsRecordIterator( + final ListVirtualCircuitsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseRecordIterable< + ListVirtualCircuitsRequest.Builder, ListVirtualCircuitsRequest, + ListVirtualCircuitsResponse, com.oracle.bmc.core.model.VirtualCircuit>( + new com.google.common.base.Supplier() { + @Override + public ListVirtualCircuitsRequest.Builder get() { + return ListVirtualCircuitsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListVirtualCircuitsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListVirtualCircuitsRequest.Builder>, + ListVirtualCircuitsRequest>() { + @Override + public ListVirtualCircuitsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListVirtualCircuitsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListVirtualCircuitsRequest, ListVirtualCircuitsResponse>() { + @Override + public ListVirtualCircuitsResponse apply(ListVirtualCircuitsRequest request) { + return client.listVirtualCircuits(request); + } + }, + new com.google.common.base.Function< + ListVirtualCircuitsResponse, + java.util.List>() { + @Override + public java.util.List apply( + ListVirtualCircuitsResponse response) { + return response.getItems(); + } + }); + } +} diff --git a/bmc-database/pom.xml b/bmc-database/pom.xml index 6d5746b3a5f..9dea3e4b7ef 100644 --- a/bmc-database/pom.xml +++ b/bmc-database/pom.xml @@ -5,7 +5,7 @@ com.oracle.oci.sdk oci-java-sdk - 1.2.27 + 1.2.28 ../pom.xml @@ -18,7 +18,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 1.2.27 + 1.2.28 diff --git a/bmc-database/src/main/java/com/oracle/bmc/database/Database.java b/bmc-database/src/main/java/com/oracle/bmc/database/Database.java index af6c7186699..f3a0e504616 100644 --- a/bmc-database/src/main/java/com/oracle/bmc/database/Database.java +++ b/bmc-database/src/main/java/com/oracle/bmc/database/Database.java @@ -52,8 +52,8 @@ public interface Database extends AutoCloseable { * All Oracle Cloud Infrastructure resources, including Data Guard associations, get an Oracle-assigned, unique ID * called an Oracle Cloud Identifier (OCID). When you create a resource, you can find its OCID in the response. * You can also retrieve a resource's OCID by using a List API operation on that resource type, or by viewing the - * resource in the Console. Fore more information, see - * [Resource Identifiers](http://localhost:8000/Content/General/Concepts/identifiers.htm). + * resource in the Console. For more information, see + * [Resource Identifiers](https://docs.us-phoenix-1.oraclecloud.com/Content/General/Concepts/identifiers.htm). * * @param request The request object containing the details to send * @return A response object containing details about the completed operation @@ -411,4 +411,13 @@ SwitchoverDataGuardAssociationResponse switchoverDataGuardAssociation( * @return The service waiters. */ DatabaseWaiters getWaiters(); + + /** + * Gets the pre-configured paginators available for list operations in this service which may return multiple + * pages of data. These paginators provide an {@link java.lang.Iterable} interface so that service responses, or + * resources/records, can be iterated through without having to manually deal with pagination and page tokens. + * + * @return The service paginators. + */ + DatabasePaginators getPaginators(); } diff --git a/bmc-database/src/main/java/com/oracle/bmc/database/DatabaseAsync.java b/bmc-database/src/main/java/com/oracle/bmc/database/DatabaseAsync.java index 1249103c784..740bb37e366 100644 --- a/bmc-database/src/main/java/com/oracle/bmc/database/DatabaseAsync.java +++ b/bmc-database/src/main/java/com/oracle/bmc/database/DatabaseAsync.java @@ -59,8 +59,8 @@ java.util.concurrent.Future createBackup( * All Oracle Cloud Infrastructure resources, including Data Guard associations, get an Oracle-assigned, unique ID * called an Oracle Cloud Identifier (OCID). When you create a resource, you can find its OCID in the response. * You can also retrieve a resource's OCID by using a List API operation on that resource type, or by viewing the - * resource in the Console. Fore more information, see - * [Resource Identifiers](http://localhost:8000/Content/General/Concepts/identifiers.htm). + * resource in the Console. For more information, see + * [Resource Identifiers](https://docs.us-phoenix-1.oraclecloud.com/Content/General/Concepts/identifiers.htm). * * * @param request The request object containing the details to send diff --git a/bmc-database/src/main/java/com/oracle/bmc/database/DatabaseClient.java b/bmc-database/src/main/java/com/oracle/bmc/database/DatabaseClient.java index 078c6286ed3..c1d6928f708 100644 --- a/bmc-database/src/main/java/com/oracle/bmc/database/DatabaseClient.java +++ b/bmc-database/src/main/java/com/oracle/bmc/database/DatabaseClient.java @@ -16,10 +16,11 @@ public class DatabaseClient implements Database { */ public static final com.oracle.bmc.Service SERVICE = com.oracle.bmc.Services.create("DATABASE", "database"); + // attempt twice if it's instance principals, immediately failures will try to refresh the token + private static final int MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS = 2; - private final java.util.concurrent.ExecutorService executorService = - java.util.concurrent.Executors.newFixedThreadPool(50); private final DatabaseWaiters waiters; + private final DatabasePaginators paginators; @lombok.Getter(value = lombok.AccessLevel.PACKAGE) private final com.oracle.bmc.http.internal.RestClient client; @@ -106,6 +107,8 @@ public DatabaseClient( this.waiters = new DatabaseWaiters(executorService, this); + this.paginators = new DatabasePaginators(this); + if (this.authenticationDetailsProvider instanceof com.oracle.bmc.auth.RegionProvider) { com.oracle.bmc.auth.RegionProvider provider = (com.oracle.bmc.auth.RegionProvider) this.authenticationDetailsProvider; @@ -160,28 +163,20 @@ public CreateBackupResponse createBackup(CreateBackupRequest request) { com.google.common.base.Function transformer = CreateBackupConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.post(ib, request.getCreateBackupDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateBackupDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateBackupDetails(), request); - return transformer.apply(response); } } @@ -196,29 +191,20 @@ public CreateDataGuardAssociationResponse createDataGuardAssociation( javax.ws.rs.core.Response, CreateDataGuardAssociationResponse> transformer = CreateDataGuardAssociationConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.post(ib, request.getCreateDataGuardAssociationDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.post( - ib, request.getCreateDataGuardAssociationDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateDataGuardAssociationDetails(), request); - return transformer.apply(response); } } @@ -231,29 +217,20 @@ public CreateDbHomeResponse createDbHome(CreateDbHomeRequest request) { com.google.common.base.Function transformer = CreateDbHomeConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.post(ib, request.getCreateDbHomeWithDbSystemIdDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.post( - ib, request.getCreateDbHomeWithDbSystemIdDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateDbHomeWithDbSystemIdDetails(), request); - return transformer.apply(response); } } @@ -266,25 +243,19 @@ public DbNodeActionResponse dbNodeAction(DbNodeActionRequest request) { com.google.common.base.Function transformer = DbNodeActionConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.post(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.post(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.post(ib, request); - return transformer.apply(response); } } @@ -297,25 +268,19 @@ public DeleteBackupResponse deleteBackup(DeleteBackupRequest request) { com.google.common.base.Function transformer = DeleteBackupConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.delete(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); } } @@ -328,25 +293,19 @@ public DeleteDbHomeResponse deleteDbHome(DeleteDbHomeRequest request) { com.google.common.base.Function transformer = DeleteDbHomeConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.delete(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); } } @@ -361,29 +320,20 @@ public FailoverDataGuardAssociationResponse failoverDataGuardAssociation( javax.ws.rs.core.Response, FailoverDataGuardAssociationResponse> transformer = FailoverDataGuardAssociationConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.post(ib, request.getFailoverDataGuardAssociationDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.post( - ib, request.getFailoverDataGuardAssociationDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.post(ib, request.getFailoverDataGuardAssociationDetails(), request); - return transformer.apply(response); } } @@ -396,25 +346,19 @@ public GetBackupResponse getBackup(GetBackupRequest request) { com.google.common.base.Function transformer = GetBackupConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -428,25 +372,19 @@ public GetDataGuardAssociationResponse getDataGuardAssociation( com.google.common.base.Function transformer = GetDataGuardAssociationConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -459,25 +397,19 @@ public GetDatabaseResponse getDatabase(GetDatabaseRequest request) { com.google.common.base.Function transformer = GetDatabaseConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -490,25 +422,19 @@ public GetDbHomeResponse getDbHome(GetDbHomeRequest request) { com.google.common.base.Function transformer = GetDbHomeConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -521,25 +447,19 @@ public GetDbHomePatchResponse getDbHomePatch(GetDbHomePatchRequest request) { com.google.common.base.Function transformer = GetDbHomePatchConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -554,25 +474,19 @@ public GetDbHomePatchHistoryEntryResponse getDbHomePatchHistoryEntry( javax.ws.rs.core.Response, GetDbHomePatchHistoryEntryResponse> transformer = GetDbHomePatchHistoryEntryConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -585,25 +499,19 @@ public GetDbNodeResponse getDbNode(GetDbNodeRequest request) { com.google.common.base.Function transformer = GetDbNodeConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -616,25 +524,19 @@ public GetDbSystemResponse getDbSystem(GetDbSystemRequest request) { com.google.common.base.Function transformer = GetDbSystemConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -647,25 +549,19 @@ public GetDbSystemPatchResponse getDbSystemPatch(GetDbSystemPatchRequest request com.google.common.base.Function transformer = GetDbSystemPatchConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -680,25 +576,19 @@ public GetDbSystemPatchHistoryEntryResponse getDbSystemPatchHistoryEntry( javax.ws.rs.core.Response, GetDbSystemPatchHistoryEntryResponse> transformer = GetDbSystemPatchHistoryEntryConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -711,28 +601,20 @@ public LaunchDbSystemResponse launchDbSystem(LaunchDbSystemRequest request) { com.google.common.base.Function transformer = LaunchDbSystemConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.post(ib, request.getLaunchDbSystemDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.post(ib, request.getLaunchDbSystemDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.post(ib, request.getLaunchDbSystemDetails(), request); - return transformer.apply(response); } } @@ -745,25 +627,19 @@ public ListBackupsResponse listBackups(ListBackupsRequest request) { com.google.common.base.Function transformer = ListBackupsConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -778,25 +654,19 @@ public ListDataGuardAssociationsResponse listDataGuardAssociations( javax.ws.rs.core.Response, ListDataGuardAssociationsResponse> transformer = ListDataGuardAssociationsConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -809,25 +679,19 @@ public ListDatabasesResponse listDatabases(ListDatabasesRequest request) { com.google.common.base.Function transformer = ListDatabasesConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -842,25 +706,19 @@ public ListDbHomePatchHistoryEntriesResponse listDbHomePatchHistoryEntries( javax.ws.rs.core.Response, ListDbHomePatchHistoryEntriesResponse> transformer = ListDbHomePatchHistoryEntriesConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -873,25 +731,19 @@ public ListDbHomePatchesResponse listDbHomePatches(ListDbHomePatchesRequest requ com.google.common.base.Function transformer = ListDbHomePatchesConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -904,25 +756,19 @@ public ListDbHomesResponse listDbHomes(ListDbHomesRequest request) { com.google.common.base.Function transformer = ListDbHomesConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -935,25 +781,19 @@ public ListDbNodesResponse listDbNodes(ListDbNodesRequest request) { com.google.common.base.Function transformer = ListDbNodesConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -968,25 +808,19 @@ public ListDbSystemPatchHistoryEntriesResponse listDbSystemPatchHistoryEntries( javax.ws.rs.core.Response, ListDbSystemPatchHistoryEntriesResponse> transformer = ListDbSystemPatchHistoryEntriesConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -999,25 +833,19 @@ public ListDbSystemPatchesResponse listDbSystemPatches(ListDbSystemPatchesReques com.google.common.base.Function transformer = ListDbSystemPatchesConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -1030,25 +858,19 @@ public ListDbSystemShapesResponse listDbSystemShapes(ListDbSystemShapesRequest r com.google.common.base.Function transformer = ListDbSystemShapesConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -1061,25 +883,19 @@ public ListDbSystemsResponse listDbSystems(ListDbSystemsRequest request) { com.google.common.base.Function transformer = ListDbSystemsConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -1092,25 +908,19 @@ public ListDbVersionsResponse listDbVersions(ListDbVersionsRequest request) { com.google.common.base.Function transformer = ListDbVersionsConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -1125,29 +935,20 @@ public ReinstateDataGuardAssociationResponse reinstateDataGuardAssociation( javax.ws.rs.core.Response, ReinstateDataGuardAssociationResponse> transformer = ReinstateDataGuardAssociationConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.post(ib, request.getReinstateDataGuardAssociationDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.post( - ib, request.getReinstateDataGuardAssociationDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.post(ib, request.getReinstateDataGuardAssociationDetails(), request); - return transformer.apply(response); } } @@ -1160,28 +961,20 @@ public RestoreDatabaseResponse restoreDatabase(RestoreDatabaseRequest request) { com.google.common.base.Function transformer = RestoreDatabaseConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.post(ib, request.getRestoreDatabaseDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.post(ib, request.getRestoreDatabaseDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.post(ib, request.getRestoreDatabaseDetails(), request); - return transformer.apply(response); } } @@ -1196,32 +989,21 @@ public SwitchoverDataGuardAssociationResponse switchoverDataGuardAssociation( javax.ws.rs.core.Response, SwitchoverDataGuardAssociationResponse> transformer = SwitchoverDataGuardAssociationConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.post( ib, request.getSwitchoverDataGuardAssociationDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.post( - ib, - request.getSwitchoverDataGuardAssociationDetails(), - request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.post(ib, request.getSwitchoverDataGuardAssociationDetails(), request); - return transformer.apply(response); } } @@ -1234,25 +1016,19 @@ public TerminateDbSystemResponse terminateDbSystem(TerminateDbSystemRequest requ com.google.common.base.Function transformer = TerminateDbSystemConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.delete(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); } } @@ -1265,28 +1041,20 @@ public UpdateDatabaseResponse updateDatabase(UpdateDatabaseRequest request) { com.google.common.base.Function transformer = UpdateDatabaseConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.put(ib, request.getUpdateDatabaseDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateDatabaseDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateDatabaseDetails(), request); - return transformer.apply(response); } } @@ -1299,28 +1067,20 @@ public UpdateDbHomeResponse updateDbHome(UpdateDbHomeRequest request) { com.google.common.base.Function transformer = UpdateDbHomeConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.put(ib, request.getUpdateDbHomeDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateDbHomeDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateDbHomeDetails(), request); - return transformer.apply(response); } } @@ -1333,33 +1093,43 @@ public UpdateDbSystemResponse updateDbSystem(UpdateDbSystemRequest request) { com.google.common.base.Function transformer = UpdateDbSystemConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.put(ib, request.getUpdateDbSystemDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateDbSystemDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateDbSystemDetails(), request); - return transformer.apply(response); } } + private boolean canRetryRequestIfInstancePrincipalsUsed(com.oracle.bmc.model.BmcException e) { + if (e.getStatusCode() == 401 + && this.authenticationDetailsProvider + instanceof + com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) + this.authenticationDetailsProvider) + .refreshSecurityToken(); + return true; + } + return false; + } + @Override public DatabaseWaiters getWaiters() { return waiters; } + + @Override + public DatabasePaginators getPaginators() { + return paginators; + } } diff --git a/bmc-database/src/main/java/com/oracle/bmc/database/DatabasePaginators.java b/bmc-database/src/main/java/com/oracle/bmc/database/DatabasePaginators.java new file mode 100644 index 00000000000..6580aec196a --- /dev/null +++ b/bmc-database/src/main/java/com/oracle/bmc/database/DatabasePaginators.java @@ -0,0 +1,1398 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.database; + +import com.oracle.bmc.database.requests.*; +import com.oracle.bmc.database.responses.*; + +/** + * Collection of helper methods that can be used to provide an {@link java.lang.Iterable} interface + * to any list operations of Database where multiple pages of data may be fetched. + * Two styles of iteration are supported: + * + *
        + *
      • Iterating over the Response objects returned by the list operation. These are referred to as ResponseIterators, and the methods are suffixed with ResponseIterator. For example: listUsersResponseIterator
      • + *
      • Iterating over the resources/records being listed. These are referred to as RecordIterators, and the methods are suffixed with RecordIterator. For example: listUsersRecordIterator
      • + *
      + * + * These iterables abstract away the need to write code to manually handle pagination via looping and using the page tokens. + * They will automatically fetch more data from the service when required. + * + * As an example, if we were using the ListUsers operation in IdentityService, then the {@link java.lang.Interable} returned by calling a + * ResponseIterator method would iterate over the ListUsersResponse objects returned by each ListUsers call, whereas the {@link java.lang.Iterable} + * returned by calling a RecordIterator method would iterate over the User records and we don't have to deal with ListUsersResponse objects at all. + * In either case, pagination will be automatically handled so we can iterate until there are no more responses or no more resources/records available. + */ +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20160918") +@lombok.RequiredArgsConstructor +public class DatabasePaginators { + private final Database client; + + /** + * Creates a new iterable which will iterate over the responses received from the listBackups operation. This iterable + * will fetch more data from the server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the responses received from the service. + */ + public Iterable listBackupsResponseIterator( + final ListBackupsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseIterable< + ListBackupsRequest.Builder, ListBackupsRequest, ListBackupsResponse>( + new com.google.common.base.Supplier() { + @Override + public ListBackupsRequest.Builder get() { + return ListBackupsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListBackupsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListBackupsRequest.Builder>, + ListBackupsRequest>() { + @Override + public ListBackupsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListBackupsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function() { + @Override + public ListBackupsResponse apply(ListBackupsRequest request) { + return client.listBackups(request); + } + }); + } + + /** + * Creates a new iterable which will iterate over the {@link com.oracle.bmc.database.model.BackupSummary} objects + * contained in responses from the listBackups operation. This iterable will fetch more data from the + * server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link com.oracle.bmc.database.model.BackupSummary} objects + * contained in responses received from the service. + */ + public Iterable listBackupsRecordIterator( + final ListBackupsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseRecordIterable< + ListBackupsRequest.Builder, ListBackupsRequest, ListBackupsResponse, + com.oracle.bmc.database.model.BackupSummary>( + new com.google.common.base.Supplier() { + @Override + public ListBackupsRequest.Builder get() { + return ListBackupsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListBackupsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListBackupsRequest.Builder>, + ListBackupsRequest>() { + @Override + public ListBackupsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListBackupsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function() { + @Override + public ListBackupsResponse apply(ListBackupsRequest request) { + return client.listBackups(request); + } + }, + new com.google.common.base.Function< + ListBackupsResponse, + java.util.List>() { + @Override + public java.util.List apply( + ListBackupsResponse response) { + return response.getItems(); + } + }); + } + + /** + * Creates a new iterable which will iterate over the responses received from the listDataGuardAssociations operation. This iterable + * will fetch more data from the server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the responses received from the service. + */ + public Iterable listDataGuardAssociationsResponseIterator( + final ListDataGuardAssociationsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseIterable< + ListDataGuardAssociationsRequest.Builder, ListDataGuardAssociationsRequest, + ListDataGuardAssociationsResponse>( + new com.google.common.base.Supplier() { + @Override + public ListDataGuardAssociationsRequest.Builder get() { + return ListDataGuardAssociationsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListDataGuardAssociationsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListDataGuardAssociationsRequest.Builder>, + ListDataGuardAssociationsRequest>() { + @Override + public ListDataGuardAssociationsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListDataGuardAssociationsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListDataGuardAssociationsRequest, ListDataGuardAssociationsResponse>() { + @Override + public ListDataGuardAssociationsResponse apply( + ListDataGuardAssociationsRequest request) { + return client.listDataGuardAssociations(request); + } + }); + } + + /** + * Creates a new iterable which will iterate over the {@link com.oracle.bmc.database.model.DataGuardAssociationSummary} objects + * contained in responses from the listDataGuardAssociations operation. This iterable will fetch more data from the + * server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link com.oracle.bmc.database.model.DataGuardAssociationSummary} objects + * contained in responses received from the service. + */ + public Iterable + listDataGuardAssociationsRecordIterator( + final ListDataGuardAssociationsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseRecordIterable< + ListDataGuardAssociationsRequest.Builder, ListDataGuardAssociationsRequest, + ListDataGuardAssociationsResponse, + com.oracle.bmc.database.model.DataGuardAssociationSummary>( + new com.google.common.base.Supplier() { + @Override + public ListDataGuardAssociationsRequest.Builder get() { + return ListDataGuardAssociationsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListDataGuardAssociationsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListDataGuardAssociationsRequest.Builder>, + ListDataGuardAssociationsRequest>() { + @Override + public ListDataGuardAssociationsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListDataGuardAssociationsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListDataGuardAssociationsRequest, ListDataGuardAssociationsResponse>() { + @Override + public ListDataGuardAssociationsResponse apply( + ListDataGuardAssociationsRequest request) { + return client.listDataGuardAssociations(request); + } + }, + new com.google.common.base.Function< + ListDataGuardAssociationsResponse, + java.util.List< + com.oracle.bmc.database.model.DataGuardAssociationSummary>>() { + @Override + public java.util.List + apply(ListDataGuardAssociationsResponse response) { + return response.getItems(); + } + }); + } + + /** + * Creates a new iterable which will iterate over the responses received from the listDatabases operation. This iterable + * will fetch more data from the server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the responses received from the service. + */ + public Iterable listDatabasesResponseIterator( + final ListDatabasesRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseIterable< + ListDatabasesRequest.Builder, ListDatabasesRequest, ListDatabasesResponse>( + new com.google.common.base.Supplier() { + @Override + public ListDatabasesRequest.Builder get() { + return ListDatabasesRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListDatabasesResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListDatabasesRequest.Builder>, + ListDatabasesRequest>() { + @Override + public ListDatabasesRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListDatabasesRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function() { + @Override + public ListDatabasesResponse apply(ListDatabasesRequest request) { + return client.listDatabases(request); + } + }); + } + + /** + * Creates a new iterable which will iterate over the {@link com.oracle.bmc.database.model.DatabaseSummary} objects + * contained in responses from the listDatabases operation. This iterable will fetch more data from the + * server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link com.oracle.bmc.database.model.DatabaseSummary} objects + * contained in responses received from the service. + */ + public Iterable listDatabasesRecordIterator( + final ListDatabasesRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseRecordIterable< + ListDatabasesRequest.Builder, ListDatabasesRequest, ListDatabasesResponse, + com.oracle.bmc.database.model.DatabaseSummary>( + new com.google.common.base.Supplier() { + @Override + public ListDatabasesRequest.Builder get() { + return ListDatabasesRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListDatabasesResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListDatabasesRequest.Builder>, + ListDatabasesRequest>() { + @Override + public ListDatabasesRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListDatabasesRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function() { + @Override + public ListDatabasesResponse apply(ListDatabasesRequest request) { + return client.listDatabases(request); + } + }, + new com.google.common.base.Function< + ListDatabasesResponse, + java.util.List>() { + @Override + public java.util.List apply( + ListDatabasesResponse response) { + return response.getItems(); + } + }); + } + + /** + * Creates a new iterable which will iterate over the responses received from the listDbHomePatchHistoryEntries operation. This iterable + * will fetch more data from the server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the responses received from the service. + */ + public Iterable + listDbHomePatchHistoryEntriesResponseIterator( + final ListDbHomePatchHistoryEntriesRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseIterable< + ListDbHomePatchHistoryEntriesRequest.Builder, ListDbHomePatchHistoryEntriesRequest, + ListDbHomePatchHistoryEntriesResponse>( + new com.google.common.base.Supplier< + ListDbHomePatchHistoryEntriesRequest.Builder>() { + @Override + public ListDbHomePatchHistoryEntriesRequest.Builder get() { + return ListDbHomePatchHistoryEntriesRequest.builder().copy(request); + } + }, + new com.google.common.base.Function< + ListDbHomePatchHistoryEntriesResponse, String>() { + @Override + public String apply(ListDbHomePatchHistoryEntriesResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListDbHomePatchHistoryEntriesRequest.Builder>, + ListDbHomePatchHistoryEntriesRequest>() { + @Override + public ListDbHomePatchHistoryEntriesRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListDbHomePatchHistoryEntriesRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListDbHomePatchHistoryEntriesRequest, + ListDbHomePatchHistoryEntriesResponse>() { + @Override + public ListDbHomePatchHistoryEntriesResponse apply( + ListDbHomePatchHistoryEntriesRequest request) { + return client.listDbHomePatchHistoryEntries(request); + } + }); + } + + /** + * Creates a new iterable which will iterate over the {@link com.oracle.bmc.database.model.PatchHistoryEntrySummary} objects + * contained in responses from the listDbHomePatchHistoryEntries operation. This iterable will fetch more data from the + * server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link com.oracle.bmc.database.model.PatchHistoryEntrySummary} objects + * contained in responses received from the service. + */ + public Iterable + listDbHomePatchHistoryEntriesRecordIterator( + final ListDbHomePatchHistoryEntriesRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseRecordIterable< + ListDbHomePatchHistoryEntriesRequest.Builder, ListDbHomePatchHistoryEntriesRequest, + ListDbHomePatchHistoryEntriesResponse, + com.oracle.bmc.database.model.PatchHistoryEntrySummary>( + new com.google.common.base.Supplier< + ListDbHomePatchHistoryEntriesRequest.Builder>() { + @Override + public ListDbHomePatchHistoryEntriesRequest.Builder get() { + return ListDbHomePatchHistoryEntriesRequest.builder().copy(request); + } + }, + new com.google.common.base.Function< + ListDbHomePatchHistoryEntriesResponse, String>() { + @Override + public String apply(ListDbHomePatchHistoryEntriesResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListDbHomePatchHistoryEntriesRequest.Builder>, + ListDbHomePatchHistoryEntriesRequest>() { + @Override + public ListDbHomePatchHistoryEntriesRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListDbHomePatchHistoryEntriesRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListDbHomePatchHistoryEntriesRequest, + ListDbHomePatchHistoryEntriesResponse>() { + @Override + public ListDbHomePatchHistoryEntriesResponse apply( + ListDbHomePatchHistoryEntriesRequest request) { + return client.listDbHomePatchHistoryEntries(request); + } + }, + new com.google.common.base.Function< + ListDbHomePatchHistoryEntriesResponse, + java.util.List>() { + @Override + public java.util.List + apply(ListDbHomePatchHistoryEntriesResponse response) { + return response.getItems(); + } + }); + } + + /** + * Creates a new iterable which will iterate over the responses received from the listDbHomePatches operation. This iterable + * will fetch more data from the server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the responses received from the service. + */ + public Iterable listDbHomePatchesResponseIterator( + final ListDbHomePatchesRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseIterable< + ListDbHomePatchesRequest.Builder, ListDbHomePatchesRequest, + ListDbHomePatchesResponse>( + new com.google.common.base.Supplier() { + @Override + public ListDbHomePatchesRequest.Builder get() { + return ListDbHomePatchesRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListDbHomePatchesResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListDbHomePatchesRequest.Builder>, + ListDbHomePatchesRequest>() { + @Override + public ListDbHomePatchesRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListDbHomePatchesRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListDbHomePatchesRequest, ListDbHomePatchesResponse>() { + @Override + public ListDbHomePatchesResponse apply(ListDbHomePatchesRequest request) { + return client.listDbHomePatches(request); + } + }); + } + + /** + * Creates a new iterable which will iterate over the {@link com.oracle.bmc.database.model.PatchSummary} objects + * contained in responses from the listDbHomePatches operation. This iterable will fetch more data from the + * server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link com.oracle.bmc.database.model.PatchSummary} objects + * contained in responses received from the service. + */ + public Iterable listDbHomePatchesRecordIterator( + final ListDbHomePatchesRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseRecordIterable< + ListDbHomePatchesRequest.Builder, ListDbHomePatchesRequest, + ListDbHomePatchesResponse, com.oracle.bmc.database.model.PatchSummary>( + new com.google.common.base.Supplier() { + @Override + public ListDbHomePatchesRequest.Builder get() { + return ListDbHomePatchesRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListDbHomePatchesResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListDbHomePatchesRequest.Builder>, + ListDbHomePatchesRequest>() { + @Override + public ListDbHomePatchesRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListDbHomePatchesRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListDbHomePatchesRequest, ListDbHomePatchesResponse>() { + @Override + public ListDbHomePatchesResponse apply(ListDbHomePatchesRequest request) { + return client.listDbHomePatches(request); + } + }, + new com.google.common.base.Function< + ListDbHomePatchesResponse, + java.util.List>() { + @Override + public java.util.List apply( + ListDbHomePatchesResponse response) { + return response.getItems(); + } + }); + } + + /** + * Creates a new iterable which will iterate over the responses received from the listDbHomes operation. This iterable + * will fetch more data from the server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the responses received from the service. + */ + public Iterable listDbHomesResponseIterator( + final ListDbHomesRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseIterable< + ListDbHomesRequest.Builder, ListDbHomesRequest, ListDbHomesResponse>( + new com.google.common.base.Supplier() { + @Override + public ListDbHomesRequest.Builder get() { + return ListDbHomesRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListDbHomesResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListDbHomesRequest.Builder>, + ListDbHomesRequest>() { + @Override + public ListDbHomesRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListDbHomesRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function() { + @Override + public ListDbHomesResponse apply(ListDbHomesRequest request) { + return client.listDbHomes(request); + } + }); + } + + /** + * Creates a new iterable which will iterate over the {@link com.oracle.bmc.database.model.DbHomeSummary} objects + * contained in responses from the listDbHomes operation. This iterable will fetch more data from the + * server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link com.oracle.bmc.database.model.DbHomeSummary} objects + * contained in responses received from the service. + */ + public Iterable listDbHomesRecordIterator( + final ListDbHomesRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseRecordIterable< + ListDbHomesRequest.Builder, ListDbHomesRequest, ListDbHomesResponse, + com.oracle.bmc.database.model.DbHomeSummary>( + new com.google.common.base.Supplier() { + @Override + public ListDbHomesRequest.Builder get() { + return ListDbHomesRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListDbHomesResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListDbHomesRequest.Builder>, + ListDbHomesRequest>() { + @Override + public ListDbHomesRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListDbHomesRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function() { + @Override + public ListDbHomesResponse apply(ListDbHomesRequest request) { + return client.listDbHomes(request); + } + }, + new com.google.common.base.Function< + ListDbHomesResponse, + java.util.List>() { + @Override + public java.util.List apply( + ListDbHomesResponse response) { + return response.getItems(); + } + }); + } + + /** + * Creates a new iterable which will iterate over the responses received from the listDbNodes operation. This iterable + * will fetch more data from the server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the responses received from the service. + */ + public Iterable listDbNodesResponseIterator( + final ListDbNodesRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseIterable< + ListDbNodesRequest.Builder, ListDbNodesRequest, ListDbNodesResponse>( + new com.google.common.base.Supplier() { + @Override + public ListDbNodesRequest.Builder get() { + return ListDbNodesRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListDbNodesResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListDbNodesRequest.Builder>, + ListDbNodesRequest>() { + @Override + public ListDbNodesRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListDbNodesRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function() { + @Override + public ListDbNodesResponse apply(ListDbNodesRequest request) { + return client.listDbNodes(request); + } + }); + } + + /** + * Creates a new iterable which will iterate over the {@link com.oracle.bmc.database.model.DbNodeSummary} objects + * contained in responses from the listDbNodes operation. This iterable will fetch more data from the + * server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link com.oracle.bmc.database.model.DbNodeSummary} objects + * contained in responses received from the service. + */ + public Iterable listDbNodesRecordIterator( + final ListDbNodesRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseRecordIterable< + ListDbNodesRequest.Builder, ListDbNodesRequest, ListDbNodesResponse, + com.oracle.bmc.database.model.DbNodeSummary>( + new com.google.common.base.Supplier() { + @Override + public ListDbNodesRequest.Builder get() { + return ListDbNodesRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListDbNodesResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListDbNodesRequest.Builder>, + ListDbNodesRequest>() { + @Override + public ListDbNodesRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListDbNodesRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function() { + @Override + public ListDbNodesResponse apply(ListDbNodesRequest request) { + return client.listDbNodes(request); + } + }, + new com.google.common.base.Function< + ListDbNodesResponse, + java.util.List>() { + @Override + public java.util.List apply( + ListDbNodesResponse response) { + return response.getItems(); + } + }); + } + + /** + * Creates a new iterable which will iterate over the responses received from the listDbSystemPatchHistoryEntries operation. This iterable + * will fetch more data from the server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the responses received from the service. + */ + public Iterable + listDbSystemPatchHistoryEntriesResponseIterator( + final ListDbSystemPatchHistoryEntriesRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseIterable< + ListDbSystemPatchHistoryEntriesRequest.Builder, + ListDbSystemPatchHistoryEntriesRequest, ListDbSystemPatchHistoryEntriesResponse>( + new com.google.common.base.Supplier< + ListDbSystemPatchHistoryEntriesRequest.Builder>() { + @Override + public ListDbSystemPatchHistoryEntriesRequest.Builder get() { + return ListDbSystemPatchHistoryEntriesRequest.builder().copy(request); + } + }, + new com.google.common.base.Function< + ListDbSystemPatchHistoryEntriesResponse, String>() { + @Override + public String apply(ListDbSystemPatchHistoryEntriesResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListDbSystemPatchHistoryEntriesRequest.Builder>, + ListDbSystemPatchHistoryEntriesRequest>() { + @Override + public ListDbSystemPatchHistoryEntriesRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListDbSystemPatchHistoryEntriesRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListDbSystemPatchHistoryEntriesRequest, + ListDbSystemPatchHistoryEntriesResponse>() { + @Override + public ListDbSystemPatchHistoryEntriesResponse apply( + ListDbSystemPatchHistoryEntriesRequest request) { + return client.listDbSystemPatchHistoryEntries(request); + } + }); + } + + /** + * Creates a new iterable which will iterate over the {@link com.oracle.bmc.database.model.PatchHistoryEntrySummary} objects + * contained in responses from the listDbSystemPatchHistoryEntries operation. This iterable will fetch more data from the + * server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link com.oracle.bmc.database.model.PatchHistoryEntrySummary} objects + * contained in responses received from the service. + */ + public Iterable + listDbSystemPatchHistoryEntriesRecordIterator( + final ListDbSystemPatchHistoryEntriesRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseRecordIterable< + ListDbSystemPatchHistoryEntriesRequest.Builder, + ListDbSystemPatchHistoryEntriesRequest, ListDbSystemPatchHistoryEntriesResponse, + com.oracle.bmc.database.model.PatchHistoryEntrySummary>( + new com.google.common.base.Supplier< + ListDbSystemPatchHistoryEntriesRequest.Builder>() { + @Override + public ListDbSystemPatchHistoryEntriesRequest.Builder get() { + return ListDbSystemPatchHistoryEntriesRequest.builder().copy(request); + } + }, + new com.google.common.base.Function< + ListDbSystemPatchHistoryEntriesResponse, String>() { + @Override + public String apply(ListDbSystemPatchHistoryEntriesResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListDbSystemPatchHistoryEntriesRequest.Builder>, + ListDbSystemPatchHistoryEntriesRequest>() { + @Override + public ListDbSystemPatchHistoryEntriesRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListDbSystemPatchHistoryEntriesRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListDbSystemPatchHistoryEntriesRequest, + ListDbSystemPatchHistoryEntriesResponse>() { + @Override + public ListDbSystemPatchHistoryEntriesResponse apply( + ListDbSystemPatchHistoryEntriesRequest request) { + return client.listDbSystemPatchHistoryEntries(request); + } + }, + new com.google.common.base.Function< + ListDbSystemPatchHistoryEntriesResponse, + java.util.List>() { + @Override + public java.util.List + apply(ListDbSystemPatchHistoryEntriesResponse response) { + return response.getItems(); + } + }); + } + + /** + * Creates a new iterable which will iterate over the responses received from the listDbSystemPatches operation. This iterable + * will fetch more data from the server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the responses received from the service. + */ + public Iterable listDbSystemPatchesResponseIterator( + final ListDbSystemPatchesRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseIterable< + ListDbSystemPatchesRequest.Builder, ListDbSystemPatchesRequest, + ListDbSystemPatchesResponse>( + new com.google.common.base.Supplier() { + @Override + public ListDbSystemPatchesRequest.Builder get() { + return ListDbSystemPatchesRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListDbSystemPatchesResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListDbSystemPatchesRequest.Builder>, + ListDbSystemPatchesRequest>() { + @Override + public ListDbSystemPatchesRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListDbSystemPatchesRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListDbSystemPatchesRequest, ListDbSystemPatchesResponse>() { + @Override + public ListDbSystemPatchesResponse apply(ListDbSystemPatchesRequest request) { + return client.listDbSystemPatches(request); + } + }); + } + + /** + * Creates a new iterable which will iterate over the {@link com.oracle.bmc.database.model.PatchSummary} objects + * contained in responses from the listDbSystemPatches operation. This iterable will fetch more data from the + * server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link com.oracle.bmc.database.model.PatchSummary} objects + * contained in responses received from the service. + */ + public Iterable listDbSystemPatchesRecordIterator( + final ListDbSystemPatchesRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseRecordIterable< + ListDbSystemPatchesRequest.Builder, ListDbSystemPatchesRequest, + ListDbSystemPatchesResponse, com.oracle.bmc.database.model.PatchSummary>( + new com.google.common.base.Supplier() { + @Override + public ListDbSystemPatchesRequest.Builder get() { + return ListDbSystemPatchesRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListDbSystemPatchesResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListDbSystemPatchesRequest.Builder>, + ListDbSystemPatchesRequest>() { + @Override + public ListDbSystemPatchesRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListDbSystemPatchesRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListDbSystemPatchesRequest, ListDbSystemPatchesResponse>() { + @Override + public ListDbSystemPatchesResponse apply(ListDbSystemPatchesRequest request) { + return client.listDbSystemPatches(request); + } + }, + new com.google.common.base.Function< + ListDbSystemPatchesResponse, + java.util.List>() { + @Override + public java.util.List apply( + ListDbSystemPatchesResponse response) { + return response.getItems(); + } + }); + } + + /** + * Creates a new iterable which will iterate over the responses received from the listDbSystemShapes operation. This iterable + * will fetch more data from the server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the responses received from the service. + */ + public Iterable listDbSystemShapesResponseIterator( + final ListDbSystemShapesRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseIterable< + ListDbSystemShapesRequest.Builder, ListDbSystemShapesRequest, + ListDbSystemShapesResponse>( + new com.google.common.base.Supplier() { + @Override + public ListDbSystemShapesRequest.Builder get() { + return ListDbSystemShapesRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListDbSystemShapesResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListDbSystemShapesRequest.Builder>, + ListDbSystemShapesRequest>() { + @Override + public ListDbSystemShapesRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListDbSystemShapesRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListDbSystemShapesRequest, ListDbSystemShapesResponse>() { + @Override + public ListDbSystemShapesResponse apply(ListDbSystemShapesRequest request) { + return client.listDbSystemShapes(request); + } + }); + } + + /** + * Creates a new iterable which will iterate over the {@link com.oracle.bmc.database.model.DbSystemShapeSummary} objects + * contained in responses from the listDbSystemShapes operation. This iterable will fetch more data from the + * server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link com.oracle.bmc.database.model.DbSystemShapeSummary} objects + * contained in responses received from the service. + */ + public Iterable + listDbSystemShapesRecordIterator(final ListDbSystemShapesRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseRecordIterable< + ListDbSystemShapesRequest.Builder, ListDbSystemShapesRequest, + ListDbSystemShapesResponse, com.oracle.bmc.database.model.DbSystemShapeSummary>( + new com.google.common.base.Supplier() { + @Override + public ListDbSystemShapesRequest.Builder get() { + return ListDbSystemShapesRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListDbSystemShapesResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListDbSystemShapesRequest.Builder>, + ListDbSystemShapesRequest>() { + @Override + public ListDbSystemShapesRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListDbSystemShapesRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListDbSystemShapesRequest, ListDbSystemShapesResponse>() { + @Override + public ListDbSystemShapesResponse apply(ListDbSystemShapesRequest request) { + return client.listDbSystemShapes(request); + } + }, + new com.google.common.base.Function< + ListDbSystemShapesResponse, + java.util.List>() { + @Override + public java.util.List apply( + ListDbSystemShapesResponse response) { + return response.getItems(); + } + }); + } + + /** + * Creates a new iterable which will iterate over the responses received from the listDbSystems operation. This iterable + * will fetch more data from the server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the responses received from the service. + */ + public Iterable listDbSystemsResponseIterator( + final ListDbSystemsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseIterable< + ListDbSystemsRequest.Builder, ListDbSystemsRequest, ListDbSystemsResponse>( + new com.google.common.base.Supplier() { + @Override + public ListDbSystemsRequest.Builder get() { + return ListDbSystemsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListDbSystemsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListDbSystemsRequest.Builder>, + ListDbSystemsRequest>() { + @Override + public ListDbSystemsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListDbSystemsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function() { + @Override + public ListDbSystemsResponse apply(ListDbSystemsRequest request) { + return client.listDbSystems(request); + } + }); + } + + /** + * Creates a new iterable which will iterate over the {@link com.oracle.bmc.database.model.DbSystemSummary} objects + * contained in responses from the listDbSystems operation. This iterable will fetch more data from the + * server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link com.oracle.bmc.database.model.DbSystemSummary} objects + * contained in responses received from the service. + */ + public Iterable listDbSystemsRecordIterator( + final ListDbSystemsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseRecordIterable< + ListDbSystemsRequest.Builder, ListDbSystemsRequest, ListDbSystemsResponse, + com.oracle.bmc.database.model.DbSystemSummary>( + new com.google.common.base.Supplier() { + @Override + public ListDbSystemsRequest.Builder get() { + return ListDbSystemsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListDbSystemsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListDbSystemsRequest.Builder>, + ListDbSystemsRequest>() { + @Override + public ListDbSystemsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListDbSystemsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function() { + @Override + public ListDbSystemsResponse apply(ListDbSystemsRequest request) { + return client.listDbSystems(request); + } + }, + new com.google.common.base.Function< + ListDbSystemsResponse, + java.util.List>() { + @Override + public java.util.List apply( + ListDbSystemsResponse response) { + return response.getItems(); + } + }); + } + + /** + * Creates a new iterable which will iterate over the responses received from the listDbVersions operation. This iterable + * will fetch more data from the server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the responses received from the service. + */ + public Iterable listDbVersionsResponseIterator( + final ListDbVersionsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseIterable< + ListDbVersionsRequest.Builder, ListDbVersionsRequest, ListDbVersionsResponse>( + new com.google.common.base.Supplier() { + @Override + public ListDbVersionsRequest.Builder get() { + return ListDbVersionsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListDbVersionsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListDbVersionsRequest.Builder>, + ListDbVersionsRequest>() { + @Override + public ListDbVersionsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListDbVersionsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListDbVersionsRequest, ListDbVersionsResponse>() { + @Override + public ListDbVersionsResponse apply(ListDbVersionsRequest request) { + return client.listDbVersions(request); + } + }); + } + + /** + * Creates a new iterable which will iterate over the {@link com.oracle.bmc.database.model.DbVersionSummary} objects + * contained in responses from the listDbVersions operation. This iterable will fetch more data from the + * server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link com.oracle.bmc.database.model.DbVersionSummary} objects + * contained in responses received from the service. + */ + public Iterable listDbVersionsRecordIterator( + final ListDbVersionsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseRecordIterable< + ListDbVersionsRequest.Builder, ListDbVersionsRequest, ListDbVersionsResponse, + com.oracle.bmc.database.model.DbVersionSummary>( + new com.google.common.base.Supplier() { + @Override + public ListDbVersionsRequest.Builder get() { + return ListDbVersionsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListDbVersionsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListDbVersionsRequest.Builder>, + ListDbVersionsRequest>() { + @Override + public ListDbVersionsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListDbVersionsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListDbVersionsRequest, ListDbVersionsResponse>() { + @Override + public ListDbVersionsResponse apply(ListDbVersionsRequest request) { + return client.listDbVersions(request); + } + }, + new com.google.common.base.Function< + ListDbVersionsResponse, + java.util.List>() { + @Override + public java.util.List apply( + ListDbVersionsResponse response) { + return response.getItems(); + } + }); + } +} diff --git a/bmc-dns/pom.xml b/bmc-dns/pom.xml index 9e03725baf5..31b6d283c6f 100644 --- a/bmc-dns/pom.xml +++ b/bmc-dns/pom.xml @@ -5,7 +5,7 @@ com.oracle.oci.sdk oci-java-sdk - 1.2.27 + 1.2.28 ../pom.xml @@ -18,7 +18,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 1.2.27 + 1.2.28 diff --git a/bmc-dns/src/main/java/com/oracle/bmc/dns/Dns.java b/bmc-dns/src/main/java/com/oracle/bmc/dns/Dns.java index 16685e5d7da..d7acab990f9 100644 --- a/bmc-dns/src/main/java/com/oracle/bmc/dns/Dns.java +++ b/bmc-dns/src/main/java/com/oracle/bmc/dns/Dns.java @@ -206,4 +206,13 @@ public interface Dns extends AutoCloseable { * @return The service waiters. */ DnsWaiters getWaiters(); + + /** + * Gets the pre-configured paginators available for list operations in this service which may return multiple + * pages of data. These paginators provide an {@link java.lang.Iterable} interface so that service responses, or + * resources/records, can be iterated through without having to manually deal with pagination and page tokens. + * + * @return The service paginators. + */ + DnsPaginators getPaginators(); } diff --git a/bmc-dns/src/main/java/com/oracle/bmc/dns/DnsClient.java b/bmc-dns/src/main/java/com/oracle/bmc/dns/DnsClient.java index 970b2735b78..c333fc8d8d4 100644 --- a/bmc-dns/src/main/java/com/oracle/bmc/dns/DnsClient.java +++ b/bmc-dns/src/main/java/com/oracle/bmc/dns/DnsClient.java @@ -16,10 +16,11 @@ public class DnsClient implements Dns { */ public static final com.oracle.bmc.Service SERVICE = com.oracle.bmc.Services.create("DNS", "dns"); + // attempt twice if it's instance principals, immediately failures will try to refresh the token + private static final int MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS = 2; - private final java.util.concurrent.ExecutorService executorService = - java.util.concurrent.Executors.newFixedThreadPool(50); private final DnsWaiters waiters; + private final DnsPaginators paginators; @lombok.Getter(value = lombok.AccessLevel.PACKAGE) private final com.oracle.bmc.http.internal.RestClient client; @@ -106,6 +107,8 @@ public DnsClient( this.waiters = new DnsWaiters(executorService, this); + this.paginators = new DnsPaginators(this); + if (this.authenticationDetailsProvider instanceof com.oracle.bmc.auth.RegionProvider) { com.oracle.bmc.auth.RegionProvider provider = (com.oracle.bmc.auth.RegionProvider) this.authenticationDetailsProvider; @@ -160,28 +163,20 @@ public CreateZoneResponse createZone(CreateZoneRequest request) { com.google.common.base.Function transformer = CreateZoneConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.post(ib, request.getCreateZoneDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateZoneDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateZoneDetails(), request); - return transformer.apply(response); } } @@ -194,25 +189,19 @@ public DeleteDomainRecordsResponse deleteDomainRecords(DeleteDomainRecordsReques com.google.common.base.Function transformer = DeleteDomainRecordsConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.delete(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); } } @@ -225,25 +214,19 @@ public DeleteRRSetResponse deleteRRSet(DeleteRRSetRequest request) { com.google.common.base.Function transformer = DeleteRRSetConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.delete(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); } } @@ -256,25 +239,19 @@ public DeleteZoneResponse deleteZone(DeleteZoneRequest request) { com.google.common.base.Function transformer = DeleteZoneConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.delete(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); } } @@ -287,25 +264,19 @@ public GetDomainRecordsResponse getDomainRecords(GetDomainRecordsRequest request com.google.common.base.Function transformer = GetDomainRecordsConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -318,25 +289,19 @@ public GetRRSetResponse getRRSet(GetRRSetRequest request) { com.google.common.base.Function transformer = GetRRSetConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -349,25 +314,19 @@ public GetZoneResponse getZone(GetZoneRequest request) { com.google.common.base.Function transformer = GetZoneConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -380,25 +339,19 @@ public GetZoneRecordsResponse getZoneRecords(GetZoneRecordsRequest request) { com.google.common.base.Function transformer = GetZoneRecordsConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -411,25 +364,19 @@ public ListZonesResponse listZones(ListZonesRequest request) { com.google.common.base.Function transformer = ListZonesConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -442,28 +389,20 @@ public PatchDomainRecordsResponse patchDomainRecords(PatchDomainRecordsRequest r com.google.common.base.Function transformer = PatchDomainRecordsConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.patch(ib, request.getPatchDomainRecordsDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.patch(ib, request.getPatchDomainRecordsDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.patch(ib, request.getPatchDomainRecordsDetails(), request); - return transformer.apply(response); } } @@ -476,28 +415,20 @@ public PatchRRSetResponse patchRRSet(PatchRRSetRequest request) { com.google.common.base.Function transformer = PatchRRSetConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.patch(ib, request.getPatchRRSetDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.patch(ib, request.getPatchRRSetDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.patch(ib, request.getPatchRRSetDetails(), request); - return transformer.apply(response); } } @@ -510,28 +441,20 @@ public PatchZoneRecordsResponse patchZoneRecords(PatchZoneRecordsRequest request com.google.common.base.Function transformer = PatchZoneRecordsConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.patch(ib, request.getPatchZoneRecordsDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.patch(ib, request.getPatchZoneRecordsDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.patch(ib, request.getPatchZoneRecordsDetails(), request); - return transformer.apply(response); } } @@ -544,28 +467,20 @@ public UpdateDomainRecordsResponse updateDomainRecords(UpdateDomainRecordsReques com.google.common.base.Function transformer = UpdateDomainRecordsConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.put(ib, request.getUpdateDomainRecordsDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateDomainRecordsDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateDomainRecordsDetails(), request); - return transformer.apply(response); } } @@ -578,28 +493,20 @@ public UpdateRRSetResponse updateRRSet(UpdateRRSetRequest request) { com.google.common.base.Function transformer = UpdateRRSetConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.put(ib, request.getUpdateRRSetDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateRRSetDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateRRSetDetails(), request); - return transformer.apply(response); } } @@ -612,28 +519,20 @@ public UpdateZoneResponse updateZone(UpdateZoneRequest request) { com.google.common.base.Function transformer = UpdateZoneConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.put(ib, request.getUpdateZoneDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateZoneDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateZoneDetails(), request); - return transformer.apply(response); } } @@ -646,33 +545,43 @@ public UpdateZoneRecordsResponse updateZoneRecords(UpdateZoneRecordsRequest requ com.google.common.base.Function transformer = UpdateZoneRecordsConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.put(ib, request.getUpdateZoneRecordsDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateZoneRecordsDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateZoneRecordsDetails(), request); - return transformer.apply(response); } } + private boolean canRetryRequestIfInstancePrincipalsUsed(com.oracle.bmc.model.BmcException e) { + if (e.getStatusCode() == 401 + && this.authenticationDetailsProvider + instanceof + com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) + this.authenticationDetailsProvider) + .refreshSecurityToken(); + return true; + } + return false; + } + @Override public DnsWaiters getWaiters() { return waiters; } + + @Override + public DnsPaginators getPaginators() { + return paginators; + } } diff --git a/bmc-dns/src/main/java/com/oracle/bmc/dns/DnsPaginators.java b/bmc-dns/src/main/java/com/oracle/bmc/dns/DnsPaginators.java new file mode 100644 index 00000000000..b8ef645ab04 --- /dev/null +++ b/bmc-dns/src/main/java/com/oracle/bmc/dns/DnsPaginators.java @@ -0,0 +1,139 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.dns; + +import com.oracle.bmc.dns.requests.*; +import com.oracle.bmc.dns.responses.*; + +/** + * Collection of helper methods that can be used to provide an {@link java.lang.Iterable} interface + * to any list operations of Dns where multiple pages of data may be fetched. + * Two styles of iteration are supported: + * + *
        + *
      • Iterating over the Response objects returned by the list operation. These are referred to as ResponseIterators, and the methods are suffixed with ResponseIterator. For example: listUsersResponseIterator
      • + *
      • Iterating over the resources/records being listed. These are referred to as RecordIterators, and the methods are suffixed with RecordIterator. For example: listUsersRecordIterator
      • + *
      + * + * These iterables abstract away the need to write code to manually handle pagination via looping and using the page tokens. + * They will automatically fetch more data from the service when required. + * + * As an example, if we were using the ListUsers operation in IdentityService, then the {@link java.lang.Interable} returned by calling a + * ResponseIterator method would iterate over the ListUsersResponse objects returned by each ListUsers call, whereas the {@link java.lang.Iterable} + * returned by calling a RecordIterator method would iterate over the User records and we don't have to deal with ListUsersResponse objects at all. + * In either case, pagination will be automatically handled so we can iterate until there are no more responses or no more resources/records available. + */ +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20180115") +@lombok.RequiredArgsConstructor +public class DnsPaginators { + private final Dns client; + + /** + * Creates a new iterable which will iterate over the responses received from the listZones operation. This iterable + * will fetch more data from the server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the responses received from the service. + */ + public Iterable listZonesResponseIterator(final ListZonesRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseIterable< + ListZonesRequest.Builder, ListZonesRequest, ListZonesResponse>( + new com.google.common.base.Supplier() { + @Override + public ListZonesRequest.Builder get() { + return ListZonesRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListZonesResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListZonesRequest.Builder>, + ListZonesRequest>() { + @Override + public ListZonesRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListZonesRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function() { + @Override + public ListZonesResponse apply(ListZonesRequest request) { + return client.listZones(request); + } + }); + } + + /** + * Creates a new iterable which will iterate over the {@link com.oracle.bmc.dns.model.ZoneSummary} objects + * contained in responses from the listZones operation. This iterable will fetch more data from the + * server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link com.oracle.bmc.dns.model.ZoneSummary} objects + * contained in responses received from the service. + */ + public Iterable listZonesRecordIterator( + final ListZonesRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseRecordIterable< + ListZonesRequest.Builder, ListZonesRequest, ListZonesResponse, + com.oracle.bmc.dns.model.ZoneSummary>( + new com.google.common.base.Supplier() { + @Override + public ListZonesRequest.Builder get() { + return ListZonesRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListZonesResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListZonesRequest.Builder>, + ListZonesRequest>() { + @Override + public ListZonesRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListZonesRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function() { + @Override + public ListZonesResponse apply(ListZonesRequest request) { + return client.listZones(request); + } + }, + new com.google.common.base.Function< + ListZonesResponse, java.util.List>() { + @Override + public java.util.List apply( + ListZonesResponse response) { + return response.getItems(); + } + }); + } +} diff --git a/bmc-examples/pom.xml b/bmc-examples/pom.xml index eee1cbfaa4a..dfaafa1183c 100644 --- a/bmc-examples/pom.xml +++ b/bmc-examples/pom.xml @@ -5,7 +5,7 @@ com.oracle.oci.sdk oci-java-sdk - 1.2.27 + 1.2.28 ../pom.xml @@ -19,7 +19,7 @@ com.oracle.oci.sdk oci-java-sdk-bom - 1.2.27 + 1.2.28 pom import @@ -39,6 +39,10 @@ com.oracle.oci.sdk oci-java-sdk-dns + + com.oracle.oci.sdk + oci-java-sdk-filestorage + com.oracle.oci.sdk oci-java-sdk-identity diff --git a/bmc-examples/src/main/java/CreateInstanceExample.java b/bmc-examples/src/main/java/CreateInstanceExample.java index e8fda342d38..5cdb3d15576 100644 --- a/bmc-examples/src/main/java/CreateInstanceExample.java +++ b/bmc-examples/src/main/java/CreateInstanceExample.java @@ -15,8 +15,10 @@ import com.oracle.bmc.core.model.CreateInternetGatewayDetails; import com.oracle.bmc.core.model.CreateSubnetDetails; import com.oracle.bmc.core.model.CreateVcnDetails; +import com.oracle.bmc.core.model.CreateVnicDetails; import com.oracle.bmc.core.model.Image; import com.oracle.bmc.core.model.Instance; +import com.oracle.bmc.core.model.InstanceSourceViaImageDetails; import com.oracle.bmc.core.model.InternetGateway; import com.oracle.bmc.core.model.LaunchInstanceDetails; import com.oracle.bmc.core.model.RouteRule; @@ -28,6 +30,7 @@ import com.oracle.bmc.core.requests.CreateSubnetRequest; import com.oracle.bmc.core.requests.CreateVcnRequest; import com.oracle.bmc.core.requests.GetInstanceRequest; +import com.oracle.bmc.core.requests.GetSubnetRequest; import com.oracle.bmc.core.requests.LaunchInstanceRequest; import com.oracle.bmc.core.requests.ListImagesRequest; import com.oracle.bmc.core.requests.ListShapesRequest; @@ -82,6 +85,26 @@ public static void main(String[] args) throws Exception { List images = getImages(provider, computeClient, compartmentId); List shapes = getShapes(provider, computeClient, compartmentId); + Image image = null; + for (Image item : images) { + if (item.getDisplayName().equals("Oracle-Linux-7.4-2018.01.20-0")) { + image = item; + break; + } + } + + Shape shape = null; + for (Shape item : shapes) { + if (item.getShape().equals("VM.Standard1.1")) { + shape = item; + break; + } + } + + if (image == null || shape == null) { + throw new NullPointerException("Image or shape was not found."); + } + Vcn vcn = createVcn(vcnClient, compartmentId, vcnDisplayName, networkCidrBlock); // TODO: If you don't want to connect the created instance to the public internet @@ -103,6 +126,14 @@ public static void main(String[] args) throws Exception { vcn.getId(), vcn.getDefaultRouteTableId()); + // Wait for subnet to be available + vcnClient + .getWaiters() + .forSubnet( + GetSubnetRequest.builder().subnetId(subnet.getId()).build(), + Subnet.LifecycleState.Available) + .execute(); + // TODO: For this example we're just using the first image and shape returned. // You'll probably want different logic around which of each of these to use Instance instance = @@ -111,8 +142,8 @@ public static void main(String[] args) throws Exception { compartmentId, adToUse, instanceDisplayName, - images.get(0), - shapes.get(0), + image, + shape, subnet, sshPublicKey); @@ -233,10 +264,16 @@ public static Instance createInstance( .availabilityDomain(availabilityDomain.getName()) .compartmentId(compartmentId) .displayName(instanceName) - .imageId(image.getId()) .metadata(metadata) .shape(shape.getShape()) - .subnetId(subnet.getId()) + .sourceDetails( + InstanceSourceViaImageDetails.builder() + .imageId(image.getId()) + .build()) + .createVnicDetails( + CreateVnicDetails.builder() + .subnetId(subnet.getId()) + .build()) .build()) .build()); diff --git a/bmc-examples/src/main/java/DnsExample.java b/bmc-examples/src/main/java/DnsExample.java index 5451c5a4553..0143c3ec27a 100644 --- a/bmc-examples/src/main/java/DnsExample.java +++ b/bmc-examples/src/main/java/DnsExample.java @@ -184,6 +184,10 @@ private static void patchZoneRecords( break; } } + if (txtRecord == null) { + throw new NullPointerException( + "Expected to find a TXT record in the list of zone records"); + } final List patchAddRemoveTxtRecord = new ArrayList<>(); patchAddRemoveTxtRecord.add( @@ -230,14 +234,6 @@ private static void patchZoneRecords( // Note that currently (as of 6 February 2018) sending through rdata or a record hash as part of a // precondition is not supported - Record aRecord = null; - for (Record r : recordsAfterPatch) { - if (r.getRtype().equals("A")) { - aRecord = r; - break; - } - } - final List failingPatchOperation = new ArrayList<>(); failingPatchOperation.add( // This will fail as nothing matches this criteria RecordOperation.builder() @@ -373,7 +369,7 @@ private static void updateAndPatchDomainRecords( System.out.println(); System.out.println("Domain records after update"); System.out.println("=========================="); - System.out.println(originalDomainRecords); + System.out.println(updatedDomainRecords); Record aRecord = null; Record txtRecord = null; @@ -384,6 +380,10 @@ private static void updateAndPatchDomainRecords( txtRecord = r; } } + if (aRecord == null || txtRecord == null) { + throw new NullPointerException( + "Expected to find both an A record and a TXT record in the domain records after update"); + } /* * Patch operations at the domain level function similarly to patch operations at the zone level, in that we can send through diff --git a/bmc-examples/src/main/java/FileStorageServiceExample.java b/bmc-examples/src/main/java/FileStorageServiceExample.java new file mode 100644 index 00000000000..36da31f2e65 --- /dev/null +++ b/bmc-examples/src/main/java/FileStorageServiceExample.java @@ -0,0 +1,910 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +import com.oracle.bmc.Region; +import com.oracle.bmc.auth.AuthenticationDetailsProvider; +import com.oracle.bmc.auth.ConfigFileAuthenticationDetailsProvider; +import com.oracle.bmc.core.VirtualNetworkClient; +import com.oracle.bmc.core.model.CreateSubnetDetails; +import com.oracle.bmc.core.model.CreateVcnDetails; +import com.oracle.bmc.core.model.Subnet; +import com.oracle.bmc.core.model.Vcn; +import com.oracle.bmc.core.requests.CreateSubnetRequest; +import com.oracle.bmc.core.requests.CreateVcnRequest; +import com.oracle.bmc.core.requests.DeleteSubnetRequest; +import com.oracle.bmc.core.requests.DeleteVcnRequest; +import com.oracle.bmc.core.requests.GetPrivateIpRequest; +import com.oracle.bmc.core.requests.GetSubnetRequest; +import com.oracle.bmc.core.requests.GetVcnRequest; +import com.oracle.bmc.core.responses.CreateSubnetResponse; +import com.oracle.bmc.core.responses.CreateVcnResponse; +import com.oracle.bmc.core.responses.GetPrivateIpResponse; +import com.oracle.bmc.core.responses.GetSubnetResponse; +import com.oracle.bmc.core.responses.GetVcnResponse; +import com.oracle.bmc.filestorage.FileStorageClient; +import com.oracle.bmc.filestorage.model.CreateExportDetails; +import com.oracle.bmc.filestorage.model.CreateFileSystemDetails; +import com.oracle.bmc.filestorage.model.CreateMountTargetDetails; +import com.oracle.bmc.filestorage.model.CreateSnapshotDetails; +import com.oracle.bmc.filestorage.model.Export; +import com.oracle.bmc.filestorage.model.ExportSet; +import com.oracle.bmc.filestorage.model.ExportSummary; +import com.oracle.bmc.filestorage.model.FileSystem; +import com.oracle.bmc.filestorage.model.MountTarget; +import com.oracle.bmc.filestorage.model.Snapshot; +import com.oracle.bmc.filestorage.requests.CreateExportRequest; +import com.oracle.bmc.filestorage.requests.CreateFileSystemRequest; +import com.oracle.bmc.filestorage.requests.CreateMountTargetRequest; +import com.oracle.bmc.filestorage.requests.CreateSnapshotRequest; +import com.oracle.bmc.filestorage.requests.DeleteExportRequest; +import com.oracle.bmc.filestorage.requests.DeleteFileSystemRequest; +import com.oracle.bmc.filestorage.requests.DeleteMountTargetRequest; +import com.oracle.bmc.filestorage.requests.DeleteSnapshotRequest; +import com.oracle.bmc.filestorage.requests.GetExportRequest; +import com.oracle.bmc.filestorage.requests.GetExportSetRequest; +import com.oracle.bmc.filestorage.requests.GetFileSystemRequest; +import com.oracle.bmc.filestorage.requests.GetMountTargetRequest; +import com.oracle.bmc.filestorage.requests.GetSnapshotRequest; +import com.oracle.bmc.filestorage.requests.ListExportsRequest; +import com.oracle.bmc.filestorage.requests.ListSnapshotsRequest; +import com.oracle.bmc.filestorage.responses.CreateExportResponse; +import com.oracle.bmc.filestorage.responses.CreateFileSystemResponse; +import com.oracle.bmc.filestorage.responses.CreateMountTargetResponse; +import com.oracle.bmc.filestorage.responses.CreateSnapshotResponse; +import com.oracle.bmc.filestorage.responses.GetExportResponse; +import com.oracle.bmc.filestorage.responses.GetExportSetResponse; +import com.oracle.bmc.filestorage.responses.GetFileSystemResponse; +import com.oracle.bmc.filestorage.responses.GetMountTargetResponse; +import com.oracle.bmc.filestorage.responses.GetSnapshotResponse; +import com.oracle.bmc.filestorage.responses.ListExportsResponse; +import com.oracle.bmc.filestorage.responses.ListSnapshotsResponse; +import com.oracle.bmc.identity.IdentityClient; +import com.oracle.bmc.identity.model.AvailabilityDomain; +import com.oracle.bmc.identity.requests.ListAvailabilityDomainsRequest; +import com.oracle.bmc.identity.responses.ListAvailabilityDomainsResponse; +import com.oracle.bmc.model.BmcException; + +import java.util.List; +import java.security.SecureRandom; + +/** + * This class provides an example of how to use the File Storage service in the Java SDK. + * + * In order to demonstrate functionality for mount targets and export sets, this script will also create a VCN + * and subnet. These will be deleted at the end of the script. This script also makes some assumptions about + * the resources it will create: + * + *
        + *
      • The VCN created by this example will have a display name of java_sdk_fs_example_vcn
      • + *
      • The subnet created by this example will have a display name of: java_sdk_fs_example_subnet
      • + *
      • The VCN and subnet will have a private IP CIDR block of 10.0.0.0/16
      • + *
      • The file system export created by this example will have a path of /files
      • + *
      • + * The configuration file used by service clients will be sourced from the default + * location (~/.oci/config) and the DEFAULT profile will be used + *
      • + *
      • Resources will be created in us-phoenix-1
      • + *
      • Resources will be created in the first AD returned from the ListAvailabilityDomains call
      • + *
          + */ +public class FileStorageServiceExample { + + private static final String VCN_DISPLAY_NAME = "java_sdk_fs_example_vcn"; + private static final String SUBNET_DISPLAY_NAME = "java_sdk_fs_example_subnet"; + private static final String CIDR_BLOCK = "10.0.0.0/16"; + private static final String EXPORT_PATH = "/files"; + + private static final String CONFIG_LOCATION = "~/.oci/config"; + private static final String CONFIG_PROFILE = "DEFAULT"; + + private static final int RETRY_TOKEN_LENGTH = 32; + private static final char[] RETRY_TOKEN_CHARS = + "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".toCharArray(); + + /* + * Sometimes we can't delete the subnet straight after a mount target has been deleted + * as network resources still need to clear. If we get a conflict, try a few times before + * bailing out. + */ + private static final int DELETE_SUBNET_ATTEMPTS = 5; + + /** + * The entry point for the example. + * + * @param args Arguments to provide to the example. The following arguments are expected: + *
            + *
          • The OCID of the compartment where the file system and related resources will be created
          • + *
          • The display name of the file system
          • + *
          + */ + public static void main(String[] args) throws Exception { + if (args.length != 2) { + throw new IllegalArgumentException( + "This example expects two arguments: the first argument is a compartment OCID and the second the display name of the file system to create"); + } + + final String compartmentId = args[0]; + final String fileSystemDisplayName = args[1]; + + final AuthenticationDetailsProvider provider = + new ConfigFileAuthenticationDetailsProvider(CONFIG_LOCATION, CONFIG_PROFILE); + final FileStorageClient fsClient = new FileStorageClient(provider); + final VirtualNetworkClient vcnClient = new VirtualNetworkClient(provider); + final IdentityClient identityClient = new IdentityClient(provider); + + vcnClient.setRegion(Region.US_PHOENIX_1); + fsClient.setRegion(Region.US_PHOENIX_1); + identityClient.setRegion(Region.US_PHOENIX_1); + + Vcn vcn = null; + Subnet subnet = null; + FileSystem fileSystem = null; + MountTarget mountTarget = null; + Export export = null; + Snapshot snapshot = null; + try { + final List availabilityDomains = + getAvailabilityDomains(identityClient, compartmentId); + final AvailabilityDomain adToUse = availabilityDomains.get(0); + + // A VCN and subnet is required to create a mount target + vcn = createVcn(vcnClient, compartmentId); + subnet = createSubnet(vcnClient, compartmentId, adToUse, vcn.getId()); + System.out.println("Created VCN and subnet"); + System.out.println(); + + /* + * Here we demonstrate: + * + * - Creating a new file system + * - Creating a mount target via which the file system can be accessed. The mount target and file system must + * be in the same availability domain in order to export the file system from the mount target + * - Creating an export so that we can mount the file system (see + * https://docs.us-phoenix-1.oraclecloud.com/Content/File/Tasks/mountingfilesystems.htm for more information) + * - Creating a snapshot of the file system + * + * And we'll delete these resources when we're done + */ + fileSystem = createFileSystem(fsClient, compartmentId, fileSystemDisplayName, adToUse); + + mountTarget = + createMountTarget( + fsClient, + vcnClient, + compartmentId, + fileSystemDisplayName + "-mnt", + adToUse, + subnet); + getExportSet(fsClient, mountTarget.getExportSetId()); + + export = createExport(fsClient, fileSystem.getId(), mountTarget.getExportSetId()); + listExports(fsClient, compartmentId, fileSystem, mountTarget); + + snapshot = createSnapshot(fsClient, fileSystem); + } finally { + System.out.println("Clean Up"); + System.out.println("=========="); + + if (snapshot != null) { + deleteSnapshot(fsClient, snapshot); + System.out.println("Deleted snapshot"); + } + + if (export != null) { + deleteExport(fsClient, export); + System.out.println("Deleted export"); + } + + if (mountTarget != null) { + deleteMountTarget(fsClient, mountTarget); + System.out.println("Deleted mount target"); + } + + if (fileSystem != null) { + deleteFileSystem(fsClient, fileSystem); + System.out.println("Deleted file system"); + } + + if (subnet != null) { + deleteSubnet(vcnClient, subnet); + System.out.println("Deleted subnet"); + } + + if (vcn != null) { + deleteVcn(vcnClient, vcn); + System.out.println("Deleted VCN"); + } + + fsClient.close(); + vcnClient.close(); + identityClient.close(); + } + } + + /** + * Creates a file system and waits for it to become available. We recommend using a retry token on these requests + * so that if you receive a timeout or server error and need to retry the request you won't run the risk of + * creating multiple resources. + * + * @param fsClient the service client to use to create the File System + * @param compartmentId the OCID of the compartment where the file system will be created + * @param availabilityDomain the availability domain where the file system will be created + * + * @return the created file system + * + * @throws Exception if there is an error waiting on the file system to become available to use + */ + private static FileSystem createFileSystem( + final FileStorageClient fsClient, + final String compartmentId, + final String displayName, + final AvailabilityDomain availabilityDomain) + throws Exception { + + System.out.println("Creating file system"); + System.out.println("======================================="); + + final String retryToken = getRetryToken(RETRY_TOKEN_LENGTH); + + final CreateFileSystemDetails createDetails = + CreateFileSystemDetails.builder() + .displayName(displayName) + .compartmentId(compartmentId) + .availabilityDomain(availabilityDomain.getName()) + .build(); + + final CreateFileSystemResponse createResponse = + fsClient.createFileSystem( + CreateFileSystemRequest.builder() + .createFileSystemDetails(createDetails) + .opcRetryToken(retryToken) + .build()); + System.out.println("Created file system: " + createResponse.getFileSystem().toString()); + System.out.println(); + + final GetFileSystemResponse getFileSystemResponse = + fsClient.getWaiters() + .forFileSystem( + GetFileSystemRequest.builder() + .fileSystemId(createResponse.getFileSystem().getId()) + .build(), + FileSystem.LifecycleState.Active) + .execute(); + System.out.println( + "Waited for file system to become available: " + + getFileSystemResponse.getFileSystem().toString()); + System.out.println(); + + /* + * If we try and send through the same request with the same retry token then this will not create a + * new resource. Instead, the create response will contain the same resource which has already been + * created + */ + final CreateFileSystemResponse createWithRetryToken = + fsClient.createFileSystem( + CreateFileSystemRequest.builder() + .createFileSystemDetails(createDetails) + .opcRetryToken(retryToken) + .build()); + System.out.println( + "Try and create the file system again with the same retry token: " + + createWithRetryToken.getFileSystem().toString()); + System.out.println( + "Same resource? " + + (createWithRetryToken + .getFileSystem() + .getId() + .equals(createResponse.getFileSystem().getId()))); + + System.out.println(); + System.out.println(); + + return getFileSystemResponse.getFileSystem(); + } + + /** + * Creates a mount target and waits for it to become available. We recommend using a retry token on these requests + * so that if you receive a timeout or server error and need to retry the request you won't run the risk of + * creating multiple resources. + * + * This creates a mount target WITHOUT specifying a hostname. This means that the mount target will only be accessible + * via its private IP address. + * + * @param fsClient the service client to use to create the mount target + * @param vcnClient a client used to communiate with the Virtual Networking service + * @param compartmentId the OCID of the compartment where the file system will be created + * @param displayName the display name of the mount target + * @param availabilityDomain the availability domain where the file system will be created + * @param subnet the subnet where the mount target will reside. If no private IP address is explicitly specified at + * creation time then the mount target will be assigned a free private IP address from the subnet + * + * @return the created mount target + * + * @throws Exception if there is an error waiting on the mount target to become available to use + */ + private static MountTarget createMountTarget( + final FileStorageClient fsClient, + final VirtualNetworkClient vcnClient, + final String compartmentId, + final String displayName, + final AvailabilityDomain availabilityDomain, + final Subnet subnet) + throws Exception { + + System.out.println("Creating mount target"); + System.out.println("======================================="); + + final String retryToken = getRetryToken(RETRY_TOKEN_LENGTH); + + final CreateMountTargetDetails createDetails = + CreateMountTargetDetails.builder() + .availabilityDomain(availabilityDomain.getName()) + .subnetId(subnet.getId()) + .compartmentId(compartmentId) + .displayName(displayName) + .build(); + + final CreateMountTargetResponse createResponse = + fsClient.createMountTarget( + CreateMountTargetRequest.builder() + .createMountTargetDetails(createDetails) + .opcRetryToken(retryToken) + .build()); + System.out.println("Created mount target: " + createResponse.getMountTarget().toString()); + System.out.println(); + + final GetMountTargetResponse getMountTargetResponse = + fsClient.getWaiters() + .forMountTarget( + GetMountTargetRequest.builder() + .mountTargetId(createResponse.getMountTarget().getId()) + .build(), + MountTarget.LifecycleState.Active) + .execute(); + System.out.println( + "Waited for mount target to become available: " + + getMountTargetResponse.getMountTarget().toString()); + System.out.println(); + + /* + * If we try and send through the same request with the same retry token then this will not create a + * new resource. Instead, the create response will contain the same resource which has already been + * created + */ + final CreateMountTargetResponse createWithRetryToken = + fsClient.createMountTarget( + CreateMountTargetRequest.builder() + .createMountTargetDetails(createDetails) + .opcRetryToken(retryToken) + .build()); + System.out.println( + "Try and create the mount target again with the same retry token: " + + createWithRetryToken.getMountTarget().toString()); + System.out.println( + "Same resource? " + + (createWithRetryToken + .getMountTarget() + .getId() + .equals(createResponse.getMountTarget().getId()))); + System.out.println(); + + /* + * Note that the MountTarget contains an array of private IP OCIDs. In order to get the + * IP address of the MountTarget, we can use VirtualNetworkClient's getPrivateIp() method + */ + final String mountTargetPrivateIpId = + getMountTargetResponse.getMountTarget().getPrivateIpIds().get(0); + final GetPrivateIpResponse getPrivateIpResponse = + vcnClient.getPrivateIp( + GetPrivateIpRequest.builder().privateIpId(mountTargetPrivateIpId).build()); + System.out.println( + "Mount target private IP: " + getPrivateIpResponse.getPrivateIp().getIpAddress()); + + System.out.println(); + System.out.println(); + + return getMountTargetResponse.getMountTarget(); + } + + /** + * Retrieves the details of an export set for a mount target + * + * @param exportSetId the OCID of the export set (obtained from a MountTarget) + */ + private static void getExportSet(final FileStorageClient fsClient, final String exportSetId) { + + System.out.println("Get export set for mount target"); + System.out.println("======================================="); + + final GetExportSetResponse getResponse = + fsClient.getExportSet( + GetExportSetRequest.builder().exportSetId(exportSetId).build()); + System.out.println("Export set for mount target: " + getResponse.getExportSet()); + + System.out.println(); + System.out.println(); + } + + /** + * Creates an export and waits for it to become available. This export enables us to access the file system + * via the mount target. We recommend using a retry token on these requests + * so that if you receive a timeout or server error and need to retry the request you won't run the risk of + * creating multiple resources. + * + * There are rules around export paths and file system associations which you should review here: + * https://docs.us-phoenix-1.oraclecloud.com/api/#/en/filestorage/20171215/Export/ + * + * @param fsClient the service client to use to create the export + * @param fileSystemId the OCID of the file system to associate with the export + * @param exportSetId the OCID of the MountTarget's export set + * + * @return the created export + * + * @throws Exception if there is an error waiting on the export to become available to use + */ + private static Export createExport( + final FileStorageClient fsClient, final String fileSystemId, final String exportSetId) + throws Exception { + + System.out.println("Creating export"); + System.out.println("================="); + + final String retryToken = getRetryToken(RETRY_TOKEN_LENGTH); + + final CreateExportDetails createDetails = + CreateExportDetails.builder() + .exportSetId(exportSetId) + .fileSystemId(fileSystemId) + .path(EXPORT_PATH) + .build(); + + final CreateExportResponse createResponse = + fsClient.createExport( + CreateExportRequest.builder() + .createExportDetails(createDetails) + .opcRetryToken(retryToken) + .build()); + System.out.println("Created export: " + createResponse.getExport().toString()); + System.out.println(); + + final GetExportResponse getExportResponse = + fsClient.getWaiters() + .forExport( + GetExportRequest.builder() + .exportId(createResponse.getExport().getId()) + .build(), + Export.LifecycleState.Active) + .execute(); + System.out.println( + "Waited for export to become available: " + + getExportResponse.getExport().toString()); + System.out.println(); + + /* + * If we try and send through the same request with the same retry token then this will not create a + * new resource. Instead, the create response will contain the same resource which has already been + * created + */ + final CreateExportResponse createWithRetryToken = + fsClient.createExport( + CreateExportRequest.builder() + .createExportDetails(createDetails) + .opcRetryToken(retryToken) + .build()); + System.out.println( + "Try and create the export again with the same retry token: " + + createWithRetryToken.getExport().toString()); + System.out.println( + "Same resource? " + + (createWithRetryToken + .getExport() + .getId() + .equals(createResponse.getExport().getId()))); + + System.out.println(); + System.out.println(); + + return getExportResponse.getExport(); + } + + /** + * Creates a point in time snapshot of a file system and waits for it to become available. Note that snapshot + * names are immutable and must be unique amongst all non-DELETED snapshots for a file system. + * + * We recommend using a retry token on these requests so that if you receive a timeout or server error + * and need to retry the request you won't run the risk of creating multiple resources. + * + * @param fsClient the service client used to communicate with the File Storage service + * @param fileSystem the file system to create the snapshot of + * + * @throws Exception if there is an error waiting on the snapshot to become available + */ + private static Snapshot createSnapshot( + final FileStorageClient fsClient, final FileSystem fileSystem) throws Exception { + + System.out.println("Creating snapshot"); + System.out.println("===================="); + + final String retryToken = getRetryToken(RETRY_TOKEN_LENGTH); + + final CreateSnapshotDetails createDetails = + CreateSnapshotDetails.builder() + .fileSystemId(fileSystem.getId()) + .name("example_snapshot") + .build(); + + final CreateSnapshotResponse createSnapshotResponse = + fsClient.createSnapshot( + CreateSnapshotRequest.builder() + .createSnapshotDetails(createDetails) + .opcRetryToken(retryToken) + .build()); + System.out.println("Created snapshot: " + createSnapshotResponse.getSnapshot().toString()); + System.out.println(); + + final GetSnapshotResponse getSnapshotResponse = + fsClient.getWaiters() + .forSnapshot( + GetSnapshotRequest.builder() + .snapshotId(createSnapshotResponse.getSnapshot().getId()) + .build(), + Snapshot.LifecycleState.Active) + .execute(); + System.out.println( + "Waited for snapshot to become available: " + + getSnapshotResponse.getSnapshot().toString()); + System.out.println(); + + /* + * If we try and send through the same request with the same retry token then this will not create a + * new resource. Instead, the create response will contain the same resource which has already been + * created + */ + final CreateSnapshotResponse createWithRetryToken = + fsClient.createSnapshot( + CreateSnapshotRequest.builder() + .createSnapshotDetails(createDetails) + .opcRetryToken(retryToken) + .build()); + System.out.println( + "Try and create the snapshot again with the same retry token: " + + createWithRetryToken.getSnapshot().toString()); + System.out.println( + "Same resource? " + + (createWithRetryToken + .getSnapshot() + .getId() + .equals(createSnapshotResponse.getSnapshot().getId()))); + + System.out.println(); + System.out.println(); + + return getSnapshotResponse.getSnapshot(); + } + + /** + * Demonstrates how to list exports and using various criteria. Note that listing exports is a paginated call, so we should + * get all pages until there is no more opcNextPage token + * + * @param fsClient the service client used to communicate with the File Storage service + * @param compartmentId the OCID of the compartment which owns the resources + * @param fileSystem the file system which we're working with + * @param mountTarget the mount target which we're working with + */ + private static void listExports( + final FileStorageClient fsClient, + final String compartmentId, + final FileSystem fileSystem, + final MountTarget mountTarget) { + + final ListExportsRequest.Builder requestBuilder = + ListExportsRequest.builder().compartmentId(compartmentId); + + // The most basic call is to list exports by comparment ID + System.out.println(); + System.out.println("Listing exports by compartment ID"); + System.out.println("======================================="); + ListExportsResponse listResponse; + do { + listResponse = fsClient.listExports(requestBuilder.build()); + for (ExportSummary es : listResponse.getItems()) { + System.out.println("Export Set: " + es.toString()); + } + + requestBuilder.page(listResponse.getOpcNextPage()); + } while (listResponse.getOpcNextPage() != null); + + // We can find all exports in a given export set + requestBuilder.page(null).exportSetId(mountTarget.getExportSetId()); + System.out.println(); + System.out.println("Listing exports by export set"); + System.out.println("======================================="); + do { + listResponse = fsClient.listExports(requestBuilder.build()); + for (ExportSummary es : listResponse.getItems()) { + System.out.println("Export Set: " + es.toString()); + } + + requestBuilder.page(listResponse.getOpcNextPage()); + } while (listResponse.getOpcNextPage() != null); + + // We can find all exports for a given file system + requestBuilder.page(null).exportSetId(null).fileSystemId(fileSystem.getId()); + System.out.println(); + System.out.println("Listing exports by file system"); + System.out.println("======================================="); + do { + listResponse = fsClient.listExports(requestBuilder.build()); + for (ExportSummary es : listResponse.getItems()) { + System.out.println("Export Set: " + es.toString()); + } + + requestBuilder.page(listResponse.getOpcNextPage()); + } while (listResponse.getOpcNextPage() != null); + + System.out.println(); + System.out.println(); + } + + /** + * Deletes a snapshot and waits for it to be deleted. + * + * @param fsClient the service client used to communicate with the File Storage service + * @param snapshot the snapshot to delete + * + * @throws Exception if there is an error waiting on the export to be deleted + */ + private static void deleteSnapshot(final FileStorageClient fsClient, final Snapshot snapshot) + throws Exception { + + fsClient.deleteSnapshot( + DeleteSnapshotRequest.builder().snapshotId(snapshot.getId()).build()); + + fsClient.getWaiters() + .forSnapshot( + GetSnapshotRequest.builder().snapshotId(snapshot.getId()).build(), + Snapshot.LifecycleState.Deleted) + .execute(); + } + + /** + * Deletes an export and waits for it to be deleted. + * + * @param fsClient the service client used to communicate with the File Storage service + * @param export the export to delete + * + * @throws Exception if there is an error waiting on the export to be deleted + */ + private static void deleteExport(final FileStorageClient fsClient, final Export export) + throws Exception { + + fsClient.deleteExport(DeleteExportRequest.builder().exportId(export.getId()).build()); + + fsClient.getWaiters() + .forExport( + GetExportRequest.builder().exportId(export.getId()).build(), + Export.LifecycleState.Deleted) + .execute(); + } + + /** + * Deletes a mount target and waits for it to be deleted. + * + * @param fsClient the service client used to communicate with the File Storage service + * @param mountTarget the mount target to delete + * + * @throws Exception if there is an error waiting on the mount target to be deleted + */ + private static void deleteMountTarget( + final FileStorageClient fsClient, final MountTarget mountTarget) throws Exception { + + fsClient.deleteMountTarget( + DeleteMountTargetRequest.builder().mountTargetId(mountTarget.getId()).build()); + + fsClient.getWaiters() + .forMountTarget( + GetMountTargetRequest.builder().mountTargetId(mountTarget.getId()).build(), + MountTarget.LifecycleState.Deleted) + .execute(); + } + + /** + * Deletes a file system and waits for it to be deleted. + * + * @param fsClient the service client used to communicate with the File Storage service + * @param fileSystem the file system to delete + * + * @throws Exception if there is an error waiting on the file system to be deleted + */ + private static void deleteFileSystem( + final FileStorageClient fsClient, final FileSystem fileSystem) throws Exception { + + fsClient.deleteFileSystem( + DeleteFileSystemRequest.builder().fileSystemId(fileSystem.getId()).build()); + + fsClient.getWaiters() + .forFileSystem( + GetFileSystemRequest.builder().fileSystemId(fileSystem.getId()).build(), + FileSystem.LifecycleState.Deleted) + .execute(); + } + + /** + * Creates a VCN and waits for it to become available to use. + * + * @param vcnClient the service client to use to create the VCN + * @param compartmentId the OCID of the compartment where the VCN will be created + * + * @return the created VCN + * + * @throws Exception if there is an error waiting on the VCN to become available to use + */ + private static Vcn createVcn(final VirtualNetworkClient vcnClient, final String compartmentId) + throws Exception { + final CreateVcnResponse createVcnResponse = + vcnClient.createVcn( + CreateVcnRequest.builder() + .createVcnDetails( + CreateVcnDetails.builder() + .cidrBlock(CIDR_BLOCK) + .compartmentId(compartmentId) + .displayName(VCN_DISPLAY_NAME) + .build()) + .build()); + + final GetVcnResponse getVcnResponse = + vcnClient + .getWaiters() + .forVcn( + GetVcnRequest.builder() + .vcnId(createVcnResponse.getVcn().getId()) + .build(), + Vcn.LifecycleState.Available) + .execute(); + + return getVcnResponse.getVcn(); + } + + /** + * Deletes a VCN and waits for it to be deleted. + * + * @param vcnClient the service client to use to delete the VCN + * @param vcn the VCN to delete + * + * @throws Exception if there is an error waiting on the VCN to be deleted + */ + private static void deleteVcn(final VirtualNetworkClient vcnClient, final Vcn vcn) + throws Exception { + + vcnClient.deleteVcn(DeleteVcnRequest.builder().vcnId(vcn.getId()).build()); + + vcnClient + .getWaiters() + .forVcn( + GetVcnRequest.builder().vcnId(vcn.getId()).build(), + Vcn.LifecycleState.Terminated) + .execute(); + } + + /** + * Creates a subnet in a VCN and waits for the subnet to become available to use. + * + * @param vcnClient the service client to use to create the subnet + * @param compartmentId the OCID of the compartment which owns the VCN + * @param availabilityDomain the availability domain where the subnet will be created + * @param vcnId the ID of the VCN which will own the subnet + * + * @return the created subnet + * + * @throws Exception if there is an error waiting on the subnet to become available to use + */ + private static Subnet createSubnet( + final VirtualNetworkClient vcnClient, + final String compartmentId, + final AvailabilityDomain availabilityDomain, + final String vcnId) + throws Exception { + + final CreateSubnetResponse createSubnetResponse = + vcnClient.createSubnet( + CreateSubnetRequest.builder() + .createSubnetDetails( + CreateSubnetDetails.builder() + .availabilityDomain(availabilityDomain.getName()) + .compartmentId(compartmentId) + .displayName(SUBNET_DISPLAY_NAME) + .cidrBlock(CIDR_BLOCK) + .vcnId(vcnId) + .build()) + .build()); + + final GetSubnetResponse getSubnetResponse = + vcnClient + .getWaiters() + .forSubnet( + GetSubnetRequest.builder() + .subnetId(createSubnetResponse.getSubnet().getId()) + .build(), + Subnet.LifecycleState.Available) + .execute(); + + return getSubnetResponse.getSubnet(); + } + + /** + * Deletes a subnet and waits for it to be deleted. + * + * @param vcnClient the service client to use to delete the subnet + * @param subnet the subnet to delete + * + * @throws Exception if there is an error waiting on the subnet to be deleted + */ + private static void deleteSubnet(final VirtualNetworkClient vcnClient, final Subnet subnet) + throws Exception { + + /* + * Sometimes we can't delete the subnet straight after a mount target has been deleted + * as network resources still need to clear. If we get a conflict, try a few times before + * bailing out. + */ + int numAttempts = 0; + while (true) { + try { + vcnClient.deleteSubnet( + DeleteSubnetRequest.builder().subnetId(subnet.getId()).build()); + break; + } catch (BmcException e) { + numAttempts++; + if (e.getStatusCode() == 409 && numAttempts < DELETE_SUBNET_ATTEMPTS) { + Thread.sleep(10000L); + } else { + throw e; + } + } + } + + vcnClient + .getWaiters() + .forSubnet( + GetSubnetRequest.builder().subnetId(subnet.getId()).build(), + Subnet.LifecycleState.Terminated) + .execute(); + } + + /** + * Retrieves a list of availability domains in a compartment. + * + * @param identityClient the client to use to retrieve the availability domains + * @param compartmentId the OCID of the compartment whose availability domains we're listing + * + * @return a list of all availability domains in a compartment + */ + private static List getAvailabilityDomains( + final IdentityClient identityClient, final String compartmentId) { + + ListAvailabilityDomainsResponse listAvailabilityDomainsResponse = + identityClient.listAvailabilityDomains( + ListAvailabilityDomainsRequest.builder() + .compartmentId(compartmentId) + .build()); + + return listAvailabilityDomainsResponse.getItems(); + } + + /** + * Generates a retry token that we can use as the opc-retry-token in a request. + * + * @param tokenLength the length of the token + * + * @return A retry token + */ + private static String getRetryToken(final int tokenLength) { + final char[] c = new char[tokenLength]; + final SecureRandom random = new SecureRandom(); + for (int i = 0; i < tokenLength; i++) { + c[i] = RETRY_TOKEN_CHARS[random.nextInt(RETRY_TOKEN_CHARS.length)]; + } + + return new String(c); + } +} diff --git a/bmc-filestorage/pom.xml b/bmc-filestorage/pom.xml new file mode 100644 index 00000000000..f18b10fc4cd --- /dev/null +++ b/bmc-filestorage/pom.xml @@ -0,0 +1,25 @@ + + 4.0.0 + + + com.oracle.oci.sdk + oci-java-sdk + 1.2.28 + ../pom.xml + + + oci-java-sdk-filestorage + Oracle Cloud Infrastructure SDK - File Storage + This project contains the SDK used for Oracle Cloud Infrastructure File Storage + https://docs.us-phoenix-1.oraclecloud.com/Content/API/SDKDocs/javasdk.htm + + + + com.oracle.oci.sdk + oci-java-sdk-common + 1.2.28 + + + + \ No newline at end of file diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/FileStorage.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/FileStorage.java new file mode 100644 index 00000000000..11c18720cb1 --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/FileStorage.java @@ -0,0 +1,296 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage; + +import com.oracle.bmc.filestorage.requests.*; +import com.oracle.bmc.filestorage.responses.*; + +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +public interface FileStorage extends AutoCloseable { + + /** + * Sets the endpoint to call (ex, https://www.example.com). + * @param endpoint The endpoint of the service. + */ + void setEndpoint(String endpoint); + + /** + * Sets the region to call (ex, Region.US_PHOENIX_1). + *

          + * Note, this will call {@link #setEndpoint(String) setEndpoint} after resolving the endpoint. If the service is not available in this Region, however, an IllegalArgumentException will be raised. + * @param region The region of the service. + */ + void setRegion(com.oracle.bmc.Region region); + + /** + * Sets the region to call (ex, 'us-phoenix-1'). + *

          + * Note, this will first try to map the region ID to a known Region and call + * {@link #setRegion(Region) setRegion}. + *

          + * If no known Region could be determined, it will create an endpoint based on the + * default endpoint format ({@link Region#formatDefaultRegionEndpoint(Service, String)} + * and then call {@link #setEndpoint(String) setEndpoint}. + * @param regionId The public region ID. + */ + void setRegion(String regionId); + + /** + * Creates a new export in the specified export set, path, and + * file system. + * + * @param request The request object containing the details to send + * @return A response object containing details about the completed operation + * @throws BmcException when an error occurs. + */ + CreateExportResponse createExport(CreateExportRequest request); + + /** + * Creates a new file system in the specified compartment and + * availability domain. Instances can mount file systems in + * another availability domain, but doing so might increase + * latency when compared to mounting instances in the same + * availability domain. + *

          + * After you create a file system, you can associate it with a mount + * target. Instances can then mount the file system by connecting to the + * mount target's IP address. You can associate a file system with + * more than one mount target at a time. + *

          + * For information about access control and compartments, see + * [Overview of the IAM Service](https://docs.us-phoenix-1.oraclecloud.com/Content/Identity/Concepts/overview.htm). + *

          + * For information about availability domains, see [Regions and + * Availability Domains](https://docs.us-phoenix-1.oraclecloud.com/Content/General/Concepts/regions.htm). + * To get a list of availability domains, use the + * `ListAvailabilityDomains` operation in the Identity and Access + * Management Service API. + *

          + * All Oracle Cloud Infrastructure resources, including + * file systems, get an Oracle-assigned, unique ID called an Oracle + * Cloud Identifier (OCID). When you create a resource, you can + * find its OCID in the response. You can also retrieve a + * resource's OCID by using a List API operation on that resource + * type or by viewing the resource in the Console. + * + * @param request The request object containing the details to send + * @return A response object containing details about the completed operation + * @throws BmcException when an error occurs. + */ + CreateFileSystemResponse createFileSystem(CreateFileSystemRequest request); + + /** + * Creates a new mount target in the specified compartment and + * subnet. You can associate a file system with a mount + * target only when they exist in the same availability domain. Instances + * can connect to mount targets in another availablity domain, but + * you might see higher latency than with instances in the same + * availability domain as the mount target. + *

          + * Mount targets have one or more private IP addresses that you can + * provide as the host portion of remote target parameters in + * client mount commands. These private IP addresses are listed + * in the privateIpIds property of the mount target and are highly available. Mount + * targets also consume additional IP addresses in their subnet. + *

          + * For information about access control and compartments, see + * [Overview of the IAM + * Service](https://docs.us-phoenix-1.oraclecloud.com/Content/Identity/Concepts/overview.htm). + *

          + * For information about availability domains, see [Regions and + * Availability Domains](https://docs.us-phoenix-1.oraclecloud.com/Content/General/Concepts/regions.htm). + * To get a list of availability domains, use the + * `ListAvailabilityDomains` operation in the Identity and Access + * Management Service API. + *

          + * All Oracle Cloud Infrastructure Services resources, including + * mount targets, get an Oracle-assigned, unique ID called an + * Oracle Cloud Identifier (OCID). When you create a resource, + * you can find its OCID in the response. You can also retrieve a + * resource's OCID by using a List API operation on that resource + * type, or by viewing the resource in the Console. + * + * @param request The request object containing the details to send + * @return A response object containing details about the completed operation + * @throws BmcException when an error occurs. + */ + CreateMountTargetResponse createMountTarget(CreateMountTargetRequest request); + + /** + * Creates a new snapshot of the specified file system. You + * can access the snapshot at `.snapshot/`. + * + * @param request The request object containing the details to send + * @return A response object containing details about the completed operation + * @throws BmcException when an error occurs. + */ + CreateSnapshotResponse createSnapshot(CreateSnapshotRequest request); + + /** + * Deletes the specified export. + * + * @param request The request object containing the details to send + * @return A response object containing details about the completed operation + * @throws BmcException when an error occurs. + */ + DeleteExportResponse deleteExport(DeleteExportRequest request); + + /** + * Deletes the specified file system. Before you delete the file system, + * verify that no remaining export resources still reference it. Deleting a + * file system also deletes all of its snapshots. + * + * @param request The request object containing the details to send + * @return A response object containing details about the completed operation + * @throws BmcException when an error occurs. + */ + DeleteFileSystemResponse deleteFileSystem(DeleteFileSystemRequest request); + + /** + * Deletes the specified mount target. This operation also deletes the + * mount target's VNICs. + * + * @param request The request object containing the details to send + * @return A response object containing details about the completed operation + * @throws BmcException when an error occurs. + */ + DeleteMountTargetResponse deleteMountTarget(DeleteMountTargetRequest request); + + /** + * Deletes the specified snapshot. + * + * @param request The request object containing the details to send + * @return A response object containing details about the completed operation + * @throws BmcException when an error occurs. + */ + DeleteSnapshotResponse deleteSnapshot(DeleteSnapshotRequest request); + + /** + * Gets the specified export's information. + * @param request The request object containing the details to send + * @return A response object containing details about the completed operation + * @throws BmcException when an error occurs. + */ + GetExportResponse getExport(GetExportRequest request); + + /** + * Gets the specified export set's information. + * @param request The request object containing the details to send + * @return A response object containing details about the completed operation + * @throws BmcException when an error occurs. + */ + GetExportSetResponse getExportSet(GetExportSetRequest request); + + /** + * Gets the specified file system's information. + * @param request The request object containing the details to send + * @return A response object containing details about the completed operation + * @throws BmcException when an error occurs. + */ + GetFileSystemResponse getFileSystem(GetFileSystemRequest request); + + /** + * Gets the specified mount target's information. + * @param request The request object containing the details to send + * @return A response object containing details about the completed operation + * @throws BmcException when an error occurs. + */ + GetMountTargetResponse getMountTarget(GetMountTargetRequest request); + + /** + * Gets the specified snapshot's information. + * @param request The request object containing the details to send + * @return A response object containing details about the completed operation + * @throws BmcException when an error occurs. + */ + GetSnapshotResponse getSnapshot(GetSnapshotRequest request); + + /** + * Lists the export set resources in the specified compartment. + * + * @param request The request object containing the details to send + * @return A response object containing details about the completed operation + * @throws BmcException when an error occurs. + */ + ListExportSetsResponse listExportSets(ListExportSetsRequest request); + + /** + * Lists the export resources in the specified compartment. You must + * also specify an export set, a file system, or both. + * + * @param request The request object containing the details to send + * @return A response object containing details about the completed operation + * @throws BmcException when an error occurs. + */ + ListExportsResponse listExports(ListExportsRequest request); + + /** + * Lists the file system resources in the specified compartment. + * + * @param request The request object containing the details to send + * @return A response object containing details about the completed operation + * @throws BmcException when an error occurs. + */ + ListFileSystemsResponse listFileSystems(ListFileSystemsRequest request); + + /** + * Lists the mount target resources in the specified compartment. + * + * @param request The request object containing the details to send + * @return A response object containing details about the completed operation + * @throws BmcException when an error occurs. + */ + ListMountTargetsResponse listMountTargets(ListMountTargetsRequest request); + + /** + * Lists snapshots of the specified file system. + * + * @param request The request object containing the details to send + * @return A response object containing details about the completed operation + * @throws BmcException when an error occurs. + */ + ListSnapshotsResponse listSnapshots(ListSnapshotsRequest request); + + /** + * Updates the specified export set's information. + * @param request The request object containing the details to send + * @return A response object containing details about the completed operation + * @throws BmcException when an error occurs. + */ + UpdateExportSetResponse updateExportSet(UpdateExportSetRequest request); + + /** + * Updates the specified file system's information. + * You can use this operation to rename a file system. + * + * @param request The request object containing the details to send + * @return A response object containing details about the completed operation + * @throws BmcException when an error occurs. + */ + UpdateFileSystemResponse updateFileSystem(UpdateFileSystemRequest request); + + /** + * Updates the specified mount target's information. + * @param request The request object containing the details to send + * @return A response object containing details about the completed operation + * @throws BmcException when an error occurs. + */ + UpdateMountTargetResponse updateMountTarget(UpdateMountTargetRequest request); + + /** + * Gets the pre-configured waiters available for resources for this service. + * + * @return The service waiters. + */ + FileStorageWaiters getWaiters(); + + /** + * Gets the pre-configured paginators available for list operations in this service which may return multiple + * pages of data. These paginators provide an {@link java.lang.Iterable} interface so that service responses, or + * resources/records, can be iterated through without having to manually deal with pagination and page tokens. + * + * @return The service paginators. + */ + FileStoragePaginators getPaginators(); +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/FileStorageAsync.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/FileStorageAsync.java new file mode 100644 index 00000000000..0937c428f91 --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/FileStorageAsync.java @@ -0,0 +1,427 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage; + +import com.oracle.bmc.filestorage.requests.*; +import com.oracle.bmc.filestorage.responses.*; + +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +public interface FileStorageAsync extends AutoCloseable { + + /** + * Sets the endpoint to call (ex, https://www.example.com). + * @param endpoint The endpoint of the serice. + */ + void setEndpoint(String endpoint); + + /** + * Sets the region to call (ex, Region.US_PHOENIX_1). + *

          + * Note, this will call {@link #setEndpoint(String) setEndpoint} after resolving the endpoint. If the service is not available in this region, however, an IllegalArgumentException will be raised. + * @param region The region of the service. + */ + void setRegion(com.oracle.bmc.Region region); + + /** + * Sets the region to call (ex, 'us-phoenix-1'). + *

          + * Note, this will first try to map the region ID to a known Region and call + * {@link #setRegion(Region) setRegion}. + *

          + * If no known Region could be determined, it will create an endpoint based on the + * default endpoint format ({@link Region#formatDefaultRegionEndpoint(Service, String)} + * and then call {@link #setEndpoint(String) setEndpoint}. + * @param regionId The public region ID. + */ + void setRegion(String regionId); + + /** + * Creates a new export in the specified export set, path, and + * file system. + * + * + * @param request The request object containing the details to send + * @param handler The request handler to invoke upon completion, may be null. + * @return A Future that can be used to get the response if no AsyncHandler was + * provided. Note, if you provide an AsyncHandler and use the Future, some + * types of responses (like java.io.InputStream) may not be able to be read in + * both places as the underlying stream may only be consumed once. + */ + java.util.concurrent.Future createExport( + CreateExportRequest request, + com.oracle.bmc.responses.AsyncHandler + handler); + + /** + * Creates a new file system in the specified compartment and + * availability domain. Instances can mount file systems in + * another availability domain, but doing so might increase + * latency when compared to mounting instances in the same + * availability domain. + *

          + * After you create a file system, you can associate it with a mount + * target. Instances can then mount the file system by connecting to the + * mount target's IP address. You can associate a file system with + * more than one mount target at a time. + *

          + * For information about access control and compartments, see + * [Overview of the IAM Service](https://docs.us-phoenix-1.oraclecloud.com/Content/Identity/Concepts/overview.htm). + *

          + * For information about availability domains, see [Regions and + * Availability Domains](https://docs.us-phoenix-1.oraclecloud.com/Content/General/Concepts/regions.htm). + * To get a list of availability domains, use the + * `ListAvailabilityDomains` operation in the Identity and Access + * Management Service API. + *

          + * All Oracle Cloud Infrastructure resources, including + * file systems, get an Oracle-assigned, unique ID called an Oracle + * Cloud Identifier (OCID). When you create a resource, you can + * find its OCID in the response. You can also retrieve a + * resource's OCID by using a List API operation on that resource + * type or by viewing the resource in the Console. + * + * + * @param request The request object containing the details to send + * @param handler The request handler to invoke upon completion, may be null. + * @return A Future that can be used to get the response if no AsyncHandler was + * provided. Note, if you provide an AsyncHandler and use the Future, some + * types of responses (like java.io.InputStream) may not be able to be read in + * both places as the underlying stream may only be consumed once. + */ + java.util.concurrent.Future createFileSystem( + CreateFileSystemRequest request, + com.oracle.bmc.responses.AsyncHandler + handler); + + /** + * Creates a new mount target in the specified compartment and + * subnet. You can associate a file system with a mount + * target only when they exist in the same availability domain. Instances + * can connect to mount targets in another availablity domain, but + * you might see higher latency than with instances in the same + * availability domain as the mount target. + *

          + * Mount targets have one or more private IP addresses that you can + * provide as the host portion of remote target parameters in + * client mount commands. These private IP addresses are listed + * in the privateIpIds property of the mount target and are highly available. Mount + * targets also consume additional IP addresses in their subnet. + *

          + * For information about access control and compartments, see + * [Overview of the IAM + * Service](https://docs.us-phoenix-1.oraclecloud.com/Content/Identity/Concepts/overview.htm). + *

          + * For information about availability domains, see [Regions and + * Availability Domains](https://docs.us-phoenix-1.oraclecloud.com/Content/General/Concepts/regions.htm). + * To get a list of availability domains, use the + * `ListAvailabilityDomains` operation in the Identity and Access + * Management Service API. + *

          + * All Oracle Cloud Infrastructure Services resources, including + * mount targets, get an Oracle-assigned, unique ID called an + * Oracle Cloud Identifier (OCID). When you create a resource, + * you can find its OCID in the response. You can also retrieve a + * resource's OCID by using a List API operation on that resource + * type, or by viewing the resource in the Console. + * + * + * @param request The request object containing the details to send + * @param handler The request handler to invoke upon completion, may be null. + * @return A Future that can be used to get the response if no AsyncHandler was + * provided. Note, if you provide an AsyncHandler and use the Future, some + * types of responses (like java.io.InputStream) may not be able to be read in + * both places as the underlying stream may only be consumed once. + */ + java.util.concurrent.Future createMountTarget( + CreateMountTargetRequest request, + com.oracle.bmc.responses.AsyncHandler< + CreateMountTargetRequest, CreateMountTargetResponse> + handler); + + /** + * Creates a new snapshot of the specified file system. You + * can access the snapshot at `.snapshot/`. + * + * + * @param request The request object containing the details to send + * @param handler The request handler to invoke upon completion, may be null. + * @return A Future that can be used to get the response if no AsyncHandler was + * provided. Note, if you provide an AsyncHandler and use the Future, some + * types of responses (like java.io.InputStream) may not be able to be read in + * both places as the underlying stream may only be consumed once. + */ + java.util.concurrent.Future createSnapshot( + CreateSnapshotRequest request, + com.oracle.bmc.responses.AsyncHandler + handler); + + /** + * Deletes the specified export. + * + * + * @param request The request object containing the details to send + * @param handler The request handler to invoke upon completion, may be null. + * @return A Future that can be used to get the response if no AsyncHandler was + * provided. Note, if you provide an AsyncHandler and use the Future, some + * types of responses (like java.io.InputStream) may not be able to be read in + * both places as the underlying stream may only be consumed once. + */ + java.util.concurrent.Future deleteExport( + DeleteExportRequest request, + com.oracle.bmc.responses.AsyncHandler + handler); + + /** + * Deletes the specified file system. Before you delete the file system, + * verify that no remaining export resources still reference it. Deleting a + * file system also deletes all of its snapshots. + * + * + * @param request The request object containing the details to send + * @param handler The request handler to invoke upon completion, may be null. + * @return A Future that can be used to get the response if no AsyncHandler was + * provided. Note, if you provide an AsyncHandler and use the Future, some + * types of responses (like java.io.InputStream) may not be able to be read in + * both places as the underlying stream may only be consumed once. + */ + java.util.concurrent.Future deleteFileSystem( + DeleteFileSystemRequest request, + com.oracle.bmc.responses.AsyncHandler + handler); + + /** + * Deletes the specified mount target. This operation also deletes the + * mount target's VNICs. + * + * + * @param request The request object containing the details to send + * @param handler The request handler to invoke upon completion, may be null. + * @return A Future that can be used to get the response if no AsyncHandler was + * provided. Note, if you provide an AsyncHandler and use the Future, some + * types of responses (like java.io.InputStream) may not be able to be read in + * both places as the underlying stream may only be consumed once. + */ + java.util.concurrent.Future deleteMountTarget( + DeleteMountTargetRequest request, + com.oracle.bmc.responses.AsyncHandler< + DeleteMountTargetRequest, DeleteMountTargetResponse> + handler); + + /** + * Deletes the specified snapshot. + * + * + * @param request The request object containing the details to send + * @param handler The request handler to invoke upon completion, may be null. + * @return A Future that can be used to get the response if no AsyncHandler was + * provided. Note, if you provide an AsyncHandler and use the Future, some + * types of responses (like java.io.InputStream) may not be able to be read in + * both places as the underlying stream may only be consumed once. + */ + java.util.concurrent.Future deleteSnapshot( + DeleteSnapshotRequest request, + com.oracle.bmc.responses.AsyncHandler + handler); + + /** + * Gets the specified export's information. + * + * @param request The request object containing the details to send + * @param handler The request handler to invoke upon completion, may be null. + * @return A Future that can be used to get the response if no AsyncHandler was + * provided. Note, if you provide an AsyncHandler and use the Future, some + * types of responses (like java.io.InputStream) may not be able to be read in + * both places as the underlying stream may only be consumed once. + */ + java.util.concurrent.Future getExport( + GetExportRequest request, + com.oracle.bmc.responses.AsyncHandler handler); + + /** + * Gets the specified export set's information. + * + * @param request The request object containing the details to send + * @param handler The request handler to invoke upon completion, may be null. + * @return A Future that can be used to get the response if no AsyncHandler was + * provided. Note, if you provide an AsyncHandler and use the Future, some + * types of responses (like java.io.InputStream) may not be able to be read in + * both places as the underlying stream may only be consumed once. + */ + java.util.concurrent.Future getExportSet( + GetExportSetRequest request, + com.oracle.bmc.responses.AsyncHandler + handler); + + /** + * Gets the specified file system's information. + * + * @param request The request object containing the details to send + * @param handler The request handler to invoke upon completion, may be null. + * @return A Future that can be used to get the response if no AsyncHandler was + * provided. Note, if you provide an AsyncHandler and use the Future, some + * types of responses (like java.io.InputStream) may not be able to be read in + * both places as the underlying stream may only be consumed once. + */ + java.util.concurrent.Future getFileSystem( + GetFileSystemRequest request, + com.oracle.bmc.responses.AsyncHandler + handler); + + /** + * Gets the specified mount target's information. + * + * @param request The request object containing the details to send + * @param handler The request handler to invoke upon completion, may be null. + * @return A Future that can be used to get the response if no AsyncHandler was + * provided. Note, if you provide an AsyncHandler and use the Future, some + * types of responses (like java.io.InputStream) may not be able to be read in + * both places as the underlying stream may only be consumed once. + */ + java.util.concurrent.Future getMountTarget( + GetMountTargetRequest request, + com.oracle.bmc.responses.AsyncHandler + handler); + + /** + * Gets the specified snapshot's information. + * + * @param request The request object containing the details to send + * @param handler The request handler to invoke upon completion, may be null. + * @return A Future that can be used to get the response if no AsyncHandler was + * provided. Note, if you provide an AsyncHandler and use the Future, some + * types of responses (like java.io.InputStream) may not be able to be read in + * both places as the underlying stream may only be consumed once. + */ + java.util.concurrent.Future getSnapshot( + GetSnapshotRequest request, + com.oracle.bmc.responses.AsyncHandler handler); + + /** + * Lists the export set resources in the specified compartment. + * + * + * @param request The request object containing the details to send + * @param handler The request handler to invoke upon completion, may be null. + * @return A Future that can be used to get the response if no AsyncHandler was + * provided. Note, if you provide an AsyncHandler and use the Future, some + * types of responses (like java.io.InputStream) may not be able to be read in + * both places as the underlying stream may only be consumed once. + */ + java.util.concurrent.Future listExportSets( + ListExportSetsRequest request, + com.oracle.bmc.responses.AsyncHandler + handler); + + /** + * Lists the export resources in the specified compartment. You must + * also specify an export set, a file system, or both. + * + * + * @param request The request object containing the details to send + * @param handler The request handler to invoke upon completion, may be null. + * @return A Future that can be used to get the response if no AsyncHandler was + * provided. Note, if you provide an AsyncHandler and use the Future, some + * types of responses (like java.io.InputStream) may not be able to be read in + * both places as the underlying stream may only be consumed once. + */ + java.util.concurrent.Future listExports( + ListExportsRequest request, + com.oracle.bmc.responses.AsyncHandler handler); + + /** + * Lists the file system resources in the specified compartment. + * + * + * @param request The request object containing the details to send + * @param handler The request handler to invoke upon completion, may be null. + * @return A Future that can be used to get the response if no AsyncHandler was + * provided. Note, if you provide an AsyncHandler and use the Future, some + * types of responses (like java.io.InputStream) may not be able to be read in + * both places as the underlying stream may only be consumed once. + */ + java.util.concurrent.Future listFileSystems( + ListFileSystemsRequest request, + com.oracle.bmc.responses.AsyncHandler + handler); + + /** + * Lists the mount target resources in the specified compartment. + * + * + * @param request The request object containing the details to send + * @param handler The request handler to invoke upon completion, may be null. + * @return A Future that can be used to get the response if no AsyncHandler was + * provided. Note, if you provide an AsyncHandler and use the Future, some + * types of responses (like java.io.InputStream) may not be able to be read in + * both places as the underlying stream may only be consumed once. + */ + java.util.concurrent.Future listMountTargets( + ListMountTargetsRequest request, + com.oracle.bmc.responses.AsyncHandler + handler); + + /** + * Lists snapshots of the specified file system. + * + * + * @param request The request object containing the details to send + * @param handler The request handler to invoke upon completion, may be null. + * @return A Future that can be used to get the response if no AsyncHandler was + * provided. Note, if you provide an AsyncHandler and use the Future, some + * types of responses (like java.io.InputStream) may not be able to be read in + * both places as the underlying stream may only be consumed once. + */ + java.util.concurrent.Future listSnapshots( + ListSnapshotsRequest request, + com.oracle.bmc.responses.AsyncHandler + handler); + + /** + * Updates the specified export set's information. + * + * @param request The request object containing the details to send + * @param handler The request handler to invoke upon completion, may be null. + * @return A Future that can be used to get the response if no AsyncHandler was + * provided. Note, if you provide an AsyncHandler and use the Future, some + * types of responses (like java.io.InputStream) may not be able to be read in + * both places as the underlying stream may only be consumed once. + */ + java.util.concurrent.Future updateExportSet( + UpdateExportSetRequest request, + com.oracle.bmc.responses.AsyncHandler + handler); + + /** + * Updates the specified file system's information. + * You can use this operation to rename a file system. + * + * + * @param request The request object containing the details to send + * @param handler The request handler to invoke upon completion, may be null. + * @return A Future that can be used to get the response if no AsyncHandler was + * provided. Note, if you provide an AsyncHandler and use the Future, some + * types of responses (like java.io.InputStream) may not be able to be read in + * both places as the underlying stream may only be consumed once. + */ + java.util.concurrent.Future updateFileSystem( + UpdateFileSystemRequest request, + com.oracle.bmc.responses.AsyncHandler + handler); + + /** + * Updates the specified mount target's information. + * + * @param request The request object containing the details to send + * @param handler The request handler to invoke upon completion, may be null. + * @return A Future that can be used to get the response if no AsyncHandler was + * provided. Note, if you provide an AsyncHandler and use the Future, some + * types of responses (like java.io.InputStream) may not be able to be read in + * both places as the underlying stream may only be consumed once. + */ + java.util.concurrent.Future updateMountTarget( + UpdateMountTargetRequest request, + com.oracle.bmc.responses.AsyncHandler< + UpdateMountTargetRequest, UpdateMountTargetResponse> + handler); +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/FileStorageAsyncClient.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/FileStorageAsyncClient.java new file mode 100644 index 00000000000..75ed4b129ab --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/FileStorageAsyncClient.java @@ -0,0 +1,1700 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage; + +import java.util.Locale; +import com.oracle.bmc.filestorage.internal.http.*; +import com.oracle.bmc.filestorage.requests.*; +import com.oracle.bmc.filestorage.responses.*; + +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.extern.slf4j.Slf4j +public class FileStorageAsyncClient implements FileStorageAsync { + /** + * Service instance for FileStorage. + */ + public static final com.oracle.bmc.Service SERVICE = + com.oracle.bmc.Services.create("FILESTORAGE", "filestorage"); + + @lombok.Getter(value = lombok.AccessLevel.PACKAGE) + private final com.oracle.bmc.http.internal.RestClient client; + + private final com.oracle.bmc.auth.AbstractAuthenticationDetailsProvider + authenticationDetailsProvider; + + /** + * Creates a new service instance using the given authentication provider. + * @param authenticationDetailsProvider The authentication details provider, required. + */ + public FileStorageAsyncClient( + com.oracle.bmc.auth.BasicAuthenticationDetailsProvider authenticationDetailsProvider) { + this(authenticationDetailsProvider, null); + } + + /** + * Creates a new service instance using the given authentication provider and client configuration. + * @param authenticationDetailsProvider The authentication details provider, required. + * @param configuration The client configuration, optional. + */ + public FileStorageAsyncClient( + com.oracle.bmc.auth.BasicAuthenticationDetailsProvider authenticationDetailsProvider, + com.oracle.bmc.ClientConfiguration configuration) { + this(authenticationDetailsProvider, configuration, null); + } + + /** + * Creates a new service instance using the given authentication provider and client configuration. Additionally, + * a Consumer can be provided that will be invoked whenever a REST Client is created to allow for additional configuration/customization. + * @param authenticationDetailsProvider The authentication details provider, required. + * @param configuration The client configuration, optional. + * @param clientConfigurator ClientConfigurator that will be invoked for additional configuration of a REST client, optional. + */ + public FileStorageAsyncClient( + com.oracle.bmc.auth.BasicAuthenticationDetailsProvider authenticationDetailsProvider, + com.oracle.bmc.ClientConfiguration configuration, + com.oracle.bmc.http.ClientConfigurator clientConfigurator) { + this( + authenticationDetailsProvider, + configuration, + clientConfigurator, + new com.oracle.bmc.http.signing.internal.DefaultRequestSignerFactory( + com.oracle.bmc.http.signing.SigningStrategy.STANDARD)); + } + + /** + * Creates a new service instance using the given authentication provider and client configuration. Additionally, + * a Consumer can be provided that will be invoked whenever a REST Client is created to allow for additional configuration/customization. + *

          + * This is an advanced constructor for clients that want to take control over how requests are signed. + * @param authenticationDetailsProvider The authentication details provider, required. + * @param configuration The client configuration, optional. + * @param clientConfigurator ClientConfigurator that will be invoked for additional configuration of a REST client, optional. + * @param requestSignerFactory The request signer factory used to create the request signer for this service. + */ + public FileStorageAsyncClient( + com.oracle.bmc.auth.AbstractAuthenticationDetailsProvider authenticationDetailsProvider, + com.oracle.bmc.ClientConfiguration configuration, + com.oracle.bmc.http.ClientConfigurator clientConfigurator, + com.oracle.bmc.http.signing.RequestSignerFactory requestSignerFactory) { + this.authenticationDetailsProvider = authenticationDetailsProvider; + com.oracle.bmc.http.internal.RestClientFactory restClientFactory = + com.oracle.bmc.http.internal.RestClientFactoryBuilder.builder() + .clientConfigurator(clientConfigurator) + .build(); + com.oracle.bmc.http.signing.RequestSigner requestSigner = + requestSignerFactory.createRequestSigner( + SERVICE, this.authenticationDetailsProvider); + this.client = restClientFactory.create(requestSigner, configuration); + + if (this.authenticationDetailsProvider instanceof com.oracle.bmc.auth.RegionProvider) { + com.oracle.bmc.auth.RegionProvider provider = + (com.oracle.bmc.auth.RegionProvider) this.authenticationDetailsProvider; + + if (provider.getRegion() != null) { + this.setRegion(provider.getRegion()); + } + } + } + + @Override + public void setEndpoint(String endpoint) { + LOG.info("Setting endpoint to {}", endpoint); + client.setEndpoint(endpoint); + } + + @Override + public void setRegion(com.oracle.bmc.Region region) { + com.google.common.base.Optional endpoint = region.getEndpoint(SERVICE); + if (endpoint.isPresent()) { + setEndpoint(endpoint.get()); + } else { + throw new IllegalArgumentException( + "Endpoint for " + SERVICE + " is not known in region " + region); + } + } + + @Override + public void setRegion(String regionId) { + regionId = regionId.toLowerCase(Locale.ENGLISH); + try { + com.oracle.bmc.Region region = com.oracle.bmc.Region.fromRegionId(regionId); + setRegion(region); + } catch (IllegalArgumentException e) { + LOG.info("Unknown regionId '{}', falling back to default endpoint format", regionId); + String endpoint = com.oracle.bmc.Region.formatDefaultRegionEndpoint(SERVICE, regionId); + setEndpoint(endpoint); + } + } + + @Override + public void close() { + client.close(); + } + + @Override + public java.util.concurrent.Future createExport( + final CreateExportRequest request, + final com.oracle.bmc.responses.AsyncHandler + handler) { + LOG.trace("Called async createExport"); + final CreateExportRequest interceptedRequest = + CreateExportConverter.interceptRequest(request); + final com.oracle.bmc.http.internal.WrappedInvocationBuilder ib = + CreateExportConverter.fromRequest(client, interceptedRequest); + final com.google.common.base.Function + transformer = CreateExportConverter.fromResponse(); + + com.oracle.bmc.responses.AsyncHandler + handlerToUse = handler; + if (handler != null + && this.authenticationDetailsProvider + instanceof + com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + handlerToUse = + new com.oracle.bmc.util.internal.InstancePrincipalsWrappingAsyncHandler< + CreateExportRequest, CreateExportResponse>( + (com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) + this.authenticationDetailsProvider, + handler) { + @Override + public void retryCall() { + final com.oracle.bmc.util.internal.Consumer + onSuccess = + new com.oracle.bmc.http.internal.SuccessConsumer<>( + this, transformer, interceptedRequest); + final com.oracle.bmc.util.internal.Consumer onError = + new com.oracle.bmc.http.internal.ErrorConsumer<>( + this, interceptedRequest); + client.post( + ib, + interceptedRequest.getCreateExportDetails(), + interceptedRequest, + onSuccess, + onError); + } + }; + } + + final com.oracle.bmc.util.internal.Consumer onSuccess = + new com.oracle.bmc.http.internal.SuccessConsumer<>( + handlerToUse, transformer, interceptedRequest); + final com.oracle.bmc.util.internal.Consumer onError = + new com.oracle.bmc.http.internal.ErrorConsumer<>(handlerToUse, interceptedRequest); + + java.util.concurrent.Future responseFuture = + client.post( + ib, + interceptedRequest.getCreateExportDetails(), + interceptedRequest, + onSuccess, + onError); + + if (this.authenticationDetailsProvider + instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + return new com.oracle.bmc.util.internal.InstancePrincipalsBasedTransformingFuture< + javax.ws.rs.core.Response, CreateExportResponse>( + responseFuture, + transformer, + (com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) + this.authenticationDetailsProvider, + new com.google.common.base.Supplier< + java.util.concurrent.Future>() { + @Override + public java.util.concurrent.Future get() { + return client.post( + ib, + interceptedRequest.getCreateExportDetails(), + interceptedRequest, + onSuccess, + onError); + } + }); + } else { + return new com.oracle.bmc.util.internal.TransformingFuture<>( + responseFuture, transformer); + } + } + + @Override + public java.util.concurrent.Future createFileSystem( + final CreateFileSystemRequest request, + final com.oracle.bmc.responses.AsyncHandler< + CreateFileSystemRequest, CreateFileSystemResponse> + handler) { + LOG.trace("Called async createFileSystem"); + final CreateFileSystemRequest interceptedRequest = + CreateFileSystemConverter.interceptRequest(request); + final com.oracle.bmc.http.internal.WrappedInvocationBuilder ib = + CreateFileSystemConverter.fromRequest(client, interceptedRequest); + final com.google.common.base.Function + transformer = CreateFileSystemConverter.fromResponse(); + + com.oracle.bmc.responses.AsyncHandler + handlerToUse = handler; + if (handler != null + && this.authenticationDetailsProvider + instanceof + com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + handlerToUse = + new com.oracle.bmc.util.internal.InstancePrincipalsWrappingAsyncHandler< + CreateFileSystemRequest, CreateFileSystemResponse>( + (com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) + this.authenticationDetailsProvider, + handler) { + @Override + public void retryCall() { + final com.oracle.bmc.util.internal.Consumer + onSuccess = + new com.oracle.bmc.http.internal.SuccessConsumer<>( + this, transformer, interceptedRequest); + final com.oracle.bmc.util.internal.Consumer onError = + new com.oracle.bmc.http.internal.ErrorConsumer<>( + this, interceptedRequest); + client.post( + ib, + interceptedRequest.getCreateFileSystemDetails(), + interceptedRequest, + onSuccess, + onError); + } + }; + } + + final com.oracle.bmc.util.internal.Consumer onSuccess = + new com.oracle.bmc.http.internal.SuccessConsumer<>( + handlerToUse, transformer, interceptedRequest); + final com.oracle.bmc.util.internal.Consumer onError = + new com.oracle.bmc.http.internal.ErrorConsumer<>(handlerToUse, interceptedRequest); + + java.util.concurrent.Future responseFuture = + client.post( + ib, + interceptedRequest.getCreateFileSystemDetails(), + interceptedRequest, + onSuccess, + onError); + + if (this.authenticationDetailsProvider + instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + return new com.oracle.bmc.util.internal.InstancePrincipalsBasedTransformingFuture< + javax.ws.rs.core.Response, CreateFileSystemResponse>( + responseFuture, + transformer, + (com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) + this.authenticationDetailsProvider, + new com.google.common.base.Supplier< + java.util.concurrent.Future>() { + @Override + public java.util.concurrent.Future get() { + return client.post( + ib, + interceptedRequest.getCreateFileSystemDetails(), + interceptedRequest, + onSuccess, + onError); + } + }); + } else { + return new com.oracle.bmc.util.internal.TransformingFuture<>( + responseFuture, transformer); + } + } + + @Override + public java.util.concurrent.Future createMountTarget( + final CreateMountTargetRequest request, + final com.oracle.bmc.responses.AsyncHandler< + CreateMountTargetRequest, CreateMountTargetResponse> + handler) { + LOG.trace("Called async createMountTarget"); + final CreateMountTargetRequest interceptedRequest = + CreateMountTargetConverter.interceptRequest(request); + final com.oracle.bmc.http.internal.WrappedInvocationBuilder ib = + CreateMountTargetConverter.fromRequest(client, interceptedRequest); + final com.google.common.base.Function + transformer = CreateMountTargetConverter.fromResponse(); + + com.oracle.bmc.responses.AsyncHandler + handlerToUse = handler; + if (handler != null + && this.authenticationDetailsProvider + instanceof + com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + handlerToUse = + new com.oracle.bmc.util.internal.InstancePrincipalsWrappingAsyncHandler< + CreateMountTargetRequest, CreateMountTargetResponse>( + (com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) + this.authenticationDetailsProvider, + handler) { + @Override + public void retryCall() { + final com.oracle.bmc.util.internal.Consumer + onSuccess = + new com.oracle.bmc.http.internal.SuccessConsumer<>( + this, transformer, interceptedRequest); + final com.oracle.bmc.util.internal.Consumer onError = + new com.oracle.bmc.http.internal.ErrorConsumer<>( + this, interceptedRequest); + client.post( + ib, + interceptedRequest.getCreateMountTargetDetails(), + interceptedRequest, + onSuccess, + onError); + } + }; + } + + final com.oracle.bmc.util.internal.Consumer onSuccess = + new com.oracle.bmc.http.internal.SuccessConsumer<>( + handlerToUse, transformer, interceptedRequest); + final com.oracle.bmc.util.internal.Consumer onError = + new com.oracle.bmc.http.internal.ErrorConsumer<>(handlerToUse, interceptedRequest); + + java.util.concurrent.Future responseFuture = + client.post( + ib, + interceptedRequest.getCreateMountTargetDetails(), + interceptedRequest, + onSuccess, + onError); + + if (this.authenticationDetailsProvider + instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + return new com.oracle.bmc.util.internal.InstancePrincipalsBasedTransformingFuture< + javax.ws.rs.core.Response, CreateMountTargetResponse>( + responseFuture, + transformer, + (com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) + this.authenticationDetailsProvider, + new com.google.common.base.Supplier< + java.util.concurrent.Future>() { + @Override + public java.util.concurrent.Future get() { + return client.post( + ib, + interceptedRequest.getCreateMountTargetDetails(), + interceptedRequest, + onSuccess, + onError); + } + }); + } else { + return new com.oracle.bmc.util.internal.TransformingFuture<>( + responseFuture, transformer); + } + } + + @Override + public java.util.concurrent.Future createSnapshot( + final CreateSnapshotRequest request, + final com.oracle.bmc.responses.AsyncHandler< + CreateSnapshotRequest, CreateSnapshotResponse> + handler) { + LOG.trace("Called async createSnapshot"); + final CreateSnapshotRequest interceptedRequest = + CreateSnapshotConverter.interceptRequest(request); + final com.oracle.bmc.http.internal.WrappedInvocationBuilder ib = + CreateSnapshotConverter.fromRequest(client, interceptedRequest); + final com.google.common.base.Function + transformer = CreateSnapshotConverter.fromResponse(); + + com.oracle.bmc.responses.AsyncHandler + handlerToUse = handler; + if (handler != null + && this.authenticationDetailsProvider + instanceof + com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + handlerToUse = + new com.oracle.bmc.util.internal.InstancePrincipalsWrappingAsyncHandler< + CreateSnapshotRequest, CreateSnapshotResponse>( + (com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) + this.authenticationDetailsProvider, + handler) { + @Override + public void retryCall() { + final com.oracle.bmc.util.internal.Consumer + onSuccess = + new com.oracle.bmc.http.internal.SuccessConsumer<>( + this, transformer, interceptedRequest); + final com.oracle.bmc.util.internal.Consumer onError = + new com.oracle.bmc.http.internal.ErrorConsumer<>( + this, interceptedRequest); + client.post( + ib, + interceptedRequest.getCreateSnapshotDetails(), + interceptedRequest, + onSuccess, + onError); + } + }; + } + + final com.oracle.bmc.util.internal.Consumer onSuccess = + new com.oracle.bmc.http.internal.SuccessConsumer<>( + handlerToUse, transformer, interceptedRequest); + final com.oracle.bmc.util.internal.Consumer onError = + new com.oracle.bmc.http.internal.ErrorConsumer<>(handlerToUse, interceptedRequest); + + java.util.concurrent.Future responseFuture = + client.post( + ib, + interceptedRequest.getCreateSnapshotDetails(), + interceptedRequest, + onSuccess, + onError); + + if (this.authenticationDetailsProvider + instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + return new com.oracle.bmc.util.internal.InstancePrincipalsBasedTransformingFuture< + javax.ws.rs.core.Response, CreateSnapshotResponse>( + responseFuture, + transformer, + (com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) + this.authenticationDetailsProvider, + new com.google.common.base.Supplier< + java.util.concurrent.Future>() { + @Override + public java.util.concurrent.Future get() { + return client.post( + ib, + interceptedRequest.getCreateSnapshotDetails(), + interceptedRequest, + onSuccess, + onError); + } + }); + } else { + return new com.oracle.bmc.util.internal.TransformingFuture<>( + responseFuture, transformer); + } + } + + @Override + public java.util.concurrent.Future deleteExport( + final DeleteExportRequest request, + final com.oracle.bmc.responses.AsyncHandler + handler) { + LOG.trace("Called async deleteExport"); + final DeleteExportRequest interceptedRequest = + DeleteExportConverter.interceptRequest(request); + final com.oracle.bmc.http.internal.WrappedInvocationBuilder ib = + DeleteExportConverter.fromRequest(client, interceptedRequest); + final com.google.common.base.Function + transformer = DeleteExportConverter.fromResponse(); + + com.oracle.bmc.responses.AsyncHandler + handlerToUse = handler; + if (handler != null + && this.authenticationDetailsProvider + instanceof + com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + handlerToUse = + new com.oracle.bmc.util.internal.InstancePrincipalsWrappingAsyncHandler< + DeleteExportRequest, DeleteExportResponse>( + (com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) + this.authenticationDetailsProvider, + handler) { + @Override + public void retryCall() { + final com.oracle.bmc.util.internal.Consumer + onSuccess = + new com.oracle.bmc.http.internal.SuccessConsumer<>( + this, transformer, interceptedRequest); + final com.oracle.bmc.util.internal.Consumer onError = + new com.oracle.bmc.http.internal.ErrorConsumer<>( + this, interceptedRequest); + client.delete(ib, interceptedRequest, onSuccess, onError); + } + }; + } + + final com.oracle.bmc.util.internal.Consumer onSuccess = + new com.oracle.bmc.http.internal.SuccessConsumer<>( + handlerToUse, transformer, interceptedRequest); + final com.oracle.bmc.util.internal.Consumer onError = + new com.oracle.bmc.http.internal.ErrorConsumer<>(handlerToUse, interceptedRequest); + + java.util.concurrent.Future responseFuture = + client.delete(ib, interceptedRequest, onSuccess, onError); + + if (this.authenticationDetailsProvider + instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + return new com.oracle.bmc.util.internal.InstancePrincipalsBasedTransformingFuture< + javax.ws.rs.core.Response, DeleteExportResponse>( + responseFuture, + transformer, + (com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) + this.authenticationDetailsProvider, + new com.google.common.base.Supplier< + java.util.concurrent.Future>() { + @Override + public java.util.concurrent.Future get() { + return client.delete(ib, interceptedRequest, onSuccess, onError); + } + }); + } else { + return new com.oracle.bmc.util.internal.TransformingFuture<>( + responseFuture, transformer); + } + } + + @Override + public java.util.concurrent.Future deleteFileSystem( + final DeleteFileSystemRequest request, + final com.oracle.bmc.responses.AsyncHandler< + DeleteFileSystemRequest, DeleteFileSystemResponse> + handler) { + LOG.trace("Called async deleteFileSystem"); + final DeleteFileSystemRequest interceptedRequest = + DeleteFileSystemConverter.interceptRequest(request); + final com.oracle.bmc.http.internal.WrappedInvocationBuilder ib = + DeleteFileSystemConverter.fromRequest(client, interceptedRequest); + final com.google.common.base.Function + transformer = DeleteFileSystemConverter.fromResponse(); + + com.oracle.bmc.responses.AsyncHandler + handlerToUse = handler; + if (handler != null + && this.authenticationDetailsProvider + instanceof + com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + handlerToUse = + new com.oracle.bmc.util.internal.InstancePrincipalsWrappingAsyncHandler< + DeleteFileSystemRequest, DeleteFileSystemResponse>( + (com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) + this.authenticationDetailsProvider, + handler) { + @Override + public void retryCall() { + final com.oracle.bmc.util.internal.Consumer + onSuccess = + new com.oracle.bmc.http.internal.SuccessConsumer<>( + this, transformer, interceptedRequest); + final com.oracle.bmc.util.internal.Consumer onError = + new com.oracle.bmc.http.internal.ErrorConsumer<>( + this, interceptedRequest); + client.delete(ib, interceptedRequest, onSuccess, onError); + } + }; + } + + final com.oracle.bmc.util.internal.Consumer onSuccess = + new com.oracle.bmc.http.internal.SuccessConsumer<>( + handlerToUse, transformer, interceptedRequest); + final com.oracle.bmc.util.internal.Consumer onError = + new com.oracle.bmc.http.internal.ErrorConsumer<>(handlerToUse, interceptedRequest); + + java.util.concurrent.Future responseFuture = + client.delete(ib, interceptedRequest, onSuccess, onError); + + if (this.authenticationDetailsProvider + instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + return new com.oracle.bmc.util.internal.InstancePrincipalsBasedTransformingFuture< + javax.ws.rs.core.Response, DeleteFileSystemResponse>( + responseFuture, + transformer, + (com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) + this.authenticationDetailsProvider, + new com.google.common.base.Supplier< + java.util.concurrent.Future>() { + @Override + public java.util.concurrent.Future get() { + return client.delete(ib, interceptedRequest, onSuccess, onError); + } + }); + } else { + return new com.oracle.bmc.util.internal.TransformingFuture<>( + responseFuture, transformer); + } + } + + @Override + public java.util.concurrent.Future deleteMountTarget( + final DeleteMountTargetRequest request, + final com.oracle.bmc.responses.AsyncHandler< + DeleteMountTargetRequest, DeleteMountTargetResponse> + handler) { + LOG.trace("Called async deleteMountTarget"); + final DeleteMountTargetRequest interceptedRequest = + DeleteMountTargetConverter.interceptRequest(request); + final com.oracle.bmc.http.internal.WrappedInvocationBuilder ib = + DeleteMountTargetConverter.fromRequest(client, interceptedRequest); + final com.google.common.base.Function + transformer = DeleteMountTargetConverter.fromResponse(); + + com.oracle.bmc.responses.AsyncHandler + handlerToUse = handler; + if (handler != null + && this.authenticationDetailsProvider + instanceof + com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + handlerToUse = + new com.oracle.bmc.util.internal.InstancePrincipalsWrappingAsyncHandler< + DeleteMountTargetRequest, DeleteMountTargetResponse>( + (com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) + this.authenticationDetailsProvider, + handler) { + @Override + public void retryCall() { + final com.oracle.bmc.util.internal.Consumer + onSuccess = + new com.oracle.bmc.http.internal.SuccessConsumer<>( + this, transformer, interceptedRequest); + final com.oracle.bmc.util.internal.Consumer onError = + new com.oracle.bmc.http.internal.ErrorConsumer<>( + this, interceptedRequest); + client.delete(ib, interceptedRequest, onSuccess, onError); + } + }; + } + + final com.oracle.bmc.util.internal.Consumer onSuccess = + new com.oracle.bmc.http.internal.SuccessConsumer<>( + handlerToUse, transformer, interceptedRequest); + final com.oracle.bmc.util.internal.Consumer onError = + new com.oracle.bmc.http.internal.ErrorConsumer<>(handlerToUse, interceptedRequest); + + java.util.concurrent.Future responseFuture = + client.delete(ib, interceptedRequest, onSuccess, onError); + + if (this.authenticationDetailsProvider + instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + return new com.oracle.bmc.util.internal.InstancePrincipalsBasedTransformingFuture< + javax.ws.rs.core.Response, DeleteMountTargetResponse>( + responseFuture, + transformer, + (com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) + this.authenticationDetailsProvider, + new com.google.common.base.Supplier< + java.util.concurrent.Future>() { + @Override + public java.util.concurrent.Future get() { + return client.delete(ib, interceptedRequest, onSuccess, onError); + } + }); + } else { + return new com.oracle.bmc.util.internal.TransformingFuture<>( + responseFuture, transformer); + } + } + + @Override + public java.util.concurrent.Future deleteSnapshot( + final DeleteSnapshotRequest request, + final com.oracle.bmc.responses.AsyncHandler< + DeleteSnapshotRequest, DeleteSnapshotResponse> + handler) { + LOG.trace("Called async deleteSnapshot"); + final DeleteSnapshotRequest interceptedRequest = + DeleteSnapshotConverter.interceptRequest(request); + final com.oracle.bmc.http.internal.WrappedInvocationBuilder ib = + DeleteSnapshotConverter.fromRequest(client, interceptedRequest); + final com.google.common.base.Function + transformer = DeleteSnapshotConverter.fromResponse(); + + com.oracle.bmc.responses.AsyncHandler + handlerToUse = handler; + if (handler != null + && this.authenticationDetailsProvider + instanceof + com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + handlerToUse = + new com.oracle.bmc.util.internal.InstancePrincipalsWrappingAsyncHandler< + DeleteSnapshotRequest, DeleteSnapshotResponse>( + (com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) + this.authenticationDetailsProvider, + handler) { + @Override + public void retryCall() { + final com.oracle.bmc.util.internal.Consumer + onSuccess = + new com.oracle.bmc.http.internal.SuccessConsumer<>( + this, transformer, interceptedRequest); + final com.oracle.bmc.util.internal.Consumer onError = + new com.oracle.bmc.http.internal.ErrorConsumer<>( + this, interceptedRequest); + client.delete(ib, interceptedRequest, onSuccess, onError); + } + }; + } + + final com.oracle.bmc.util.internal.Consumer onSuccess = + new com.oracle.bmc.http.internal.SuccessConsumer<>( + handlerToUse, transformer, interceptedRequest); + final com.oracle.bmc.util.internal.Consumer onError = + new com.oracle.bmc.http.internal.ErrorConsumer<>(handlerToUse, interceptedRequest); + + java.util.concurrent.Future responseFuture = + client.delete(ib, interceptedRequest, onSuccess, onError); + + if (this.authenticationDetailsProvider + instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + return new com.oracle.bmc.util.internal.InstancePrincipalsBasedTransformingFuture< + javax.ws.rs.core.Response, DeleteSnapshotResponse>( + responseFuture, + transformer, + (com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) + this.authenticationDetailsProvider, + new com.google.common.base.Supplier< + java.util.concurrent.Future>() { + @Override + public java.util.concurrent.Future get() { + return client.delete(ib, interceptedRequest, onSuccess, onError); + } + }); + } else { + return new com.oracle.bmc.util.internal.TransformingFuture<>( + responseFuture, transformer); + } + } + + @Override + public java.util.concurrent.Future getExport( + final GetExportRequest request, + final com.oracle.bmc.responses.AsyncHandler + handler) { + LOG.trace("Called async getExport"); + final GetExportRequest interceptedRequest = GetExportConverter.interceptRequest(request); + final com.oracle.bmc.http.internal.WrappedInvocationBuilder ib = + GetExportConverter.fromRequest(client, interceptedRequest); + final com.google.common.base.Function + transformer = GetExportConverter.fromResponse(); + + com.oracle.bmc.responses.AsyncHandler handlerToUse = + handler; + if (handler != null + && this.authenticationDetailsProvider + instanceof + com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + handlerToUse = + new com.oracle.bmc.util.internal.InstancePrincipalsWrappingAsyncHandler< + GetExportRequest, GetExportResponse>( + (com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) + this.authenticationDetailsProvider, + handler) { + @Override + public void retryCall() { + final com.oracle.bmc.util.internal.Consumer + onSuccess = + new com.oracle.bmc.http.internal.SuccessConsumer<>( + this, transformer, interceptedRequest); + final com.oracle.bmc.util.internal.Consumer onError = + new com.oracle.bmc.http.internal.ErrorConsumer<>( + this, interceptedRequest); + client.get(ib, interceptedRequest, onSuccess, onError); + } + }; + } + + final com.oracle.bmc.util.internal.Consumer onSuccess = + new com.oracle.bmc.http.internal.SuccessConsumer<>( + handlerToUse, transformer, interceptedRequest); + final com.oracle.bmc.util.internal.Consumer onError = + new com.oracle.bmc.http.internal.ErrorConsumer<>(handlerToUse, interceptedRequest); + + java.util.concurrent.Future responseFuture = + client.get(ib, interceptedRequest, onSuccess, onError); + + if (this.authenticationDetailsProvider + instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + return new com.oracle.bmc.util.internal.InstancePrincipalsBasedTransformingFuture< + javax.ws.rs.core.Response, GetExportResponse>( + responseFuture, + transformer, + (com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) + this.authenticationDetailsProvider, + new com.google.common.base.Supplier< + java.util.concurrent.Future>() { + @Override + public java.util.concurrent.Future get() { + return client.get(ib, interceptedRequest, onSuccess, onError); + } + }); + } else { + return new com.oracle.bmc.util.internal.TransformingFuture<>( + responseFuture, transformer); + } + } + + @Override + public java.util.concurrent.Future getExportSet( + final GetExportSetRequest request, + final com.oracle.bmc.responses.AsyncHandler + handler) { + LOG.trace("Called async getExportSet"); + final GetExportSetRequest interceptedRequest = + GetExportSetConverter.interceptRequest(request); + final com.oracle.bmc.http.internal.WrappedInvocationBuilder ib = + GetExportSetConverter.fromRequest(client, interceptedRequest); + final com.google.common.base.Function + transformer = GetExportSetConverter.fromResponse(); + + com.oracle.bmc.responses.AsyncHandler + handlerToUse = handler; + if (handler != null + && this.authenticationDetailsProvider + instanceof + com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + handlerToUse = + new com.oracle.bmc.util.internal.InstancePrincipalsWrappingAsyncHandler< + GetExportSetRequest, GetExportSetResponse>( + (com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) + this.authenticationDetailsProvider, + handler) { + @Override + public void retryCall() { + final com.oracle.bmc.util.internal.Consumer + onSuccess = + new com.oracle.bmc.http.internal.SuccessConsumer<>( + this, transformer, interceptedRequest); + final com.oracle.bmc.util.internal.Consumer onError = + new com.oracle.bmc.http.internal.ErrorConsumer<>( + this, interceptedRequest); + client.get(ib, interceptedRequest, onSuccess, onError); + } + }; + } + + final com.oracle.bmc.util.internal.Consumer onSuccess = + new com.oracle.bmc.http.internal.SuccessConsumer<>( + handlerToUse, transformer, interceptedRequest); + final com.oracle.bmc.util.internal.Consumer onError = + new com.oracle.bmc.http.internal.ErrorConsumer<>(handlerToUse, interceptedRequest); + + java.util.concurrent.Future responseFuture = + client.get(ib, interceptedRequest, onSuccess, onError); + + if (this.authenticationDetailsProvider + instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + return new com.oracle.bmc.util.internal.InstancePrincipalsBasedTransformingFuture< + javax.ws.rs.core.Response, GetExportSetResponse>( + responseFuture, + transformer, + (com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) + this.authenticationDetailsProvider, + new com.google.common.base.Supplier< + java.util.concurrent.Future>() { + @Override + public java.util.concurrent.Future get() { + return client.get(ib, interceptedRequest, onSuccess, onError); + } + }); + } else { + return new com.oracle.bmc.util.internal.TransformingFuture<>( + responseFuture, transformer); + } + } + + @Override + public java.util.concurrent.Future getFileSystem( + final GetFileSystemRequest request, + final com.oracle.bmc.responses.AsyncHandler + handler) { + LOG.trace("Called async getFileSystem"); + final GetFileSystemRequest interceptedRequest = + GetFileSystemConverter.interceptRequest(request); + final com.oracle.bmc.http.internal.WrappedInvocationBuilder ib = + GetFileSystemConverter.fromRequest(client, interceptedRequest); + final com.google.common.base.Function + transformer = GetFileSystemConverter.fromResponse(); + + com.oracle.bmc.responses.AsyncHandler + handlerToUse = handler; + if (handler != null + && this.authenticationDetailsProvider + instanceof + com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + handlerToUse = + new com.oracle.bmc.util.internal.InstancePrincipalsWrappingAsyncHandler< + GetFileSystemRequest, GetFileSystemResponse>( + (com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) + this.authenticationDetailsProvider, + handler) { + @Override + public void retryCall() { + final com.oracle.bmc.util.internal.Consumer + onSuccess = + new com.oracle.bmc.http.internal.SuccessConsumer<>( + this, transformer, interceptedRequest); + final com.oracle.bmc.util.internal.Consumer onError = + new com.oracle.bmc.http.internal.ErrorConsumer<>( + this, interceptedRequest); + client.get(ib, interceptedRequest, onSuccess, onError); + } + }; + } + + final com.oracle.bmc.util.internal.Consumer onSuccess = + new com.oracle.bmc.http.internal.SuccessConsumer<>( + handlerToUse, transformer, interceptedRequest); + final com.oracle.bmc.util.internal.Consumer onError = + new com.oracle.bmc.http.internal.ErrorConsumer<>(handlerToUse, interceptedRequest); + + java.util.concurrent.Future responseFuture = + client.get(ib, interceptedRequest, onSuccess, onError); + + if (this.authenticationDetailsProvider + instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + return new com.oracle.bmc.util.internal.InstancePrincipalsBasedTransformingFuture< + javax.ws.rs.core.Response, GetFileSystemResponse>( + responseFuture, + transformer, + (com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) + this.authenticationDetailsProvider, + new com.google.common.base.Supplier< + java.util.concurrent.Future>() { + @Override + public java.util.concurrent.Future get() { + return client.get(ib, interceptedRequest, onSuccess, onError); + } + }); + } else { + return new com.oracle.bmc.util.internal.TransformingFuture<>( + responseFuture, transformer); + } + } + + @Override + public java.util.concurrent.Future getMountTarget( + final GetMountTargetRequest request, + final com.oracle.bmc.responses.AsyncHandler< + GetMountTargetRequest, GetMountTargetResponse> + handler) { + LOG.trace("Called async getMountTarget"); + final GetMountTargetRequest interceptedRequest = + GetMountTargetConverter.interceptRequest(request); + final com.oracle.bmc.http.internal.WrappedInvocationBuilder ib = + GetMountTargetConverter.fromRequest(client, interceptedRequest); + final com.google.common.base.Function + transformer = GetMountTargetConverter.fromResponse(); + + com.oracle.bmc.responses.AsyncHandler + handlerToUse = handler; + if (handler != null + && this.authenticationDetailsProvider + instanceof + com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + handlerToUse = + new com.oracle.bmc.util.internal.InstancePrincipalsWrappingAsyncHandler< + GetMountTargetRequest, GetMountTargetResponse>( + (com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) + this.authenticationDetailsProvider, + handler) { + @Override + public void retryCall() { + final com.oracle.bmc.util.internal.Consumer + onSuccess = + new com.oracle.bmc.http.internal.SuccessConsumer<>( + this, transformer, interceptedRequest); + final com.oracle.bmc.util.internal.Consumer onError = + new com.oracle.bmc.http.internal.ErrorConsumer<>( + this, interceptedRequest); + client.get(ib, interceptedRequest, onSuccess, onError); + } + }; + } + + final com.oracle.bmc.util.internal.Consumer onSuccess = + new com.oracle.bmc.http.internal.SuccessConsumer<>( + handlerToUse, transformer, interceptedRequest); + final com.oracle.bmc.util.internal.Consumer onError = + new com.oracle.bmc.http.internal.ErrorConsumer<>(handlerToUse, interceptedRequest); + + java.util.concurrent.Future responseFuture = + client.get(ib, interceptedRequest, onSuccess, onError); + + if (this.authenticationDetailsProvider + instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + return new com.oracle.bmc.util.internal.InstancePrincipalsBasedTransformingFuture< + javax.ws.rs.core.Response, GetMountTargetResponse>( + responseFuture, + transformer, + (com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) + this.authenticationDetailsProvider, + new com.google.common.base.Supplier< + java.util.concurrent.Future>() { + @Override + public java.util.concurrent.Future get() { + return client.get(ib, interceptedRequest, onSuccess, onError); + } + }); + } else { + return new com.oracle.bmc.util.internal.TransformingFuture<>( + responseFuture, transformer); + } + } + + @Override + public java.util.concurrent.Future getSnapshot( + final GetSnapshotRequest request, + final com.oracle.bmc.responses.AsyncHandler + handler) { + LOG.trace("Called async getSnapshot"); + final GetSnapshotRequest interceptedRequest = + GetSnapshotConverter.interceptRequest(request); + final com.oracle.bmc.http.internal.WrappedInvocationBuilder ib = + GetSnapshotConverter.fromRequest(client, interceptedRequest); + final com.google.common.base.Function + transformer = GetSnapshotConverter.fromResponse(); + + com.oracle.bmc.responses.AsyncHandler + handlerToUse = handler; + if (handler != null + && this.authenticationDetailsProvider + instanceof + com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + handlerToUse = + new com.oracle.bmc.util.internal.InstancePrincipalsWrappingAsyncHandler< + GetSnapshotRequest, GetSnapshotResponse>( + (com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) + this.authenticationDetailsProvider, + handler) { + @Override + public void retryCall() { + final com.oracle.bmc.util.internal.Consumer + onSuccess = + new com.oracle.bmc.http.internal.SuccessConsumer<>( + this, transformer, interceptedRequest); + final com.oracle.bmc.util.internal.Consumer onError = + new com.oracle.bmc.http.internal.ErrorConsumer<>( + this, interceptedRequest); + client.get(ib, interceptedRequest, onSuccess, onError); + } + }; + } + + final com.oracle.bmc.util.internal.Consumer onSuccess = + new com.oracle.bmc.http.internal.SuccessConsumer<>( + handlerToUse, transformer, interceptedRequest); + final com.oracle.bmc.util.internal.Consumer onError = + new com.oracle.bmc.http.internal.ErrorConsumer<>(handlerToUse, interceptedRequest); + + java.util.concurrent.Future responseFuture = + client.get(ib, interceptedRequest, onSuccess, onError); + + if (this.authenticationDetailsProvider + instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + return new com.oracle.bmc.util.internal.InstancePrincipalsBasedTransformingFuture< + javax.ws.rs.core.Response, GetSnapshotResponse>( + responseFuture, + transformer, + (com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) + this.authenticationDetailsProvider, + new com.google.common.base.Supplier< + java.util.concurrent.Future>() { + @Override + public java.util.concurrent.Future get() { + return client.get(ib, interceptedRequest, onSuccess, onError); + } + }); + } else { + return new com.oracle.bmc.util.internal.TransformingFuture<>( + responseFuture, transformer); + } + } + + @Override + public java.util.concurrent.Future listExportSets( + final ListExportSetsRequest request, + final com.oracle.bmc.responses.AsyncHandler< + ListExportSetsRequest, ListExportSetsResponse> + handler) { + LOG.trace("Called async listExportSets"); + final ListExportSetsRequest interceptedRequest = + ListExportSetsConverter.interceptRequest(request); + final com.oracle.bmc.http.internal.WrappedInvocationBuilder ib = + ListExportSetsConverter.fromRequest(client, interceptedRequest); + final com.google.common.base.Function + transformer = ListExportSetsConverter.fromResponse(); + + com.oracle.bmc.responses.AsyncHandler + handlerToUse = handler; + if (handler != null + && this.authenticationDetailsProvider + instanceof + com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + handlerToUse = + new com.oracle.bmc.util.internal.InstancePrincipalsWrappingAsyncHandler< + ListExportSetsRequest, ListExportSetsResponse>( + (com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) + this.authenticationDetailsProvider, + handler) { + @Override + public void retryCall() { + final com.oracle.bmc.util.internal.Consumer + onSuccess = + new com.oracle.bmc.http.internal.SuccessConsumer<>( + this, transformer, interceptedRequest); + final com.oracle.bmc.util.internal.Consumer onError = + new com.oracle.bmc.http.internal.ErrorConsumer<>( + this, interceptedRequest); + client.get(ib, interceptedRequest, onSuccess, onError); + } + }; + } + + final com.oracle.bmc.util.internal.Consumer onSuccess = + new com.oracle.bmc.http.internal.SuccessConsumer<>( + handlerToUse, transformer, interceptedRequest); + final com.oracle.bmc.util.internal.Consumer onError = + new com.oracle.bmc.http.internal.ErrorConsumer<>(handlerToUse, interceptedRequest); + + java.util.concurrent.Future responseFuture = + client.get(ib, interceptedRequest, onSuccess, onError); + + if (this.authenticationDetailsProvider + instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + return new com.oracle.bmc.util.internal.InstancePrincipalsBasedTransformingFuture< + javax.ws.rs.core.Response, ListExportSetsResponse>( + responseFuture, + transformer, + (com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) + this.authenticationDetailsProvider, + new com.google.common.base.Supplier< + java.util.concurrent.Future>() { + @Override + public java.util.concurrent.Future get() { + return client.get(ib, interceptedRequest, onSuccess, onError); + } + }); + } else { + return new com.oracle.bmc.util.internal.TransformingFuture<>( + responseFuture, transformer); + } + } + + @Override + public java.util.concurrent.Future listExports( + final ListExportsRequest request, + final com.oracle.bmc.responses.AsyncHandler + handler) { + LOG.trace("Called async listExports"); + final ListExportsRequest interceptedRequest = + ListExportsConverter.interceptRequest(request); + final com.oracle.bmc.http.internal.WrappedInvocationBuilder ib = + ListExportsConverter.fromRequest(client, interceptedRequest); + final com.google.common.base.Function + transformer = ListExportsConverter.fromResponse(); + + com.oracle.bmc.responses.AsyncHandler + handlerToUse = handler; + if (handler != null + && this.authenticationDetailsProvider + instanceof + com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + handlerToUse = + new com.oracle.bmc.util.internal.InstancePrincipalsWrappingAsyncHandler< + ListExportsRequest, ListExportsResponse>( + (com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) + this.authenticationDetailsProvider, + handler) { + @Override + public void retryCall() { + final com.oracle.bmc.util.internal.Consumer + onSuccess = + new com.oracle.bmc.http.internal.SuccessConsumer<>( + this, transformer, interceptedRequest); + final com.oracle.bmc.util.internal.Consumer onError = + new com.oracle.bmc.http.internal.ErrorConsumer<>( + this, interceptedRequest); + client.get(ib, interceptedRequest, onSuccess, onError); + } + }; + } + + final com.oracle.bmc.util.internal.Consumer onSuccess = + new com.oracle.bmc.http.internal.SuccessConsumer<>( + handlerToUse, transformer, interceptedRequest); + final com.oracle.bmc.util.internal.Consumer onError = + new com.oracle.bmc.http.internal.ErrorConsumer<>(handlerToUse, interceptedRequest); + + java.util.concurrent.Future responseFuture = + client.get(ib, interceptedRequest, onSuccess, onError); + + if (this.authenticationDetailsProvider + instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + return new com.oracle.bmc.util.internal.InstancePrincipalsBasedTransformingFuture< + javax.ws.rs.core.Response, ListExportsResponse>( + responseFuture, + transformer, + (com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) + this.authenticationDetailsProvider, + new com.google.common.base.Supplier< + java.util.concurrent.Future>() { + @Override + public java.util.concurrent.Future get() { + return client.get(ib, interceptedRequest, onSuccess, onError); + } + }); + } else { + return new com.oracle.bmc.util.internal.TransformingFuture<>( + responseFuture, transformer); + } + } + + @Override + public java.util.concurrent.Future listFileSystems( + final ListFileSystemsRequest request, + final com.oracle.bmc.responses.AsyncHandler< + ListFileSystemsRequest, ListFileSystemsResponse> + handler) { + LOG.trace("Called async listFileSystems"); + final ListFileSystemsRequest interceptedRequest = + ListFileSystemsConverter.interceptRequest(request); + final com.oracle.bmc.http.internal.WrappedInvocationBuilder ib = + ListFileSystemsConverter.fromRequest(client, interceptedRequest); + final com.google.common.base.Function + transformer = ListFileSystemsConverter.fromResponse(); + + com.oracle.bmc.responses.AsyncHandler + handlerToUse = handler; + if (handler != null + && this.authenticationDetailsProvider + instanceof + com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + handlerToUse = + new com.oracle.bmc.util.internal.InstancePrincipalsWrappingAsyncHandler< + ListFileSystemsRequest, ListFileSystemsResponse>( + (com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) + this.authenticationDetailsProvider, + handler) { + @Override + public void retryCall() { + final com.oracle.bmc.util.internal.Consumer + onSuccess = + new com.oracle.bmc.http.internal.SuccessConsumer<>( + this, transformer, interceptedRequest); + final com.oracle.bmc.util.internal.Consumer onError = + new com.oracle.bmc.http.internal.ErrorConsumer<>( + this, interceptedRequest); + client.get(ib, interceptedRequest, onSuccess, onError); + } + }; + } + + final com.oracle.bmc.util.internal.Consumer onSuccess = + new com.oracle.bmc.http.internal.SuccessConsumer<>( + handlerToUse, transformer, interceptedRequest); + final com.oracle.bmc.util.internal.Consumer onError = + new com.oracle.bmc.http.internal.ErrorConsumer<>(handlerToUse, interceptedRequest); + + java.util.concurrent.Future responseFuture = + client.get(ib, interceptedRequest, onSuccess, onError); + + if (this.authenticationDetailsProvider + instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + return new com.oracle.bmc.util.internal.InstancePrincipalsBasedTransformingFuture< + javax.ws.rs.core.Response, ListFileSystemsResponse>( + responseFuture, + transformer, + (com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) + this.authenticationDetailsProvider, + new com.google.common.base.Supplier< + java.util.concurrent.Future>() { + @Override + public java.util.concurrent.Future get() { + return client.get(ib, interceptedRequest, onSuccess, onError); + } + }); + } else { + return new com.oracle.bmc.util.internal.TransformingFuture<>( + responseFuture, transformer); + } + } + + @Override + public java.util.concurrent.Future listMountTargets( + final ListMountTargetsRequest request, + final com.oracle.bmc.responses.AsyncHandler< + ListMountTargetsRequest, ListMountTargetsResponse> + handler) { + LOG.trace("Called async listMountTargets"); + final ListMountTargetsRequest interceptedRequest = + ListMountTargetsConverter.interceptRequest(request); + final com.oracle.bmc.http.internal.WrappedInvocationBuilder ib = + ListMountTargetsConverter.fromRequest(client, interceptedRequest); + final com.google.common.base.Function + transformer = ListMountTargetsConverter.fromResponse(); + + com.oracle.bmc.responses.AsyncHandler + handlerToUse = handler; + if (handler != null + && this.authenticationDetailsProvider + instanceof + com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + handlerToUse = + new com.oracle.bmc.util.internal.InstancePrincipalsWrappingAsyncHandler< + ListMountTargetsRequest, ListMountTargetsResponse>( + (com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) + this.authenticationDetailsProvider, + handler) { + @Override + public void retryCall() { + final com.oracle.bmc.util.internal.Consumer + onSuccess = + new com.oracle.bmc.http.internal.SuccessConsumer<>( + this, transformer, interceptedRequest); + final com.oracle.bmc.util.internal.Consumer onError = + new com.oracle.bmc.http.internal.ErrorConsumer<>( + this, interceptedRequest); + client.get(ib, interceptedRequest, onSuccess, onError); + } + }; + } + + final com.oracle.bmc.util.internal.Consumer onSuccess = + new com.oracle.bmc.http.internal.SuccessConsumer<>( + handlerToUse, transformer, interceptedRequest); + final com.oracle.bmc.util.internal.Consumer onError = + new com.oracle.bmc.http.internal.ErrorConsumer<>(handlerToUse, interceptedRequest); + + java.util.concurrent.Future responseFuture = + client.get(ib, interceptedRequest, onSuccess, onError); + + if (this.authenticationDetailsProvider + instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + return new com.oracle.bmc.util.internal.InstancePrincipalsBasedTransformingFuture< + javax.ws.rs.core.Response, ListMountTargetsResponse>( + responseFuture, + transformer, + (com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) + this.authenticationDetailsProvider, + new com.google.common.base.Supplier< + java.util.concurrent.Future>() { + @Override + public java.util.concurrent.Future get() { + return client.get(ib, interceptedRequest, onSuccess, onError); + } + }); + } else { + return new com.oracle.bmc.util.internal.TransformingFuture<>( + responseFuture, transformer); + } + } + + @Override + public java.util.concurrent.Future listSnapshots( + final ListSnapshotsRequest request, + final com.oracle.bmc.responses.AsyncHandler + handler) { + LOG.trace("Called async listSnapshots"); + final ListSnapshotsRequest interceptedRequest = + ListSnapshotsConverter.interceptRequest(request); + final com.oracle.bmc.http.internal.WrappedInvocationBuilder ib = + ListSnapshotsConverter.fromRequest(client, interceptedRequest); + final com.google.common.base.Function + transformer = ListSnapshotsConverter.fromResponse(); + + com.oracle.bmc.responses.AsyncHandler + handlerToUse = handler; + if (handler != null + && this.authenticationDetailsProvider + instanceof + com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + handlerToUse = + new com.oracle.bmc.util.internal.InstancePrincipalsWrappingAsyncHandler< + ListSnapshotsRequest, ListSnapshotsResponse>( + (com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) + this.authenticationDetailsProvider, + handler) { + @Override + public void retryCall() { + final com.oracle.bmc.util.internal.Consumer + onSuccess = + new com.oracle.bmc.http.internal.SuccessConsumer<>( + this, transformer, interceptedRequest); + final com.oracle.bmc.util.internal.Consumer onError = + new com.oracle.bmc.http.internal.ErrorConsumer<>( + this, interceptedRequest); + client.get(ib, interceptedRequest, onSuccess, onError); + } + }; + } + + final com.oracle.bmc.util.internal.Consumer onSuccess = + new com.oracle.bmc.http.internal.SuccessConsumer<>( + handlerToUse, transformer, interceptedRequest); + final com.oracle.bmc.util.internal.Consumer onError = + new com.oracle.bmc.http.internal.ErrorConsumer<>(handlerToUse, interceptedRequest); + + java.util.concurrent.Future responseFuture = + client.get(ib, interceptedRequest, onSuccess, onError); + + if (this.authenticationDetailsProvider + instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + return new com.oracle.bmc.util.internal.InstancePrincipalsBasedTransformingFuture< + javax.ws.rs.core.Response, ListSnapshotsResponse>( + responseFuture, + transformer, + (com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) + this.authenticationDetailsProvider, + new com.google.common.base.Supplier< + java.util.concurrent.Future>() { + @Override + public java.util.concurrent.Future get() { + return client.get(ib, interceptedRequest, onSuccess, onError); + } + }); + } else { + return new com.oracle.bmc.util.internal.TransformingFuture<>( + responseFuture, transformer); + } + } + + @Override + public java.util.concurrent.Future updateExportSet( + final UpdateExportSetRequest request, + final com.oracle.bmc.responses.AsyncHandler< + UpdateExportSetRequest, UpdateExportSetResponse> + handler) { + LOG.trace("Called async updateExportSet"); + final UpdateExportSetRequest interceptedRequest = + UpdateExportSetConverter.interceptRequest(request); + final com.oracle.bmc.http.internal.WrappedInvocationBuilder ib = + UpdateExportSetConverter.fromRequest(client, interceptedRequest); + final com.google.common.base.Function + transformer = UpdateExportSetConverter.fromResponse(); + + com.oracle.bmc.responses.AsyncHandler + handlerToUse = handler; + if (handler != null + && this.authenticationDetailsProvider + instanceof + com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + handlerToUse = + new com.oracle.bmc.util.internal.InstancePrincipalsWrappingAsyncHandler< + UpdateExportSetRequest, UpdateExportSetResponse>( + (com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) + this.authenticationDetailsProvider, + handler) { + @Override + public void retryCall() { + final com.oracle.bmc.util.internal.Consumer + onSuccess = + new com.oracle.bmc.http.internal.SuccessConsumer<>( + this, transformer, interceptedRequest); + final com.oracle.bmc.util.internal.Consumer onError = + new com.oracle.bmc.http.internal.ErrorConsumer<>( + this, interceptedRequest); + client.put( + ib, + interceptedRequest.getUpdateExportSetDetails(), + interceptedRequest, + onSuccess, + onError); + } + }; + } + + final com.oracle.bmc.util.internal.Consumer onSuccess = + new com.oracle.bmc.http.internal.SuccessConsumer<>( + handlerToUse, transformer, interceptedRequest); + final com.oracle.bmc.util.internal.Consumer onError = + new com.oracle.bmc.http.internal.ErrorConsumer<>(handlerToUse, interceptedRequest); + + java.util.concurrent.Future responseFuture = + client.put( + ib, + interceptedRequest.getUpdateExportSetDetails(), + interceptedRequest, + onSuccess, + onError); + + if (this.authenticationDetailsProvider + instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + return new com.oracle.bmc.util.internal.InstancePrincipalsBasedTransformingFuture< + javax.ws.rs.core.Response, UpdateExportSetResponse>( + responseFuture, + transformer, + (com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) + this.authenticationDetailsProvider, + new com.google.common.base.Supplier< + java.util.concurrent.Future>() { + @Override + public java.util.concurrent.Future get() { + return client.put( + ib, + interceptedRequest.getUpdateExportSetDetails(), + interceptedRequest, + onSuccess, + onError); + } + }); + } else { + return new com.oracle.bmc.util.internal.TransformingFuture<>( + responseFuture, transformer); + } + } + + @Override + public java.util.concurrent.Future updateFileSystem( + final UpdateFileSystemRequest request, + final com.oracle.bmc.responses.AsyncHandler< + UpdateFileSystemRequest, UpdateFileSystemResponse> + handler) { + LOG.trace("Called async updateFileSystem"); + final UpdateFileSystemRequest interceptedRequest = + UpdateFileSystemConverter.interceptRequest(request); + final com.oracle.bmc.http.internal.WrappedInvocationBuilder ib = + UpdateFileSystemConverter.fromRequest(client, interceptedRequest); + final com.google.common.base.Function + transformer = UpdateFileSystemConverter.fromResponse(); + + com.oracle.bmc.responses.AsyncHandler + handlerToUse = handler; + if (handler != null + && this.authenticationDetailsProvider + instanceof + com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + handlerToUse = + new com.oracle.bmc.util.internal.InstancePrincipalsWrappingAsyncHandler< + UpdateFileSystemRequest, UpdateFileSystemResponse>( + (com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) + this.authenticationDetailsProvider, + handler) { + @Override + public void retryCall() { + final com.oracle.bmc.util.internal.Consumer + onSuccess = + new com.oracle.bmc.http.internal.SuccessConsumer<>( + this, transformer, interceptedRequest); + final com.oracle.bmc.util.internal.Consumer onError = + new com.oracle.bmc.http.internal.ErrorConsumer<>( + this, interceptedRequest); + client.put( + ib, + interceptedRequest.getUpdateFileSystemDetails(), + interceptedRequest, + onSuccess, + onError); + } + }; + } + + final com.oracle.bmc.util.internal.Consumer onSuccess = + new com.oracle.bmc.http.internal.SuccessConsumer<>( + handlerToUse, transformer, interceptedRequest); + final com.oracle.bmc.util.internal.Consumer onError = + new com.oracle.bmc.http.internal.ErrorConsumer<>(handlerToUse, interceptedRequest); + + java.util.concurrent.Future responseFuture = + client.put( + ib, + interceptedRequest.getUpdateFileSystemDetails(), + interceptedRequest, + onSuccess, + onError); + + if (this.authenticationDetailsProvider + instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + return new com.oracle.bmc.util.internal.InstancePrincipalsBasedTransformingFuture< + javax.ws.rs.core.Response, UpdateFileSystemResponse>( + responseFuture, + transformer, + (com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) + this.authenticationDetailsProvider, + new com.google.common.base.Supplier< + java.util.concurrent.Future>() { + @Override + public java.util.concurrent.Future get() { + return client.put( + ib, + interceptedRequest.getUpdateFileSystemDetails(), + interceptedRequest, + onSuccess, + onError); + } + }); + } else { + return new com.oracle.bmc.util.internal.TransformingFuture<>( + responseFuture, transformer); + } + } + + @Override + public java.util.concurrent.Future updateMountTarget( + final UpdateMountTargetRequest request, + final com.oracle.bmc.responses.AsyncHandler< + UpdateMountTargetRequest, UpdateMountTargetResponse> + handler) { + LOG.trace("Called async updateMountTarget"); + final UpdateMountTargetRequest interceptedRequest = + UpdateMountTargetConverter.interceptRequest(request); + final com.oracle.bmc.http.internal.WrappedInvocationBuilder ib = + UpdateMountTargetConverter.fromRequest(client, interceptedRequest); + final com.google.common.base.Function + transformer = UpdateMountTargetConverter.fromResponse(); + + com.oracle.bmc.responses.AsyncHandler + handlerToUse = handler; + if (handler != null + && this.authenticationDetailsProvider + instanceof + com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + handlerToUse = + new com.oracle.bmc.util.internal.InstancePrincipalsWrappingAsyncHandler< + UpdateMountTargetRequest, UpdateMountTargetResponse>( + (com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) + this.authenticationDetailsProvider, + handler) { + @Override + public void retryCall() { + final com.oracle.bmc.util.internal.Consumer + onSuccess = + new com.oracle.bmc.http.internal.SuccessConsumer<>( + this, transformer, interceptedRequest); + final com.oracle.bmc.util.internal.Consumer onError = + new com.oracle.bmc.http.internal.ErrorConsumer<>( + this, interceptedRequest); + client.put( + ib, + interceptedRequest.getUpdateMountTargetDetails(), + interceptedRequest, + onSuccess, + onError); + } + }; + } + + final com.oracle.bmc.util.internal.Consumer onSuccess = + new com.oracle.bmc.http.internal.SuccessConsumer<>( + handlerToUse, transformer, interceptedRequest); + final com.oracle.bmc.util.internal.Consumer onError = + new com.oracle.bmc.http.internal.ErrorConsumer<>(handlerToUse, interceptedRequest); + + java.util.concurrent.Future responseFuture = + client.put( + ib, + interceptedRequest.getUpdateMountTargetDetails(), + interceptedRequest, + onSuccess, + onError); + + if (this.authenticationDetailsProvider + instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + return new com.oracle.bmc.util.internal.InstancePrincipalsBasedTransformingFuture< + javax.ws.rs.core.Response, UpdateMountTargetResponse>( + responseFuture, + transformer, + (com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) + this.authenticationDetailsProvider, + new com.google.common.base.Supplier< + java.util.concurrent.Future>() { + @Override + public java.util.concurrent.Future get() { + return client.put( + ib, + interceptedRequest.getUpdateMountTargetDetails(), + interceptedRequest, + onSuccess, + onError); + } + }); + } else { + return new com.oracle.bmc.util.internal.TransformingFuture<>( + responseFuture, transformer); + } + } +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/FileStorageClient.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/FileStorageClient.java new file mode 100644 index 00000000000..38402d1b82c --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/FileStorageClient.java @@ -0,0 +1,711 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage; + +import java.util.Locale; +import com.oracle.bmc.filestorage.internal.http.*; +import com.oracle.bmc.filestorage.requests.*; +import com.oracle.bmc.filestorage.responses.*; + +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.extern.slf4j.Slf4j +public class FileStorageClient implements FileStorage { + /** + * Service instance for FileStorage. + */ + public static final com.oracle.bmc.Service SERVICE = + com.oracle.bmc.Services.create("FILESTORAGE", "filestorage"); + // attempt twice if it's instance principals, immediately failures will try to refresh the token + private static final int MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS = 2; + + private final FileStorageWaiters waiters; + private final FileStoragePaginators paginators; + + @lombok.Getter(value = lombok.AccessLevel.PACKAGE) + private final com.oracle.bmc.http.internal.RestClient client; + + private final com.oracle.bmc.auth.AbstractAuthenticationDetailsProvider + authenticationDetailsProvider; + + /** + * Creates a new service instance using the given authentication provider. + * @param authenticationDetailsProvider The authentication details provider, required. + */ + public FileStorageClient( + com.oracle.bmc.auth.BasicAuthenticationDetailsProvider authenticationDetailsProvider) { + this(authenticationDetailsProvider, null); + } + + /** + * Creates a new service instance using the given authentication provider and client configuration. + * @param authenticationDetailsProvider The authentication details provider, required. + * @param configuration The client configuration, optional. + */ + public FileStorageClient( + com.oracle.bmc.auth.BasicAuthenticationDetailsProvider authenticationDetailsProvider, + com.oracle.bmc.ClientConfiguration configuration) { + this(authenticationDetailsProvider, configuration, null); + } + + /** + * Creates a new service instance using the given authentication provider and client configuration. Additionally, + * a Consumer can be provided that will be invoked whenever a REST Client is created to allow for additional configuration/customization. + * @param authenticationDetailsProvider The authentication details provider, required. + * @param configuration The client configuration, optional. + * @param clientConfigurator ClientConfigurator that will be invoked for additional configuration of a REST client, optional. + */ + public FileStorageClient( + com.oracle.bmc.auth.BasicAuthenticationDetailsProvider authenticationDetailsProvider, + com.oracle.bmc.ClientConfiguration configuration, + com.oracle.bmc.http.ClientConfigurator clientConfigurator) { + this( + authenticationDetailsProvider, + configuration, + clientConfigurator, + new com.oracle.bmc.http.signing.internal.DefaultRequestSignerFactory( + com.oracle.bmc.http.signing.SigningStrategy.STANDARD)); + } + + /** + * Creates a new service instance using the given authentication provider and client configuration. Additionally, + * a Consumer can be provided that will be invoked whenever a REST Client is created to allow for additional configuration/customization. + *

          + * This is an advanced constructor for clients that want to take control over how requests are signed. + * @param authenticationDetailsProvider The authentication details provider, required. + * @param configuration The client configuration, optional. + * @param clientConfigurator ClientConfigurator that will be invoked for additional configuration of a REST client, optional. + * @param requestSignerFactory The request signer factory used to create the request signer for this service. + */ + public FileStorageClient( + com.oracle.bmc.auth.AbstractAuthenticationDetailsProvider authenticationDetailsProvider, + com.oracle.bmc.ClientConfiguration configuration, + com.oracle.bmc.http.ClientConfigurator clientConfigurator, + com.oracle.bmc.http.signing.RequestSignerFactory requestSignerFactory) { + this.authenticationDetailsProvider = authenticationDetailsProvider; + com.oracle.bmc.http.internal.RestClientFactory restClientFactory = + com.oracle.bmc.http.internal.RestClientFactoryBuilder.builder() + .clientConfigurator(clientConfigurator) + .build(); + com.oracle.bmc.http.signing.RequestSigner requestSigner = + requestSignerFactory.createRequestSigner( + SERVICE, this.authenticationDetailsProvider); + this.client = restClientFactory.create(requestSigner, configuration); + // up to 50 (core) threads, time out after 60s idle, all daemon + java.util.concurrent.ThreadPoolExecutor executorService = + new java.util.concurrent.ThreadPoolExecutor( + 50, + 50, + 60L, + java.util.concurrent.TimeUnit.SECONDS, + new java.util.concurrent.LinkedBlockingQueue(), + new com.google.common.util.concurrent.ThreadFactoryBuilder() + .setDaemon(false) + .setNameFormat("FileStorage-waiters-%d") + .build()); + executorService.allowCoreThreadTimeOut(true); + + this.waiters = new FileStorageWaiters(executorService, this); + + this.paginators = new FileStoragePaginators(this); + + if (this.authenticationDetailsProvider instanceof com.oracle.bmc.auth.RegionProvider) { + com.oracle.bmc.auth.RegionProvider provider = + (com.oracle.bmc.auth.RegionProvider) this.authenticationDetailsProvider; + + if (provider.getRegion() != null) { + this.setRegion(provider.getRegion()); + } + } + } + + @Override + public void setEndpoint(String endpoint) { + LOG.info("Setting endpoint to {}", endpoint); + client.setEndpoint(endpoint); + } + + @Override + public void setRegion(com.oracle.bmc.Region region) { + com.google.common.base.Optional endpoint = region.getEndpoint(SERVICE); + if (endpoint.isPresent()) { + setEndpoint(endpoint.get()); + } else { + throw new IllegalArgumentException( + "Endpoint for " + SERVICE + " is not known in region " + region); + } + } + + @Override + public void setRegion(String regionId) { + regionId = regionId.toLowerCase(Locale.ENGLISH); + try { + com.oracle.bmc.Region region = com.oracle.bmc.Region.fromRegionId(regionId); + setRegion(region); + } catch (IllegalArgumentException e) { + LOG.info("Unknown regionId '{}', falling back to default endpoint format", regionId); + String endpoint = com.oracle.bmc.Region.formatDefaultRegionEndpoint(SERVICE, regionId); + setEndpoint(endpoint); + } + } + + @Override + public void close() { + client.close(); + } + + @Override + public CreateExportResponse createExport(CreateExportRequest request) { + LOG.trace("Called createExport"); + request = CreateExportConverter.interceptRequest(request); + com.oracle.bmc.http.internal.WrappedInvocationBuilder ib = + CreateExportConverter.fromRequest(client, request); + com.google.common.base.Function + transformer = CreateExportConverter.fromResponse(); + + int attempts = 0; + while (true) { + try { + javax.ws.rs.core.Response response = + client.post(ib, request.getCreateExportDetails(), request); + return transformer.apply(response); + } catch (com.oracle.bmc.model.BmcException e) { + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; + } else { + throw e; + } + } + } + } + + @Override + public CreateFileSystemResponse createFileSystem(CreateFileSystemRequest request) { + LOG.trace("Called createFileSystem"); + request = CreateFileSystemConverter.interceptRequest(request); + com.oracle.bmc.http.internal.WrappedInvocationBuilder ib = + CreateFileSystemConverter.fromRequest(client, request); + com.google.common.base.Function + transformer = CreateFileSystemConverter.fromResponse(); + + int attempts = 0; + while (true) { + try { + javax.ws.rs.core.Response response = + client.post(ib, request.getCreateFileSystemDetails(), request); + return transformer.apply(response); + } catch (com.oracle.bmc.model.BmcException e) { + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; + } else { + throw e; + } + } + } + } + + @Override + public CreateMountTargetResponse createMountTarget(CreateMountTargetRequest request) { + LOG.trace("Called createMountTarget"); + request = CreateMountTargetConverter.interceptRequest(request); + com.oracle.bmc.http.internal.WrappedInvocationBuilder ib = + CreateMountTargetConverter.fromRequest(client, request); + com.google.common.base.Function + transformer = CreateMountTargetConverter.fromResponse(); + + int attempts = 0; + while (true) { + try { + javax.ws.rs.core.Response response = + client.post(ib, request.getCreateMountTargetDetails(), request); + return transformer.apply(response); + } catch (com.oracle.bmc.model.BmcException e) { + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; + } else { + throw e; + } + } + } + } + + @Override + public CreateSnapshotResponse createSnapshot(CreateSnapshotRequest request) { + LOG.trace("Called createSnapshot"); + request = CreateSnapshotConverter.interceptRequest(request); + com.oracle.bmc.http.internal.WrappedInvocationBuilder ib = + CreateSnapshotConverter.fromRequest(client, request); + com.google.common.base.Function + transformer = CreateSnapshotConverter.fromResponse(); + + int attempts = 0; + while (true) { + try { + javax.ws.rs.core.Response response = + client.post(ib, request.getCreateSnapshotDetails(), request); + return transformer.apply(response); + } catch (com.oracle.bmc.model.BmcException e) { + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; + } else { + throw e; + } + } + } + } + + @Override + public DeleteExportResponse deleteExport(DeleteExportRequest request) { + LOG.trace("Called deleteExport"); + request = DeleteExportConverter.interceptRequest(request); + com.oracle.bmc.http.internal.WrappedInvocationBuilder ib = + DeleteExportConverter.fromRequest(client, request); + com.google.common.base.Function + transformer = DeleteExportConverter.fromResponse(); + + int attempts = 0; + while (true) { + try { + javax.ws.rs.core.Response response = client.delete(ib, request); + return transformer.apply(response); + } catch (com.oracle.bmc.model.BmcException e) { + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; + } else { + throw e; + } + } + } + } + + @Override + public DeleteFileSystemResponse deleteFileSystem(DeleteFileSystemRequest request) { + LOG.trace("Called deleteFileSystem"); + request = DeleteFileSystemConverter.interceptRequest(request); + com.oracle.bmc.http.internal.WrappedInvocationBuilder ib = + DeleteFileSystemConverter.fromRequest(client, request); + com.google.common.base.Function + transformer = DeleteFileSystemConverter.fromResponse(); + + int attempts = 0; + while (true) { + try { + javax.ws.rs.core.Response response = client.delete(ib, request); + return transformer.apply(response); + } catch (com.oracle.bmc.model.BmcException e) { + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; + } else { + throw e; + } + } + } + } + + @Override + public DeleteMountTargetResponse deleteMountTarget(DeleteMountTargetRequest request) { + LOG.trace("Called deleteMountTarget"); + request = DeleteMountTargetConverter.interceptRequest(request); + com.oracle.bmc.http.internal.WrappedInvocationBuilder ib = + DeleteMountTargetConverter.fromRequest(client, request); + com.google.common.base.Function + transformer = DeleteMountTargetConverter.fromResponse(); + + int attempts = 0; + while (true) { + try { + javax.ws.rs.core.Response response = client.delete(ib, request); + return transformer.apply(response); + } catch (com.oracle.bmc.model.BmcException e) { + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; + } else { + throw e; + } + } + } + } + + @Override + public DeleteSnapshotResponse deleteSnapshot(DeleteSnapshotRequest request) { + LOG.trace("Called deleteSnapshot"); + request = DeleteSnapshotConverter.interceptRequest(request); + com.oracle.bmc.http.internal.WrappedInvocationBuilder ib = + DeleteSnapshotConverter.fromRequest(client, request); + com.google.common.base.Function + transformer = DeleteSnapshotConverter.fromResponse(); + + int attempts = 0; + while (true) { + try { + javax.ws.rs.core.Response response = client.delete(ib, request); + return transformer.apply(response); + } catch (com.oracle.bmc.model.BmcException e) { + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; + } else { + throw e; + } + } + } + } + + @Override + public GetExportResponse getExport(GetExportRequest request) { + LOG.trace("Called getExport"); + request = GetExportConverter.interceptRequest(request); + com.oracle.bmc.http.internal.WrappedInvocationBuilder ib = + GetExportConverter.fromRequest(client, request); + com.google.common.base.Function transformer = + GetExportConverter.fromResponse(); + + int attempts = 0; + while (true) { + try { + javax.ws.rs.core.Response response = client.get(ib, request); + return transformer.apply(response); + } catch (com.oracle.bmc.model.BmcException e) { + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; + } else { + throw e; + } + } + } + } + + @Override + public GetExportSetResponse getExportSet(GetExportSetRequest request) { + LOG.trace("Called getExportSet"); + request = GetExportSetConverter.interceptRequest(request); + com.oracle.bmc.http.internal.WrappedInvocationBuilder ib = + GetExportSetConverter.fromRequest(client, request); + com.google.common.base.Function + transformer = GetExportSetConverter.fromResponse(); + + int attempts = 0; + while (true) { + try { + javax.ws.rs.core.Response response = client.get(ib, request); + return transformer.apply(response); + } catch (com.oracle.bmc.model.BmcException e) { + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; + } else { + throw e; + } + } + } + } + + @Override + public GetFileSystemResponse getFileSystem(GetFileSystemRequest request) { + LOG.trace("Called getFileSystem"); + request = GetFileSystemConverter.interceptRequest(request); + com.oracle.bmc.http.internal.WrappedInvocationBuilder ib = + GetFileSystemConverter.fromRequest(client, request); + com.google.common.base.Function + transformer = GetFileSystemConverter.fromResponse(); + + int attempts = 0; + while (true) { + try { + javax.ws.rs.core.Response response = client.get(ib, request); + return transformer.apply(response); + } catch (com.oracle.bmc.model.BmcException e) { + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; + } else { + throw e; + } + } + } + } + + @Override + public GetMountTargetResponse getMountTarget(GetMountTargetRequest request) { + LOG.trace("Called getMountTarget"); + request = GetMountTargetConverter.interceptRequest(request); + com.oracle.bmc.http.internal.WrappedInvocationBuilder ib = + GetMountTargetConverter.fromRequest(client, request); + com.google.common.base.Function + transformer = GetMountTargetConverter.fromResponse(); + + int attempts = 0; + while (true) { + try { + javax.ws.rs.core.Response response = client.get(ib, request); + return transformer.apply(response); + } catch (com.oracle.bmc.model.BmcException e) { + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; + } else { + throw e; + } + } + } + } + + @Override + public GetSnapshotResponse getSnapshot(GetSnapshotRequest request) { + LOG.trace("Called getSnapshot"); + request = GetSnapshotConverter.interceptRequest(request); + com.oracle.bmc.http.internal.WrappedInvocationBuilder ib = + GetSnapshotConverter.fromRequest(client, request); + com.google.common.base.Function + transformer = GetSnapshotConverter.fromResponse(); + + int attempts = 0; + while (true) { + try { + javax.ws.rs.core.Response response = client.get(ib, request); + return transformer.apply(response); + } catch (com.oracle.bmc.model.BmcException e) { + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; + } else { + throw e; + } + } + } + } + + @Override + public ListExportSetsResponse listExportSets(ListExportSetsRequest request) { + LOG.trace("Called listExportSets"); + request = ListExportSetsConverter.interceptRequest(request); + com.oracle.bmc.http.internal.WrappedInvocationBuilder ib = + ListExportSetsConverter.fromRequest(client, request); + com.google.common.base.Function + transformer = ListExportSetsConverter.fromResponse(); + + int attempts = 0; + while (true) { + try { + javax.ws.rs.core.Response response = client.get(ib, request); + return transformer.apply(response); + } catch (com.oracle.bmc.model.BmcException e) { + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; + } else { + throw e; + } + } + } + } + + @Override + public ListExportsResponse listExports(ListExportsRequest request) { + LOG.trace("Called listExports"); + request = ListExportsConverter.interceptRequest(request); + com.oracle.bmc.http.internal.WrappedInvocationBuilder ib = + ListExportsConverter.fromRequest(client, request); + com.google.common.base.Function + transformer = ListExportsConverter.fromResponse(); + + int attempts = 0; + while (true) { + try { + javax.ws.rs.core.Response response = client.get(ib, request); + return transformer.apply(response); + } catch (com.oracle.bmc.model.BmcException e) { + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; + } else { + throw e; + } + } + } + } + + @Override + public ListFileSystemsResponse listFileSystems(ListFileSystemsRequest request) { + LOG.trace("Called listFileSystems"); + request = ListFileSystemsConverter.interceptRequest(request); + com.oracle.bmc.http.internal.WrappedInvocationBuilder ib = + ListFileSystemsConverter.fromRequest(client, request); + com.google.common.base.Function + transformer = ListFileSystemsConverter.fromResponse(); + + int attempts = 0; + while (true) { + try { + javax.ws.rs.core.Response response = client.get(ib, request); + return transformer.apply(response); + } catch (com.oracle.bmc.model.BmcException e) { + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; + } else { + throw e; + } + } + } + } + + @Override + public ListMountTargetsResponse listMountTargets(ListMountTargetsRequest request) { + LOG.trace("Called listMountTargets"); + request = ListMountTargetsConverter.interceptRequest(request); + com.oracle.bmc.http.internal.WrappedInvocationBuilder ib = + ListMountTargetsConverter.fromRequest(client, request); + com.google.common.base.Function + transformer = ListMountTargetsConverter.fromResponse(); + + int attempts = 0; + while (true) { + try { + javax.ws.rs.core.Response response = client.get(ib, request); + return transformer.apply(response); + } catch (com.oracle.bmc.model.BmcException e) { + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; + } else { + throw e; + } + } + } + } + + @Override + public ListSnapshotsResponse listSnapshots(ListSnapshotsRequest request) { + LOG.trace("Called listSnapshots"); + request = ListSnapshotsConverter.interceptRequest(request); + com.oracle.bmc.http.internal.WrappedInvocationBuilder ib = + ListSnapshotsConverter.fromRequest(client, request); + com.google.common.base.Function + transformer = ListSnapshotsConverter.fromResponse(); + + int attempts = 0; + while (true) { + try { + javax.ws.rs.core.Response response = client.get(ib, request); + return transformer.apply(response); + } catch (com.oracle.bmc.model.BmcException e) { + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; + } else { + throw e; + } + } + } + } + + @Override + public UpdateExportSetResponse updateExportSet(UpdateExportSetRequest request) { + LOG.trace("Called updateExportSet"); + request = UpdateExportSetConverter.interceptRequest(request); + com.oracle.bmc.http.internal.WrappedInvocationBuilder ib = + UpdateExportSetConverter.fromRequest(client, request); + com.google.common.base.Function + transformer = UpdateExportSetConverter.fromResponse(); + + int attempts = 0; + while (true) { + try { + javax.ws.rs.core.Response response = + client.put(ib, request.getUpdateExportSetDetails(), request); + return transformer.apply(response); + } catch (com.oracle.bmc.model.BmcException e) { + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; + } else { + throw e; + } + } + } + } + + @Override + public UpdateFileSystemResponse updateFileSystem(UpdateFileSystemRequest request) { + LOG.trace("Called updateFileSystem"); + request = UpdateFileSystemConverter.interceptRequest(request); + com.oracle.bmc.http.internal.WrappedInvocationBuilder ib = + UpdateFileSystemConverter.fromRequest(client, request); + com.google.common.base.Function + transformer = UpdateFileSystemConverter.fromResponse(); + + int attempts = 0; + while (true) { + try { + javax.ws.rs.core.Response response = + client.put(ib, request.getUpdateFileSystemDetails(), request); + return transformer.apply(response); + } catch (com.oracle.bmc.model.BmcException e) { + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; + } else { + throw e; + } + } + } + } + + @Override + public UpdateMountTargetResponse updateMountTarget(UpdateMountTargetRequest request) { + LOG.trace("Called updateMountTarget"); + request = UpdateMountTargetConverter.interceptRequest(request); + com.oracle.bmc.http.internal.WrappedInvocationBuilder ib = + UpdateMountTargetConverter.fromRequest(client, request); + com.google.common.base.Function + transformer = UpdateMountTargetConverter.fromResponse(); + + int attempts = 0; + while (true) { + try { + javax.ws.rs.core.Response response = + client.put(ib, request.getUpdateMountTargetDetails(), request); + return transformer.apply(response); + } catch (com.oracle.bmc.model.BmcException e) { + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; + } else { + throw e; + } + } + } + } + + private boolean canRetryRequestIfInstancePrincipalsUsed(com.oracle.bmc.model.BmcException e) { + if (e.getStatusCode() == 401 + && this.authenticationDetailsProvider + instanceof + com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) + this.authenticationDetailsProvider) + .refreshSecurityToken(); + return true; + } + return false; + } + + @Override + public FileStorageWaiters getWaiters() { + return waiters; + } + + @Override + public FileStoragePaginators getPaginators() { + return paginators; + } +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/FileStoragePaginators.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/FileStoragePaginators.java new file mode 100644 index 00000000000..bc7e304265d --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/FileStoragePaginators.java @@ -0,0 +1,587 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage; + +import com.oracle.bmc.filestorage.requests.*; +import com.oracle.bmc.filestorage.responses.*; + +/** + * Collection of helper methods that can be used to provide an {@link java.lang.Iterable} interface + * to any list operations of FileStorage where multiple pages of data may be fetched. + * Two styles of iteration are supported: + * + *

            + *
          • Iterating over the Response objects returned by the list operation. These are referred to as ResponseIterators, and the methods are suffixed with ResponseIterator. For example: listUsersResponseIterator
          • + *
          • Iterating over the resources/records being listed. These are referred to as RecordIterators, and the methods are suffixed with RecordIterator. For example: listUsersRecordIterator
          • + *
          + * + * These iterables abstract away the need to write code to manually handle pagination via looping and using the page tokens. + * They will automatically fetch more data from the service when required. + * + * As an example, if we were using the ListUsers operation in IdentityService, then the {@link java.lang.Interable} returned by calling a + * ResponseIterator method would iterate over the ListUsersResponse objects returned by each ListUsers call, whereas the {@link java.lang.Iterable} + * returned by calling a RecordIterator method would iterate over the User records and we don't have to deal with ListUsersResponse objects at all. + * In either case, pagination will be automatically handled so we can iterate until there are no more responses or no more resources/records available. + */ +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.RequiredArgsConstructor +public class FileStoragePaginators { + private final FileStorage client; + + /** + * Creates a new iterable which will iterate over the responses received from the listExportSets operation. This iterable + * will fetch more data from the server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the responses received from the service. + */ + public Iterable listExportSetsResponseIterator( + final ListExportSetsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseIterable< + ListExportSetsRequest.Builder, ListExportSetsRequest, ListExportSetsResponse>( + new com.google.common.base.Supplier() { + @Override + public ListExportSetsRequest.Builder get() { + return ListExportSetsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListExportSetsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListExportSetsRequest.Builder>, + ListExportSetsRequest>() { + @Override + public ListExportSetsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListExportSetsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListExportSetsRequest, ListExportSetsResponse>() { + @Override + public ListExportSetsResponse apply(ListExportSetsRequest request) { + return client.listExportSets(request); + } + }); + } + + /** + * Creates a new iterable which will iterate over the {@link com.oracle.bmc.filestorage.model.ExportSetSummary} objects + * contained in responses from the listExportSets operation. This iterable will fetch more data from the + * server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link com.oracle.bmc.filestorage.model.ExportSetSummary} objects + * contained in responses received from the service. + */ + public Iterable listExportSetsRecordIterator( + final ListExportSetsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseRecordIterable< + ListExportSetsRequest.Builder, ListExportSetsRequest, ListExportSetsResponse, + com.oracle.bmc.filestorage.model.ExportSetSummary>( + new com.google.common.base.Supplier() { + @Override + public ListExportSetsRequest.Builder get() { + return ListExportSetsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListExportSetsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListExportSetsRequest.Builder>, + ListExportSetsRequest>() { + @Override + public ListExportSetsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListExportSetsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListExportSetsRequest, ListExportSetsResponse>() { + @Override + public ListExportSetsResponse apply(ListExportSetsRequest request) { + return client.listExportSets(request); + } + }, + new com.google.common.base.Function< + ListExportSetsResponse, + java.util.List>() { + @Override + public java.util.List apply( + ListExportSetsResponse response) { + return response.getItems(); + } + }); + } + + /** + * Creates a new iterable which will iterate over the responses received from the listExports operation. This iterable + * will fetch more data from the server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the responses received from the service. + */ + public Iterable listExportsResponseIterator( + final ListExportsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseIterable< + ListExportsRequest.Builder, ListExportsRequest, ListExportsResponse>( + new com.google.common.base.Supplier() { + @Override + public ListExportsRequest.Builder get() { + return ListExportsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListExportsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListExportsRequest.Builder>, + ListExportsRequest>() { + @Override + public ListExportsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListExportsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function() { + @Override + public ListExportsResponse apply(ListExportsRequest request) { + return client.listExports(request); + } + }); + } + + /** + * Creates a new iterable which will iterate over the {@link com.oracle.bmc.filestorage.model.ExportSummary} objects + * contained in responses from the listExports operation. This iterable will fetch more data from the + * server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link com.oracle.bmc.filestorage.model.ExportSummary} objects + * contained in responses received from the service. + */ + public Iterable listExportsRecordIterator( + final ListExportsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseRecordIterable< + ListExportsRequest.Builder, ListExportsRequest, ListExportsResponse, + com.oracle.bmc.filestorage.model.ExportSummary>( + new com.google.common.base.Supplier() { + @Override + public ListExportsRequest.Builder get() { + return ListExportsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListExportsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListExportsRequest.Builder>, + ListExportsRequest>() { + @Override + public ListExportsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListExportsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function() { + @Override + public ListExportsResponse apply(ListExportsRequest request) { + return client.listExports(request); + } + }, + new com.google.common.base.Function< + ListExportsResponse, + java.util.List>() { + @Override + public java.util.List apply( + ListExportsResponse response) { + return response.getItems(); + } + }); + } + + /** + * Creates a new iterable which will iterate over the responses received from the listFileSystems operation. This iterable + * will fetch more data from the server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the responses received from the service. + */ + public Iterable listFileSystemsResponseIterator( + final ListFileSystemsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseIterable< + ListFileSystemsRequest.Builder, ListFileSystemsRequest, ListFileSystemsResponse>( + new com.google.common.base.Supplier() { + @Override + public ListFileSystemsRequest.Builder get() { + return ListFileSystemsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListFileSystemsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListFileSystemsRequest.Builder>, + ListFileSystemsRequest>() { + @Override + public ListFileSystemsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListFileSystemsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListFileSystemsRequest, ListFileSystemsResponse>() { + @Override + public ListFileSystemsResponse apply(ListFileSystemsRequest request) { + return client.listFileSystems(request); + } + }); + } + + /** + * Creates a new iterable which will iterate over the {@link com.oracle.bmc.filestorage.model.FileSystemSummary} objects + * contained in responses from the listFileSystems operation. This iterable will fetch more data from the + * server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link com.oracle.bmc.filestorage.model.FileSystemSummary} objects + * contained in responses received from the service. + */ + public Iterable + listFileSystemsRecordIterator(final ListFileSystemsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseRecordIterable< + ListFileSystemsRequest.Builder, ListFileSystemsRequest, ListFileSystemsResponse, + com.oracle.bmc.filestorage.model.FileSystemSummary>( + new com.google.common.base.Supplier() { + @Override + public ListFileSystemsRequest.Builder get() { + return ListFileSystemsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListFileSystemsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListFileSystemsRequest.Builder>, + ListFileSystemsRequest>() { + @Override + public ListFileSystemsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListFileSystemsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListFileSystemsRequest, ListFileSystemsResponse>() { + @Override + public ListFileSystemsResponse apply(ListFileSystemsRequest request) { + return client.listFileSystems(request); + } + }, + new com.google.common.base.Function< + ListFileSystemsResponse, + java.util.List>() { + @Override + public java.util.List apply( + ListFileSystemsResponse response) { + return response.getItems(); + } + }); + } + + /** + * Creates a new iterable which will iterate over the responses received from the listMountTargets operation. This iterable + * will fetch more data from the server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the responses received from the service. + */ + public Iterable listMountTargetsResponseIterator( + final ListMountTargetsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseIterable< + ListMountTargetsRequest.Builder, ListMountTargetsRequest, ListMountTargetsResponse>( + new com.google.common.base.Supplier() { + @Override + public ListMountTargetsRequest.Builder get() { + return ListMountTargetsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListMountTargetsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListMountTargetsRequest.Builder>, + ListMountTargetsRequest>() { + @Override + public ListMountTargetsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListMountTargetsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListMountTargetsRequest, ListMountTargetsResponse>() { + @Override + public ListMountTargetsResponse apply(ListMountTargetsRequest request) { + return client.listMountTargets(request); + } + }); + } + + /** + * Creates a new iterable which will iterate over the {@link com.oracle.bmc.filestorage.model.MountTargetSummary} objects + * contained in responses from the listMountTargets operation. This iterable will fetch more data from the + * server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link com.oracle.bmc.filestorage.model.MountTargetSummary} objects + * contained in responses received from the service. + */ + public Iterable + listMountTargetsRecordIterator(final ListMountTargetsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseRecordIterable< + ListMountTargetsRequest.Builder, ListMountTargetsRequest, ListMountTargetsResponse, + com.oracle.bmc.filestorage.model.MountTargetSummary>( + new com.google.common.base.Supplier() { + @Override + public ListMountTargetsRequest.Builder get() { + return ListMountTargetsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListMountTargetsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListMountTargetsRequest.Builder>, + ListMountTargetsRequest>() { + @Override + public ListMountTargetsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListMountTargetsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListMountTargetsRequest, ListMountTargetsResponse>() { + @Override + public ListMountTargetsResponse apply(ListMountTargetsRequest request) { + return client.listMountTargets(request); + } + }, + new com.google.common.base.Function< + ListMountTargetsResponse, + java.util.List>() { + @Override + public java.util.List + apply(ListMountTargetsResponse response) { + return response.getItems(); + } + }); + } + + /** + * Creates a new iterable which will iterate over the responses received from the listSnapshots operation. This iterable + * will fetch more data from the server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the responses received from the service. + */ + public Iterable listSnapshotsResponseIterator( + final ListSnapshotsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseIterable< + ListSnapshotsRequest.Builder, ListSnapshotsRequest, ListSnapshotsResponse>( + new com.google.common.base.Supplier() { + @Override + public ListSnapshotsRequest.Builder get() { + return ListSnapshotsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListSnapshotsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListSnapshotsRequest.Builder>, + ListSnapshotsRequest>() { + @Override + public ListSnapshotsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListSnapshotsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function() { + @Override + public ListSnapshotsResponse apply(ListSnapshotsRequest request) { + return client.listSnapshots(request); + } + }); + } + + /** + * Creates a new iterable which will iterate over the {@link com.oracle.bmc.filestorage.model.SnapshotSummary} objects + * contained in responses from the listSnapshots operation. This iterable will fetch more data from the + * server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link com.oracle.bmc.filestorage.model.SnapshotSummary} objects + * contained in responses received from the service. + */ + public Iterable listSnapshotsRecordIterator( + final ListSnapshotsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseRecordIterable< + ListSnapshotsRequest.Builder, ListSnapshotsRequest, ListSnapshotsResponse, + com.oracle.bmc.filestorage.model.SnapshotSummary>( + new com.google.common.base.Supplier() { + @Override + public ListSnapshotsRequest.Builder get() { + return ListSnapshotsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListSnapshotsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListSnapshotsRequest.Builder>, + ListSnapshotsRequest>() { + @Override + public ListSnapshotsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListSnapshotsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function() { + @Override + public ListSnapshotsResponse apply(ListSnapshotsRequest request) { + return client.listSnapshots(request); + } + }, + new com.google.common.base.Function< + ListSnapshotsResponse, + java.util.List>() { + @Override + public java.util.List apply( + ListSnapshotsResponse response) { + return response.getItems(); + } + }); + } +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/FileStorageWaiters.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/FileStorageWaiters.java new file mode 100644 index 00000000000..d0fb796172e --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/FileStorageWaiters.java @@ -0,0 +1,331 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage; + +import com.oracle.bmc.filestorage.requests.*; +import com.oracle.bmc.filestorage.responses.*; + +/** + * Collection of helper methods to produce {@link Waiter}s for different + * resources of FileStorage. + *

          + * The default configuration used is defined by {@link Waiters#DEFAULT_POLLING_WAITER}. + */ +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.RequiredArgsConstructor +public class FileStorageWaiters { + private final java.util.concurrent.ExecutorService executorService; + private final FileStorage client; + + /** + * Creates a new {@link Waiter} using default configuration. + * + * @param request The request to send. + * @param targetState The desired state to wait for. + * @return A new Waiter instance. + */ + public com.oracle.bmc.waiter.Waiter forExport( + GetExportRequest request, + com.oracle.bmc.filestorage.model.Export.LifecycleState targetState) { + return forExport( + com.oracle.bmc.waiter.Waiters.DEFAULT_POLLING_WAITER, request, targetState); + } + + /** + * Creates a new {@link Waiter} using the provided configuration. + * + * @param request The request to send. + * @param targetState The desired state to wait for. + * @param terminationStrategy The {@link TerminationStrategy} to use. + * @param delayStrategy The {@link DelayStrategy} to use. + * @return A new Waiter instance. + */ + public com.oracle.bmc.waiter.Waiter forExport( + GetExportRequest request, + com.oracle.bmc.filestorage.model.Export.LifecycleState targetState, + com.oracle.bmc.waiter.TerminationStrategy terminationStrategy, + com.oracle.bmc.waiter.DelayStrategy delayStrategy) { + return forExport( + com.oracle.bmc.waiter.Waiters.newWaiter(terminationStrategy, delayStrategy), + request, + targetState); + } + + // Helper method to create a new Waiter for Export. + private com.oracle.bmc.waiter.Waiter forExport( + com.oracle.bmc.waiter.BmcGenericWaiter waiter, + final GetExportRequest request, + final com.oracle.bmc.filestorage.model.Export.LifecycleState targetState) { + return new com.oracle.bmc.waiter.internal.SimpleWaiterImpl<>( + executorService, + waiter.toCallable( + com.google.common.base.Suppliers.ofInstance(request), + new com.google.common.base.Function() { + @Override + public GetExportResponse apply(GetExportRequest request) { + return client.getExport(request); + } + }, + new com.google.common.base.Predicate() { + @Override + public boolean apply(GetExportResponse response) { + return response.getExport().getLifecycleState() == targetState; + } + }, + targetState + == com.oracle.bmc.filestorage.model.Export.LifecycleState.Deleted), + request); + } + + /** + * Creates a new {@link Waiter} using default configuration. + * + * @param request The request to send. + * @param targetState The desired state to wait for. + * @return A new Waiter instance. + */ + public com.oracle.bmc.waiter.Waiter forExportSet( + GetExportSetRequest request, + com.oracle.bmc.filestorage.model.ExportSet.LifecycleState targetState) { + return forExportSet( + com.oracle.bmc.waiter.Waiters.DEFAULT_POLLING_WAITER, request, targetState); + } + + /** + * Creates a new {@link Waiter} using the provided configuration. + * + * @param request The request to send. + * @param targetState The desired state to wait for. + * @param terminationStrategy The {@link TerminationStrategy} to use. + * @param delayStrategy The {@link DelayStrategy} to use. + * @return A new Waiter instance. + */ + public com.oracle.bmc.waiter.Waiter forExportSet( + GetExportSetRequest request, + com.oracle.bmc.filestorage.model.ExportSet.LifecycleState targetState, + com.oracle.bmc.waiter.TerminationStrategy terminationStrategy, + com.oracle.bmc.waiter.DelayStrategy delayStrategy) { + return forExportSet( + com.oracle.bmc.waiter.Waiters.newWaiter(terminationStrategy, delayStrategy), + request, + targetState); + } + + // Helper method to create a new Waiter for ExportSet. + private com.oracle.bmc.waiter.Waiter forExportSet( + com.oracle.bmc.waiter.BmcGenericWaiter waiter, + final GetExportSetRequest request, + final com.oracle.bmc.filestorage.model.ExportSet.LifecycleState targetState) { + return new com.oracle.bmc.waiter.internal.SimpleWaiterImpl<>( + executorService, + waiter.toCallable( + com.google.common.base.Suppliers.ofInstance(request), + new com.google.common.base.Function< + GetExportSetRequest, GetExportSetResponse>() { + @Override + public GetExportSetResponse apply(GetExportSetRequest request) { + return client.getExportSet(request); + } + }, + new com.google.common.base.Predicate() { + @Override + public boolean apply(GetExportSetResponse response) { + return response.getExportSet().getLifecycleState() == targetState; + } + }, + targetState + == com.oracle.bmc.filestorage.model.ExportSet.LifecycleState + .Deleted), + request); + } + + /** + * Creates a new {@link Waiter} using default configuration. + * + * @param request The request to send. + * @param targetState The desired state to wait for. + * @return A new Waiter instance. + */ + public com.oracle.bmc.waiter.Waiter forFileSystem( + GetFileSystemRequest request, + com.oracle.bmc.filestorage.model.FileSystem.LifecycleState targetState) { + return forFileSystem( + com.oracle.bmc.waiter.Waiters.DEFAULT_POLLING_WAITER, request, targetState); + } + + /** + * Creates a new {@link Waiter} using the provided configuration. + * + * @param request The request to send. + * @param targetState The desired state to wait for. + * @param terminationStrategy The {@link TerminationStrategy} to use. + * @param delayStrategy The {@link DelayStrategy} to use. + * @return A new Waiter instance. + */ + public com.oracle.bmc.waiter.Waiter forFileSystem( + GetFileSystemRequest request, + com.oracle.bmc.filestorage.model.FileSystem.LifecycleState targetState, + com.oracle.bmc.waiter.TerminationStrategy terminationStrategy, + com.oracle.bmc.waiter.DelayStrategy delayStrategy) { + return forFileSystem( + com.oracle.bmc.waiter.Waiters.newWaiter(terminationStrategy, delayStrategy), + request, + targetState); + } + + // Helper method to create a new Waiter for FileSystem. + private com.oracle.bmc.waiter.Waiter forFileSystem( + com.oracle.bmc.waiter.BmcGenericWaiter waiter, + final GetFileSystemRequest request, + final com.oracle.bmc.filestorage.model.FileSystem.LifecycleState targetState) { + return new com.oracle.bmc.waiter.internal.SimpleWaiterImpl<>( + executorService, + waiter.toCallable( + com.google.common.base.Suppliers.ofInstance(request), + new com.google.common.base.Function< + GetFileSystemRequest, GetFileSystemResponse>() { + @Override + public GetFileSystemResponse apply(GetFileSystemRequest request) { + return client.getFileSystem(request); + } + }, + new com.google.common.base.Predicate() { + @Override + public boolean apply(GetFileSystemResponse response) { + return response.getFileSystem().getLifecycleState() == targetState; + } + }, + targetState + == com.oracle.bmc.filestorage.model.FileSystem.LifecycleState + .Deleted), + request); + } + + /** + * Creates a new {@link Waiter} using default configuration. + * + * @param request The request to send. + * @param targetState The desired state to wait for. + * @return A new Waiter instance. + */ + public com.oracle.bmc.waiter.Waiter + forMountTarget( + GetMountTargetRequest request, + com.oracle.bmc.filestorage.model.MountTarget.LifecycleState targetState) { + return forMountTarget( + com.oracle.bmc.waiter.Waiters.DEFAULT_POLLING_WAITER, request, targetState); + } + + /** + * Creates a new {@link Waiter} using the provided configuration. + * + * @param request The request to send. + * @param targetState The desired state to wait for. + * @param terminationStrategy The {@link TerminationStrategy} to use. + * @param delayStrategy The {@link DelayStrategy} to use. + * @return A new Waiter instance. + */ + public com.oracle.bmc.waiter.Waiter + forMountTarget( + GetMountTargetRequest request, + com.oracle.bmc.filestorage.model.MountTarget.LifecycleState targetState, + com.oracle.bmc.waiter.TerminationStrategy terminationStrategy, + com.oracle.bmc.waiter.DelayStrategy delayStrategy) { + return forMountTarget( + com.oracle.bmc.waiter.Waiters.newWaiter(terminationStrategy, delayStrategy), + request, + targetState); + } + + // Helper method to create a new Waiter for MountTarget. + private com.oracle.bmc.waiter.Waiter + forMountTarget( + com.oracle.bmc.waiter.BmcGenericWaiter waiter, + final GetMountTargetRequest request, + final com.oracle.bmc.filestorage.model.MountTarget.LifecycleState targetState) { + return new com.oracle.bmc.waiter.internal.SimpleWaiterImpl<>( + executorService, + waiter.toCallable( + com.google.common.base.Suppliers.ofInstance(request), + new com.google.common.base.Function< + GetMountTargetRequest, GetMountTargetResponse>() { + @Override + public GetMountTargetResponse apply(GetMountTargetRequest request) { + return client.getMountTarget(request); + } + }, + new com.google.common.base.Predicate() { + @Override + public boolean apply(GetMountTargetResponse response) { + return response.getMountTarget().getLifecycleState() == targetState; + } + }, + targetState + == com.oracle.bmc.filestorage.model.MountTarget.LifecycleState + .Deleted), + request); + } + + /** + * Creates a new {@link Waiter} using default configuration. + * + * @param request The request to send. + * @param targetState The desired state to wait for. + * @return A new Waiter instance. + */ + public com.oracle.bmc.waiter.Waiter forSnapshot( + GetSnapshotRequest request, + com.oracle.bmc.filestorage.model.Snapshot.LifecycleState targetState) { + return forSnapshot( + com.oracle.bmc.waiter.Waiters.DEFAULT_POLLING_WAITER, request, targetState); + } + + /** + * Creates a new {@link Waiter} using the provided configuration. + * + * @param request The request to send. + * @param targetState The desired state to wait for. + * @param terminationStrategy The {@link TerminationStrategy} to use. + * @param delayStrategy The {@link DelayStrategy} to use. + * @return A new Waiter instance. + */ + public com.oracle.bmc.waiter.Waiter forSnapshot( + GetSnapshotRequest request, + com.oracle.bmc.filestorage.model.Snapshot.LifecycleState targetState, + com.oracle.bmc.waiter.TerminationStrategy terminationStrategy, + com.oracle.bmc.waiter.DelayStrategy delayStrategy) { + return forSnapshot( + com.oracle.bmc.waiter.Waiters.newWaiter(terminationStrategy, delayStrategy), + request, + targetState); + } + + // Helper method to create a new Waiter for Snapshot. + private com.oracle.bmc.waiter.Waiter forSnapshot( + com.oracle.bmc.waiter.BmcGenericWaiter waiter, + final GetSnapshotRequest request, + final com.oracle.bmc.filestorage.model.Snapshot.LifecycleState targetState) { + return new com.oracle.bmc.waiter.internal.SimpleWaiterImpl<>( + executorService, + waiter.toCallable( + com.google.common.base.Suppliers.ofInstance(request), + new com.google.common.base.Function< + GetSnapshotRequest, GetSnapshotResponse>() { + @Override + public GetSnapshotResponse apply(GetSnapshotRequest request) { + return client.getSnapshot(request); + } + }, + new com.google.common.base.Predicate() { + @Override + public boolean apply(GetSnapshotResponse response) { + return response.getSnapshot().getLifecycleState() == targetState; + } + }, + targetState + == com.oracle.bmc.filestorage.model.Snapshot.LifecycleState + .Deleted), + request); + } +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/internal/http/CreateExportConverter.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/internal/http/CreateExportConverter.java new file mode 100644 index 00000000000..53cb1e499ad --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/internal/http/CreateExportConverter.java @@ -0,0 +1,100 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.internal.http; + +import com.oracle.bmc.filestorage.model.*; +import com.oracle.bmc.filestorage.requests.*; +import com.oracle.bmc.filestorage.responses.*; + +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.extern.slf4j.Slf4j +public class CreateExportConverter { + private static final com.oracle.bmc.http.internal.ResponseConversionFunctionFactory + RESPONSE_CONVERSION_FACTORY = + new com.oracle.bmc.http.internal.ResponseConversionFunctionFactory(); + + public static CreateExportRequest interceptRequest(CreateExportRequest request) { + + return request; + } + + public static com.oracle.bmc.http.internal.WrappedInvocationBuilder fromRequest( + com.oracle.bmc.http.internal.RestClient client, CreateExportRequest request) { + if (request == null) { + throw new NullPointerException("request instance is required"); + } + + if (request.getCreateExportDetails() == null) { + throw new NullPointerException("createExportDetails is required"); + } + + com.oracle.bmc.http.internal.WrappedWebTarget target = + client.getBaseTarget().path("/20171215").path("exports"); + + com.oracle.bmc.http.internal.WrappedInvocationBuilder ib = target.request(); + + ib.accept(javax.ws.rs.core.MediaType.APPLICATION_JSON); + + if (request.getOpcRetryToken() != null) { + ib.header("opc-retry-token", request.getOpcRetryToken()); + } + + return ib; + } + + public static com.google.common.base.Function + fromResponse() { + final com.google.common.base.Function + transformer = + new com.google.common.base.Function< + javax.ws.rs.core.Response, CreateExportResponse>() { + @Override + public CreateExportResponse apply( + javax.ws.rs.core.Response rawResponse) { + LOG.trace("Transform function invoked for CreateExportResponse"); + com.google.common.base.Function< + javax.ws.rs.core.Response, + com.oracle.bmc.http.internal.WithHeaders> + responseFn = + RESPONSE_CONVERSION_FACTORY.create(Export.class); + + com.oracle.bmc.http.internal.WithHeaders response = + responseFn.apply(rawResponse); + javax.ws.rs.core.MultivaluedMap headers = + response.getHeaders(); + + CreateExportResponse.Builder builder = + CreateExportResponse.builder(); + + builder.export(response.getItem()); + + com.google.common.base.Optional> etagHeader = + com.oracle.bmc.http.internal.HeaderUtils.get( + headers, "etag"); + if (etagHeader.isPresent()) { + builder.etag( + com.oracle.bmc.http.internal.HeaderUtils.toValue( + "etag", etagHeader.get().get(0), String.class)); + } + + com.google.common.base.Optional> + opcRequestIdHeader = + com.oracle.bmc.http.internal.HeaderUtils.get( + headers, "opc-request-id"); + if (opcRequestIdHeader.isPresent()) { + builder.opcRequestId( + com.oracle.bmc.http.internal.HeaderUtils.toValue( + "opc-request-id", + opcRequestIdHeader.get().get(0), + String.class)); + } + + CreateExportResponse responseWrapper = builder.build(); + + return responseWrapper; + } + }; + return transformer; + } +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/internal/http/CreateFileSystemConverter.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/internal/http/CreateFileSystemConverter.java new file mode 100644 index 00000000000..0df5b04aecd --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/internal/http/CreateFileSystemConverter.java @@ -0,0 +1,104 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.internal.http; + +import com.oracle.bmc.filestorage.model.*; +import com.oracle.bmc.filestorage.requests.*; +import com.oracle.bmc.filestorage.responses.*; + +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.extern.slf4j.Slf4j +public class CreateFileSystemConverter { + private static final com.oracle.bmc.http.internal.ResponseConversionFunctionFactory + RESPONSE_CONVERSION_FACTORY = + new com.oracle.bmc.http.internal.ResponseConversionFunctionFactory(); + + public static CreateFileSystemRequest interceptRequest(CreateFileSystemRequest request) { + + return request; + } + + public static com.oracle.bmc.http.internal.WrappedInvocationBuilder fromRequest( + com.oracle.bmc.http.internal.RestClient client, CreateFileSystemRequest request) { + if (request == null) { + throw new NullPointerException("request instance is required"); + } + + if (request.getCreateFileSystemDetails() == null) { + throw new NullPointerException("createFileSystemDetails is required"); + } + + com.oracle.bmc.http.internal.WrappedWebTarget target = + client.getBaseTarget().path("/20171215").path("fileSystems"); + + com.oracle.bmc.http.internal.WrappedInvocationBuilder ib = target.request(); + + ib.accept(javax.ws.rs.core.MediaType.APPLICATION_JSON); + + if (request.getOpcRetryToken() != null) { + ib.header("opc-retry-token", request.getOpcRetryToken()); + } + + return ib; + } + + public static com.google.common.base.Function< + javax.ws.rs.core.Response, CreateFileSystemResponse> + fromResponse() { + final com.google.common.base.Function + transformer = + new com.google.common.base.Function< + javax.ws.rs.core.Response, CreateFileSystemResponse>() { + @Override + public CreateFileSystemResponse apply( + javax.ws.rs.core.Response rawResponse) { + LOG.trace( + "Transform function invoked for CreateFileSystemResponse"); + com.google.common.base.Function< + javax.ws.rs.core.Response, + com.oracle.bmc.http.internal.WithHeaders< + FileSystem>> + responseFn = + RESPONSE_CONVERSION_FACTORY.create( + FileSystem.class); + + com.oracle.bmc.http.internal.WithHeaders response = + responseFn.apply(rawResponse); + javax.ws.rs.core.MultivaluedMap headers = + response.getHeaders(); + + CreateFileSystemResponse.Builder builder = + CreateFileSystemResponse.builder(); + + builder.fileSystem(response.getItem()); + + com.google.common.base.Optional> etagHeader = + com.oracle.bmc.http.internal.HeaderUtils.get( + headers, "etag"); + if (etagHeader.isPresent()) { + builder.etag( + com.oracle.bmc.http.internal.HeaderUtils.toValue( + "etag", etagHeader.get().get(0), String.class)); + } + + com.google.common.base.Optional> + opcRequestIdHeader = + com.oracle.bmc.http.internal.HeaderUtils.get( + headers, "opc-request-id"); + if (opcRequestIdHeader.isPresent()) { + builder.opcRequestId( + com.oracle.bmc.http.internal.HeaderUtils.toValue( + "opc-request-id", + opcRequestIdHeader.get().get(0), + String.class)); + } + + CreateFileSystemResponse responseWrapper = builder.build(); + + return responseWrapper; + } + }; + return transformer; + } +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/internal/http/CreateMountTargetConverter.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/internal/http/CreateMountTargetConverter.java new file mode 100644 index 00000000000..334c53df5ef --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/internal/http/CreateMountTargetConverter.java @@ -0,0 +1,104 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.internal.http; + +import com.oracle.bmc.filestorage.model.*; +import com.oracle.bmc.filestorage.requests.*; +import com.oracle.bmc.filestorage.responses.*; + +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.extern.slf4j.Slf4j +public class CreateMountTargetConverter { + private static final com.oracle.bmc.http.internal.ResponseConversionFunctionFactory + RESPONSE_CONVERSION_FACTORY = + new com.oracle.bmc.http.internal.ResponseConversionFunctionFactory(); + + public static CreateMountTargetRequest interceptRequest(CreateMountTargetRequest request) { + + return request; + } + + public static com.oracle.bmc.http.internal.WrappedInvocationBuilder fromRequest( + com.oracle.bmc.http.internal.RestClient client, CreateMountTargetRequest request) { + if (request == null) { + throw new NullPointerException("request instance is required"); + } + + if (request.getCreateMountTargetDetails() == null) { + throw new NullPointerException("createMountTargetDetails is required"); + } + + com.oracle.bmc.http.internal.WrappedWebTarget target = + client.getBaseTarget().path("/20171215").path("mountTargets"); + + com.oracle.bmc.http.internal.WrappedInvocationBuilder ib = target.request(); + + ib.accept(javax.ws.rs.core.MediaType.APPLICATION_JSON); + + if (request.getOpcRetryToken() != null) { + ib.header("opc-retry-token", request.getOpcRetryToken()); + } + + return ib; + } + + public static com.google.common.base.Function< + javax.ws.rs.core.Response, CreateMountTargetResponse> + fromResponse() { + final com.google.common.base.Function + transformer = + new com.google.common.base.Function< + javax.ws.rs.core.Response, CreateMountTargetResponse>() { + @Override + public CreateMountTargetResponse apply( + javax.ws.rs.core.Response rawResponse) { + LOG.trace( + "Transform function invoked for CreateMountTargetResponse"); + com.google.common.base.Function< + javax.ws.rs.core.Response, + com.oracle.bmc.http.internal.WithHeaders< + MountTarget>> + responseFn = + RESPONSE_CONVERSION_FACTORY.create( + MountTarget.class); + + com.oracle.bmc.http.internal.WithHeaders response = + responseFn.apply(rawResponse); + javax.ws.rs.core.MultivaluedMap headers = + response.getHeaders(); + + CreateMountTargetResponse.Builder builder = + CreateMountTargetResponse.builder(); + + builder.mountTarget(response.getItem()); + + com.google.common.base.Optional> etagHeader = + com.oracle.bmc.http.internal.HeaderUtils.get( + headers, "etag"); + if (etagHeader.isPresent()) { + builder.etag( + com.oracle.bmc.http.internal.HeaderUtils.toValue( + "etag", etagHeader.get().get(0), String.class)); + } + + com.google.common.base.Optional> + opcRequestIdHeader = + com.oracle.bmc.http.internal.HeaderUtils.get( + headers, "opc-request-id"); + if (opcRequestIdHeader.isPresent()) { + builder.opcRequestId( + com.oracle.bmc.http.internal.HeaderUtils.toValue( + "opc-request-id", + opcRequestIdHeader.get().get(0), + String.class)); + } + + CreateMountTargetResponse responseWrapper = builder.build(); + + return responseWrapper; + } + }; + return transformer; + } +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/internal/http/CreateSnapshotConverter.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/internal/http/CreateSnapshotConverter.java new file mode 100644 index 00000000000..c99223768fb --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/internal/http/CreateSnapshotConverter.java @@ -0,0 +1,100 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.internal.http; + +import com.oracle.bmc.filestorage.model.*; +import com.oracle.bmc.filestorage.requests.*; +import com.oracle.bmc.filestorage.responses.*; + +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.extern.slf4j.Slf4j +public class CreateSnapshotConverter { + private static final com.oracle.bmc.http.internal.ResponseConversionFunctionFactory + RESPONSE_CONVERSION_FACTORY = + new com.oracle.bmc.http.internal.ResponseConversionFunctionFactory(); + + public static CreateSnapshotRequest interceptRequest(CreateSnapshotRequest request) { + + return request; + } + + public static com.oracle.bmc.http.internal.WrappedInvocationBuilder fromRequest( + com.oracle.bmc.http.internal.RestClient client, CreateSnapshotRequest request) { + if (request == null) { + throw new NullPointerException("request instance is required"); + } + + if (request.getCreateSnapshotDetails() == null) { + throw new NullPointerException("createSnapshotDetails is required"); + } + + com.oracle.bmc.http.internal.WrappedWebTarget target = + client.getBaseTarget().path("/20171215").path("snapshots"); + + com.oracle.bmc.http.internal.WrappedInvocationBuilder ib = target.request(); + + ib.accept(javax.ws.rs.core.MediaType.APPLICATION_JSON); + + if (request.getOpcRetryToken() != null) { + ib.header("opc-retry-token", request.getOpcRetryToken()); + } + + return ib; + } + + public static com.google.common.base.Function + fromResponse() { + final com.google.common.base.Function + transformer = + new com.google.common.base.Function< + javax.ws.rs.core.Response, CreateSnapshotResponse>() { + @Override + public CreateSnapshotResponse apply( + javax.ws.rs.core.Response rawResponse) { + LOG.trace("Transform function invoked for CreateSnapshotResponse"); + com.google.common.base.Function< + javax.ws.rs.core.Response, + com.oracle.bmc.http.internal.WithHeaders> + responseFn = + RESPONSE_CONVERSION_FACTORY.create(Snapshot.class); + + com.oracle.bmc.http.internal.WithHeaders response = + responseFn.apply(rawResponse); + javax.ws.rs.core.MultivaluedMap headers = + response.getHeaders(); + + CreateSnapshotResponse.Builder builder = + CreateSnapshotResponse.builder(); + + builder.snapshot(response.getItem()); + + com.google.common.base.Optional> etagHeader = + com.oracle.bmc.http.internal.HeaderUtils.get( + headers, "etag"); + if (etagHeader.isPresent()) { + builder.etag( + com.oracle.bmc.http.internal.HeaderUtils.toValue( + "etag", etagHeader.get().get(0), String.class)); + } + + com.google.common.base.Optional> + opcRequestIdHeader = + com.oracle.bmc.http.internal.HeaderUtils.get( + headers, "opc-request-id"); + if (opcRequestIdHeader.isPresent()) { + builder.opcRequestId( + com.oracle.bmc.http.internal.HeaderUtils.toValue( + "opc-request-id", + opcRequestIdHeader.get().get(0), + String.class)); + } + + CreateSnapshotResponse responseWrapper = builder.build(); + + return responseWrapper; + } + }; + return transformer; + } +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/internal/http/DeleteExportConverter.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/internal/http/DeleteExportConverter.java new file mode 100644 index 00000000000..01812e5c801 --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/internal/http/DeleteExportConverter.java @@ -0,0 +1,93 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.internal.http; + +import com.oracle.bmc.filestorage.model.*; +import com.oracle.bmc.filestorage.requests.*; +import com.oracle.bmc.filestorage.responses.*; + +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.extern.slf4j.Slf4j +public class DeleteExportConverter { + private static final com.oracle.bmc.http.internal.ResponseConversionFunctionFactory + RESPONSE_CONVERSION_FACTORY = + new com.oracle.bmc.http.internal.ResponseConversionFunctionFactory(); + + public static DeleteExportRequest interceptRequest(DeleteExportRequest request) { + + return request; + } + + public static com.oracle.bmc.http.internal.WrappedInvocationBuilder fromRequest( + com.oracle.bmc.http.internal.RestClient client, DeleteExportRequest request) { + if (request == null) { + throw new NullPointerException("request instance is required"); + } + + if (request.getExportId() == null) { + throw new NullPointerException("exportId is required"); + } + + com.oracle.bmc.http.internal.WrappedWebTarget target = + client.getBaseTarget() + .path("/20171215") + .path("exports") + .path( + com.oracle.bmc.util.internal.HttpUtils.encodePathSegment( + request.getExportId())); + + com.oracle.bmc.http.internal.WrappedInvocationBuilder ib = target.request(); + + ib.accept(javax.ws.rs.core.MediaType.APPLICATION_JSON); + + if (request.getIfMatch() != null) { + ib.header("if-match", request.getIfMatch()); + } + + return ib; + } + + public static com.google.common.base.Function + fromResponse() { + final com.google.common.base.Function + transformer = + new com.google.common.base.Function< + javax.ws.rs.core.Response, DeleteExportResponse>() { + @Override + public DeleteExportResponse apply( + javax.ws.rs.core.Response rawResponse) { + LOG.trace("Transform function invoked for DeleteExportResponse"); + com.google.common.base.Function< + javax.ws.rs.core.Response, + com.oracle.bmc.http.internal.WithHeaders> + responseFn = RESPONSE_CONVERSION_FACTORY.create(); + + com.oracle.bmc.http.internal.WithHeaders response = + responseFn.apply(rawResponse); + javax.ws.rs.core.MultivaluedMap headers = + response.getHeaders(); + + DeleteExportResponse.Builder builder = + DeleteExportResponse.builder(); + + com.google.common.base.Optional> + opcRequestIdHeader = + com.oracle.bmc.http.internal.HeaderUtils.get( + headers, "opc-request-id"); + if (opcRequestIdHeader.isPresent()) { + builder.opcRequestId( + com.oracle.bmc.http.internal.HeaderUtils.toValue( + "opc-request-id", + opcRequestIdHeader.get().get(0), + String.class)); + } + + DeleteExportResponse responseWrapper = builder.build(); + + return responseWrapper; + } + }; + return transformer; + } +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/internal/http/DeleteFileSystemConverter.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/internal/http/DeleteFileSystemConverter.java new file mode 100644 index 00000000000..26441fce133 --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/internal/http/DeleteFileSystemConverter.java @@ -0,0 +1,95 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.internal.http; + +import com.oracle.bmc.filestorage.model.*; +import com.oracle.bmc.filestorage.requests.*; +import com.oracle.bmc.filestorage.responses.*; + +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.extern.slf4j.Slf4j +public class DeleteFileSystemConverter { + private static final com.oracle.bmc.http.internal.ResponseConversionFunctionFactory + RESPONSE_CONVERSION_FACTORY = + new com.oracle.bmc.http.internal.ResponseConversionFunctionFactory(); + + public static DeleteFileSystemRequest interceptRequest(DeleteFileSystemRequest request) { + + return request; + } + + public static com.oracle.bmc.http.internal.WrappedInvocationBuilder fromRequest( + com.oracle.bmc.http.internal.RestClient client, DeleteFileSystemRequest request) { + if (request == null) { + throw new NullPointerException("request instance is required"); + } + + if (request.getFileSystemId() == null) { + throw new NullPointerException("fileSystemId is required"); + } + + com.oracle.bmc.http.internal.WrappedWebTarget target = + client.getBaseTarget() + .path("/20171215") + .path("fileSystems") + .path( + com.oracle.bmc.util.internal.HttpUtils.encodePathSegment( + request.getFileSystemId())); + + com.oracle.bmc.http.internal.WrappedInvocationBuilder ib = target.request(); + + ib.accept(javax.ws.rs.core.MediaType.APPLICATION_JSON); + + if (request.getIfMatch() != null) { + ib.header("if-match", request.getIfMatch()); + } + + return ib; + } + + public static com.google.common.base.Function< + javax.ws.rs.core.Response, DeleteFileSystemResponse> + fromResponse() { + final com.google.common.base.Function + transformer = + new com.google.common.base.Function< + javax.ws.rs.core.Response, DeleteFileSystemResponse>() { + @Override + public DeleteFileSystemResponse apply( + javax.ws.rs.core.Response rawResponse) { + LOG.trace( + "Transform function invoked for DeleteFileSystemResponse"); + com.google.common.base.Function< + javax.ws.rs.core.Response, + com.oracle.bmc.http.internal.WithHeaders> + responseFn = RESPONSE_CONVERSION_FACTORY.create(); + + com.oracle.bmc.http.internal.WithHeaders response = + responseFn.apply(rawResponse); + javax.ws.rs.core.MultivaluedMap headers = + response.getHeaders(); + + DeleteFileSystemResponse.Builder builder = + DeleteFileSystemResponse.builder(); + + com.google.common.base.Optional> + opcRequestIdHeader = + com.oracle.bmc.http.internal.HeaderUtils.get( + headers, "opc-request-id"); + if (opcRequestIdHeader.isPresent()) { + builder.opcRequestId( + com.oracle.bmc.http.internal.HeaderUtils.toValue( + "opc-request-id", + opcRequestIdHeader.get().get(0), + String.class)); + } + + DeleteFileSystemResponse responseWrapper = builder.build(); + + return responseWrapper; + } + }; + return transformer; + } +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/internal/http/DeleteMountTargetConverter.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/internal/http/DeleteMountTargetConverter.java new file mode 100644 index 00000000000..e5f1dd59143 --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/internal/http/DeleteMountTargetConverter.java @@ -0,0 +1,95 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.internal.http; + +import com.oracle.bmc.filestorage.model.*; +import com.oracle.bmc.filestorage.requests.*; +import com.oracle.bmc.filestorage.responses.*; + +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.extern.slf4j.Slf4j +public class DeleteMountTargetConverter { + private static final com.oracle.bmc.http.internal.ResponseConversionFunctionFactory + RESPONSE_CONVERSION_FACTORY = + new com.oracle.bmc.http.internal.ResponseConversionFunctionFactory(); + + public static DeleteMountTargetRequest interceptRequest(DeleteMountTargetRequest request) { + + return request; + } + + public static com.oracle.bmc.http.internal.WrappedInvocationBuilder fromRequest( + com.oracle.bmc.http.internal.RestClient client, DeleteMountTargetRequest request) { + if (request == null) { + throw new NullPointerException("request instance is required"); + } + + if (request.getMountTargetId() == null) { + throw new NullPointerException("mountTargetId is required"); + } + + com.oracle.bmc.http.internal.WrappedWebTarget target = + client.getBaseTarget() + .path("/20171215") + .path("mountTargets") + .path( + com.oracle.bmc.util.internal.HttpUtils.encodePathSegment( + request.getMountTargetId())); + + com.oracle.bmc.http.internal.WrappedInvocationBuilder ib = target.request(); + + ib.accept(javax.ws.rs.core.MediaType.APPLICATION_JSON); + + if (request.getIfMatch() != null) { + ib.header("if-match", request.getIfMatch()); + } + + return ib; + } + + public static com.google.common.base.Function< + javax.ws.rs.core.Response, DeleteMountTargetResponse> + fromResponse() { + final com.google.common.base.Function + transformer = + new com.google.common.base.Function< + javax.ws.rs.core.Response, DeleteMountTargetResponse>() { + @Override + public DeleteMountTargetResponse apply( + javax.ws.rs.core.Response rawResponse) { + LOG.trace( + "Transform function invoked for DeleteMountTargetResponse"); + com.google.common.base.Function< + javax.ws.rs.core.Response, + com.oracle.bmc.http.internal.WithHeaders> + responseFn = RESPONSE_CONVERSION_FACTORY.create(); + + com.oracle.bmc.http.internal.WithHeaders response = + responseFn.apply(rawResponse); + javax.ws.rs.core.MultivaluedMap headers = + response.getHeaders(); + + DeleteMountTargetResponse.Builder builder = + DeleteMountTargetResponse.builder(); + + com.google.common.base.Optional> + opcRequestIdHeader = + com.oracle.bmc.http.internal.HeaderUtils.get( + headers, "opc-request-id"); + if (opcRequestIdHeader.isPresent()) { + builder.opcRequestId( + com.oracle.bmc.http.internal.HeaderUtils.toValue( + "opc-request-id", + opcRequestIdHeader.get().get(0), + String.class)); + } + + DeleteMountTargetResponse responseWrapper = builder.build(); + + return responseWrapper; + } + }; + return transformer; + } +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/internal/http/DeleteSnapshotConverter.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/internal/http/DeleteSnapshotConverter.java new file mode 100644 index 00000000000..6b121d86010 --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/internal/http/DeleteSnapshotConverter.java @@ -0,0 +1,93 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.internal.http; + +import com.oracle.bmc.filestorage.model.*; +import com.oracle.bmc.filestorage.requests.*; +import com.oracle.bmc.filestorage.responses.*; + +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.extern.slf4j.Slf4j +public class DeleteSnapshotConverter { + private static final com.oracle.bmc.http.internal.ResponseConversionFunctionFactory + RESPONSE_CONVERSION_FACTORY = + new com.oracle.bmc.http.internal.ResponseConversionFunctionFactory(); + + public static DeleteSnapshotRequest interceptRequest(DeleteSnapshotRequest request) { + + return request; + } + + public static com.oracle.bmc.http.internal.WrappedInvocationBuilder fromRequest( + com.oracle.bmc.http.internal.RestClient client, DeleteSnapshotRequest request) { + if (request == null) { + throw new NullPointerException("request instance is required"); + } + + if (request.getSnapshotId() == null) { + throw new NullPointerException("snapshotId is required"); + } + + com.oracle.bmc.http.internal.WrappedWebTarget target = + client.getBaseTarget() + .path("/20171215") + .path("snapshots") + .path( + com.oracle.bmc.util.internal.HttpUtils.encodePathSegment( + request.getSnapshotId())); + + com.oracle.bmc.http.internal.WrappedInvocationBuilder ib = target.request(); + + ib.accept(javax.ws.rs.core.MediaType.APPLICATION_JSON); + + if (request.getIfMatch() != null) { + ib.header("if-match", request.getIfMatch()); + } + + return ib; + } + + public static com.google.common.base.Function + fromResponse() { + final com.google.common.base.Function + transformer = + new com.google.common.base.Function< + javax.ws.rs.core.Response, DeleteSnapshotResponse>() { + @Override + public DeleteSnapshotResponse apply( + javax.ws.rs.core.Response rawResponse) { + LOG.trace("Transform function invoked for DeleteSnapshotResponse"); + com.google.common.base.Function< + javax.ws.rs.core.Response, + com.oracle.bmc.http.internal.WithHeaders> + responseFn = RESPONSE_CONVERSION_FACTORY.create(); + + com.oracle.bmc.http.internal.WithHeaders response = + responseFn.apply(rawResponse); + javax.ws.rs.core.MultivaluedMap headers = + response.getHeaders(); + + DeleteSnapshotResponse.Builder builder = + DeleteSnapshotResponse.builder(); + + com.google.common.base.Optional> + opcRequestIdHeader = + com.oracle.bmc.http.internal.HeaderUtils.get( + headers, "opc-request-id"); + if (opcRequestIdHeader.isPresent()) { + builder.opcRequestId( + com.oracle.bmc.http.internal.HeaderUtils.toValue( + "opc-request-id", + opcRequestIdHeader.get().get(0), + String.class)); + } + + DeleteSnapshotResponse responseWrapper = builder.build(); + + return responseWrapper; + } + }; + return transformer; + } +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/internal/http/GetExportConverter.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/internal/http/GetExportConverter.java new file mode 100644 index 00000000000..ab8dc874984 --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/internal/http/GetExportConverter.java @@ -0,0 +1,99 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.internal.http; + +import com.oracle.bmc.filestorage.model.*; +import com.oracle.bmc.filestorage.requests.*; +import com.oracle.bmc.filestorage.responses.*; + +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.extern.slf4j.Slf4j +public class GetExportConverter { + private static final com.oracle.bmc.http.internal.ResponseConversionFunctionFactory + RESPONSE_CONVERSION_FACTORY = + new com.oracle.bmc.http.internal.ResponseConversionFunctionFactory(); + + public static GetExportRequest interceptRequest(GetExportRequest request) { + + return request; + } + + public static com.oracle.bmc.http.internal.WrappedInvocationBuilder fromRequest( + com.oracle.bmc.http.internal.RestClient client, GetExportRequest request) { + if (request == null) { + throw new NullPointerException("request instance is required"); + } + + if (request.getExportId() == null) { + throw new NullPointerException("exportId is required"); + } + + com.oracle.bmc.http.internal.WrappedWebTarget target = + client.getBaseTarget() + .path("/20171215") + .path("exports") + .path( + com.oracle.bmc.util.internal.HttpUtils.encodePathSegment( + request.getExportId())); + + com.oracle.bmc.http.internal.WrappedInvocationBuilder ib = target.request(); + + ib.accept(javax.ws.rs.core.MediaType.APPLICATION_JSON); + + return ib; + } + + public static com.google.common.base.Function + fromResponse() { + final com.google.common.base.Function + transformer = + new com.google.common.base.Function< + javax.ws.rs.core.Response, GetExportResponse>() { + @Override + public GetExportResponse apply(javax.ws.rs.core.Response rawResponse) { + LOG.trace("Transform function invoked for GetExportResponse"); + com.google.common.base.Function< + javax.ws.rs.core.Response, + com.oracle.bmc.http.internal.WithHeaders> + responseFn = + RESPONSE_CONVERSION_FACTORY.create(Export.class); + + com.oracle.bmc.http.internal.WithHeaders response = + responseFn.apply(rawResponse); + javax.ws.rs.core.MultivaluedMap headers = + response.getHeaders(); + + GetExportResponse.Builder builder = GetExportResponse.builder(); + + builder.export(response.getItem()); + + com.google.common.base.Optional> etagHeader = + com.oracle.bmc.http.internal.HeaderUtils.get( + headers, "etag"); + if (etagHeader.isPresent()) { + builder.etag( + com.oracle.bmc.http.internal.HeaderUtils.toValue( + "etag", etagHeader.get().get(0), String.class)); + } + + com.google.common.base.Optional> + opcRequestIdHeader = + com.oracle.bmc.http.internal.HeaderUtils.get( + headers, "opc-request-id"); + if (opcRequestIdHeader.isPresent()) { + builder.opcRequestId( + com.oracle.bmc.http.internal.HeaderUtils.toValue( + "opc-request-id", + opcRequestIdHeader.get().get(0), + String.class)); + } + + GetExportResponse responseWrapper = builder.build(); + + return responseWrapper; + } + }; + return transformer; + } +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/internal/http/GetExportSetConverter.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/internal/http/GetExportSetConverter.java new file mode 100644 index 00000000000..8461934bbe6 --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/internal/http/GetExportSetConverter.java @@ -0,0 +1,101 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.internal.http; + +import com.oracle.bmc.filestorage.model.*; +import com.oracle.bmc.filestorage.requests.*; +import com.oracle.bmc.filestorage.responses.*; + +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.extern.slf4j.Slf4j +public class GetExportSetConverter { + private static final com.oracle.bmc.http.internal.ResponseConversionFunctionFactory + RESPONSE_CONVERSION_FACTORY = + new com.oracle.bmc.http.internal.ResponseConversionFunctionFactory(); + + public static GetExportSetRequest interceptRequest(GetExportSetRequest request) { + + return request; + } + + public static com.oracle.bmc.http.internal.WrappedInvocationBuilder fromRequest( + com.oracle.bmc.http.internal.RestClient client, GetExportSetRequest request) { + if (request == null) { + throw new NullPointerException("request instance is required"); + } + + if (request.getExportSetId() == null) { + throw new NullPointerException("exportSetId is required"); + } + + com.oracle.bmc.http.internal.WrappedWebTarget target = + client.getBaseTarget() + .path("/20171215") + .path("exportSets") + .path( + com.oracle.bmc.util.internal.HttpUtils.encodePathSegment( + request.getExportSetId())); + + com.oracle.bmc.http.internal.WrappedInvocationBuilder ib = target.request(); + + ib.accept(javax.ws.rs.core.MediaType.APPLICATION_JSON); + + return ib; + } + + public static com.google.common.base.Function + fromResponse() { + final com.google.common.base.Function + transformer = + new com.google.common.base.Function< + javax.ws.rs.core.Response, GetExportSetResponse>() { + @Override + public GetExportSetResponse apply( + javax.ws.rs.core.Response rawResponse) { + LOG.trace("Transform function invoked for GetExportSetResponse"); + com.google.common.base.Function< + javax.ws.rs.core.Response, + com.oracle.bmc.http.internal.WithHeaders> + responseFn = + RESPONSE_CONVERSION_FACTORY.create(ExportSet.class); + + com.oracle.bmc.http.internal.WithHeaders response = + responseFn.apply(rawResponse); + javax.ws.rs.core.MultivaluedMap headers = + response.getHeaders(); + + GetExportSetResponse.Builder builder = + GetExportSetResponse.builder(); + + builder.exportSet(response.getItem()); + + com.google.common.base.Optional> etagHeader = + com.oracle.bmc.http.internal.HeaderUtils.get( + headers, "etag"); + if (etagHeader.isPresent()) { + builder.etag( + com.oracle.bmc.http.internal.HeaderUtils.toValue( + "etag", etagHeader.get().get(0), String.class)); + } + + com.google.common.base.Optional> + opcRequestIdHeader = + com.oracle.bmc.http.internal.HeaderUtils.get( + headers, "opc-request-id"); + if (opcRequestIdHeader.isPresent()) { + builder.opcRequestId( + com.oracle.bmc.http.internal.HeaderUtils.toValue( + "opc-request-id", + opcRequestIdHeader.get().get(0), + String.class)); + } + + GetExportSetResponse responseWrapper = builder.build(); + + return responseWrapper; + } + }; + return transformer; + } +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/internal/http/GetFileSystemConverter.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/internal/http/GetFileSystemConverter.java new file mode 100644 index 00000000000..2a902f9fae5 --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/internal/http/GetFileSystemConverter.java @@ -0,0 +1,103 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.internal.http; + +import com.oracle.bmc.filestorage.model.*; +import com.oracle.bmc.filestorage.requests.*; +import com.oracle.bmc.filestorage.responses.*; + +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.extern.slf4j.Slf4j +public class GetFileSystemConverter { + private static final com.oracle.bmc.http.internal.ResponseConversionFunctionFactory + RESPONSE_CONVERSION_FACTORY = + new com.oracle.bmc.http.internal.ResponseConversionFunctionFactory(); + + public static GetFileSystemRequest interceptRequest(GetFileSystemRequest request) { + + return request; + } + + public static com.oracle.bmc.http.internal.WrappedInvocationBuilder fromRequest( + com.oracle.bmc.http.internal.RestClient client, GetFileSystemRequest request) { + if (request == null) { + throw new NullPointerException("request instance is required"); + } + + if (request.getFileSystemId() == null) { + throw new NullPointerException("fileSystemId is required"); + } + + com.oracle.bmc.http.internal.WrappedWebTarget target = + client.getBaseTarget() + .path("/20171215") + .path("fileSystems") + .path( + com.oracle.bmc.util.internal.HttpUtils.encodePathSegment( + request.getFileSystemId())); + + com.oracle.bmc.http.internal.WrappedInvocationBuilder ib = target.request(); + + ib.accept(javax.ws.rs.core.MediaType.APPLICATION_JSON); + + return ib; + } + + public static com.google.common.base.Function + fromResponse() { + final com.google.common.base.Function + transformer = + new com.google.common.base.Function< + javax.ws.rs.core.Response, GetFileSystemResponse>() { + @Override + public GetFileSystemResponse apply( + javax.ws.rs.core.Response rawResponse) { + LOG.trace("Transform function invoked for GetFileSystemResponse"); + com.google.common.base.Function< + javax.ws.rs.core.Response, + com.oracle.bmc.http.internal.WithHeaders< + FileSystem>> + responseFn = + RESPONSE_CONVERSION_FACTORY.create( + FileSystem.class); + + com.oracle.bmc.http.internal.WithHeaders response = + responseFn.apply(rawResponse); + javax.ws.rs.core.MultivaluedMap headers = + response.getHeaders(); + + GetFileSystemResponse.Builder builder = + GetFileSystemResponse.builder(); + + builder.fileSystem(response.getItem()); + + com.google.common.base.Optional> etagHeader = + com.oracle.bmc.http.internal.HeaderUtils.get( + headers, "etag"); + if (etagHeader.isPresent()) { + builder.etag( + com.oracle.bmc.http.internal.HeaderUtils.toValue( + "etag", etagHeader.get().get(0), String.class)); + } + + com.google.common.base.Optional> + opcRequestIdHeader = + com.oracle.bmc.http.internal.HeaderUtils.get( + headers, "opc-request-id"); + if (opcRequestIdHeader.isPresent()) { + builder.opcRequestId( + com.oracle.bmc.http.internal.HeaderUtils.toValue( + "opc-request-id", + opcRequestIdHeader.get().get(0), + String.class)); + } + + GetFileSystemResponse responseWrapper = builder.build(); + + return responseWrapper; + } + }; + return transformer; + } +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/internal/http/GetMountTargetConverter.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/internal/http/GetMountTargetConverter.java new file mode 100644 index 00000000000..e6480a82081 --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/internal/http/GetMountTargetConverter.java @@ -0,0 +1,103 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.internal.http; + +import com.oracle.bmc.filestorage.model.*; +import com.oracle.bmc.filestorage.requests.*; +import com.oracle.bmc.filestorage.responses.*; + +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.extern.slf4j.Slf4j +public class GetMountTargetConverter { + private static final com.oracle.bmc.http.internal.ResponseConversionFunctionFactory + RESPONSE_CONVERSION_FACTORY = + new com.oracle.bmc.http.internal.ResponseConversionFunctionFactory(); + + public static GetMountTargetRequest interceptRequest(GetMountTargetRequest request) { + + return request; + } + + public static com.oracle.bmc.http.internal.WrappedInvocationBuilder fromRequest( + com.oracle.bmc.http.internal.RestClient client, GetMountTargetRequest request) { + if (request == null) { + throw new NullPointerException("request instance is required"); + } + + if (request.getMountTargetId() == null) { + throw new NullPointerException("mountTargetId is required"); + } + + com.oracle.bmc.http.internal.WrappedWebTarget target = + client.getBaseTarget() + .path("/20171215") + .path("mountTargets") + .path( + com.oracle.bmc.util.internal.HttpUtils.encodePathSegment( + request.getMountTargetId())); + + com.oracle.bmc.http.internal.WrappedInvocationBuilder ib = target.request(); + + ib.accept(javax.ws.rs.core.MediaType.APPLICATION_JSON); + + return ib; + } + + public static com.google.common.base.Function + fromResponse() { + final com.google.common.base.Function + transformer = + new com.google.common.base.Function< + javax.ws.rs.core.Response, GetMountTargetResponse>() { + @Override + public GetMountTargetResponse apply( + javax.ws.rs.core.Response rawResponse) { + LOG.trace("Transform function invoked for GetMountTargetResponse"); + com.google.common.base.Function< + javax.ws.rs.core.Response, + com.oracle.bmc.http.internal.WithHeaders< + MountTarget>> + responseFn = + RESPONSE_CONVERSION_FACTORY.create( + MountTarget.class); + + com.oracle.bmc.http.internal.WithHeaders response = + responseFn.apply(rawResponse); + javax.ws.rs.core.MultivaluedMap headers = + response.getHeaders(); + + GetMountTargetResponse.Builder builder = + GetMountTargetResponse.builder(); + + builder.mountTarget(response.getItem()); + + com.google.common.base.Optional> etagHeader = + com.oracle.bmc.http.internal.HeaderUtils.get( + headers, "etag"); + if (etagHeader.isPresent()) { + builder.etag( + com.oracle.bmc.http.internal.HeaderUtils.toValue( + "etag", etagHeader.get().get(0), String.class)); + } + + com.google.common.base.Optional> + opcRequestIdHeader = + com.oracle.bmc.http.internal.HeaderUtils.get( + headers, "opc-request-id"); + if (opcRequestIdHeader.isPresent()) { + builder.opcRequestId( + com.oracle.bmc.http.internal.HeaderUtils.toValue( + "opc-request-id", + opcRequestIdHeader.get().get(0), + String.class)); + } + + GetMountTargetResponse responseWrapper = builder.build(); + + return responseWrapper; + } + }; + return transformer; + } +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/internal/http/GetSnapshotConverter.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/internal/http/GetSnapshotConverter.java new file mode 100644 index 00000000000..d61cee809db --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/internal/http/GetSnapshotConverter.java @@ -0,0 +1,100 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.internal.http; + +import com.oracle.bmc.filestorage.model.*; +import com.oracle.bmc.filestorage.requests.*; +import com.oracle.bmc.filestorage.responses.*; + +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.extern.slf4j.Slf4j +public class GetSnapshotConverter { + private static final com.oracle.bmc.http.internal.ResponseConversionFunctionFactory + RESPONSE_CONVERSION_FACTORY = + new com.oracle.bmc.http.internal.ResponseConversionFunctionFactory(); + + public static GetSnapshotRequest interceptRequest(GetSnapshotRequest request) { + + return request; + } + + public static com.oracle.bmc.http.internal.WrappedInvocationBuilder fromRequest( + com.oracle.bmc.http.internal.RestClient client, GetSnapshotRequest request) { + if (request == null) { + throw new NullPointerException("request instance is required"); + } + + if (request.getSnapshotId() == null) { + throw new NullPointerException("snapshotId is required"); + } + + com.oracle.bmc.http.internal.WrappedWebTarget target = + client.getBaseTarget() + .path("/20171215") + .path("snapshots") + .path( + com.oracle.bmc.util.internal.HttpUtils.encodePathSegment( + request.getSnapshotId())); + + com.oracle.bmc.http.internal.WrappedInvocationBuilder ib = target.request(); + + ib.accept(javax.ws.rs.core.MediaType.APPLICATION_JSON); + + return ib; + } + + public static com.google.common.base.Function + fromResponse() { + final com.google.common.base.Function + transformer = + new com.google.common.base.Function< + javax.ws.rs.core.Response, GetSnapshotResponse>() { + @Override + public GetSnapshotResponse apply( + javax.ws.rs.core.Response rawResponse) { + LOG.trace("Transform function invoked for GetSnapshotResponse"); + com.google.common.base.Function< + javax.ws.rs.core.Response, + com.oracle.bmc.http.internal.WithHeaders> + responseFn = + RESPONSE_CONVERSION_FACTORY.create(Snapshot.class); + + com.oracle.bmc.http.internal.WithHeaders response = + responseFn.apply(rawResponse); + javax.ws.rs.core.MultivaluedMap headers = + response.getHeaders(); + + GetSnapshotResponse.Builder builder = GetSnapshotResponse.builder(); + + builder.snapshot(response.getItem()); + + com.google.common.base.Optional> etagHeader = + com.oracle.bmc.http.internal.HeaderUtils.get( + headers, "etag"); + if (etagHeader.isPresent()) { + builder.etag( + com.oracle.bmc.http.internal.HeaderUtils.toValue( + "etag", etagHeader.get().get(0), String.class)); + } + + com.google.common.base.Optional> + opcRequestIdHeader = + com.oracle.bmc.http.internal.HeaderUtils.get( + headers, "opc-request-id"); + if (opcRequestIdHeader.isPresent()) { + builder.opcRequestId( + com.oracle.bmc.http.internal.HeaderUtils.toValue( + "opc-request-id", + opcRequestIdHeader.get().get(0), + String.class)); + } + + GetSnapshotResponse responseWrapper = builder.build(); + + return responseWrapper; + } + }; + return transformer; + } +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/internal/http/ListExportSetsConverter.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/internal/http/ListExportSetsConverter.java new file mode 100644 index 00000000000..42b8a6cf6ce --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/internal/http/ListExportSetsConverter.java @@ -0,0 +1,176 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.internal.http; + +import com.oracle.bmc.filestorage.model.*; +import com.oracle.bmc.filestorage.requests.*; +import com.oracle.bmc.filestorage.responses.*; + +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.extern.slf4j.Slf4j +public class ListExportSetsConverter { + private static final com.oracle.bmc.http.internal.ResponseConversionFunctionFactory + RESPONSE_CONVERSION_FACTORY = + new com.oracle.bmc.http.internal.ResponseConversionFunctionFactory(); + + public static ListExportSetsRequest interceptRequest(ListExportSetsRequest request) { + + return request; + } + + public static com.oracle.bmc.http.internal.WrappedInvocationBuilder fromRequest( + com.oracle.bmc.http.internal.RestClient client, ListExportSetsRequest request) { + if (request == null) { + throw new NullPointerException("request instance is required"); + } + + if (request.getCompartmentId() == null) { + throw new NullPointerException("compartmentId is required"); + } + + if (request.getAvailabilityDomain() == null) { + throw new NullPointerException("availabilityDomain is required"); + } + + com.oracle.bmc.http.internal.WrappedWebTarget target = + client.getBaseTarget().path("/20171215").path("exportSets"); + + target = + target.queryParam( + "compartmentId", + com.oracle.bmc.util.internal.HttpUtils.attemptEncodeQueryParam( + request.getCompartmentId())); + + target = + target.queryParam( + "availabilityDomain", + com.oracle.bmc.util.internal.HttpUtils.attemptEncodeQueryParam( + request.getAvailabilityDomain())); + + if (request.getLimit() != null) { + target = + target.queryParam( + "limit", + com.oracle.bmc.util.internal.HttpUtils.attemptEncodeQueryParam( + request.getLimit())); + } + + if (request.getPage() != null) { + target = + target.queryParam( + "page", + com.oracle.bmc.util.internal.HttpUtils.attemptEncodeQueryParam( + request.getPage())); + } + + if (request.getDisplayName() != null) { + target = + target.queryParam( + "displayName", + com.oracle.bmc.util.internal.HttpUtils.attemptEncodeQueryParam( + request.getDisplayName())); + } + + if (request.getLifecycleState() != null) { + target = + target.queryParam( + "lifecycleState", + com.oracle.bmc.util.internal.HttpUtils.attemptEncodeQueryParam( + request.getLifecycleState().getValue())); + } + + if (request.getId() != null) { + target = + target.queryParam( + "id", + com.oracle.bmc.util.internal.HttpUtils.attemptEncodeQueryParam( + request.getId())); + } + + if (request.getSortBy() != null) { + target = + target.queryParam( + "sortBy", + com.oracle.bmc.util.internal.HttpUtils.attemptEncodeQueryParam( + request.getSortBy().getValue())); + } + + if (request.getSortOrder() != null) { + target = + target.queryParam( + "sortOrder", + com.oracle.bmc.util.internal.HttpUtils.attemptEncodeQueryParam( + request.getSortOrder().getValue())); + } + + com.oracle.bmc.http.internal.WrappedInvocationBuilder ib = target.request(); + + ib.accept(javax.ws.rs.core.MediaType.APPLICATION_JSON); + + return ib; + } + + public static com.google.common.base.Function + fromResponse() { + final com.google.common.base.Function + transformer = + new com.google.common.base.Function< + javax.ws.rs.core.Response, ListExportSetsResponse>() { + @Override + public ListExportSetsResponse apply( + javax.ws.rs.core.Response rawResponse) { + LOG.trace("Transform function invoked for ListExportSetsResponse"); + com.google.common.base.Function< + javax.ws.rs.core.Response, + com.oracle.bmc.http.internal.WithHeaders< + java.util.List>> + responseFn = + RESPONSE_CONVERSION_FACTORY.create( + new javax.ws.rs.core.GenericType< + java.util.List< + ExportSetSummary>>() {}); + + com.oracle.bmc.http.internal.WithHeaders< + java.util.List> + response = responseFn.apply(rawResponse); + javax.ws.rs.core.MultivaluedMap headers = + response.getHeaders(); + + ListExportSetsResponse.Builder builder = + ListExportSetsResponse.builder(); + + builder.items(response.getItem()); + + com.google.common.base.Optional> + opcNextPageHeader = + com.oracle.bmc.http.internal.HeaderUtils.get( + headers, "opc-next-page"); + if (opcNextPageHeader.isPresent()) { + builder.opcNextPage( + com.oracle.bmc.http.internal.HeaderUtils.toValue( + "opc-next-page", + opcNextPageHeader.get().get(0), + String.class)); + } + + com.google.common.base.Optional> + opcRequestIdHeader = + com.oracle.bmc.http.internal.HeaderUtils.get( + headers, "opc-request-id"); + if (opcRequestIdHeader.isPresent()) { + builder.opcRequestId( + com.oracle.bmc.http.internal.HeaderUtils.toValue( + "opc-request-id", + opcRequestIdHeader.get().get(0), + String.class)); + } + + ListExportSetsResponse responseWrapper = builder.build(); + + return responseWrapper; + } + }; + return transformer; + } +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/internal/http/ListExportsConverter.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/internal/http/ListExportsConverter.java new file mode 100644 index 00000000000..170ec82d74c --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/internal/http/ListExportsConverter.java @@ -0,0 +1,173 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.internal.http; + +import com.oracle.bmc.filestorage.model.*; +import com.oracle.bmc.filestorage.requests.*; +import com.oracle.bmc.filestorage.responses.*; + +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.extern.slf4j.Slf4j +public class ListExportsConverter { + private static final com.oracle.bmc.http.internal.ResponseConversionFunctionFactory + RESPONSE_CONVERSION_FACTORY = + new com.oracle.bmc.http.internal.ResponseConversionFunctionFactory(); + + public static ListExportsRequest interceptRequest(ListExportsRequest request) { + + return request; + } + + public static com.oracle.bmc.http.internal.WrappedInvocationBuilder fromRequest( + com.oracle.bmc.http.internal.RestClient client, ListExportsRequest request) { + if (request == null) { + throw new NullPointerException("request instance is required"); + } + + if (request.getCompartmentId() == null) { + throw new NullPointerException("compartmentId is required"); + } + + com.oracle.bmc.http.internal.WrappedWebTarget target = + client.getBaseTarget().path("/20171215").path("exports"); + + target = + target.queryParam( + "compartmentId", + com.oracle.bmc.util.internal.HttpUtils.attemptEncodeQueryParam( + request.getCompartmentId())); + + if (request.getLimit() != null) { + target = + target.queryParam( + "limit", + com.oracle.bmc.util.internal.HttpUtils.attemptEncodeQueryParam( + request.getLimit())); + } + + if (request.getPage() != null) { + target = + target.queryParam( + "page", + com.oracle.bmc.util.internal.HttpUtils.attemptEncodeQueryParam( + request.getPage())); + } + + if (request.getExportSetId() != null) { + target = + target.queryParam( + "exportSetId", + com.oracle.bmc.util.internal.HttpUtils.attemptEncodeQueryParam( + request.getExportSetId())); + } + + if (request.getFileSystemId() != null) { + target = + target.queryParam( + "fileSystemId", + com.oracle.bmc.util.internal.HttpUtils.attemptEncodeQueryParam( + request.getFileSystemId())); + } + + if (request.getLifecycleState() != null) { + target = + target.queryParam( + "lifecycleState", + com.oracle.bmc.util.internal.HttpUtils.attemptEncodeQueryParam( + request.getLifecycleState().getValue())); + } + + if (request.getId() != null) { + target = + target.queryParam( + "id", + com.oracle.bmc.util.internal.HttpUtils.attemptEncodeQueryParam( + request.getId())); + } + + if (request.getSortBy() != null) { + target = + target.queryParam( + "sortBy", + com.oracle.bmc.util.internal.HttpUtils.attemptEncodeQueryParam( + request.getSortBy().getValue())); + } + + if (request.getSortOrder() != null) { + target = + target.queryParam( + "sortOrder", + com.oracle.bmc.util.internal.HttpUtils.attemptEncodeQueryParam( + request.getSortOrder().getValue())); + } + + com.oracle.bmc.http.internal.WrappedInvocationBuilder ib = target.request(); + + ib.accept(javax.ws.rs.core.MediaType.APPLICATION_JSON); + + return ib; + } + + public static com.google.common.base.Function + fromResponse() { + final com.google.common.base.Function + transformer = + new com.google.common.base.Function< + javax.ws.rs.core.Response, ListExportsResponse>() { + @Override + public ListExportsResponse apply( + javax.ws.rs.core.Response rawResponse) { + LOG.trace("Transform function invoked for ListExportsResponse"); + com.google.common.base.Function< + javax.ws.rs.core.Response, + com.oracle.bmc.http.internal.WithHeaders< + java.util.List>> + responseFn = + RESPONSE_CONVERSION_FACTORY.create( + new javax.ws.rs.core.GenericType< + java.util.List< + ExportSummary>>() {}); + + com.oracle.bmc.http.internal.WithHeaders< + java.util.List> + response = responseFn.apply(rawResponse); + javax.ws.rs.core.MultivaluedMap headers = + response.getHeaders(); + + ListExportsResponse.Builder builder = ListExportsResponse.builder(); + + builder.items(response.getItem()); + + com.google.common.base.Optional> + opcNextPageHeader = + com.oracle.bmc.http.internal.HeaderUtils.get( + headers, "opc-next-page"); + if (opcNextPageHeader.isPresent()) { + builder.opcNextPage( + com.oracle.bmc.http.internal.HeaderUtils.toValue( + "opc-next-page", + opcNextPageHeader.get().get(0), + String.class)); + } + + com.google.common.base.Optional> + opcRequestIdHeader = + com.oracle.bmc.http.internal.HeaderUtils.get( + headers, "opc-request-id"); + if (opcRequestIdHeader.isPresent()) { + builder.opcRequestId( + com.oracle.bmc.http.internal.HeaderUtils.toValue( + "opc-request-id", + opcRequestIdHeader.get().get(0), + String.class)); + } + + ListExportsResponse responseWrapper = builder.build(); + + return responseWrapper; + } + }; + return transformer; + } +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/internal/http/ListFileSystemsConverter.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/internal/http/ListFileSystemsConverter.java new file mode 100644 index 00000000000..c12fb4f8ddd --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/internal/http/ListFileSystemsConverter.java @@ -0,0 +1,177 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.internal.http; + +import com.oracle.bmc.filestorage.model.*; +import com.oracle.bmc.filestorage.requests.*; +import com.oracle.bmc.filestorage.responses.*; + +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.extern.slf4j.Slf4j +public class ListFileSystemsConverter { + private static final com.oracle.bmc.http.internal.ResponseConversionFunctionFactory + RESPONSE_CONVERSION_FACTORY = + new com.oracle.bmc.http.internal.ResponseConversionFunctionFactory(); + + public static ListFileSystemsRequest interceptRequest(ListFileSystemsRequest request) { + + return request; + } + + public static com.oracle.bmc.http.internal.WrappedInvocationBuilder fromRequest( + com.oracle.bmc.http.internal.RestClient client, ListFileSystemsRequest request) { + if (request == null) { + throw new NullPointerException("request instance is required"); + } + + if (request.getCompartmentId() == null) { + throw new NullPointerException("compartmentId is required"); + } + + if (request.getAvailabilityDomain() == null) { + throw new NullPointerException("availabilityDomain is required"); + } + + com.oracle.bmc.http.internal.WrappedWebTarget target = + client.getBaseTarget().path("/20171215").path("fileSystems"); + + target = + target.queryParam( + "compartmentId", + com.oracle.bmc.util.internal.HttpUtils.attemptEncodeQueryParam( + request.getCompartmentId())); + + target = + target.queryParam( + "availabilityDomain", + com.oracle.bmc.util.internal.HttpUtils.attemptEncodeQueryParam( + request.getAvailabilityDomain())); + + if (request.getLimit() != null) { + target = + target.queryParam( + "limit", + com.oracle.bmc.util.internal.HttpUtils.attemptEncodeQueryParam( + request.getLimit())); + } + + if (request.getPage() != null) { + target = + target.queryParam( + "page", + com.oracle.bmc.util.internal.HttpUtils.attemptEncodeQueryParam( + request.getPage())); + } + + if (request.getDisplayName() != null) { + target = + target.queryParam( + "displayName", + com.oracle.bmc.util.internal.HttpUtils.attemptEncodeQueryParam( + request.getDisplayName())); + } + + if (request.getLifecycleState() != null) { + target = + target.queryParam( + "lifecycleState", + com.oracle.bmc.util.internal.HttpUtils.attemptEncodeQueryParam( + request.getLifecycleState().getValue())); + } + + if (request.getId() != null) { + target = + target.queryParam( + "id", + com.oracle.bmc.util.internal.HttpUtils.attemptEncodeQueryParam( + request.getId())); + } + + if (request.getSortBy() != null) { + target = + target.queryParam( + "sortBy", + com.oracle.bmc.util.internal.HttpUtils.attemptEncodeQueryParam( + request.getSortBy().getValue())); + } + + if (request.getSortOrder() != null) { + target = + target.queryParam( + "sortOrder", + com.oracle.bmc.util.internal.HttpUtils.attemptEncodeQueryParam( + request.getSortOrder().getValue())); + } + + com.oracle.bmc.http.internal.WrappedInvocationBuilder ib = target.request(); + + ib.accept(javax.ws.rs.core.MediaType.APPLICATION_JSON); + + return ib; + } + + public static com.google.common.base.Function< + javax.ws.rs.core.Response, ListFileSystemsResponse> + fromResponse() { + final com.google.common.base.Function + transformer = + new com.google.common.base.Function< + javax.ws.rs.core.Response, ListFileSystemsResponse>() { + @Override + public ListFileSystemsResponse apply( + javax.ws.rs.core.Response rawResponse) { + LOG.trace("Transform function invoked for ListFileSystemsResponse"); + com.google.common.base.Function< + javax.ws.rs.core.Response, + com.oracle.bmc.http.internal.WithHeaders< + java.util.List>> + responseFn = + RESPONSE_CONVERSION_FACTORY.create( + new javax.ws.rs.core.GenericType< + java.util.List< + FileSystemSummary>>() {}); + + com.oracle.bmc.http.internal.WithHeaders< + java.util.List> + response = responseFn.apply(rawResponse); + javax.ws.rs.core.MultivaluedMap headers = + response.getHeaders(); + + ListFileSystemsResponse.Builder builder = + ListFileSystemsResponse.builder(); + + builder.items(response.getItem()); + + com.google.common.base.Optional> + opcNextPageHeader = + com.oracle.bmc.http.internal.HeaderUtils.get( + headers, "opc-next-page"); + if (opcNextPageHeader.isPresent()) { + builder.opcNextPage( + com.oracle.bmc.http.internal.HeaderUtils.toValue( + "opc-next-page", + opcNextPageHeader.get().get(0), + String.class)); + } + + com.google.common.base.Optional> + opcRequestIdHeader = + com.oracle.bmc.http.internal.HeaderUtils.get( + headers, "opc-request-id"); + if (opcRequestIdHeader.isPresent()) { + builder.opcRequestId( + com.oracle.bmc.http.internal.HeaderUtils.toValue( + "opc-request-id", + opcRequestIdHeader.get().get(0), + String.class)); + } + + ListFileSystemsResponse responseWrapper = builder.build(); + + return responseWrapper; + } + }; + return transformer; + } +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/internal/http/ListMountTargetsConverter.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/internal/http/ListMountTargetsConverter.java new file mode 100644 index 00000000000..804141b535a --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/internal/http/ListMountTargetsConverter.java @@ -0,0 +1,186 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.internal.http; + +import com.oracle.bmc.filestorage.model.*; +import com.oracle.bmc.filestorage.requests.*; +import com.oracle.bmc.filestorage.responses.*; + +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.extern.slf4j.Slf4j +public class ListMountTargetsConverter { + private static final com.oracle.bmc.http.internal.ResponseConversionFunctionFactory + RESPONSE_CONVERSION_FACTORY = + new com.oracle.bmc.http.internal.ResponseConversionFunctionFactory(); + + public static ListMountTargetsRequest interceptRequest(ListMountTargetsRequest request) { + + return request; + } + + public static com.oracle.bmc.http.internal.WrappedInvocationBuilder fromRequest( + com.oracle.bmc.http.internal.RestClient client, ListMountTargetsRequest request) { + if (request == null) { + throw new NullPointerException("request instance is required"); + } + + if (request.getCompartmentId() == null) { + throw new NullPointerException("compartmentId is required"); + } + + if (request.getAvailabilityDomain() == null) { + throw new NullPointerException("availabilityDomain is required"); + } + + com.oracle.bmc.http.internal.WrappedWebTarget target = + client.getBaseTarget().path("/20171215").path("mountTargets"); + + target = + target.queryParam( + "compartmentId", + com.oracle.bmc.util.internal.HttpUtils.attemptEncodeQueryParam( + request.getCompartmentId())); + + target = + target.queryParam( + "availabilityDomain", + com.oracle.bmc.util.internal.HttpUtils.attemptEncodeQueryParam( + request.getAvailabilityDomain())); + + if (request.getLimit() != null) { + target = + target.queryParam( + "limit", + com.oracle.bmc.util.internal.HttpUtils.attemptEncodeQueryParam( + request.getLimit())); + } + + if (request.getPage() != null) { + target = + target.queryParam( + "page", + com.oracle.bmc.util.internal.HttpUtils.attemptEncodeQueryParam( + request.getPage())); + } + + if (request.getDisplayName() != null) { + target = + target.queryParam( + "displayName", + com.oracle.bmc.util.internal.HttpUtils.attemptEncodeQueryParam( + request.getDisplayName())); + } + + if (request.getExportSetId() != null) { + target = + target.queryParam( + "exportSetId", + com.oracle.bmc.util.internal.HttpUtils.attemptEncodeQueryParam( + request.getExportSetId())); + } + + if (request.getLifecycleState() != null) { + target = + target.queryParam( + "lifecycleState", + com.oracle.bmc.util.internal.HttpUtils.attemptEncodeQueryParam( + request.getLifecycleState().getValue())); + } + + if (request.getId() != null) { + target = + target.queryParam( + "id", + com.oracle.bmc.util.internal.HttpUtils.attemptEncodeQueryParam( + request.getId())); + } + + if (request.getSortBy() != null) { + target = + target.queryParam( + "sortBy", + com.oracle.bmc.util.internal.HttpUtils.attemptEncodeQueryParam( + request.getSortBy().getValue())); + } + + if (request.getSortOrder() != null) { + target = + target.queryParam( + "sortOrder", + com.oracle.bmc.util.internal.HttpUtils.attemptEncodeQueryParam( + request.getSortOrder().getValue())); + } + + com.oracle.bmc.http.internal.WrappedInvocationBuilder ib = target.request(); + + ib.accept(javax.ws.rs.core.MediaType.APPLICATION_JSON); + + return ib; + } + + public static com.google.common.base.Function< + javax.ws.rs.core.Response, ListMountTargetsResponse> + fromResponse() { + final com.google.common.base.Function + transformer = + new com.google.common.base.Function< + javax.ws.rs.core.Response, ListMountTargetsResponse>() { + @Override + public ListMountTargetsResponse apply( + javax.ws.rs.core.Response rawResponse) { + LOG.trace( + "Transform function invoked for ListMountTargetsResponse"); + com.google.common.base.Function< + javax.ws.rs.core.Response, + com.oracle.bmc.http.internal.WithHeaders< + java.util.List>> + responseFn = + RESPONSE_CONVERSION_FACTORY.create( + new javax.ws.rs.core.GenericType< + java.util.List< + MountTargetSummary>>() {}); + + com.oracle.bmc.http.internal.WithHeaders< + java.util.List> + response = responseFn.apply(rawResponse); + javax.ws.rs.core.MultivaluedMap headers = + response.getHeaders(); + + ListMountTargetsResponse.Builder builder = + ListMountTargetsResponse.builder(); + + builder.items(response.getItem()); + + com.google.common.base.Optional> + opcNextPageHeader = + com.oracle.bmc.http.internal.HeaderUtils.get( + headers, "opc-next-page"); + if (opcNextPageHeader.isPresent()) { + builder.opcNextPage( + com.oracle.bmc.http.internal.HeaderUtils.toValue( + "opc-next-page", + opcNextPageHeader.get().get(0), + String.class)); + } + + com.google.common.base.Optional> + opcRequestIdHeader = + com.oracle.bmc.http.internal.HeaderUtils.get( + headers, "opc-request-id"); + if (opcRequestIdHeader.isPresent()) { + builder.opcRequestId( + com.oracle.bmc.http.internal.HeaderUtils.toValue( + "opc-request-id", + opcRequestIdHeader.get().get(0), + String.class)); + } + + ListMountTargetsResponse responseWrapper = builder.build(); + + return responseWrapper; + } + }; + return transformer; + } +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/internal/http/ListSnapshotsConverter.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/internal/http/ListSnapshotsConverter.java new file mode 100644 index 00000000000..74425f21883 --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/internal/http/ListSnapshotsConverter.java @@ -0,0 +1,150 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.internal.http; + +import com.oracle.bmc.filestorage.model.*; +import com.oracle.bmc.filestorage.requests.*; +import com.oracle.bmc.filestorage.responses.*; + +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.extern.slf4j.Slf4j +public class ListSnapshotsConverter { + private static final com.oracle.bmc.http.internal.ResponseConversionFunctionFactory + RESPONSE_CONVERSION_FACTORY = + new com.oracle.bmc.http.internal.ResponseConversionFunctionFactory(); + + public static ListSnapshotsRequest interceptRequest(ListSnapshotsRequest request) { + + return request; + } + + public static com.oracle.bmc.http.internal.WrappedInvocationBuilder fromRequest( + com.oracle.bmc.http.internal.RestClient client, ListSnapshotsRequest request) { + if (request == null) { + throw new NullPointerException("request instance is required"); + } + + if (request.getFileSystemId() == null) { + throw new NullPointerException("fileSystemId is required"); + } + + com.oracle.bmc.http.internal.WrappedWebTarget target = + client.getBaseTarget().path("/20171215").path("snapshots"); + + target = + target.queryParam( + "fileSystemId", + com.oracle.bmc.util.internal.HttpUtils.attemptEncodeQueryParam( + request.getFileSystemId())); + + if (request.getLimit() != null) { + target = + target.queryParam( + "limit", + com.oracle.bmc.util.internal.HttpUtils.attemptEncodeQueryParam( + request.getLimit())); + } + + if (request.getPage() != null) { + target = + target.queryParam( + "page", + com.oracle.bmc.util.internal.HttpUtils.attemptEncodeQueryParam( + request.getPage())); + } + + if (request.getLifecycleState() != null) { + target = + target.queryParam( + "lifecycleState", + com.oracle.bmc.util.internal.HttpUtils.attemptEncodeQueryParam( + request.getLifecycleState().getValue())); + } + + if (request.getId() != null) { + target = + target.queryParam( + "id", + com.oracle.bmc.util.internal.HttpUtils.attemptEncodeQueryParam( + request.getId())); + } + + if (request.getSortOrder() != null) { + target = + target.queryParam( + "sortOrder", + com.oracle.bmc.util.internal.HttpUtils.attemptEncodeQueryParam( + request.getSortOrder().getValue())); + } + + com.oracle.bmc.http.internal.WrappedInvocationBuilder ib = target.request(); + + ib.accept(javax.ws.rs.core.MediaType.APPLICATION_JSON); + + return ib; + } + + public static com.google.common.base.Function + fromResponse() { + final com.google.common.base.Function + transformer = + new com.google.common.base.Function< + javax.ws.rs.core.Response, ListSnapshotsResponse>() { + @Override + public ListSnapshotsResponse apply( + javax.ws.rs.core.Response rawResponse) { + LOG.trace("Transform function invoked for ListSnapshotsResponse"); + com.google.common.base.Function< + javax.ws.rs.core.Response, + com.oracle.bmc.http.internal.WithHeaders< + java.util.List>> + responseFn = + RESPONSE_CONVERSION_FACTORY.create( + new javax.ws.rs.core.GenericType< + java.util.List< + SnapshotSummary>>() {}); + + com.oracle.bmc.http.internal.WithHeaders< + java.util.List> + response = responseFn.apply(rawResponse); + javax.ws.rs.core.MultivaluedMap headers = + response.getHeaders(); + + ListSnapshotsResponse.Builder builder = + ListSnapshotsResponse.builder(); + + builder.items(response.getItem()); + + com.google.common.base.Optional> + opcNextPageHeader = + com.oracle.bmc.http.internal.HeaderUtils.get( + headers, "opc-next-page"); + if (opcNextPageHeader.isPresent()) { + builder.opcNextPage( + com.oracle.bmc.http.internal.HeaderUtils.toValue( + "opc-next-page", + opcNextPageHeader.get().get(0), + String.class)); + } + + com.google.common.base.Optional> + opcRequestIdHeader = + com.oracle.bmc.http.internal.HeaderUtils.get( + headers, "opc-request-id"); + if (opcRequestIdHeader.isPresent()) { + builder.opcRequestId( + com.oracle.bmc.http.internal.HeaderUtils.toValue( + "opc-request-id", + opcRequestIdHeader.get().get(0), + String.class)); + } + + ListSnapshotsResponse responseWrapper = builder.build(); + + return responseWrapper; + } + }; + return transformer; + } +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/internal/http/UpdateExportSetConverter.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/internal/http/UpdateExportSetConverter.java new file mode 100644 index 00000000000..6b7340002a7 --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/internal/http/UpdateExportSetConverter.java @@ -0,0 +1,110 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.internal.http; + +import com.oracle.bmc.filestorage.model.*; +import com.oracle.bmc.filestorage.requests.*; +import com.oracle.bmc.filestorage.responses.*; + +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.extern.slf4j.Slf4j +public class UpdateExportSetConverter { + private static final com.oracle.bmc.http.internal.ResponseConversionFunctionFactory + RESPONSE_CONVERSION_FACTORY = + new com.oracle.bmc.http.internal.ResponseConversionFunctionFactory(); + + public static UpdateExportSetRequest interceptRequest(UpdateExportSetRequest request) { + + return request; + } + + public static com.oracle.bmc.http.internal.WrappedInvocationBuilder fromRequest( + com.oracle.bmc.http.internal.RestClient client, UpdateExportSetRequest request) { + if (request == null) { + throw new NullPointerException("request instance is required"); + } + + if (request.getExportSetId() == null) { + throw new NullPointerException("exportSetId is required"); + } + + if (request.getUpdateExportSetDetails() == null) { + throw new NullPointerException("updateExportSetDetails is required"); + } + + com.oracle.bmc.http.internal.WrappedWebTarget target = + client.getBaseTarget() + .path("/20171215") + .path("exportSets") + .path( + com.oracle.bmc.util.internal.HttpUtils.encodePathSegment( + request.getExportSetId())); + + com.oracle.bmc.http.internal.WrappedInvocationBuilder ib = target.request(); + + ib.accept(javax.ws.rs.core.MediaType.APPLICATION_JSON); + + if (request.getIfMatch() != null) { + ib.header("if-match", request.getIfMatch()); + } + + return ib; + } + + public static com.google.common.base.Function< + javax.ws.rs.core.Response, UpdateExportSetResponse> + fromResponse() { + final com.google.common.base.Function + transformer = + new com.google.common.base.Function< + javax.ws.rs.core.Response, UpdateExportSetResponse>() { + @Override + public UpdateExportSetResponse apply( + javax.ws.rs.core.Response rawResponse) { + LOG.trace("Transform function invoked for UpdateExportSetResponse"); + com.google.common.base.Function< + javax.ws.rs.core.Response, + com.oracle.bmc.http.internal.WithHeaders> + responseFn = + RESPONSE_CONVERSION_FACTORY.create(ExportSet.class); + + com.oracle.bmc.http.internal.WithHeaders response = + responseFn.apply(rawResponse); + javax.ws.rs.core.MultivaluedMap headers = + response.getHeaders(); + + UpdateExportSetResponse.Builder builder = + UpdateExportSetResponse.builder(); + + builder.exportSet(response.getItem()); + + com.google.common.base.Optional> etagHeader = + com.oracle.bmc.http.internal.HeaderUtils.get( + headers, "etag"); + if (etagHeader.isPresent()) { + builder.etag( + com.oracle.bmc.http.internal.HeaderUtils.toValue( + "etag", etagHeader.get().get(0), String.class)); + } + + com.google.common.base.Optional> + opcRequestIdHeader = + com.oracle.bmc.http.internal.HeaderUtils.get( + headers, "opc-request-id"); + if (opcRequestIdHeader.isPresent()) { + builder.opcRequestId( + com.oracle.bmc.http.internal.HeaderUtils.toValue( + "opc-request-id", + opcRequestIdHeader.get().get(0), + String.class)); + } + + UpdateExportSetResponse responseWrapper = builder.build(); + + return responseWrapper; + } + }; + return transformer; + } +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/internal/http/UpdateFileSystemConverter.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/internal/http/UpdateFileSystemConverter.java new file mode 100644 index 00000000000..612e24d6941 --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/internal/http/UpdateFileSystemConverter.java @@ -0,0 +1,113 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.internal.http; + +import com.oracle.bmc.filestorage.model.*; +import com.oracle.bmc.filestorage.requests.*; +import com.oracle.bmc.filestorage.responses.*; + +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.extern.slf4j.Slf4j +public class UpdateFileSystemConverter { + private static final com.oracle.bmc.http.internal.ResponseConversionFunctionFactory + RESPONSE_CONVERSION_FACTORY = + new com.oracle.bmc.http.internal.ResponseConversionFunctionFactory(); + + public static UpdateFileSystemRequest interceptRequest(UpdateFileSystemRequest request) { + + return request; + } + + public static com.oracle.bmc.http.internal.WrappedInvocationBuilder fromRequest( + com.oracle.bmc.http.internal.RestClient client, UpdateFileSystemRequest request) { + if (request == null) { + throw new NullPointerException("request instance is required"); + } + + if (request.getFileSystemId() == null) { + throw new NullPointerException("fileSystemId is required"); + } + + if (request.getUpdateFileSystemDetails() == null) { + throw new NullPointerException("updateFileSystemDetails is required"); + } + + com.oracle.bmc.http.internal.WrappedWebTarget target = + client.getBaseTarget() + .path("/20171215") + .path("fileSystems") + .path( + com.oracle.bmc.util.internal.HttpUtils.encodePathSegment( + request.getFileSystemId())); + + com.oracle.bmc.http.internal.WrappedInvocationBuilder ib = target.request(); + + ib.accept(javax.ws.rs.core.MediaType.APPLICATION_JSON); + + if (request.getIfMatch() != null) { + ib.header("if-match", request.getIfMatch()); + } + + return ib; + } + + public static com.google.common.base.Function< + javax.ws.rs.core.Response, UpdateFileSystemResponse> + fromResponse() { + final com.google.common.base.Function + transformer = + new com.google.common.base.Function< + javax.ws.rs.core.Response, UpdateFileSystemResponse>() { + @Override + public UpdateFileSystemResponse apply( + javax.ws.rs.core.Response rawResponse) { + LOG.trace( + "Transform function invoked for UpdateFileSystemResponse"); + com.google.common.base.Function< + javax.ws.rs.core.Response, + com.oracle.bmc.http.internal.WithHeaders< + FileSystem>> + responseFn = + RESPONSE_CONVERSION_FACTORY.create( + FileSystem.class); + + com.oracle.bmc.http.internal.WithHeaders response = + responseFn.apply(rawResponse); + javax.ws.rs.core.MultivaluedMap headers = + response.getHeaders(); + + UpdateFileSystemResponse.Builder builder = + UpdateFileSystemResponse.builder(); + + builder.fileSystem(response.getItem()); + + com.google.common.base.Optional> etagHeader = + com.oracle.bmc.http.internal.HeaderUtils.get( + headers, "etag"); + if (etagHeader.isPresent()) { + builder.etag( + com.oracle.bmc.http.internal.HeaderUtils.toValue( + "etag", etagHeader.get().get(0), String.class)); + } + + com.google.common.base.Optional> + opcRequestIdHeader = + com.oracle.bmc.http.internal.HeaderUtils.get( + headers, "opc-request-id"); + if (opcRequestIdHeader.isPresent()) { + builder.opcRequestId( + com.oracle.bmc.http.internal.HeaderUtils.toValue( + "opc-request-id", + opcRequestIdHeader.get().get(0), + String.class)); + } + + UpdateFileSystemResponse responseWrapper = builder.build(); + + return responseWrapper; + } + }; + return transformer; + } +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/internal/http/UpdateMountTargetConverter.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/internal/http/UpdateMountTargetConverter.java new file mode 100644 index 00000000000..e97cf43f502 --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/internal/http/UpdateMountTargetConverter.java @@ -0,0 +1,113 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.internal.http; + +import com.oracle.bmc.filestorage.model.*; +import com.oracle.bmc.filestorage.requests.*; +import com.oracle.bmc.filestorage.responses.*; + +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.extern.slf4j.Slf4j +public class UpdateMountTargetConverter { + private static final com.oracle.bmc.http.internal.ResponseConversionFunctionFactory + RESPONSE_CONVERSION_FACTORY = + new com.oracle.bmc.http.internal.ResponseConversionFunctionFactory(); + + public static UpdateMountTargetRequest interceptRequest(UpdateMountTargetRequest request) { + + return request; + } + + public static com.oracle.bmc.http.internal.WrappedInvocationBuilder fromRequest( + com.oracle.bmc.http.internal.RestClient client, UpdateMountTargetRequest request) { + if (request == null) { + throw new NullPointerException("request instance is required"); + } + + if (request.getMountTargetId() == null) { + throw new NullPointerException("mountTargetId is required"); + } + + if (request.getUpdateMountTargetDetails() == null) { + throw new NullPointerException("updateMountTargetDetails is required"); + } + + com.oracle.bmc.http.internal.WrappedWebTarget target = + client.getBaseTarget() + .path("/20171215") + .path("mountTargets") + .path( + com.oracle.bmc.util.internal.HttpUtils.encodePathSegment( + request.getMountTargetId())); + + com.oracle.bmc.http.internal.WrappedInvocationBuilder ib = target.request(); + + ib.accept(javax.ws.rs.core.MediaType.APPLICATION_JSON); + + if (request.getIfMatch() != null) { + ib.header("if-match", request.getIfMatch()); + } + + return ib; + } + + public static com.google.common.base.Function< + javax.ws.rs.core.Response, UpdateMountTargetResponse> + fromResponse() { + final com.google.common.base.Function + transformer = + new com.google.common.base.Function< + javax.ws.rs.core.Response, UpdateMountTargetResponse>() { + @Override + public UpdateMountTargetResponse apply( + javax.ws.rs.core.Response rawResponse) { + LOG.trace( + "Transform function invoked for UpdateMountTargetResponse"); + com.google.common.base.Function< + javax.ws.rs.core.Response, + com.oracle.bmc.http.internal.WithHeaders< + MountTarget>> + responseFn = + RESPONSE_CONVERSION_FACTORY.create( + MountTarget.class); + + com.oracle.bmc.http.internal.WithHeaders response = + responseFn.apply(rawResponse); + javax.ws.rs.core.MultivaluedMap headers = + response.getHeaders(); + + UpdateMountTargetResponse.Builder builder = + UpdateMountTargetResponse.builder(); + + builder.mountTarget(response.getItem()); + + com.google.common.base.Optional> etagHeader = + com.oracle.bmc.http.internal.HeaderUtils.get( + headers, "etag"); + if (etagHeader.isPresent()) { + builder.etag( + com.oracle.bmc.http.internal.HeaderUtils.toValue( + "etag", etagHeader.get().get(0), String.class)); + } + + com.google.common.base.Optional> + opcRequestIdHeader = + com.oracle.bmc.http.internal.HeaderUtils.get( + headers, "opc-request-id"); + if (opcRequestIdHeader.isPresent()) { + builder.opcRequestId( + com.oracle.bmc.http.internal.HeaderUtils.toValue( + "opc-request-id", + opcRequestIdHeader.get().get(0), + String.class)); + } + + UpdateMountTargetResponse responseWrapper = builder.build(); + + return responseWrapper; + } + }; + return transformer; + } +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/model/CreateExportDetails.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/model/CreateExportDetails.java new file mode 100644 index 00000000000..b51b3dcb40b --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/model/CreateExportDetails.java @@ -0,0 +1,107 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.model; + +/** + * + *
          + * Note: 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 #__explicitlySet__}. The {@link #hashCode()} and {@link #equals(Object)} methods + * are implemented to take {@link #__explicitlySet__} into account. The constructor, on the other hand, does not + * set {@link #__explicitlySet__} (since the constructor cannot distinguish explicit {@code null} from unset + * {@code null}). As a consequence, objects should always be created or deserialized using the {@link Builder}. + **/ +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.Value +@com.fasterxml.jackson.databind.annotation.JsonDeserialize( + builder = CreateExportDetails.Builder.class +) +@com.fasterxml.jackson.annotation.JsonFilter(com.oracle.bmc.http.internal.ExplicitlySetFilter.NAME) +public class CreateExportDetails { + @com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(withPrefix = "") + @lombok.experimental.Accessors(fluent = true) + public static class Builder { + @com.fasterxml.jackson.annotation.JsonProperty("exportSetId") + private String exportSetId; + + public Builder exportSetId(String exportSetId) { + this.exportSetId = exportSetId; + this.__explicitlySet__.add("exportSetId"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("fileSystemId") + private String fileSystemId; + + public Builder fileSystemId(String fileSystemId) { + this.fileSystemId = fileSystemId; + this.__explicitlySet__.add("fileSystemId"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("path") + private String path; + + public Builder path(String path) { + this.path = path; + this.__explicitlySet__.add("path"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonIgnore + private final java.util.Set __explicitlySet__ = new java.util.HashSet(); + + public CreateExportDetails build() { + CreateExportDetails __instance__ = + new CreateExportDetails(exportSetId, fileSystemId, path); + __instance__.__explicitlySet__.addAll(__explicitlySet__); + return __instance__; + } + + @com.fasterxml.jackson.annotation.JsonIgnore + public Builder copy(CreateExportDetails o) { + Builder copiedBuilder = + exportSetId(o.getExportSetId()) + .fileSystemId(o.getFileSystemId()) + .path(o.getPath()); + + copiedBuilder.__explicitlySet__.retainAll(o.__explicitlySet__); + return copiedBuilder; + } + } + + /** + * Create a new builder. + */ + public static Builder builder() { + return new Builder(); + } + + /** + * The OCID of this export's export set. + **/ + @com.fasterxml.jackson.annotation.JsonProperty("exportSetId") + String exportSetId; + + /** + * The OCID of this export's file system. + **/ + @com.fasterxml.jackson.annotation.JsonProperty("fileSystemId") + String fileSystemId; + + /** + * Path used to access the associated file system. + *

          + * Avoid entering confidential information. + *

          + * Example: `/mediafiles` + * + **/ + @com.fasterxml.jackson.annotation.JsonProperty("path") + String path; + + @com.fasterxml.jackson.annotation.JsonIgnore + private final java.util.Set __explicitlySet__ = new java.util.HashSet(); +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/model/CreateFileSystemDetails.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/model/CreateFileSystemDetails.java new file mode 100644 index 00000000000..13c45d22e21 --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/model/CreateFileSystemDetails.java @@ -0,0 +1,109 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.model; + +/** + * + *
          + * Note: 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 #__explicitlySet__}. The {@link #hashCode()} and {@link #equals(Object)} methods + * are implemented to take {@link #__explicitlySet__} into account. The constructor, on the other hand, does not + * set {@link #__explicitlySet__} (since the constructor cannot distinguish explicit {@code null} from unset + * {@code null}). As a consequence, objects should always be created or deserialized using the {@link Builder}. + **/ +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.Value +@com.fasterxml.jackson.databind.annotation.JsonDeserialize( + builder = CreateFileSystemDetails.Builder.class +) +@com.fasterxml.jackson.annotation.JsonFilter(com.oracle.bmc.http.internal.ExplicitlySetFilter.NAME) +public class CreateFileSystemDetails { + @com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(withPrefix = "") + @lombok.experimental.Accessors(fluent = true) + public static class Builder { + @com.fasterxml.jackson.annotation.JsonProperty("availabilityDomain") + private String availabilityDomain; + + public Builder availabilityDomain(String availabilityDomain) { + this.availabilityDomain = availabilityDomain; + this.__explicitlySet__.add("availabilityDomain"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("compartmentId") + private String compartmentId; + + public Builder compartmentId(String compartmentId) { + this.compartmentId = compartmentId; + this.__explicitlySet__.add("compartmentId"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("displayName") + private String displayName; + + public Builder displayName(String displayName) { + this.displayName = displayName; + this.__explicitlySet__.add("displayName"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonIgnore + private final java.util.Set __explicitlySet__ = new java.util.HashSet(); + + public CreateFileSystemDetails build() { + CreateFileSystemDetails __instance__ = + new CreateFileSystemDetails(availabilityDomain, compartmentId, displayName); + __instance__.__explicitlySet__.addAll(__explicitlySet__); + return __instance__; + } + + @com.fasterxml.jackson.annotation.JsonIgnore + public Builder copy(CreateFileSystemDetails o) { + Builder copiedBuilder = + availabilityDomain(o.getAvailabilityDomain()) + .compartmentId(o.getCompartmentId()) + .displayName(o.getDisplayName()); + + copiedBuilder.__explicitlySet__.retainAll(o.__explicitlySet__); + return copiedBuilder; + } + } + + /** + * Create a new builder. + */ + public static Builder builder() { + return new Builder(); + } + + /** + * The availability domain to create the file system in. + *

          + * Example: `Uocm:PHX-AD-1` + * + **/ + @com.fasterxml.jackson.annotation.JsonProperty("availabilityDomain") + String availabilityDomain; + + /** + * The OCID of the compartment to create the file system in. + **/ + @com.fasterxml.jackson.annotation.JsonProperty("compartmentId") + String compartmentId; + + /** + * A user-friendly name. It does not have to be unique, and it is changeable. + * Avoid entering confidential information. + *

          + * Example: `My file system` + * + **/ + @com.fasterxml.jackson.annotation.JsonProperty("displayName") + String displayName; + + @com.fasterxml.jackson.annotation.JsonIgnore + private final java.util.Set __explicitlySet__ = new java.util.HashSet(); +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/model/CreateMountTargetDetails.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/model/CreateMountTargetDetails.java new file mode 100644 index 00000000000..99a2296b26a --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/model/CreateMountTargetDetails.java @@ -0,0 +1,181 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.model; + +/** + * + *
          + * Note: 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 #__explicitlySet__}. The {@link #hashCode()} and {@link #equals(Object)} methods + * are implemented to take {@link #__explicitlySet__} into account. The constructor, on the other hand, does not + * set {@link #__explicitlySet__} (since the constructor cannot distinguish explicit {@code null} from unset + * {@code null}). As a consequence, objects should always be created or deserialized using the {@link Builder}. + **/ +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.Value +@com.fasterxml.jackson.databind.annotation.JsonDeserialize( + builder = CreateMountTargetDetails.Builder.class +) +@com.fasterxml.jackson.annotation.JsonFilter(com.oracle.bmc.http.internal.ExplicitlySetFilter.NAME) +public class CreateMountTargetDetails { + @com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(withPrefix = "") + @lombok.experimental.Accessors(fluent = true) + public static class Builder { + @com.fasterxml.jackson.annotation.JsonProperty("availabilityDomain") + private String availabilityDomain; + + public Builder availabilityDomain(String availabilityDomain) { + this.availabilityDomain = availabilityDomain; + this.__explicitlySet__.add("availabilityDomain"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("compartmentId") + private String compartmentId; + + public Builder compartmentId(String compartmentId) { + this.compartmentId = compartmentId; + this.__explicitlySet__.add("compartmentId"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("displayName") + private String displayName; + + public Builder displayName(String displayName) { + this.displayName = displayName; + this.__explicitlySet__.add("displayName"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("hostnameLabel") + private String hostnameLabel; + + public Builder hostnameLabel(String hostnameLabel) { + this.hostnameLabel = hostnameLabel; + this.__explicitlySet__.add("hostnameLabel"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("ipAddress") + private String ipAddress; + + public Builder ipAddress(String ipAddress) { + this.ipAddress = ipAddress; + this.__explicitlySet__.add("ipAddress"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("subnetId") + private String subnetId; + + public Builder subnetId(String subnetId) { + this.subnetId = subnetId; + this.__explicitlySet__.add("subnetId"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonIgnore + private final java.util.Set __explicitlySet__ = new java.util.HashSet(); + + public CreateMountTargetDetails build() { + CreateMountTargetDetails __instance__ = + new CreateMountTargetDetails( + availabilityDomain, + compartmentId, + displayName, + hostnameLabel, + ipAddress, + subnetId); + __instance__.__explicitlySet__.addAll(__explicitlySet__); + return __instance__; + } + + @com.fasterxml.jackson.annotation.JsonIgnore + public Builder copy(CreateMountTargetDetails o) { + Builder copiedBuilder = + availabilityDomain(o.getAvailabilityDomain()) + .compartmentId(o.getCompartmentId()) + .displayName(o.getDisplayName()) + .hostnameLabel(o.getHostnameLabel()) + .ipAddress(o.getIpAddress()) + .subnetId(o.getSubnetId()); + + copiedBuilder.__explicitlySet__.retainAll(o.__explicitlySet__); + return copiedBuilder; + } + } + + /** + * Create a new builder. + */ + public static Builder builder() { + return new Builder(); + } + + /** + * The availability domain in which to create the mount target. + *

          + * Example: `Uocm:PHX-AD-1` + * + **/ + @com.fasterxml.jackson.annotation.JsonProperty("availabilityDomain") + String availabilityDomain; + + /** + * The OCID of the compartment in which to create the mount target. + **/ + @com.fasterxml.jackson.annotation.JsonProperty("compartmentId") + String compartmentId; + + /** + * A user-friendly name. It does not have to be unique, and it is changeable. + * Avoid entering confidential information. + *

          + * Example: `My mount target` + * + **/ + @com.fasterxml.jackson.annotation.JsonProperty("displayName") + String displayName; + + /** + * The hostname for the mount target's IP address, used for + * DNS resolution. The value is the hostname portion of the private IP + * address's fully qualified domain name (FQDN). For example, + * `files-1` in the FQDN `files-1.subnet123.vcn1.oraclevcn.com`. + * Must be unique across all VNICs in the subnet and comply + * with [RFC 952](https://tools.ietf.org/html/rfc952) + * and [RFC 1123](https://tools.ietf.org/html/rfc1123). + *

          + * For more information, see + * [DNS in Your Virtual Cloud Network](https://docs.us-phoenix-1.oraclecloud.com/Content/Network/Concepts/dns.htm). + *

          + * Example: `files-1` + * + **/ + @com.fasterxml.jackson.annotation.JsonProperty("hostnameLabel") + String hostnameLabel; + + /** + * A private IP address of your choice. Must be an available IP address within + * the subnet's CIDR. If you don't specify a value, Oracle automatically + * assigns a private IP address from the subnet. + *

          + * Example: `10.0.3.3` + * + **/ + @com.fasterxml.jackson.annotation.JsonProperty("ipAddress") + String ipAddress; + + /** + * The OCID of the subnet in which to create the mount target. + * + **/ + @com.fasterxml.jackson.annotation.JsonProperty("subnetId") + String subnetId; + + @com.fasterxml.jackson.annotation.JsonIgnore + private final java.util.Set __explicitlySet__ = new java.util.HashSet(); +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/model/CreateSnapshotDetails.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/model/CreateSnapshotDetails.java new file mode 100644 index 00000000000..aaddded78c5 --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/model/CreateSnapshotDetails.java @@ -0,0 +1,90 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.model; + +/** + * + *
          + * Note: 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 #__explicitlySet__}. The {@link #hashCode()} and {@link #equals(Object)} methods + * are implemented to take {@link #__explicitlySet__} into account. The constructor, on the other hand, does not + * set {@link #__explicitlySet__} (since the constructor cannot distinguish explicit {@code null} from unset + * {@code null}). As a consequence, objects should always be created or deserialized using the {@link Builder}. + **/ +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.Value +@com.fasterxml.jackson.databind.annotation.JsonDeserialize( + builder = CreateSnapshotDetails.Builder.class +) +@com.fasterxml.jackson.annotation.JsonFilter(com.oracle.bmc.http.internal.ExplicitlySetFilter.NAME) +public class CreateSnapshotDetails { + @com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(withPrefix = "") + @lombok.experimental.Accessors(fluent = true) + public static class Builder { + @com.fasterxml.jackson.annotation.JsonProperty("fileSystemId") + private String fileSystemId; + + public Builder fileSystemId(String fileSystemId) { + this.fileSystemId = fileSystemId; + this.__explicitlySet__.add("fileSystemId"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("name") + private String name; + + public Builder name(String name) { + this.name = name; + this.__explicitlySet__.add("name"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonIgnore + private final java.util.Set __explicitlySet__ = new java.util.HashSet(); + + public CreateSnapshotDetails build() { + CreateSnapshotDetails __instance__ = new CreateSnapshotDetails(fileSystemId, name); + __instance__.__explicitlySet__.addAll(__explicitlySet__); + return __instance__; + } + + @com.fasterxml.jackson.annotation.JsonIgnore + public Builder copy(CreateSnapshotDetails o) { + Builder copiedBuilder = fileSystemId(o.getFileSystemId()).name(o.getName()); + + copiedBuilder.__explicitlySet__.retainAll(o.__explicitlySet__); + return copiedBuilder; + } + } + + /** + * Create a new builder. + */ + public static Builder builder() { + return new Builder(); + } + + /** + * The OCID of this export's file system. + **/ + @com.fasterxml.jackson.annotation.JsonProperty("fileSystemId") + String fileSystemId; + + /** + * Name of the snapshot. This value is immutable. It must also be unique with respect + * to all other non-DELETED snapshots on the associated file + * system. + *

          + * Avoid entering confidential information. + *

          + * Example: `Sunday` + * + **/ + @com.fasterxml.jackson.annotation.JsonProperty("name") + String name; + + @com.fasterxml.jackson.annotation.JsonIgnore + private final java.util.Set __explicitlySet__ = new java.util.HashSet(); +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/model/Export.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/model/Export.java new file mode 100644 index 00000000000..3fb0fc6cd96 --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/model/Export.java @@ -0,0 +1,233 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.model; + +/** + * A file system and the path that you can use to mount it. Each export + * resource belongs to exactly one export set. + *

          + * The export's path attribute is not a path in the + * referenced file system, but the value used by clients for the path + * component of the remotetarget argument when mounting the file + * system. + *

          + * The path must start with a slash (/) followed by a sequence of zero or more + * slash-separated path elements. For any two export resources associated with + * the same export set, except those in a 'DELETED' state, the path element + * sequence for the first export resource can't contain the + * complete path element sequence of the second export resource. + *

          + * For example, the following are acceptable: + *

          + * /foo and /bar + * * /foo1 and /foo2 + * * /foo and /foo1 + *

          + * The following examples are not acceptable: + * * /foo and /foo/bar + * * / and /foo + *

          + * Paths may not end in a slash (/). No path element can be a period (.) + * or two periods in sequence (..). All path elements must be 255 bytes or less. + *

          + * No two non-'DELETED' export resources in the same export set can + * reference the same file system. + * + *
          + * Note: 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 #__explicitlySet__}. The {@link #hashCode()} and {@link #equals(Object)} methods + * are implemented to take {@link #__explicitlySet__} into account. The constructor, on the other hand, does not + * set {@link #__explicitlySet__} (since the constructor cannot distinguish explicit {@code null} from unset + * {@code null}). As a consequence, objects should always be created or deserialized using the {@link Builder}. + **/ +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.Value +@com.fasterxml.jackson.databind.annotation.JsonDeserialize(builder = Export.Builder.class) +@com.fasterxml.jackson.annotation.JsonFilter(com.oracle.bmc.http.internal.ExplicitlySetFilter.NAME) +public class Export { + @com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(withPrefix = "") + @lombok.experimental.Accessors(fluent = true) + public static class Builder { + @com.fasterxml.jackson.annotation.JsonProperty("exportSetId") + private String exportSetId; + + public Builder exportSetId(String exportSetId) { + this.exportSetId = exportSetId; + this.__explicitlySet__.add("exportSetId"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("fileSystemId") + private String fileSystemId; + + public Builder fileSystemId(String fileSystemId) { + this.fileSystemId = fileSystemId; + this.__explicitlySet__.add("fileSystemId"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("id") + private String id; + + public Builder id(String id) { + this.id = id; + this.__explicitlySet__.add("id"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("lifecycleState") + private LifecycleState lifecycleState; + + public Builder lifecycleState(LifecycleState lifecycleState) { + this.lifecycleState = lifecycleState; + this.__explicitlySet__.add("lifecycleState"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("path") + private String path; + + public Builder path(String path) { + this.path = path; + this.__explicitlySet__.add("path"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("timeCreated") + private java.util.Date timeCreated; + + public Builder timeCreated(java.util.Date timeCreated) { + this.timeCreated = timeCreated; + this.__explicitlySet__.add("timeCreated"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonIgnore + private final java.util.Set __explicitlySet__ = new java.util.HashSet(); + + public Export build() { + Export __instance__ = + new Export(exportSetId, fileSystemId, id, lifecycleState, path, timeCreated); + __instance__.__explicitlySet__.addAll(__explicitlySet__); + return __instance__; + } + + @com.fasterxml.jackson.annotation.JsonIgnore + public Builder copy(Export o) { + Builder copiedBuilder = + exportSetId(o.getExportSetId()) + .fileSystemId(o.getFileSystemId()) + .id(o.getId()) + .lifecycleState(o.getLifecycleState()) + .path(o.getPath()) + .timeCreated(o.getTimeCreated()); + + copiedBuilder.__explicitlySet__.retainAll(o.__explicitlySet__); + return copiedBuilder; + } + } + + /** + * Create a new builder. + */ + public static Builder builder() { + return new Builder(); + } + + /** + * The OCID of this export's export set. + **/ + @com.fasterxml.jackson.annotation.JsonProperty("exportSetId") + String exportSetId; + + /** + * The OCID of this export's file system. + **/ + @com.fasterxml.jackson.annotation.JsonProperty("fileSystemId") + String fileSystemId; + + /** + * The OCID of this export. + **/ + @com.fasterxml.jackson.annotation.JsonProperty("id") + String id; + /** + * The current state of this export. + **/ + @lombok.extern.slf4j.Slf4j + public enum LifecycleState { + Creating("CREATING"), + Active("ACTIVE"), + Deleting("DELETING"), + Deleted("DELETED"), + + /** + * This value is used if a service returns a value for this enum that is not recognized by this + * version of the SDK. + */ + UnknownEnumValue(null); + + private final String value; + private static java.util.Map map; + + static { + map = new java.util.HashMap<>(); + for (LifecycleState v : LifecycleState.values()) { + if (v != UnknownEnumValue) { + map.put(v.getValue(), v); + } + } + } + + LifecycleState(String value) { + this.value = value; + } + + @com.fasterxml.jackson.annotation.JsonValue + public String getValue() { + return value; + } + + @com.fasterxml.jackson.annotation.JsonCreator + public static LifecycleState create(String key) { + if (map.containsKey(key)) { + return map.get(key); + } + LOG.warn( + "Received unknown value '{}' for enum 'LifecycleState', returning UnknownEnumValue", + key); + return UnknownEnumValue; + } + }; + /** + * The current state of this export. + **/ + @com.fasterxml.jackson.annotation.JsonProperty("lifecycleState") + LifecycleState lifecycleState; + + /** + * Path used to access the associated file system. + *

          + * Avoid entering confidential information. + *

          + * Example: `/accounting` + * + **/ + @com.fasterxml.jackson.annotation.JsonProperty("path") + String path; + + /** + * The date and time the export was created, expressed + * in [RFC 3339](https://tools.ietf.org/rfc/rfc3339) timestamp format. + *

          + * Example: `2016-08-25T21:10:29.600Z` + * + **/ + @com.fasterxml.jackson.annotation.JsonProperty("timeCreated") + java.util.Date timeCreated; + + @com.fasterxml.jackson.annotation.JsonIgnore + private final java.util.Set __explicitlySet__ = new java.util.HashSet(); +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/model/ExportSet.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/model/ExportSet.java new file mode 100644 index 00000000000..72c2af01333 --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/model/ExportSet.java @@ -0,0 +1,284 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.model; + +/** + * A set of file systems to export through one or more mount + * targets. Composed of zero or more export resources. + * + *
          + * Note: 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 #__explicitlySet__}. The {@link #hashCode()} and {@link #equals(Object)} methods + * are implemented to take {@link #__explicitlySet__} into account. The constructor, on the other hand, does not + * set {@link #__explicitlySet__} (since the constructor cannot distinguish explicit {@code null} from unset + * {@code null}). As a consequence, objects should always be created or deserialized using the {@link Builder}. + **/ +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.Value +@com.fasterxml.jackson.databind.annotation.JsonDeserialize(builder = ExportSet.Builder.class) +@com.fasterxml.jackson.annotation.JsonFilter(com.oracle.bmc.http.internal.ExplicitlySetFilter.NAME) +public class ExportSet { + @com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(withPrefix = "") + @lombok.experimental.Accessors(fluent = true) + public static class Builder { + @com.fasterxml.jackson.annotation.JsonProperty("availabilityDomain") + private String availabilityDomain; + + public Builder availabilityDomain(String availabilityDomain) { + this.availabilityDomain = availabilityDomain; + this.__explicitlySet__.add("availabilityDomain"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("compartmentId") + private String compartmentId; + + public Builder compartmentId(String compartmentId) { + this.compartmentId = compartmentId; + this.__explicitlySet__.add("compartmentId"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("displayName") + private String displayName; + + public Builder displayName(String displayName) { + this.displayName = displayName; + this.__explicitlySet__.add("displayName"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("id") + private String id; + + public Builder id(String id) { + this.id = id; + this.__explicitlySet__.add("id"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("lifecycleState") + private LifecycleState lifecycleState; + + public Builder lifecycleState(LifecycleState lifecycleState) { + this.lifecycleState = lifecycleState; + this.__explicitlySet__.add("lifecycleState"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("maxFsStatBytes") + private Long maxFsStatBytes; + + public Builder maxFsStatBytes(Long maxFsStatBytes) { + this.maxFsStatBytes = maxFsStatBytes; + this.__explicitlySet__.add("maxFsStatBytes"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("maxFsStatFiles") + private Long maxFsStatFiles; + + public Builder maxFsStatFiles(Long maxFsStatFiles) { + this.maxFsStatFiles = maxFsStatFiles; + this.__explicitlySet__.add("maxFsStatFiles"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("timeCreated") + private java.util.Date timeCreated; + + public Builder timeCreated(java.util.Date timeCreated) { + this.timeCreated = timeCreated; + this.__explicitlySet__.add("timeCreated"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("vcnId") + private String vcnId; + + public Builder vcnId(String vcnId) { + this.vcnId = vcnId; + this.__explicitlySet__.add("vcnId"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonIgnore + private final java.util.Set __explicitlySet__ = new java.util.HashSet(); + + public ExportSet build() { + ExportSet __instance__ = + new ExportSet( + availabilityDomain, + compartmentId, + displayName, + id, + lifecycleState, + maxFsStatBytes, + maxFsStatFiles, + timeCreated, + vcnId); + __instance__.__explicitlySet__.addAll(__explicitlySet__); + return __instance__; + } + + @com.fasterxml.jackson.annotation.JsonIgnore + public Builder copy(ExportSet o) { + Builder copiedBuilder = + availabilityDomain(o.getAvailabilityDomain()) + .compartmentId(o.getCompartmentId()) + .displayName(o.getDisplayName()) + .id(o.getId()) + .lifecycleState(o.getLifecycleState()) + .maxFsStatBytes(o.getMaxFsStatBytes()) + .maxFsStatFiles(o.getMaxFsStatFiles()) + .timeCreated(o.getTimeCreated()) + .vcnId(o.getVcnId()); + + copiedBuilder.__explicitlySet__.retainAll(o.__explicitlySet__); + return copiedBuilder; + } + } + + /** + * Create a new builder. + */ + public static Builder builder() { + return new Builder(); + } + + /** + * The availability domain the export set is in. May be unset + * as a blank or NULL value. + *

          + * Example: `Uocm:PHX-AD-1` + * + **/ + @com.fasterxml.jackson.annotation.JsonProperty("availabilityDomain") + String availabilityDomain; + + /** + * The OCID of the compartment that contains the export set. + **/ + @com.fasterxml.jackson.annotation.JsonProperty("compartmentId") + String compartmentId; + + /** + * A user-friendly name. It does not have to be unique, and it is changeable. + * Avoid entering confidential information. + *

          + * Example: `My export set` + * + **/ + @com.fasterxml.jackson.annotation.JsonProperty("displayName") + String displayName; + + /** + * The OCID of the export set. + **/ + @com.fasterxml.jackson.annotation.JsonProperty("id") + String id; + /** + * The current state of the export set. + **/ + @lombok.extern.slf4j.Slf4j + public enum LifecycleState { + Creating("CREATING"), + Active("ACTIVE"), + Deleting("DELETING"), + Deleted("DELETED"), + + /** + * This value is used if a service returns a value for this enum that is not recognized by this + * version of the SDK. + */ + UnknownEnumValue(null); + + private final String value; + private static java.util.Map map; + + static { + map = new java.util.HashMap<>(); + for (LifecycleState v : LifecycleState.values()) { + if (v != UnknownEnumValue) { + map.put(v.getValue(), v); + } + } + } + + LifecycleState(String value) { + this.value = value; + } + + @com.fasterxml.jackson.annotation.JsonValue + public String getValue() { + return value; + } + + @com.fasterxml.jackson.annotation.JsonCreator + public static LifecycleState create(String key) { + if (map.containsKey(key)) { + return map.get(key); + } + LOG.warn( + "Received unknown value '{}' for enum 'LifecycleState', returning UnknownEnumValue", + key); + return UnknownEnumValue; + } + }; + /** + * The current state of the export set. + **/ + @com.fasterxml.jackson.annotation.JsonProperty("lifecycleState") + LifecycleState lifecycleState; + + /** + * Controls the maximum `tbytes`, `fbytes`, and `abytes`, + * values reported by `NFS FSSTAT` calls through any associated + * mount targets. This is an advanced feature. For most + * applications, use the default value. The + * `tbytes` value reported by `FSSTAT` will be + * `maxFsStatBytes`. The value of `fbytes` and `abytes` will be + * `maxFsStatBytes` minus the metered size of the file + * system. If the metered size is larger than `maxFsStatBytes`, + * then `fbytes` and `abytes` will both be '0'. + * + **/ + @com.fasterxml.jackson.annotation.JsonProperty("maxFsStatBytes") + Long maxFsStatBytes; + + /** + * Controls the maximum `ffiles`, `ffiles`, and `afiles` + * values reported by `NFS FSSTAT` calls through any associated + * mount targets. This is an advanced feature. For most + * applications, use the default value. The + * `tfiles` value reported by `FSSTAT` will be + * `maxFsStatFiles`. The value of `ffiles` and `afiles` will be + * `maxFsStatFiles` minus the metered size of the file + * system. If the metered size is larger than `maxFsStatFiles`, + * then `ffiles` and `afiles` will both be '0'. + * + **/ + @com.fasterxml.jackson.annotation.JsonProperty("maxFsStatFiles") + Long maxFsStatFiles; + + /** + * The date and time the export set was created, expressed + * in [RFC 3339](https://tools.ietf.org/rfc/rfc3339) timestamp format. + *

          + * Example: `2016-08-25T21:10:29.600Z` + * + **/ + @com.fasterxml.jackson.annotation.JsonProperty("timeCreated") + java.util.Date timeCreated; + + /** + * The OCID of the virtual cloud network (VCN) the export set is in. + **/ + @com.fasterxml.jackson.annotation.JsonProperty("vcnId") + String vcnId; + + @com.fasterxml.jackson.annotation.JsonIgnore + private final java.util.Set __explicitlySet__ = new java.util.HashSet(); +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/model/ExportSetSummary.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/model/ExportSetSummary.java new file mode 100644 index 00000000000..b2cae7528b8 --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/model/ExportSetSummary.java @@ -0,0 +1,231 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.model; + +/** + * Summary information for an export set. + * + *
          + * Note: 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 #__explicitlySet__}. The {@link #hashCode()} and {@link #equals(Object)} methods + * are implemented to take {@link #__explicitlySet__} into account. The constructor, on the other hand, does not + * set {@link #__explicitlySet__} (since the constructor cannot distinguish explicit {@code null} from unset + * {@code null}). As a consequence, objects should always be created or deserialized using the {@link Builder}. + **/ +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.Value +@com.fasterxml.jackson.databind.annotation.JsonDeserialize(builder = ExportSetSummary.Builder.class) +@com.fasterxml.jackson.annotation.JsonFilter(com.oracle.bmc.http.internal.ExplicitlySetFilter.NAME) +public class ExportSetSummary { + @com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(withPrefix = "") + @lombok.experimental.Accessors(fluent = true) + public static class Builder { + @com.fasterxml.jackson.annotation.JsonProperty("availabilityDomain") + private String availabilityDomain; + + public Builder availabilityDomain(String availabilityDomain) { + this.availabilityDomain = availabilityDomain; + this.__explicitlySet__.add("availabilityDomain"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("compartmentId") + private String compartmentId; + + public Builder compartmentId(String compartmentId) { + this.compartmentId = compartmentId; + this.__explicitlySet__.add("compartmentId"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("displayName") + private String displayName; + + public Builder displayName(String displayName) { + this.displayName = displayName; + this.__explicitlySet__.add("displayName"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("id") + private String id; + + public Builder id(String id) { + this.id = id; + this.__explicitlySet__.add("id"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("lifecycleState") + private LifecycleState lifecycleState; + + public Builder lifecycleState(LifecycleState lifecycleState) { + this.lifecycleState = lifecycleState; + this.__explicitlySet__.add("lifecycleState"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("timeCreated") + private java.util.Date timeCreated; + + public Builder timeCreated(java.util.Date timeCreated) { + this.timeCreated = timeCreated; + this.__explicitlySet__.add("timeCreated"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("vcnId") + private String vcnId; + + public Builder vcnId(String vcnId) { + this.vcnId = vcnId; + this.__explicitlySet__.add("vcnId"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonIgnore + private final java.util.Set __explicitlySet__ = new java.util.HashSet(); + + public ExportSetSummary build() { + ExportSetSummary __instance__ = + new ExportSetSummary( + availabilityDomain, + compartmentId, + displayName, + id, + lifecycleState, + timeCreated, + vcnId); + __instance__.__explicitlySet__.addAll(__explicitlySet__); + return __instance__; + } + + @com.fasterxml.jackson.annotation.JsonIgnore + public Builder copy(ExportSetSummary o) { + Builder copiedBuilder = + availabilityDomain(o.getAvailabilityDomain()) + .compartmentId(o.getCompartmentId()) + .displayName(o.getDisplayName()) + .id(o.getId()) + .lifecycleState(o.getLifecycleState()) + .timeCreated(o.getTimeCreated()) + .vcnId(o.getVcnId()); + + copiedBuilder.__explicitlySet__.retainAll(o.__explicitlySet__); + return copiedBuilder; + } + } + + /** + * Create a new builder. + */ + public static Builder builder() { + return new Builder(); + } + + /** + * The availability domain the export set is in. May be unset + * as a blank or NULL value. + *

          + * Example: `Uocm:PHX-AD-1` + * + **/ + @com.fasterxml.jackson.annotation.JsonProperty("availabilityDomain") + String availabilityDomain; + + /** + * The OCID of the compartment that contains the export set. + **/ + @com.fasterxml.jackson.annotation.JsonProperty("compartmentId") + String compartmentId; + + /** + * A user-friendly name. It does not have to be unique, and it is changeable. + * Avoid entering confidential information. + *

          + * Example: `My export set` + * + **/ + @com.fasterxml.jackson.annotation.JsonProperty("displayName") + String displayName; + + /** + * The OCID of the export set. + **/ + @com.fasterxml.jackson.annotation.JsonProperty("id") + String id; + /** + * The current state of the export set. + **/ + @lombok.extern.slf4j.Slf4j + public enum LifecycleState { + Creating("CREATING"), + Active("ACTIVE"), + Deleting("DELETING"), + Deleted("DELETED"), + + /** + * This value is used if a service returns a value for this enum that is not recognized by this + * version of the SDK. + */ + UnknownEnumValue(null); + + private final String value; + private static java.util.Map map; + + static { + map = new java.util.HashMap<>(); + for (LifecycleState v : LifecycleState.values()) { + if (v != UnknownEnumValue) { + map.put(v.getValue(), v); + } + } + } + + LifecycleState(String value) { + this.value = value; + } + + @com.fasterxml.jackson.annotation.JsonValue + public String getValue() { + return value; + } + + @com.fasterxml.jackson.annotation.JsonCreator + public static LifecycleState create(String key) { + if (map.containsKey(key)) { + return map.get(key); + } + LOG.warn( + "Received unknown value '{}' for enum 'LifecycleState', returning UnknownEnumValue", + key); + return UnknownEnumValue; + } + }; + /** + * The current state of the export set. + **/ + @com.fasterxml.jackson.annotation.JsonProperty("lifecycleState") + LifecycleState lifecycleState; + + /** + * The date and time the export set was created, expressed + * in [RFC 3339](https://tools.ietf.org/rfc/rfc3339) timestamp format. + *

          + * Example: `2016-08-25T21:10:29.600Z` + * + **/ + @com.fasterxml.jackson.annotation.JsonProperty("timeCreated") + java.util.Date timeCreated; + + /** + * The OCID of the virtual cloud network (VCN) the export set is in. + **/ + @com.fasterxml.jackson.annotation.JsonProperty("vcnId") + String vcnId; + + @com.fasterxml.jackson.annotation.JsonIgnore + private final java.util.Set __explicitlySet__ = new java.util.HashSet(); +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/model/ExportSummary.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/model/ExportSummary.java new file mode 100644 index 00000000000..3ce60e0184a --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/model/ExportSummary.java @@ -0,0 +1,206 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.model; + +/** + * Summary information for an export. + * + *
          + * Note: 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 #__explicitlySet__}. The {@link #hashCode()} and {@link #equals(Object)} methods + * are implemented to take {@link #__explicitlySet__} into account. The constructor, on the other hand, does not + * set {@link #__explicitlySet__} (since the constructor cannot distinguish explicit {@code null} from unset + * {@code null}). As a consequence, objects should always be created or deserialized using the {@link Builder}. + **/ +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.Value +@com.fasterxml.jackson.databind.annotation.JsonDeserialize(builder = ExportSummary.Builder.class) +@com.fasterxml.jackson.annotation.JsonFilter(com.oracle.bmc.http.internal.ExplicitlySetFilter.NAME) +public class ExportSummary { + @com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(withPrefix = "") + @lombok.experimental.Accessors(fluent = true) + public static class Builder { + @com.fasterxml.jackson.annotation.JsonProperty("exportSetId") + private String exportSetId; + + public Builder exportSetId(String exportSetId) { + this.exportSetId = exportSetId; + this.__explicitlySet__.add("exportSetId"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("fileSystemId") + private String fileSystemId; + + public Builder fileSystemId(String fileSystemId) { + this.fileSystemId = fileSystemId; + this.__explicitlySet__.add("fileSystemId"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("id") + private String id; + + public Builder id(String id) { + this.id = id; + this.__explicitlySet__.add("id"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("lifecycleState") + private LifecycleState lifecycleState; + + public Builder lifecycleState(LifecycleState lifecycleState) { + this.lifecycleState = lifecycleState; + this.__explicitlySet__.add("lifecycleState"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("path") + private String path; + + public Builder path(String path) { + this.path = path; + this.__explicitlySet__.add("path"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("timeCreated") + private java.util.Date timeCreated; + + public Builder timeCreated(java.util.Date timeCreated) { + this.timeCreated = timeCreated; + this.__explicitlySet__.add("timeCreated"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonIgnore + private final java.util.Set __explicitlySet__ = new java.util.HashSet(); + + public ExportSummary build() { + ExportSummary __instance__ = + new ExportSummary( + exportSetId, fileSystemId, id, lifecycleState, path, timeCreated); + __instance__.__explicitlySet__.addAll(__explicitlySet__); + return __instance__; + } + + @com.fasterxml.jackson.annotation.JsonIgnore + public Builder copy(ExportSummary o) { + Builder copiedBuilder = + exportSetId(o.getExportSetId()) + .fileSystemId(o.getFileSystemId()) + .id(o.getId()) + .lifecycleState(o.getLifecycleState()) + .path(o.getPath()) + .timeCreated(o.getTimeCreated()); + + copiedBuilder.__explicitlySet__.retainAll(o.__explicitlySet__); + return copiedBuilder; + } + } + + /** + * Create a new builder. + */ + public static Builder builder() { + return new Builder(); + } + + /** + * The OCID of this export's export set. + **/ + @com.fasterxml.jackson.annotation.JsonProperty("exportSetId") + String exportSetId; + + /** + * The OCID of this export's file system. + **/ + @com.fasterxml.jackson.annotation.JsonProperty("fileSystemId") + String fileSystemId; + + /** + * The OCID of this export. + **/ + @com.fasterxml.jackson.annotation.JsonProperty("id") + String id; + /** + * The current state of this export. + **/ + @lombok.extern.slf4j.Slf4j + public enum LifecycleState { + Creating("CREATING"), + Active("ACTIVE"), + Deleting("DELETING"), + Deleted("DELETED"), + + /** + * This value is used if a service returns a value for this enum that is not recognized by this + * version of the SDK. + */ + UnknownEnumValue(null); + + private final String value; + private static java.util.Map map; + + static { + map = new java.util.HashMap<>(); + for (LifecycleState v : LifecycleState.values()) { + if (v != UnknownEnumValue) { + map.put(v.getValue(), v); + } + } + } + + LifecycleState(String value) { + this.value = value; + } + + @com.fasterxml.jackson.annotation.JsonValue + public String getValue() { + return value; + } + + @com.fasterxml.jackson.annotation.JsonCreator + public static LifecycleState create(String key) { + if (map.containsKey(key)) { + return map.get(key); + } + LOG.warn( + "Received unknown value '{}' for enum 'LifecycleState', returning UnknownEnumValue", + key); + return UnknownEnumValue; + } + }; + /** + * The current state of this export. + **/ + @com.fasterxml.jackson.annotation.JsonProperty("lifecycleState") + LifecycleState lifecycleState; + + /** + * Path used to access the associated file system. + *

          + * Avoid entering confidential information. + *

          + * Example: `/mediafiles` + * + **/ + @com.fasterxml.jackson.annotation.JsonProperty("path") + String path; + + /** + * The date and time the export was created, expressed + * in [RFC 3339](https://tools.ietf.org/rfc/rfc3339) timestamp format. + *

          + * Example: `2016-08-25T21:10:29.600Z` + * + **/ + @com.fasterxml.jackson.annotation.JsonProperty("timeCreated") + java.util.Date timeCreated; + + @com.fasterxml.jackson.annotation.JsonIgnore + private final java.util.Set __explicitlySet__ = new java.util.HashSet(); +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/model/FileSystem.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/model/FileSystem.java new file mode 100644 index 00000000000..1cd3784fc64 --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/model/FileSystem.java @@ -0,0 +1,244 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.model; + +/** + * An NFS file system. To allow access to a file system, add it + * to an export set and associate the export set with a mount + * target. The same file system can be in multiple export sets and + * associated with multiple mount targets. + *

          + * To use any of the API operations, you must be authorized in an + * IAM policy. If you're not authorized, talk to an + * administrator. If you're an administrator who needs to write + * policies to give users access, see [Getting Started with + * Policies](https://docs.us-phoenix-1.oraclecloud.com/Content/Identity/Concepts/policygetstarted.htm). + * + *
          + * Note: 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 #__explicitlySet__}. The {@link #hashCode()} and {@link #equals(Object)} methods + * are implemented to take {@link #__explicitlySet__} into account. The constructor, on the other hand, does not + * set {@link #__explicitlySet__} (since the constructor cannot distinguish explicit {@code null} from unset + * {@code null}). As a consequence, objects should always be created or deserialized using the {@link Builder}. + **/ +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.Value +@com.fasterxml.jackson.databind.annotation.JsonDeserialize(builder = FileSystem.Builder.class) +@com.fasterxml.jackson.annotation.JsonFilter(com.oracle.bmc.http.internal.ExplicitlySetFilter.NAME) +public class FileSystem { + @com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(withPrefix = "") + @lombok.experimental.Accessors(fluent = true) + public static class Builder { + @com.fasterxml.jackson.annotation.JsonProperty("availabilityDomain") + private String availabilityDomain; + + public Builder availabilityDomain(String availabilityDomain) { + this.availabilityDomain = availabilityDomain; + this.__explicitlySet__.add("availabilityDomain"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("meteredBytes") + private Long meteredBytes; + + public Builder meteredBytes(Long meteredBytes) { + this.meteredBytes = meteredBytes; + this.__explicitlySet__.add("meteredBytes"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("compartmentId") + private String compartmentId; + + public Builder compartmentId(String compartmentId) { + this.compartmentId = compartmentId; + this.__explicitlySet__.add("compartmentId"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("displayName") + private String displayName; + + public Builder displayName(String displayName) { + this.displayName = displayName; + this.__explicitlySet__.add("displayName"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("id") + private String id; + + public Builder id(String id) { + this.id = id; + this.__explicitlySet__.add("id"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("lifecycleState") + private LifecycleState lifecycleState; + + public Builder lifecycleState(LifecycleState lifecycleState) { + this.lifecycleState = lifecycleState; + this.__explicitlySet__.add("lifecycleState"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("timeCreated") + private java.util.Date timeCreated; + + public Builder timeCreated(java.util.Date timeCreated) { + this.timeCreated = timeCreated; + this.__explicitlySet__.add("timeCreated"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonIgnore + private final java.util.Set __explicitlySet__ = new java.util.HashSet(); + + public FileSystem build() { + FileSystem __instance__ = + new FileSystem( + availabilityDomain, + meteredBytes, + compartmentId, + displayName, + id, + lifecycleState, + timeCreated); + __instance__.__explicitlySet__.addAll(__explicitlySet__); + return __instance__; + } + + @com.fasterxml.jackson.annotation.JsonIgnore + public Builder copy(FileSystem o) { + Builder copiedBuilder = + availabilityDomain(o.getAvailabilityDomain()) + .meteredBytes(o.getMeteredBytes()) + .compartmentId(o.getCompartmentId()) + .displayName(o.getDisplayName()) + .id(o.getId()) + .lifecycleState(o.getLifecycleState()) + .timeCreated(o.getTimeCreated()); + + copiedBuilder.__explicitlySet__.retainAll(o.__explicitlySet__); + return copiedBuilder; + } + } + + /** + * Create a new builder. + */ + public static Builder builder() { + return new Builder(); + } + + /** + * The availability domain the file system is in. May be unset + * as a blank or NULL value. + *

          + * Example: `Uocm:PHX-AD-1` + * + **/ + @com.fasterxml.jackson.annotation.JsonProperty("availabilityDomain") + String availabilityDomain; + + /** + * The number of bytes consumed by the file system, including + * any snapshots. This number reflects the metered size of the file + * system and is updated asynchronously with respect to + * updates to the file system. + * + **/ + @com.fasterxml.jackson.annotation.JsonProperty("meteredBytes") + Long meteredBytes; + + /** + * The OCID of the compartment that contains the file system. + **/ + @com.fasterxml.jackson.annotation.JsonProperty("compartmentId") + String compartmentId; + + /** + * A user-friendly name. It does not have to be unique, and it is changeable. + * Avoid entering confidential information. + *

          + * Example: `My file system` + * + **/ + @com.fasterxml.jackson.annotation.JsonProperty("displayName") + String displayName; + + /** + * The OCID of the file system. + **/ + @com.fasterxml.jackson.annotation.JsonProperty("id") + String id; + /** + * The current state of the file system. + **/ + @lombok.extern.slf4j.Slf4j + public enum LifecycleState { + Creating("CREATING"), + Active("ACTIVE"), + Deleting("DELETING"), + Deleted("DELETED"), + + /** + * This value is used if a service returns a value for this enum that is not recognized by this + * version of the SDK. + */ + UnknownEnumValue(null); + + private final String value; + private static java.util.Map map; + + static { + map = new java.util.HashMap<>(); + for (LifecycleState v : LifecycleState.values()) { + if (v != UnknownEnumValue) { + map.put(v.getValue(), v); + } + } + } + + LifecycleState(String value) { + this.value = value; + } + + @com.fasterxml.jackson.annotation.JsonValue + public String getValue() { + return value; + } + + @com.fasterxml.jackson.annotation.JsonCreator + public static LifecycleState create(String key) { + if (map.containsKey(key)) { + return map.get(key); + } + LOG.warn( + "Received unknown value '{}' for enum 'LifecycleState', returning UnknownEnumValue", + key); + return UnknownEnumValue; + } + }; + /** + * The current state of the file system. + **/ + @com.fasterxml.jackson.annotation.JsonProperty("lifecycleState") + LifecycleState lifecycleState; + + /** + * The date and time the file system was created, expressed in + * [RFC 3339](https://tools.ietf.org/rfc/rfc3339) timestamp format. + *

          + * Example: `2016-08-25T21:10:29.600Z` + * + **/ + @com.fasterxml.jackson.annotation.JsonProperty("timeCreated") + java.util.Date timeCreated; + + @com.fasterxml.jackson.annotation.JsonIgnore + private final java.util.Set __explicitlySet__ = new java.util.HashSet(); +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/model/FileSystemSummary.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/model/FileSystemSummary.java new file mode 100644 index 00000000000..859885aad6c --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/model/FileSystemSummary.java @@ -0,0 +1,238 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.model; + +/** + * Summary information for a file system. + * + *
          + * Note: 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 #__explicitlySet__}. The {@link #hashCode()} and {@link #equals(Object)} methods + * are implemented to take {@link #__explicitlySet__} into account. The constructor, on the other hand, does not + * set {@link #__explicitlySet__} (since the constructor cannot distinguish explicit {@code null} from unset + * {@code null}). As a consequence, objects should always be created or deserialized using the {@link Builder}. + **/ +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.Value +@com.fasterxml.jackson.databind.annotation.JsonDeserialize( + builder = FileSystemSummary.Builder.class +) +@com.fasterxml.jackson.annotation.JsonFilter(com.oracle.bmc.http.internal.ExplicitlySetFilter.NAME) +public class FileSystemSummary { + @com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(withPrefix = "") + @lombok.experimental.Accessors(fluent = true) + public static class Builder { + @com.fasterxml.jackson.annotation.JsonProperty("availabilityDomain") + private String availabilityDomain; + + public Builder availabilityDomain(String availabilityDomain) { + this.availabilityDomain = availabilityDomain; + this.__explicitlySet__.add("availabilityDomain"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("meteredBytes") + private Long meteredBytes; + + public Builder meteredBytes(Long meteredBytes) { + this.meteredBytes = meteredBytes; + this.__explicitlySet__.add("meteredBytes"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("compartmentId") + private String compartmentId; + + public Builder compartmentId(String compartmentId) { + this.compartmentId = compartmentId; + this.__explicitlySet__.add("compartmentId"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("displayName") + private String displayName; + + public Builder displayName(String displayName) { + this.displayName = displayName; + this.__explicitlySet__.add("displayName"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("id") + private String id; + + public Builder id(String id) { + this.id = id; + this.__explicitlySet__.add("id"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("lifecycleState") + private LifecycleState lifecycleState; + + public Builder lifecycleState(LifecycleState lifecycleState) { + this.lifecycleState = lifecycleState; + this.__explicitlySet__.add("lifecycleState"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("timeCreated") + private java.util.Date timeCreated; + + public Builder timeCreated(java.util.Date timeCreated) { + this.timeCreated = timeCreated; + this.__explicitlySet__.add("timeCreated"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonIgnore + private final java.util.Set __explicitlySet__ = new java.util.HashSet(); + + public FileSystemSummary build() { + FileSystemSummary __instance__ = + new FileSystemSummary( + availabilityDomain, + meteredBytes, + compartmentId, + displayName, + id, + lifecycleState, + timeCreated); + __instance__.__explicitlySet__.addAll(__explicitlySet__); + return __instance__; + } + + @com.fasterxml.jackson.annotation.JsonIgnore + public Builder copy(FileSystemSummary o) { + Builder copiedBuilder = + availabilityDomain(o.getAvailabilityDomain()) + .meteredBytes(o.getMeteredBytes()) + .compartmentId(o.getCompartmentId()) + .displayName(o.getDisplayName()) + .id(o.getId()) + .lifecycleState(o.getLifecycleState()) + .timeCreated(o.getTimeCreated()); + + copiedBuilder.__explicitlySet__.retainAll(o.__explicitlySet__); + return copiedBuilder; + } + } + + /** + * Create a new builder. + */ + public static Builder builder() { + return new Builder(); + } + + /** + * The availability domain the file system is in. May be unset + * as a blank or NULL value. + *

          + * Example: `Uocm:PHX-AD-1` + * + **/ + @com.fasterxml.jackson.annotation.JsonProperty("availabilityDomain") + String availabilityDomain; + + /** + * The number of bytes consumed by the file system, including + * any snapshots. This number reflects the metered size of the file + * system and is updated asynchronously with respect to + * updates to the file system. For details on file system + * metering see [File System Metering](https://docs.us-phoenix-1.oraclecloud.com/Content/File/Concepts/metering.htm). + * + **/ + @com.fasterxml.jackson.annotation.JsonProperty("meteredBytes") + Long meteredBytes; + + /** + * The OCID of the compartment that contains the file system. + **/ + @com.fasterxml.jackson.annotation.JsonProperty("compartmentId") + String compartmentId; + + /** + * A user-friendly name. It does not have to be unique, and it is changeable. + * Avoid entering confidential information. + *

          + * Example: `My file system` + * + **/ + @com.fasterxml.jackson.annotation.JsonProperty("displayName") + String displayName; + + /** + * The OCID of the file system. + **/ + @com.fasterxml.jackson.annotation.JsonProperty("id") + String id; + /** + * The current state of the file system. + **/ + @lombok.extern.slf4j.Slf4j + public enum LifecycleState { + Creating("CREATING"), + Active("ACTIVE"), + Deleting("DELETING"), + Deleted("DELETED"), + + /** + * This value is used if a service returns a value for this enum that is not recognized by this + * version of the SDK. + */ + UnknownEnumValue(null); + + private final String value; + private static java.util.Map map; + + static { + map = new java.util.HashMap<>(); + for (LifecycleState v : LifecycleState.values()) { + if (v != UnknownEnumValue) { + map.put(v.getValue(), v); + } + } + } + + LifecycleState(String value) { + this.value = value; + } + + @com.fasterxml.jackson.annotation.JsonValue + public String getValue() { + return value; + } + + @com.fasterxml.jackson.annotation.JsonCreator + public static LifecycleState create(String key) { + if (map.containsKey(key)) { + return map.get(key); + } + LOG.warn( + "Received unknown value '{}' for enum 'LifecycleState', returning UnknownEnumValue", + key); + return UnknownEnumValue; + } + }; + /** + * The current state of the file system. + **/ + @com.fasterxml.jackson.annotation.JsonProperty("lifecycleState") + LifecycleState lifecycleState; + + /** + * The date and time the file system was created, expressed + * in [RFC 3339](https://tools.ietf.org/rfc/rfc3339) timestamp format. + *

          + * Example: `2016-08-25T21:10:29.600Z` + * + **/ + @com.fasterxml.jackson.annotation.JsonProperty("timeCreated") + java.util.Date timeCreated; + + @com.fasterxml.jackson.annotation.JsonIgnore + private final java.util.Set __explicitlySet__ = new java.util.HashSet(); +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/model/MountTarget.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/model/MountTarget.java new file mode 100644 index 00000000000..d79816f64cd --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/model/MountTarget.java @@ -0,0 +1,288 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.model; + +/** + * Provides access to a collection of file systems through one or more VNICs on a + * specified subnet. The set of file systems is controlled through the + * referenced export set. + * + *
          + * Note: 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 #__explicitlySet__}. The {@link #hashCode()} and {@link #equals(Object)} methods + * are implemented to take {@link #__explicitlySet__} into account. The constructor, on the other hand, does not + * set {@link #__explicitlySet__} (since the constructor cannot distinguish explicit {@code null} from unset + * {@code null}). As a consequence, objects should always be created or deserialized using the {@link Builder}. + **/ +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.Value +@com.fasterxml.jackson.databind.annotation.JsonDeserialize(builder = MountTarget.Builder.class) +@com.fasterxml.jackson.annotation.JsonFilter(com.oracle.bmc.http.internal.ExplicitlySetFilter.NAME) +public class MountTarget { + @com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(withPrefix = "") + @lombok.experimental.Accessors(fluent = true) + public static class Builder { + @com.fasterxml.jackson.annotation.JsonProperty("availabilityDomain") + private String availabilityDomain; + + public Builder availabilityDomain(String availabilityDomain) { + this.availabilityDomain = availabilityDomain; + this.__explicitlySet__.add("availabilityDomain"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("compartmentId") + private String compartmentId; + + public Builder compartmentId(String compartmentId) { + this.compartmentId = compartmentId; + this.__explicitlySet__.add("compartmentId"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("displayName") + private String displayName; + + public Builder displayName(String displayName) { + this.displayName = displayName; + this.__explicitlySet__.add("displayName"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("exportSetId") + private String exportSetId; + + public Builder exportSetId(String exportSetId) { + this.exportSetId = exportSetId; + this.__explicitlySet__.add("exportSetId"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("id") + private String id; + + public Builder id(String id) { + this.id = id; + this.__explicitlySet__.add("id"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("lifecycleDetails") + private String lifecycleDetails; + + public Builder lifecycleDetails(String lifecycleDetails) { + this.lifecycleDetails = lifecycleDetails; + this.__explicitlySet__.add("lifecycleDetails"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("lifecycleState") + private LifecycleState lifecycleState; + + public Builder lifecycleState(LifecycleState lifecycleState) { + this.lifecycleState = lifecycleState; + this.__explicitlySet__.add("lifecycleState"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("privateIpIds") + private java.util.List privateIpIds; + + public Builder privateIpIds(java.util.List privateIpIds) { + this.privateIpIds = privateIpIds; + this.__explicitlySet__.add("privateIpIds"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("subnetId") + private String subnetId; + + public Builder subnetId(String subnetId) { + this.subnetId = subnetId; + this.__explicitlySet__.add("subnetId"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("timeCreated") + private java.util.Date timeCreated; + + public Builder timeCreated(java.util.Date timeCreated) { + this.timeCreated = timeCreated; + this.__explicitlySet__.add("timeCreated"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonIgnore + private final java.util.Set __explicitlySet__ = new java.util.HashSet(); + + public MountTarget build() { + MountTarget __instance__ = + new MountTarget( + availabilityDomain, + compartmentId, + displayName, + exportSetId, + id, + lifecycleDetails, + lifecycleState, + privateIpIds, + subnetId, + timeCreated); + __instance__.__explicitlySet__.addAll(__explicitlySet__); + return __instance__; + } + + @com.fasterxml.jackson.annotation.JsonIgnore + public Builder copy(MountTarget o) { + Builder copiedBuilder = + availabilityDomain(o.getAvailabilityDomain()) + .compartmentId(o.getCompartmentId()) + .displayName(o.getDisplayName()) + .exportSetId(o.getExportSetId()) + .id(o.getId()) + .lifecycleDetails(o.getLifecycleDetails()) + .lifecycleState(o.getLifecycleState()) + .privateIpIds(o.getPrivateIpIds()) + .subnetId(o.getSubnetId()) + .timeCreated(o.getTimeCreated()); + + copiedBuilder.__explicitlySet__.retainAll(o.__explicitlySet__); + return copiedBuilder; + } + } + + /** + * Create a new builder. + */ + public static Builder builder() { + return new Builder(); + } + + /** + * The availability domain the mount target is in. May be unset + * as a blank or NULL value. + *

          + * Example: `Uocm:PHX-AD-1` + * + **/ + @com.fasterxml.jackson.annotation.JsonProperty("availabilityDomain") + String availabilityDomain; + + /** + * The OCID of the compartment that contains the mount target. + **/ + @com.fasterxml.jackson.annotation.JsonProperty("compartmentId") + String compartmentId; + + /** + * A user-friendly name. It does not have to be unique, and it is changeable. + * Avoid entering confidential information. + *

          + * Example: `My mount target` + * + **/ + @com.fasterxml.jackson.annotation.JsonProperty("displayName") + String displayName; + + /** + * The OCID of the associated export set. Controls what file + * systems will be exported through Network File System (NFS) protocol on this + * mount target. + * + **/ + @com.fasterxml.jackson.annotation.JsonProperty("exportSetId") + String exportSetId; + + /** + * The OCID of the mount target. + **/ + @com.fasterxml.jackson.annotation.JsonProperty("id") + String id; + + /** + * Additional information about the current 'lifecycleState'. + **/ + @com.fasterxml.jackson.annotation.JsonProperty("lifecycleDetails") + String lifecycleDetails; + /** + * The current state of the mount target. + **/ + @lombok.extern.slf4j.Slf4j + public enum LifecycleState { + Creating("CREATING"), + Active("ACTIVE"), + Deleting("DELETING"), + Deleted("DELETED"), + Failed("FAILED"), + + /** + * This value is used if a service returns a value for this enum that is not recognized by this + * version of the SDK. + */ + UnknownEnumValue(null); + + private final String value; + private static java.util.Map map; + + static { + map = new java.util.HashMap<>(); + for (LifecycleState v : LifecycleState.values()) { + if (v != UnknownEnumValue) { + map.put(v.getValue(), v); + } + } + } + + LifecycleState(String value) { + this.value = value; + } + + @com.fasterxml.jackson.annotation.JsonValue + public String getValue() { + return value; + } + + @com.fasterxml.jackson.annotation.JsonCreator + public static LifecycleState create(String key) { + if (map.containsKey(key)) { + return map.get(key); + } + LOG.warn( + "Received unknown value '{}' for enum 'LifecycleState', returning UnknownEnumValue", + key); + return UnknownEnumValue; + } + }; + /** + * The current state of the mount target. + **/ + @com.fasterxml.jackson.annotation.JsonProperty("lifecycleState") + LifecycleState lifecycleState; + + /** + * The OCIDs of the private IP addresses associated with this mount target. + **/ + @com.fasterxml.jackson.annotation.JsonProperty("privateIpIds") + java.util.List privateIpIds; + + /** + * The OCID of the subnet the mount target is in. + **/ + @com.fasterxml.jackson.annotation.JsonProperty("subnetId") + String subnetId; + + /** + * The date and time the mount target was created, expressed + * in [RFC 3339](https://tools.ietf.org/rfc/rfc3339) timestamp format. + *

          + * Example: `2016-08-25T21:10:29.600Z` + * + **/ + @com.fasterxml.jackson.annotation.JsonProperty("timeCreated") + java.util.Date timeCreated; + + @com.fasterxml.jackson.annotation.JsonIgnore + private final java.util.Set __explicitlySet__ = new java.util.HashSet(); +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/model/MountTargetSummary.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/model/MountTargetSummary.java new file mode 100644 index 00000000000..f47d8011805 --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/model/MountTargetSummary.java @@ -0,0 +1,271 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.model; + +/** + * Summary information for the specified mount target. + * + *
          + * Note: 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 #__explicitlySet__}. The {@link #hashCode()} and {@link #equals(Object)} methods + * are implemented to take {@link #__explicitlySet__} into account. The constructor, on the other hand, does not + * set {@link #__explicitlySet__} (since the constructor cannot distinguish explicit {@code null} from unset + * {@code null}). As a consequence, objects should always be created or deserialized using the {@link Builder}. + **/ +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.Value +@com.fasterxml.jackson.databind.annotation.JsonDeserialize( + builder = MountTargetSummary.Builder.class +) +@com.fasterxml.jackson.annotation.JsonFilter(com.oracle.bmc.http.internal.ExplicitlySetFilter.NAME) +public class MountTargetSummary { + @com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(withPrefix = "") + @lombok.experimental.Accessors(fluent = true) + public static class Builder { + @com.fasterxml.jackson.annotation.JsonProperty("availabilityDomain") + private String availabilityDomain; + + public Builder availabilityDomain(String availabilityDomain) { + this.availabilityDomain = availabilityDomain; + this.__explicitlySet__.add("availabilityDomain"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("compartmentId") + private String compartmentId; + + public Builder compartmentId(String compartmentId) { + this.compartmentId = compartmentId; + this.__explicitlySet__.add("compartmentId"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("displayName") + private String displayName; + + public Builder displayName(String displayName) { + this.displayName = displayName; + this.__explicitlySet__.add("displayName"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("exportSetId") + private String exportSetId; + + public Builder exportSetId(String exportSetId) { + this.exportSetId = exportSetId; + this.__explicitlySet__.add("exportSetId"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("id") + private String id; + + public Builder id(String id) { + this.id = id; + this.__explicitlySet__.add("id"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("lifecycleState") + private LifecycleState lifecycleState; + + public Builder lifecycleState(LifecycleState lifecycleState) { + this.lifecycleState = lifecycleState; + this.__explicitlySet__.add("lifecycleState"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("privateIpIds") + private java.util.List privateIpIds; + + public Builder privateIpIds(java.util.List privateIpIds) { + this.privateIpIds = privateIpIds; + this.__explicitlySet__.add("privateIpIds"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("subnetId") + private String subnetId; + + public Builder subnetId(String subnetId) { + this.subnetId = subnetId; + this.__explicitlySet__.add("subnetId"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("timeCreated") + private java.util.Date timeCreated; + + public Builder timeCreated(java.util.Date timeCreated) { + this.timeCreated = timeCreated; + this.__explicitlySet__.add("timeCreated"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonIgnore + private final java.util.Set __explicitlySet__ = new java.util.HashSet(); + + public MountTargetSummary build() { + MountTargetSummary __instance__ = + new MountTargetSummary( + availabilityDomain, + compartmentId, + displayName, + exportSetId, + id, + lifecycleState, + privateIpIds, + subnetId, + timeCreated); + __instance__.__explicitlySet__.addAll(__explicitlySet__); + return __instance__; + } + + @com.fasterxml.jackson.annotation.JsonIgnore + public Builder copy(MountTargetSummary o) { + Builder copiedBuilder = + availabilityDomain(o.getAvailabilityDomain()) + .compartmentId(o.getCompartmentId()) + .displayName(o.getDisplayName()) + .exportSetId(o.getExportSetId()) + .id(o.getId()) + .lifecycleState(o.getLifecycleState()) + .privateIpIds(o.getPrivateIpIds()) + .subnetId(o.getSubnetId()) + .timeCreated(o.getTimeCreated()); + + copiedBuilder.__explicitlySet__.retainAll(o.__explicitlySet__); + return copiedBuilder; + } + } + + /** + * Create a new builder. + */ + public static Builder builder() { + return new Builder(); + } + + /** + * The availability domain the mount target is in. May be unset + * as a blank or NULL value. + *

          + * Example: `Uocm:PHX-AD-1` + * + **/ + @com.fasterxml.jackson.annotation.JsonProperty("availabilityDomain") + String availabilityDomain; + + /** + * The OCID of the compartment that contains the mount target. + **/ + @com.fasterxml.jackson.annotation.JsonProperty("compartmentId") + String compartmentId; + + /** + * A user-friendly name. It does not have to be unique, and it is changeable. + * Avoid entering confidential information. + *

          + * Example: `My mount target` + * + **/ + @com.fasterxml.jackson.annotation.JsonProperty("displayName") + String displayName; + + /** + * The OCID of the associated export set. Controls what file + * systems will be exported using Network File System (NFS) protocol on + * this mount target. + * + **/ + @com.fasterxml.jackson.annotation.JsonProperty("exportSetId") + String exportSetId; + + /** + * The OCID of the mount target. + **/ + @com.fasterxml.jackson.annotation.JsonProperty("id") + String id; + /** + * The current state of the mount target. + **/ + @lombok.extern.slf4j.Slf4j + public enum LifecycleState { + Creating("CREATING"), + Active("ACTIVE"), + Deleting("DELETING"), + Deleted("DELETED"), + Failed("FAILED"), + + /** + * This value is used if a service returns a value for this enum that is not recognized by this + * version of the SDK. + */ + UnknownEnumValue(null); + + private final String value; + private static java.util.Map map; + + static { + map = new java.util.HashMap<>(); + for (LifecycleState v : LifecycleState.values()) { + if (v != UnknownEnumValue) { + map.put(v.getValue(), v); + } + } + } + + LifecycleState(String value) { + this.value = value; + } + + @com.fasterxml.jackson.annotation.JsonValue + public String getValue() { + return value; + } + + @com.fasterxml.jackson.annotation.JsonCreator + public static LifecycleState create(String key) { + if (map.containsKey(key)) { + return map.get(key); + } + LOG.warn( + "Received unknown value '{}' for enum 'LifecycleState', returning UnknownEnumValue", + key); + return UnknownEnumValue; + } + }; + /** + * The current state of the mount target. + **/ + @com.fasterxml.jackson.annotation.JsonProperty("lifecycleState") + LifecycleState lifecycleState; + + /** + * The OCIDs of the private IP addresses associated with this mount target. + **/ + @com.fasterxml.jackson.annotation.JsonProperty("privateIpIds") + java.util.List privateIpIds; + + /** + * The OCID of the subnet the mount target is in. + **/ + @com.fasterxml.jackson.annotation.JsonProperty("subnetId") + String subnetId; + + /** + * The date and time the mount target was created, expressed + * in [RFC 3339](https://tools.ietf.org/rfc/rfc3339) timestamp format. + *

          + * Example: `2016-08-25T21:10:29.600Z` + * + **/ + @com.fasterxml.jackson.annotation.JsonProperty("timeCreated") + java.util.Date timeCreated; + + @com.fasterxml.jackson.annotation.JsonIgnore + private final java.util.Set __explicitlySet__ = new java.util.HashSet(); +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/model/Snapshot.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/model/Snapshot.java new file mode 100644 index 00000000000..8c85001a9f7 --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/model/Snapshot.java @@ -0,0 +1,191 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.model; + +/** + * A point-in-time snapshot of a specified file system. + * + *
          + * Note: 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 #__explicitlySet__}. The {@link #hashCode()} and {@link #equals(Object)} methods + * are implemented to take {@link #__explicitlySet__} into account. The constructor, on the other hand, does not + * set {@link #__explicitlySet__} (since the constructor cannot distinguish explicit {@code null} from unset + * {@code null}). As a consequence, objects should always be created or deserialized using the {@link Builder}. + **/ +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.Value +@com.fasterxml.jackson.databind.annotation.JsonDeserialize(builder = Snapshot.Builder.class) +@com.fasterxml.jackson.annotation.JsonFilter(com.oracle.bmc.http.internal.ExplicitlySetFilter.NAME) +public class Snapshot { + @com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(withPrefix = "") + @lombok.experimental.Accessors(fluent = true) + public static class Builder { + @com.fasterxml.jackson.annotation.JsonProperty("fileSystemId") + private String fileSystemId; + + public Builder fileSystemId(String fileSystemId) { + this.fileSystemId = fileSystemId; + this.__explicitlySet__.add("fileSystemId"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("id") + private String id; + + public Builder id(String id) { + this.id = id; + this.__explicitlySet__.add("id"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("lifecycleState") + private LifecycleState lifecycleState; + + public Builder lifecycleState(LifecycleState lifecycleState) { + this.lifecycleState = lifecycleState; + this.__explicitlySet__.add("lifecycleState"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("name") + private String name; + + public Builder name(String name) { + this.name = name; + this.__explicitlySet__.add("name"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("timeCreated") + private java.util.Date timeCreated; + + public Builder timeCreated(java.util.Date timeCreated) { + this.timeCreated = timeCreated; + this.__explicitlySet__.add("timeCreated"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonIgnore + private final java.util.Set __explicitlySet__ = new java.util.HashSet(); + + public Snapshot build() { + Snapshot __instance__ = + new Snapshot(fileSystemId, id, lifecycleState, name, timeCreated); + __instance__.__explicitlySet__.addAll(__explicitlySet__); + return __instance__; + } + + @com.fasterxml.jackson.annotation.JsonIgnore + public Builder copy(Snapshot o) { + Builder copiedBuilder = + fileSystemId(o.getFileSystemId()) + .id(o.getId()) + .lifecycleState(o.getLifecycleState()) + .name(o.getName()) + .timeCreated(o.getTimeCreated()); + + copiedBuilder.__explicitlySet__.retainAll(o.__explicitlySet__); + return copiedBuilder; + } + } + + /** + * Create a new builder. + */ + public static Builder builder() { + return new Builder(); + } + + /** + * The OCID of the file system from which the snapshot + * was created. + * + **/ + @com.fasterxml.jackson.annotation.JsonProperty("fileSystemId") + String fileSystemId; + + /** + * The OCID of the snapshot. + **/ + @com.fasterxml.jackson.annotation.JsonProperty("id") + String id; + /** + * The current state of the snapshot. + **/ + @lombok.extern.slf4j.Slf4j + public enum LifecycleState { + Creating("CREATING"), + Active("ACTIVE"), + Deleting("DELETING"), + Deleted("DELETED"), + + /** + * This value is used if a service returns a value for this enum that is not recognized by this + * version of the SDK. + */ + UnknownEnumValue(null); + + private final String value; + private static java.util.Map map; + + static { + map = new java.util.HashMap<>(); + for (LifecycleState v : LifecycleState.values()) { + if (v != UnknownEnumValue) { + map.put(v.getValue(), v); + } + } + } + + LifecycleState(String value) { + this.value = value; + } + + @com.fasterxml.jackson.annotation.JsonValue + public String getValue() { + return value; + } + + @com.fasterxml.jackson.annotation.JsonCreator + public static LifecycleState create(String key) { + if (map.containsKey(key)) { + return map.get(key); + } + LOG.warn( + "Received unknown value '{}' for enum 'LifecycleState', returning UnknownEnumValue", + key); + return UnknownEnumValue; + } + }; + /** + * The current state of the snapshot. + **/ + @com.fasterxml.jackson.annotation.JsonProperty("lifecycleState") + LifecycleState lifecycleState; + + /** + * Name of the snapshot. This value is immutable. + *

          + * Avoid entering confidential information. + *

          + * Example: `Sunday` + * + **/ + @com.fasterxml.jackson.annotation.JsonProperty("name") + String name; + + /** + * The date and time the snapshot was created, expressed + * in [RFC 3339](https://tools.ietf.org/rfc/rfc3339) timestamp format. + *

          + * Example: `2016-08-25T21:10:29.600Z` + * + **/ + @com.fasterxml.jackson.annotation.JsonProperty("timeCreated") + java.util.Date timeCreated; + + @com.fasterxml.jackson.annotation.JsonIgnore + private final java.util.Set __explicitlySet__ = new java.util.HashSet(); +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/model/SnapshotSummary.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/model/SnapshotSummary.java new file mode 100644 index 00000000000..2c84adaaf9e --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/model/SnapshotSummary.java @@ -0,0 +1,191 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.model; + +/** + * Summary information for a snapshot. + * + *
          + * Note: 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 #__explicitlySet__}. The {@link #hashCode()} and {@link #equals(Object)} methods + * are implemented to take {@link #__explicitlySet__} into account. The constructor, on the other hand, does not + * set {@link #__explicitlySet__} (since the constructor cannot distinguish explicit {@code null} from unset + * {@code null}). As a consequence, objects should always be created or deserialized using the {@link Builder}. + **/ +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.Value +@com.fasterxml.jackson.databind.annotation.JsonDeserialize(builder = SnapshotSummary.Builder.class) +@com.fasterxml.jackson.annotation.JsonFilter(com.oracle.bmc.http.internal.ExplicitlySetFilter.NAME) +public class SnapshotSummary { + @com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(withPrefix = "") + @lombok.experimental.Accessors(fluent = true) + public static class Builder { + @com.fasterxml.jackson.annotation.JsonProperty("fileSystemId") + private String fileSystemId; + + public Builder fileSystemId(String fileSystemId) { + this.fileSystemId = fileSystemId; + this.__explicitlySet__.add("fileSystemId"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("id") + private String id; + + public Builder id(String id) { + this.id = id; + this.__explicitlySet__.add("id"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("lifecycleState") + private LifecycleState lifecycleState; + + public Builder lifecycleState(LifecycleState lifecycleState) { + this.lifecycleState = lifecycleState; + this.__explicitlySet__.add("lifecycleState"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("name") + private String name; + + public Builder name(String name) { + this.name = name; + this.__explicitlySet__.add("name"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("timeCreated") + private java.util.Date timeCreated; + + public Builder timeCreated(java.util.Date timeCreated) { + this.timeCreated = timeCreated; + this.__explicitlySet__.add("timeCreated"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonIgnore + private final java.util.Set __explicitlySet__ = new java.util.HashSet(); + + public SnapshotSummary build() { + SnapshotSummary __instance__ = + new SnapshotSummary(fileSystemId, id, lifecycleState, name, timeCreated); + __instance__.__explicitlySet__.addAll(__explicitlySet__); + return __instance__; + } + + @com.fasterxml.jackson.annotation.JsonIgnore + public Builder copy(SnapshotSummary o) { + Builder copiedBuilder = + fileSystemId(o.getFileSystemId()) + .id(o.getId()) + .lifecycleState(o.getLifecycleState()) + .name(o.getName()) + .timeCreated(o.getTimeCreated()); + + copiedBuilder.__explicitlySet__.retainAll(o.__explicitlySet__); + return copiedBuilder; + } + } + + /** + * Create a new builder. + */ + public static Builder builder() { + return new Builder(); + } + + /** + * The OCID of the file system from which the + * snapshot was created. + * + **/ + @com.fasterxml.jackson.annotation.JsonProperty("fileSystemId") + String fileSystemId; + + /** + * The OCID of the snapshot. + **/ + @com.fasterxml.jackson.annotation.JsonProperty("id") + String id; + /** + * The current state of the snapshot. + **/ + @lombok.extern.slf4j.Slf4j + public enum LifecycleState { + Creating("CREATING"), + Active("ACTIVE"), + Deleting("DELETING"), + Deleted("DELETED"), + + /** + * This value is used if a service returns a value for this enum that is not recognized by this + * version of the SDK. + */ + UnknownEnumValue(null); + + private final String value; + private static java.util.Map map; + + static { + map = new java.util.HashMap<>(); + for (LifecycleState v : LifecycleState.values()) { + if (v != UnknownEnumValue) { + map.put(v.getValue(), v); + } + } + } + + LifecycleState(String value) { + this.value = value; + } + + @com.fasterxml.jackson.annotation.JsonValue + public String getValue() { + return value; + } + + @com.fasterxml.jackson.annotation.JsonCreator + public static LifecycleState create(String key) { + if (map.containsKey(key)) { + return map.get(key); + } + LOG.warn( + "Received unknown value '{}' for enum 'LifecycleState', returning UnknownEnumValue", + key); + return UnknownEnumValue; + } + }; + /** + * The current state of the snapshot. + **/ + @com.fasterxml.jackson.annotation.JsonProperty("lifecycleState") + LifecycleState lifecycleState; + + /** + * Name of the snapshot. This value is immutable. + *

          + * Avoid entering confidential information. + *

          + * Example: `Sunday` + * + **/ + @com.fasterxml.jackson.annotation.JsonProperty("name") + String name; + + /** + * The date and time the snapshot was created, expressed + * in [RFC 3339](https://tools.ietf.org/rfc/rfc3339) timestamp format. + *

          + * Example: `2016-08-25T21:10:29.600Z` + * + **/ + @com.fasterxml.jackson.annotation.JsonProperty("timeCreated") + java.util.Date timeCreated; + + @com.fasterxml.jackson.annotation.JsonIgnore + private final java.util.Set __explicitlySet__ = new java.util.HashSet(); +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/model/UpdateExportSetDetails.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/model/UpdateExportSetDetails.java new file mode 100644 index 00000000000..3ee26e0c15c --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/model/UpdateExportSetDetails.java @@ -0,0 +1,124 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.model; + +/** + * + *
          + * Note: 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 #__explicitlySet__}. The {@link #hashCode()} and {@link #equals(Object)} methods + * are implemented to take {@link #__explicitlySet__} into account. The constructor, on the other hand, does not + * set {@link #__explicitlySet__} (since the constructor cannot distinguish explicit {@code null} from unset + * {@code null}). As a consequence, objects should always be created or deserialized using the {@link Builder}. + **/ +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.Value +@com.fasterxml.jackson.databind.annotation.JsonDeserialize( + builder = UpdateExportSetDetails.Builder.class +) +@com.fasterxml.jackson.annotation.JsonFilter(com.oracle.bmc.http.internal.ExplicitlySetFilter.NAME) +public class UpdateExportSetDetails { + @com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(withPrefix = "") + @lombok.experimental.Accessors(fluent = true) + public static class Builder { + @com.fasterxml.jackson.annotation.JsonProperty("displayName") + private String displayName; + + public Builder displayName(String displayName) { + this.displayName = displayName; + this.__explicitlySet__.add("displayName"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("maxFsStatBytes") + private Long maxFsStatBytes; + + public Builder maxFsStatBytes(Long maxFsStatBytes) { + this.maxFsStatBytes = maxFsStatBytes; + this.__explicitlySet__.add("maxFsStatBytes"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("maxFsStatFiles") + private Long maxFsStatFiles; + + public Builder maxFsStatFiles(Long maxFsStatFiles) { + this.maxFsStatFiles = maxFsStatFiles; + this.__explicitlySet__.add("maxFsStatFiles"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonIgnore + private final java.util.Set __explicitlySet__ = new java.util.HashSet(); + + public UpdateExportSetDetails build() { + UpdateExportSetDetails __instance__ = + new UpdateExportSetDetails(displayName, maxFsStatBytes, maxFsStatFiles); + __instance__.__explicitlySet__.addAll(__explicitlySet__); + return __instance__; + } + + @com.fasterxml.jackson.annotation.JsonIgnore + public Builder copy(UpdateExportSetDetails o) { + Builder copiedBuilder = + displayName(o.getDisplayName()) + .maxFsStatBytes(o.getMaxFsStatBytes()) + .maxFsStatFiles(o.getMaxFsStatFiles()); + + copiedBuilder.__explicitlySet__.retainAll(o.__explicitlySet__); + return copiedBuilder; + } + } + + /** + * Create a new builder. + */ + public static Builder builder() { + return new Builder(); + } + + /** + * A user-friendly name. It does not have to be unique, and it is changeable. + * Avoid entering confidential information. + *

          + * Example: `My export set` + * + **/ + @com.fasterxml.jackson.annotation.JsonProperty("displayName") + String displayName; + + /** + * Controls the maximum `tbytes`, `fbytes`, and `abytes` + * values reported by `NFS FSSTAT` calls through any associated + * mount targets. This is an advanced feature. For most + * applications, use the default value. The + * `tbytes` value reported by `FSSTAT` will be + * `maxFsStatBytes`. The value of `fbytes` and `abytes` will be + * `maxFsStatBytes` minus the metered size of the file + * system. If the metered size is larger than `maxFsStatBytes`, + * then `fbytes` and `abytes` will both be '0'. + * + **/ + @com.fasterxml.jackson.annotation.JsonProperty("maxFsStatBytes") + Long maxFsStatBytes; + + /** + * Controls the maximum `ffiles`, `ffiles`, and `afiles` + * values reported by `NFS FSSTAT` calls through any associated + * mount targets. This is an advanced feature. For most + * applications, use the default value. The + * `tfiles` value reported by `FSSTAT` will be + * `maxFsStatFiles`. The value of `ffiles` and `afiles` will be + * `maxFsStatFiles` minus the metered size of the file + * system. If the metered size is larger than `maxFsStatFiles`, + * then `ffiles` and `afiles` will both be '0'. + * + **/ + @com.fasterxml.jackson.annotation.JsonProperty("maxFsStatFiles") + Long maxFsStatFiles; + + @com.fasterxml.jackson.annotation.JsonIgnore + private final java.util.Set __explicitlySet__ = new java.util.HashSet(); +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/model/UpdateFileSystemDetails.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/model/UpdateFileSystemDetails.java new file mode 100644 index 00000000000..53ceb14a23a --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/model/UpdateFileSystemDetails.java @@ -0,0 +1,72 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.model; + +/** + * + *
          + * Note: 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 #__explicitlySet__}. The {@link #hashCode()} and {@link #equals(Object)} methods + * are implemented to take {@link #__explicitlySet__} into account. The constructor, on the other hand, does not + * set {@link #__explicitlySet__} (since the constructor cannot distinguish explicit {@code null} from unset + * {@code null}). As a consequence, objects should always be created or deserialized using the {@link Builder}. + **/ +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.Value +@com.fasterxml.jackson.databind.annotation.JsonDeserialize( + builder = UpdateFileSystemDetails.Builder.class +) +@com.fasterxml.jackson.annotation.JsonFilter(com.oracle.bmc.http.internal.ExplicitlySetFilter.NAME) +public class UpdateFileSystemDetails { + @com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(withPrefix = "") + @lombok.experimental.Accessors(fluent = true) + public static class Builder { + @com.fasterxml.jackson.annotation.JsonProperty("displayName") + private String displayName; + + public Builder displayName(String displayName) { + this.displayName = displayName; + this.__explicitlySet__.add("displayName"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonIgnore + private final java.util.Set __explicitlySet__ = new java.util.HashSet(); + + public UpdateFileSystemDetails build() { + UpdateFileSystemDetails __instance__ = new UpdateFileSystemDetails(displayName); + __instance__.__explicitlySet__.addAll(__explicitlySet__); + return __instance__; + } + + @com.fasterxml.jackson.annotation.JsonIgnore + public Builder copy(UpdateFileSystemDetails o) { + Builder copiedBuilder = displayName(o.getDisplayName()); + + copiedBuilder.__explicitlySet__.retainAll(o.__explicitlySet__); + return copiedBuilder; + } + } + + /** + * Create a new builder. + */ + public static Builder builder() { + return new Builder(); + } + + /** + * A user-friendly name. It does not have to be unique, and it is changeable. + * Avoid entering confidential information. + *

          + * Example: `My file system` + * + **/ + @com.fasterxml.jackson.annotation.JsonProperty("displayName") + String displayName; + + @com.fasterxml.jackson.annotation.JsonIgnore + private final java.util.Set __explicitlySet__ = new java.util.HashSet(); +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/model/UpdateMountTargetDetails.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/model/UpdateMountTargetDetails.java new file mode 100644 index 00000000000..d6950deba1c --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/model/UpdateMountTargetDetails.java @@ -0,0 +1,72 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.model; + +/** + * + *
          + * Note: 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 #__explicitlySet__}. The {@link #hashCode()} and {@link #equals(Object)} methods + * are implemented to take {@link #__explicitlySet__} into account. The constructor, on the other hand, does not + * set {@link #__explicitlySet__} (since the constructor cannot distinguish explicit {@code null} from unset + * {@code null}). As a consequence, objects should always be created or deserialized using the {@link Builder}. + **/ +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.Value +@com.fasterxml.jackson.databind.annotation.JsonDeserialize( + builder = UpdateMountTargetDetails.Builder.class +) +@com.fasterxml.jackson.annotation.JsonFilter(com.oracle.bmc.http.internal.ExplicitlySetFilter.NAME) +public class UpdateMountTargetDetails { + @com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(withPrefix = "") + @lombok.experimental.Accessors(fluent = true) + public static class Builder { + @com.fasterxml.jackson.annotation.JsonProperty("displayName") + private String displayName; + + public Builder displayName(String displayName) { + this.displayName = displayName; + this.__explicitlySet__.add("displayName"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonIgnore + private final java.util.Set __explicitlySet__ = new java.util.HashSet(); + + public UpdateMountTargetDetails build() { + UpdateMountTargetDetails __instance__ = new UpdateMountTargetDetails(displayName); + __instance__.__explicitlySet__.addAll(__explicitlySet__); + return __instance__; + } + + @com.fasterxml.jackson.annotation.JsonIgnore + public Builder copy(UpdateMountTargetDetails o) { + Builder copiedBuilder = displayName(o.getDisplayName()); + + copiedBuilder.__explicitlySet__.retainAll(o.__explicitlySet__); + return copiedBuilder; + } + } + + /** + * Create a new builder. + */ + public static Builder builder() { + return new Builder(); + } + + /** + * A user-friendly name. Does not have to be unique, and it is changeable. + * Avoid entering confidential information. + *

          + * Example: `My mount target` + * + **/ + @com.fasterxml.jackson.annotation.JsonProperty("displayName") + String displayName; + + @com.fasterxml.jackson.annotation.JsonIgnore + private final java.util.Set __explicitlySet__ = new java.util.HashSet(); +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/requests/CreateExportRequest.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/requests/CreateExportRequest.java new file mode 100644 index 00000000000..7e957b7915f --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/requests/CreateExportRequest.java @@ -0,0 +1,70 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.requests; + +import com.oracle.bmc.filestorage.model.*; + +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.Builder(builderClassName = "Builder", buildMethodName = "buildWithoutInvocationCallback") +@lombok.Getter +public class CreateExportRequest extends com.oracle.bmc.requests.BmcRequest { + + /** + * Details for creating a new export. + */ + private CreateExportDetails createExportDetails; + + /** + * A token that uniquely identifies a request so it can be retried in case of a timeout or + * server error without risk of executing that same action again. Retry tokens expire after 24 + * hours, but can be invalidated before then due to conflicting operations. For example, if a resource + * has been deleted and purged from the system, then a retry of the original creation request + * might be rejected. + * + */ + private String opcRetryToken; + + public static class Builder { + private com.oracle.bmc.util.internal.Consumer + invocationCallback = null; + + /** + * Set the invocation callback for the request to be built. + * @param invocationCallback the invocation callback to be set for the request + * @return this builder instance + */ + public Builder invocationCallback( + com.oracle.bmc.util.internal.Consumer + invocationCallback) { + this.invocationCallback = invocationCallback; + return this; + } + + /** + * Copy method to populate the builder with values from the given instance. + * @return this builder instance + */ + public Builder copy(CreateExportRequest o) { + createExportDetails(o.getCreateExportDetails()); + opcRetryToken(o.getOpcRetryToken()); + return this; + } + + /** + * Build the instance of CreateExportRequest as configured by this builder + * + * Note that this method takes calls to {@link Builder#invocationCallback(com.oracle.bmc.util.internal.Consumer)} into account, + * while the method {@link Builder#buildWithoutInvocationCallback} does not. + * + * This is the preferred method to build an instance. + * + * @return instance of CreateExportRequest + */ + public CreateExportRequest build() { + CreateExportRequest request = buildWithoutInvocationCallback(); + request.setInvocationCallback(invocationCallback); + return request; + } + } +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/requests/CreateFileSystemRequest.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/requests/CreateFileSystemRequest.java new file mode 100644 index 00000000000..bffd6eab2e2 --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/requests/CreateFileSystemRequest.java @@ -0,0 +1,70 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.requests; + +import com.oracle.bmc.filestorage.model.*; + +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.Builder(builderClassName = "Builder", buildMethodName = "buildWithoutInvocationCallback") +@lombok.Getter +public class CreateFileSystemRequest extends com.oracle.bmc.requests.BmcRequest { + + /** + * Details for creating a new file system. + */ + private CreateFileSystemDetails createFileSystemDetails; + + /** + * A token that uniquely identifies a request so it can be retried in case of a timeout or + * server error without risk of executing that same action again. Retry tokens expire after 24 + * hours, but can be invalidated before then due to conflicting operations. For example, if a resource + * has been deleted and purged from the system, then a retry of the original creation request + * might be rejected. + * + */ + private String opcRetryToken; + + public static class Builder { + private com.oracle.bmc.util.internal.Consumer + invocationCallback = null; + + /** + * Set the invocation callback for the request to be built. + * @param invocationCallback the invocation callback to be set for the request + * @return this builder instance + */ + public Builder invocationCallback( + com.oracle.bmc.util.internal.Consumer + invocationCallback) { + this.invocationCallback = invocationCallback; + return this; + } + + /** + * Copy method to populate the builder with values from the given instance. + * @return this builder instance + */ + public Builder copy(CreateFileSystemRequest o) { + createFileSystemDetails(o.getCreateFileSystemDetails()); + opcRetryToken(o.getOpcRetryToken()); + return this; + } + + /** + * Build the instance of CreateFileSystemRequest as configured by this builder + * + * Note that this method takes calls to {@link Builder#invocationCallback(com.oracle.bmc.util.internal.Consumer)} into account, + * while the method {@link Builder#buildWithoutInvocationCallback} does not. + * + * This is the preferred method to build an instance. + * + * @return instance of CreateFileSystemRequest + */ + public CreateFileSystemRequest build() { + CreateFileSystemRequest request = buildWithoutInvocationCallback(); + request.setInvocationCallback(invocationCallback); + return request; + } + } +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/requests/CreateMountTargetRequest.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/requests/CreateMountTargetRequest.java new file mode 100644 index 00000000000..f07839a483f --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/requests/CreateMountTargetRequest.java @@ -0,0 +1,70 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.requests; + +import com.oracle.bmc.filestorage.model.*; + +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.Builder(builderClassName = "Builder", buildMethodName = "buildWithoutInvocationCallback") +@lombok.Getter +public class CreateMountTargetRequest extends com.oracle.bmc.requests.BmcRequest { + + /** + * Details for creating a new mount target. + */ + private CreateMountTargetDetails createMountTargetDetails; + + /** + * A token that uniquely identifies a request so it can be retried in case of a timeout or + * server error without risk of executing that same action again. Retry tokens expire after 24 + * hours, but can be invalidated before then due to conflicting operations. For example, if a resource + * has been deleted and purged from the system, then a retry of the original creation request + * might be rejected. + * + */ + private String opcRetryToken; + + public static class Builder { + private com.oracle.bmc.util.internal.Consumer + invocationCallback = null; + + /** + * Set the invocation callback for the request to be built. + * @param invocationCallback the invocation callback to be set for the request + * @return this builder instance + */ + public Builder invocationCallback( + com.oracle.bmc.util.internal.Consumer + invocationCallback) { + this.invocationCallback = invocationCallback; + return this; + } + + /** + * Copy method to populate the builder with values from the given instance. + * @return this builder instance + */ + public Builder copy(CreateMountTargetRequest o) { + createMountTargetDetails(o.getCreateMountTargetDetails()); + opcRetryToken(o.getOpcRetryToken()); + return this; + } + + /** + * Build the instance of CreateMountTargetRequest as configured by this builder + * + * Note that this method takes calls to {@link Builder#invocationCallback(com.oracle.bmc.util.internal.Consumer)} into account, + * while the method {@link Builder#buildWithoutInvocationCallback} does not. + * + * This is the preferred method to build an instance. + * + * @return instance of CreateMountTargetRequest + */ + public CreateMountTargetRequest build() { + CreateMountTargetRequest request = buildWithoutInvocationCallback(); + request.setInvocationCallback(invocationCallback); + return request; + } + } +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/requests/CreateSnapshotRequest.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/requests/CreateSnapshotRequest.java new file mode 100644 index 00000000000..41cabf2eb96 --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/requests/CreateSnapshotRequest.java @@ -0,0 +1,70 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.requests; + +import com.oracle.bmc.filestorage.model.*; + +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.Builder(builderClassName = "Builder", buildMethodName = "buildWithoutInvocationCallback") +@lombok.Getter +public class CreateSnapshotRequest extends com.oracle.bmc.requests.BmcRequest { + + /** + * Details for creating a new snapshot. + */ + private CreateSnapshotDetails createSnapshotDetails; + + /** + * A token that uniquely identifies a request so it can be retried in case of a timeout or + * server error without risk of executing that same action again. Retry tokens expire after 24 + * hours, but can be invalidated before then due to conflicting operations. For example, if a resource + * has been deleted and purged from the system, then a retry of the original creation request + * might be rejected. + * + */ + private String opcRetryToken; + + public static class Builder { + private com.oracle.bmc.util.internal.Consumer + invocationCallback = null; + + /** + * Set the invocation callback for the request to be built. + * @param invocationCallback the invocation callback to be set for the request + * @return this builder instance + */ + public Builder invocationCallback( + com.oracle.bmc.util.internal.Consumer + invocationCallback) { + this.invocationCallback = invocationCallback; + return this; + } + + /** + * Copy method to populate the builder with values from the given instance. + * @return this builder instance + */ + public Builder copy(CreateSnapshotRequest o) { + createSnapshotDetails(o.getCreateSnapshotDetails()); + opcRetryToken(o.getOpcRetryToken()); + return this; + } + + /** + * Build the instance of CreateSnapshotRequest as configured by this builder + * + * Note that this method takes calls to {@link Builder#invocationCallback(com.oracle.bmc.util.internal.Consumer)} into account, + * while the method {@link Builder#buildWithoutInvocationCallback} does not. + * + * This is the preferred method to build an instance. + * + * @return instance of CreateSnapshotRequest + */ + public CreateSnapshotRequest build() { + CreateSnapshotRequest request = buildWithoutInvocationCallback(); + request.setInvocationCallback(invocationCallback); + return request; + } + } +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/requests/DeleteExportRequest.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/requests/DeleteExportRequest.java new file mode 100644 index 00000000000..6f1e098d862 --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/requests/DeleteExportRequest.java @@ -0,0 +1,70 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.requests; + +import com.oracle.bmc.filestorage.model.*; + +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.Builder(builderClassName = "Builder", buildMethodName = "buildWithoutInvocationCallback") +@lombok.Getter +public class DeleteExportRequest extends com.oracle.bmc.requests.BmcRequest { + + /** + * The OCID of the export. + */ + private String exportId; + + /** + * For optimistic concurrency control. In the PUT or DELETE call + * for a resource, set the `if-match` parameter to the value of the + * etag from a previous GET or POST response for that resource. + * The resource will be updated or deleted only if the etag you + * provide matches the resource's current etag value. + * + */ + private String ifMatch; + + public static class Builder { + private com.oracle.bmc.util.internal.Consumer + invocationCallback = null; + + /** + * Set the invocation callback for the request to be built. + * @param invocationCallback the invocation callback to be set for the request + * @return this builder instance + */ + public Builder invocationCallback( + com.oracle.bmc.util.internal.Consumer + invocationCallback) { + this.invocationCallback = invocationCallback; + return this; + } + + /** + * Copy method to populate the builder with values from the given instance. + * @return this builder instance + */ + public Builder copy(DeleteExportRequest o) { + exportId(o.getExportId()); + ifMatch(o.getIfMatch()); + return this; + } + + /** + * Build the instance of DeleteExportRequest as configured by this builder + * + * Note that this method takes calls to {@link Builder#invocationCallback(com.oracle.bmc.util.internal.Consumer)} into account, + * while the method {@link Builder#buildWithoutInvocationCallback} does not. + * + * This is the preferred method to build an instance. + * + * @return instance of DeleteExportRequest + */ + public DeleteExportRequest build() { + DeleteExportRequest request = buildWithoutInvocationCallback(); + request.setInvocationCallback(invocationCallback); + return request; + } + } +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/requests/DeleteFileSystemRequest.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/requests/DeleteFileSystemRequest.java new file mode 100644 index 00000000000..d267736a6a1 --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/requests/DeleteFileSystemRequest.java @@ -0,0 +1,70 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.requests; + +import com.oracle.bmc.filestorage.model.*; + +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.Builder(builderClassName = "Builder", buildMethodName = "buildWithoutInvocationCallback") +@lombok.Getter +public class DeleteFileSystemRequest extends com.oracle.bmc.requests.BmcRequest { + + /** + * The OCID of the file system. + */ + private String fileSystemId; + + /** + * For optimistic concurrency control. In the PUT or DELETE call + * for a resource, set the `if-match` parameter to the value of the + * etag from a previous GET or POST response for that resource. + * The resource will be updated or deleted only if the etag you + * provide matches the resource's current etag value. + * + */ + private String ifMatch; + + public static class Builder { + private com.oracle.bmc.util.internal.Consumer + invocationCallback = null; + + /** + * Set the invocation callback for the request to be built. + * @param invocationCallback the invocation callback to be set for the request + * @return this builder instance + */ + public Builder invocationCallback( + com.oracle.bmc.util.internal.Consumer + invocationCallback) { + this.invocationCallback = invocationCallback; + return this; + } + + /** + * Copy method to populate the builder with values from the given instance. + * @return this builder instance + */ + public Builder copy(DeleteFileSystemRequest o) { + fileSystemId(o.getFileSystemId()); + ifMatch(o.getIfMatch()); + return this; + } + + /** + * Build the instance of DeleteFileSystemRequest as configured by this builder + * + * Note that this method takes calls to {@link Builder#invocationCallback(com.oracle.bmc.util.internal.Consumer)} into account, + * while the method {@link Builder#buildWithoutInvocationCallback} does not. + * + * This is the preferred method to build an instance. + * + * @return instance of DeleteFileSystemRequest + */ + public DeleteFileSystemRequest build() { + DeleteFileSystemRequest request = buildWithoutInvocationCallback(); + request.setInvocationCallback(invocationCallback); + return request; + } + } +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/requests/DeleteMountTargetRequest.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/requests/DeleteMountTargetRequest.java new file mode 100644 index 00000000000..a88e5fd7fcb --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/requests/DeleteMountTargetRequest.java @@ -0,0 +1,70 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.requests; + +import com.oracle.bmc.filestorage.model.*; + +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.Builder(builderClassName = "Builder", buildMethodName = "buildWithoutInvocationCallback") +@lombok.Getter +public class DeleteMountTargetRequest extends com.oracle.bmc.requests.BmcRequest { + + /** + * The OCID of the mount target. + */ + private String mountTargetId; + + /** + * For optimistic concurrency control. In the PUT or DELETE call + * for a resource, set the `if-match` parameter to the value of the + * etag from a previous GET or POST response for that resource. + * The resource will be updated or deleted only if the etag you + * provide matches the resource's current etag value. + * + */ + private String ifMatch; + + public static class Builder { + private com.oracle.bmc.util.internal.Consumer + invocationCallback = null; + + /** + * Set the invocation callback for the request to be built. + * @param invocationCallback the invocation callback to be set for the request + * @return this builder instance + */ + public Builder invocationCallback( + com.oracle.bmc.util.internal.Consumer + invocationCallback) { + this.invocationCallback = invocationCallback; + return this; + } + + /** + * Copy method to populate the builder with values from the given instance. + * @return this builder instance + */ + public Builder copy(DeleteMountTargetRequest o) { + mountTargetId(o.getMountTargetId()); + ifMatch(o.getIfMatch()); + return this; + } + + /** + * Build the instance of DeleteMountTargetRequest as configured by this builder + * + * Note that this method takes calls to {@link Builder#invocationCallback(com.oracle.bmc.util.internal.Consumer)} into account, + * while the method {@link Builder#buildWithoutInvocationCallback} does not. + * + * This is the preferred method to build an instance. + * + * @return instance of DeleteMountTargetRequest + */ + public DeleteMountTargetRequest build() { + DeleteMountTargetRequest request = buildWithoutInvocationCallback(); + request.setInvocationCallback(invocationCallback); + return request; + } + } +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/requests/DeleteSnapshotRequest.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/requests/DeleteSnapshotRequest.java new file mode 100644 index 00000000000..c76390e58a0 --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/requests/DeleteSnapshotRequest.java @@ -0,0 +1,70 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.requests; + +import com.oracle.bmc.filestorage.model.*; + +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.Builder(builderClassName = "Builder", buildMethodName = "buildWithoutInvocationCallback") +@lombok.Getter +public class DeleteSnapshotRequest extends com.oracle.bmc.requests.BmcRequest { + + /** + * The OCID of the snapshot. + */ + private String snapshotId; + + /** + * For optimistic concurrency control. In the PUT or DELETE call + * for a resource, set the `if-match` parameter to the value of the + * etag from a previous GET or POST response for that resource. + * The resource will be updated or deleted only if the etag you + * provide matches the resource's current etag value. + * + */ + private String ifMatch; + + public static class Builder { + private com.oracle.bmc.util.internal.Consumer + invocationCallback = null; + + /** + * Set the invocation callback for the request to be built. + * @param invocationCallback the invocation callback to be set for the request + * @return this builder instance + */ + public Builder invocationCallback( + com.oracle.bmc.util.internal.Consumer + invocationCallback) { + this.invocationCallback = invocationCallback; + return this; + } + + /** + * Copy method to populate the builder with values from the given instance. + * @return this builder instance + */ + public Builder copy(DeleteSnapshotRequest o) { + snapshotId(o.getSnapshotId()); + ifMatch(o.getIfMatch()); + return this; + } + + /** + * Build the instance of DeleteSnapshotRequest as configured by this builder + * + * Note that this method takes calls to {@link Builder#invocationCallback(com.oracle.bmc.util.internal.Consumer)} into account, + * while the method {@link Builder#buildWithoutInvocationCallback} does not. + * + * This is the preferred method to build an instance. + * + * @return instance of DeleteSnapshotRequest + */ + public DeleteSnapshotRequest build() { + DeleteSnapshotRequest request = buildWithoutInvocationCallback(); + request.setInvocationCallback(invocationCallback); + return request; + } + } +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/requests/GetExportRequest.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/requests/GetExportRequest.java new file mode 100644 index 00000000000..dadb4935147 --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/requests/GetExportRequest.java @@ -0,0 +1,59 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.requests; + +import com.oracle.bmc.filestorage.model.*; + +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.Builder(builderClassName = "Builder", buildMethodName = "buildWithoutInvocationCallback") +@lombok.Getter +public class GetExportRequest extends com.oracle.bmc.requests.BmcRequest { + + /** + * The OCID of the export. + */ + private String exportId; + + public static class Builder { + private com.oracle.bmc.util.internal.Consumer + invocationCallback = null; + + /** + * Set the invocation callback for the request to be built. + * @param invocationCallback the invocation callback to be set for the request + * @return this builder instance + */ + public Builder invocationCallback( + com.oracle.bmc.util.internal.Consumer + invocationCallback) { + this.invocationCallback = invocationCallback; + return this; + } + + /** + * Copy method to populate the builder with values from the given instance. + * @return this builder instance + */ + public Builder copy(GetExportRequest o) { + exportId(o.getExportId()); + return this; + } + + /** + * Build the instance of GetExportRequest as configured by this builder + * + * Note that this method takes calls to {@link Builder#invocationCallback(com.oracle.bmc.util.internal.Consumer)} into account, + * while the method {@link Builder#buildWithoutInvocationCallback} does not. + * + * This is the preferred method to build an instance. + * + * @return instance of GetExportRequest + */ + public GetExportRequest build() { + GetExportRequest request = buildWithoutInvocationCallback(); + request.setInvocationCallback(invocationCallback); + return request; + } + } +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/requests/GetExportSetRequest.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/requests/GetExportSetRequest.java new file mode 100644 index 00000000000..a153e9ad669 --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/requests/GetExportSetRequest.java @@ -0,0 +1,59 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.requests; + +import com.oracle.bmc.filestorage.model.*; + +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.Builder(builderClassName = "Builder", buildMethodName = "buildWithoutInvocationCallback") +@lombok.Getter +public class GetExportSetRequest extends com.oracle.bmc.requests.BmcRequest { + + /** + * The OCID of the export set. + */ + private String exportSetId; + + public static class Builder { + private com.oracle.bmc.util.internal.Consumer + invocationCallback = null; + + /** + * Set the invocation callback for the request to be built. + * @param invocationCallback the invocation callback to be set for the request + * @return this builder instance + */ + public Builder invocationCallback( + com.oracle.bmc.util.internal.Consumer + invocationCallback) { + this.invocationCallback = invocationCallback; + return this; + } + + /** + * Copy method to populate the builder with values from the given instance. + * @return this builder instance + */ + public Builder copy(GetExportSetRequest o) { + exportSetId(o.getExportSetId()); + return this; + } + + /** + * Build the instance of GetExportSetRequest as configured by this builder + * + * Note that this method takes calls to {@link Builder#invocationCallback(com.oracle.bmc.util.internal.Consumer)} into account, + * while the method {@link Builder#buildWithoutInvocationCallback} does not. + * + * This is the preferred method to build an instance. + * + * @return instance of GetExportSetRequest + */ + public GetExportSetRequest build() { + GetExportSetRequest request = buildWithoutInvocationCallback(); + request.setInvocationCallback(invocationCallback); + return request; + } + } +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/requests/GetFileSystemRequest.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/requests/GetFileSystemRequest.java new file mode 100644 index 00000000000..62375f7c782 --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/requests/GetFileSystemRequest.java @@ -0,0 +1,59 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.requests; + +import com.oracle.bmc.filestorage.model.*; + +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.Builder(builderClassName = "Builder", buildMethodName = "buildWithoutInvocationCallback") +@lombok.Getter +public class GetFileSystemRequest extends com.oracle.bmc.requests.BmcRequest { + + /** + * The OCID of the file system. + */ + private String fileSystemId; + + public static class Builder { + private com.oracle.bmc.util.internal.Consumer + invocationCallback = null; + + /** + * Set the invocation callback for the request to be built. + * @param invocationCallback the invocation callback to be set for the request + * @return this builder instance + */ + public Builder invocationCallback( + com.oracle.bmc.util.internal.Consumer + invocationCallback) { + this.invocationCallback = invocationCallback; + return this; + } + + /** + * Copy method to populate the builder with values from the given instance. + * @return this builder instance + */ + public Builder copy(GetFileSystemRequest o) { + fileSystemId(o.getFileSystemId()); + return this; + } + + /** + * Build the instance of GetFileSystemRequest as configured by this builder + * + * Note that this method takes calls to {@link Builder#invocationCallback(com.oracle.bmc.util.internal.Consumer)} into account, + * while the method {@link Builder#buildWithoutInvocationCallback} does not. + * + * This is the preferred method to build an instance. + * + * @return instance of GetFileSystemRequest + */ + public GetFileSystemRequest build() { + GetFileSystemRequest request = buildWithoutInvocationCallback(); + request.setInvocationCallback(invocationCallback); + return request; + } + } +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/requests/GetMountTargetRequest.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/requests/GetMountTargetRequest.java new file mode 100644 index 00000000000..85e5921bc11 --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/requests/GetMountTargetRequest.java @@ -0,0 +1,59 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.requests; + +import com.oracle.bmc.filestorage.model.*; + +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.Builder(builderClassName = "Builder", buildMethodName = "buildWithoutInvocationCallback") +@lombok.Getter +public class GetMountTargetRequest extends com.oracle.bmc.requests.BmcRequest { + + /** + * The OCID of the mount target. + */ + private String mountTargetId; + + public static class Builder { + private com.oracle.bmc.util.internal.Consumer + invocationCallback = null; + + /** + * Set the invocation callback for the request to be built. + * @param invocationCallback the invocation callback to be set for the request + * @return this builder instance + */ + public Builder invocationCallback( + com.oracle.bmc.util.internal.Consumer + invocationCallback) { + this.invocationCallback = invocationCallback; + return this; + } + + /** + * Copy method to populate the builder with values from the given instance. + * @return this builder instance + */ + public Builder copy(GetMountTargetRequest o) { + mountTargetId(o.getMountTargetId()); + return this; + } + + /** + * Build the instance of GetMountTargetRequest as configured by this builder + * + * Note that this method takes calls to {@link Builder#invocationCallback(com.oracle.bmc.util.internal.Consumer)} into account, + * while the method {@link Builder#buildWithoutInvocationCallback} does not. + * + * This is the preferred method to build an instance. + * + * @return instance of GetMountTargetRequest + */ + public GetMountTargetRequest build() { + GetMountTargetRequest request = buildWithoutInvocationCallback(); + request.setInvocationCallback(invocationCallback); + return request; + } + } +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/requests/GetSnapshotRequest.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/requests/GetSnapshotRequest.java new file mode 100644 index 00000000000..32572f197a8 --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/requests/GetSnapshotRequest.java @@ -0,0 +1,59 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.requests; + +import com.oracle.bmc.filestorage.model.*; + +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.Builder(builderClassName = "Builder", buildMethodName = "buildWithoutInvocationCallback") +@lombok.Getter +public class GetSnapshotRequest extends com.oracle.bmc.requests.BmcRequest { + + /** + * The OCID of the snapshot. + */ + private String snapshotId; + + public static class Builder { + private com.oracle.bmc.util.internal.Consumer + invocationCallback = null; + + /** + * Set the invocation callback for the request to be built. + * @param invocationCallback the invocation callback to be set for the request + * @return this builder instance + */ + public Builder invocationCallback( + com.oracle.bmc.util.internal.Consumer + invocationCallback) { + this.invocationCallback = invocationCallback; + return this; + } + + /** + * Copy method to populate the builder with values from the given instance. + * @return this builder instance + */ + public Builder copy(GetSnapshotRequest o) { + snapshotId(o.getSnapshotId()); + return this; + } + + /** + * Build the instance of GetSnapshotRequest as configured by this builder + * + * Note that this method takes calls to {@link Builder#invocationCallback(com.oracle.bmc.util.internal.Consumer)} into account, + * while the method {@link Builder#buildWithoutInvocationCallback} does not. + * + * This is the preferred method to build an instance. + * + * @return instance of GetSnapshotRequest + */ + public GetSnapshotRequest build() { + GetSnapshotRequest request = buildWithoutInvocationCallback(); + request.setInvocationCallback(invocationCallback); + return request; + } + } +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/requests/ListExportSetsRequest.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/requests/ListExportSetsRequest.java new file mode 100644 index 00000000000..f0a59eb0a5b --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/requests/ListExportSetsRequest.java @@ -0,0 +1,246 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.requests; + +import com.oracle.bmc.filestorage.model.*; + +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.Builder(builderClassName = "Builder", buildMethodName = "buildWithoutInvocationCallback") +@lombok.Getter +public class ListExportSetsRequest extends com.oracle.bmc.requests.BmcRequest { + + /** + * The OCID of the compartment. + */ + private String compartmentId; + + /** + * The name of the availability domain. + *

          + * Example: `Uocm:PHX-AD-1` + * + */ + private String availabilityDomain; + + /** + * The maximum number of items to return in a paginated \"List\" call. + *

          + * Example: `500` + * + */ + private Integer limit; + + /** + * The value of the `opc-next-page` response header from the previous \"List\" call. + * + */ + private String page; + + /** + * A user-friendly name. It does not have to be unique, and it is changeable. + *

          + * Example: `My resource` + * + */ + private String displayName; + + /** + * Filter results by the specified lifecycle state. Must be a valid + * state for the resource type. + * + */ + private LifecycleState lifecycleState; + + /** + * Filter results by the specified lifecycle state. Must be a valid + * state for the resource type. + * + **/ + public enum LifecycleState { + Creating("CREATING"), + Active("ACTIVE"), + Deleting("DELETING"), + Deleted("DELETED"), + Failed("FAILED"), + ; + + private final String value; + private static java.util.Map map; + + static { + map = new java.util.HashMap<>(); + for (LifecycleState v : LifecycleState.values()) { + map.put(v.getValue(), v); + } + } + + LifecycleState(String value) { + this.value = value; + } + + @com.fasterxml.jackson.annotation.JsonValue + public String getValue() { + return value; + } + + @com.fasterxml.jackson.annotation.JsonCreator + public static LifecycleState create(String key) { + if (map.containsKey(key)) { + return map.get(key); + } + throw new RuntimeException("Invalid LifecycleState: " + key); + } + }; + + /** + * Filter results by OCID. Must be an OCID of the correct type for + * the resouce type. + * + */ + private String id; + + /** + * The field to sort by. You can provide either value, but not both. + * By default, when you sort by time created, results are shown + * in descending order. When you sort by display name, results are + * shown in ascending order. + * + */ + private SortBy sortBy; + + /** + * The field to sort by. You can provide either value, but not both. + * By default, when you sort by time created, results are shown + * in descending order. When you sort by display name, results are + * shown in ascending order. + * + **/ + public enum SortBy { + Timecreated("TIMECREATED"), + Displayname("DISPLAYNAME"), + ; + + private final String value; + private static java.util.Map map; + + static { + map = new java.util.HashMap<>(); + for (SortBy v : SortBy.values()) { + map.put(v.getValue(), v); + } + } + + SortBy(String value) { + this.value = value; + } + + @com.fasterxml.jackson.annotation.JsonValue + public String getValue() { + return value; + } + + @com.fasterxml.jackson.annotation.JsonCreator + public static SortBy create(String key) { + if (map.containsKey(key)) { + return map.get(key); + } + throw new RuntimeException("Invalid SortBy: " + key); + } + }; + + /** + * The sort order to use, either 'asc' or 'desc', where 'asc' is + * ascending and 'desc' is descending. + * + */ + private SortOrder sortOrder; + + /** + * The sort order to use, either 'asc' or 'desc', where 'asc' is + * ascending and 'desc' is descending. + * + **/ + public enum SortOrder { + Asc("ASC"), + Desc("DESC"), + ; + + private final String value; + private static java.util.Map map; + + static { + map = new java.util.HashMap<>(); + for (SortOrder v : SortOrder.values()) { + map.put(v.getValue(), v); + } + } + + SortOrder(String value) { + this.value = value; + } + + @com.fasterxml.jackson.annotation.JsonValue + public String getValue() { + return value; + } + + @com.fasterxml.jackson.annotation.JsonCreator + public static SortOrder create(String key) { + if (map.containsKey(key)) { + return map.get(key); + } + throw new RuntimeException("Invalid SortOrder: " + key); + } + }; + + public static class Builder { + private com.oracle.bmc.util.internal.Consumer + invocationCallback = null; + + /** + * Set the invocation callback for the request to be built. + * @param invocationCallback the invocation callback to be set for the request + * @return this builder instance + */ + public Builder invocationCallback( + com.oracle.bmc.util.internal.Consumer + invocationCallback) { + this.invocationCallback = invocationCallback; + return this; + } + + /** + * Copy method to populate the builder with values from the given instance. + * @return this builder instance + */ + public Builder copy(ListExportSetsRequest o) { + compartmentId(o.getCompartmentId()); + availabilityDomain(o.getAvailabilityDomain()); + limit(o.getLimit()); + page(o.getPage()); + displayName(o.getDisplayName()); + lifecycleState(o.getLifecycleState()); + id(o.getId()); + sortBy(o.getSortBy()); + sortOrder(o.getSortOrder()); + return this; + } + + /** + * Build the instance of ListExportSetsRequest as configured by this builder + * + * Note that this method takes calls to {@link Builder#invocationCallback(com.oracle.bmc.util.internal.Consumer)} into account, + * while the method {@link Builder#buildWithoutInvocationCallback} does not. + * + * This is the preferred method to build an instance. + * + * @return instance of ListExportSetsRequest + */ + public ListExportSetsRequest build() { + ListExportSetsRequest request = buildWithoutInvocationCallback(); + request.setInvocationCallback(invocationCallback); + return request; + } + } +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/requests/ListExportsRequest.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/requests/ListExportsRequest.java new file mode 100644 index 00000000000..51bb19a37e3 --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/requests/ListExportsRequest.java @@ -0,0 +1,240 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.requests; + +import com.oracle.bmc.filestorage.model.*; + +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.Builder(builderClassName = "Builder", buildMethodName = "buildWithoutInvocationCallback") +@lombok.Getter +public class ListExportsRequest extends com.oracle.bmc.requests.BmcRequest { + + /** + * The OCID of the compartment. + */ + private String compartmentId; + + /** + * The maximum number of items to return in a paginated \"List\" call. + *

          + * Example: `500` + * + */ + private Integer limit; + + /** + * The value of the `opc-next-page` response header from the previous \"List\" call. + * + */ + private String page; + + /** + * The OCID of the export set. + */ + private String exportSetId; + + /** + * The OCID of the file system. + */ + private String fileSystemId; + + /** + * Filter results by the specified lifecycle state. Must be a valid + * state for the resource type. + * + */ + private LifecycleState lifecycleState; + + /** + * Filter results by the specified lifecycle state. Must be a valid + * state for the resource type. + * + **/ + public enum LifecycleState { + Creating("CREATING"), + Active("ACTIVE"), + Deleting("DELETING"), + Deleted("DELETED"), + Failed("FAILED"), + ; + + private final String value; + private static java.util.Map map; + + static { + map = new java.util.HashMap<>(); + for (LifecycleState v : LifecycleState.values()) { + map.put(v.getValue(), v); + } + } + + LifecycleState(String value) { + this.value = value; + } + + @com.fasterxml.jackson.annotation.JsonValue + public String getValue() { + return value; + } + + @com.fasterxml.jackson.annotation.JsonCreator + public static LifecycleState create(String key) { + if (map.containsKey(key)) { + return map.get(key); + } + throw new RuntimeException("Invalid LifecycleState: " + key); + } + }; + + /** + * Filter results by OCID. Must be an OCID of the correct type for + * the resouce type. + * + */ + private String id; + + /** + * The field to sort by. You can provide either value, but not both. + * By default, when you sort by time created, results are shown + * in descending order. When you sort by path, results are + * shown in ascending alphanumeric order. + * + */ + private SortBy sortBy; + + /** + * The field to sort by. You can provide either value, but not both. + * By default, when you sort by time created, results are shown + * in descending order. When you sort by path, results are + * shown in ascending alphanumeric order. + * + **/ + public enum SortBy { + Timecreated("TIMECREATED"), + Path("PATH"), + ; + + private final String value; + private static java.util.Map map; + + static { + map = new java.util.HashMap<>(); + for (SortBy v : SortBy.values()) { + map.put(v.getValue(), v); + } + } + + SortBy(String value) { + this.value = value; + } + + @com.fasterxml.jackson.annotation.JsonValue + public String getValue() { + return value; + } + + @com.fasterxml.jackson.annotation.JsonCreator + public static SortBy create(String key) { + if (map.containsKey(key)) { + return map.get(key); + } + throw new RuntimeException("Invalid SortBy: " + key); + } + }; + + /** + * The sort order to use, either 'asc' or 'desc', where 'asc' is + * ascending and 'desc' is descending. + * + */ + private SortOrder sortOrder; + + /** + * The sort order to use, either 'asc' or 'desc', where 'asc' is + * ascending and 'desc' is descending. + * + **/ + public enum SortOrder { + Asc("ASC"), + Desc("DESC"), + ; + + private final String value; + private static java.util.Map map; + + static { + map = new java.util.HashMap<>(); + for (SortOrder v : SortOrder.values()) { + map.put(v.getValue(), v); + } + } + + SortOrder(String value) { + this.value = value; + } + + @com.fasterxml.jackson.annotation.JsonValue + public String getValue() { + return value; + } + + @com.fasterxml.jackson.annotation.JsonCreator + public static SortOrder create(String key) { + if (map.containsKey(key)) { + return map.get(key); + } + throw new RuntimeException("Invalid SortOrder: " + key); + } + }; + + public static class Builder { + private com.oracle.bmc.util.internal.Consumer + invocationCallback = null; + + /** + * Set the invocation callback for the request to be built. + * @param invocationCallback the invocation callback to be set for the request + * @return this builder instance + */ + public Builder invocationCallback( + com.oracle.bmc.util.internal.Consumer + invocationCallback) { + this.invocationCallback = invocationCallback; + return this; + } + + /** + * Copy method to populate the builder with values from the given instance. + * @return this builder instance + */ + public Builder copy(ListExportsRequest o) { + compartmentId(o.getCompartmentId()); + limit(o.getLimit()); + page(o.getPage()); + exportSetId(o.getExportSetId()); + fileSystemId(o.getFileSystemId()); + lifecycleState(o.getLifecycleState()); + id(o.getId()); + sortBy(o.getSortBy()); + sortOrder(o.getSortOrder()); + return this; + } + + /** + * Build the instance of ListExportsRequest as configured by this builder + * + * Note that this method takes calls to {@link Builder#invocationCallback(com.oracle.bmc.util.internal.Consumer)} into account, + * while the method {@link Builder#buildWithoutInvocationCallback} does not. + * + * This is the preferred method to build an instance. + * + * @return instance of ListExportsRequest + */ + public ListExportsRequest build() { + ListExportsRequest request = buildWithoutInvocationCallback(); + request.setInvocationCallback(invocationCallback); + return request; + } + } +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/requests/ListFileSystemsRequest.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/requests/ListFileSystemsRequest.java new file mode 100644 index 00000000000..a9acab7e188 --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/requests/ListFileSystemsRequest.java @@ -0,0 +1,246 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.requests; + +import com.oracle.bmc.filestorage.model.*; + +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.Builder(builderClassName = "Builder", buildMethodName = "buildWithoutInvocationCallback") +@lombok.Getter +public class ListFileSystemsRequest extends com.oracle.bmc.requests.BmcRequest { + + /** + * The OCID of the compartment. + */ + private String compartmentId; + + /** + * The name of the availability domain. + *

          + * Example: `Uocm:PHX-AD-1` + * + */ + private String availabilityDomain; + + /** + * The maximum number of items to return in a paginated \"List\" call. + *

          + * Example: `500` + * + */ + private Integer limit; + + /** + * The value of the `opc-next-page` response header from the previous \"List\" call. + * + */ + private String page; + + /** + * A user-friendly name. It does not have to be unique, and it is changeable. + *

          + * Example: `My resource` + * + */ + private String displayName; + + /** + * Filter results by the specified lifecycle state. Must be a valid + * state for the resource type. + * + */ + private LifecycleState lifecycleState; + + /** + * Filter results by the specified lifecycle state. Must be a valid + * state for the resource type. + * + **/ + public enum LifecycleState { + Creating("CREATING"), + Active("ACTIVE"), + Deleting("DELETING"), + Deleted("DELETED"), + Failed("FAILED"), + ; + + private final String value; + private static java.util.Map map; + + static { + map = new java.util.HashMap<>(); + for (LifecycleState v : LifecycleState.values()) { + map.put(v.getValue(), v); + } + } + + LifecycleState(String value) { + this.value = value; + } + + @com.fasterxml.jackson.annotation.JsonValue + public String getValue() { + return value; + } + + @com.fasterxml.jackson.annotation.JsonCreator + public static LifecycleState create(String key) { + if (map.containsKey(key)) { + return map.get(key); + } + throw new RuntimeException("Invalid LifecycleState: " + key); + } + }; + + /** + * Filter results by OCID. Must be an OCID of the correct type for + * the resouce type. + * + */ + private String id; + + /** + * The field to sort by. You can provide either value, but not both. + * By default, when you sort by time created, results are shown + * in descending order. When you sort by display name, results are + * shown in ascending order. + * + */ + private SortBy sortBy; + + /** + * The field to sort by. You can provide either value, but not both. + * By default, when you sort by time created, results are shown + * in descending order. When you sort by display name, results are + * shown in ascending order. + * + **/ + public enum SortBy { + Timecreated("TIMECREATED"), + Displayname("DISPLAYNAME"), + ; + + private final String value; + private static java.util.Map map; + + static { + map = new java.util.HashMap<>(); + for (SortBy v : SortBy.values()) { + map.put(v.getValue(), v); + } + } + + SortBy(String value) { + this.value = value; + } + + @com.fasterxml.jackson.annotation.JsonValue + public String getValue() { + return value; + } + + @com.fasterxml.jackson.annotation.JsonCreator + public static SortBy create(String key) { + if (map.containsKey(key)) { + return map.get(key); + } + throw new RuntimeException("Invalid SortBy: " + key); + } + }; + + /** + * The sort order to use, either 'asc' or 'desc', where 'asc' is + * ascending and 'desc' is descending. + * + */ + private SortOrder sortOrder; + + /** + * The sort order to use, either 'asc' or 'desc', where 'asc' is + * ascending and 'desc' is descending. + * + **/ + public enum SortOrder { + Asc("ASC"), + Desc("DESC"), + ; + + private final String value; + private static java.util.Map map; + + static { + map = new java.util.HashMap<>(); + for (SortOrder v : SortOrder.values()) { + map.put(v.getValue(), v); + } + } + + SortOrder(String value) { + this.value = value; + } + + @com.fasterxml.jackson.annotation.JsonValue + public String getValue() { + return value; + } + + @com.fasterxml.jackson.annotation.JsonCreator + public static SortOrder create(String key) { + if (map.containsKey(key)) { + return map.get(key); + } + throw new RuntimeException("Invalid SortOrder: " + key); + } + }; + + public static class Builder { + private com.oracle.bmc.util.internal.Consumer + invocationCallback = null; + + /** + * Set the invocation callback for the request to be built. + * @param invocationCallback the invocation callback to be set for the request + * @return this builder instance + */ + public Builder invocationCallback( + com.oracle.bmc.util.internal.Consumer + invocationCallback) { + this.invocationCallback = invocationCallback; + return this; + } + + /** + * Copy method to populate the builder with values from the given instance. + * @return this builder instance + */ + public Builder copy(ListFileSystemsRequest o) { + compartmentId(o.getCompartmentId()); + availabilityDomain(o.getAvailabilityDomain()); + limit(o.getLimit()); + page(o.getPage()); + displayName(o.getDisplayName()); + lifecycleState(o.getLifecycleState()); + id(o.getId()); + sortBy(o.getSortBy()); + sortOrder(o.getSortOrder()); + return this; + } + + /** + * Build the instance of ListFileSystemsRequest as configured by this builder + * + * Note that this method takes calls to {@link Builder#invocationCallback(com.oracle.bmc.util.internal.Consumer)} into account, + * while the method {@link Builder#buildWithoutInvocationCallback} does not. + * + * This is the preferred method to build an instance. + * + * @return instance of ListFileSystemsRequest + */ + public ListFileSystemsRequest build() { + ListFileSystemsRequest request = buildWithoutInvocationCallback(); + request.setInvocationCallback(invocationCallback); + return request; + } + } +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/requests/ListMountTargetsRequest.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/requests/ListMountTargetsRequest.java new file mode 100644 index 00000000000..d4bb3bcd80a --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/requests/ListMountTargetsRequest.java @@ -0,0 +1,252 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.requests; + +import com.oracle.bmc.filestorage.model.*; + +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.Builder(builderClassName = "Builder", buildMethodName = "buildWithoutInvocationCallback") +@lombok.Getter +public class ListMountTargetsRequest extends com.oracle.bmc.requests.BmcRequest { + + /** + * The OCID of the compartment. + */ + private String compartmentId; + + /** + * The name of the availability domain. + *

          + * Example: `Uocm:PHX-AD-1` + * + */ + private String availabilityDomain; + + /** + * The maximum number of items to return in a paginated \"List\" call. + *

          + * Example: `500` + * + */ + private Integer limit; + + /** + * The value of the `opc-next-page` response header from the previous \"List\" call. + * + */ + private String page; + + /** + * A user-friendly name. It does not have to be unique, and it is changeable. + *

          + * Example: `My resource` + * + */ + private String displayName; + + /** + * The OCID of the export set. + */ + private String exportSetId; + + /** + * Filter results by the specified lifecycle state. Must be a valid + * state for the resource type. + * + */ + private LifecycleState lifecycleState; + + /** + * Filter results by the specified lifecycle state. Must be a valid + * state for the resource type. + * + **/ + public enum LifecycleState { + Creating("CREATING"), + Active("ACTIVE"), + Deleting("DELETING"), + Deleted("DELETED"), + Failed("FAILED"), + ; + + private final String value; + private static java.util.Map map; + + static { + map = new java.util.HashMap<>(); + for (LifecycleState v : LifecycleState.values()) { + map.put(v.getValue(), v); + } + } + + LifecycleState(String value) { + this.value = value; + } + + @com.fasterxml.jackson.annotation.JsonValue + public String getValue() { + return value; + } + + @com.fasterxml.jackson.annotation.JsonCreator + public static LifecycleState create(String key) { + if (map.containsKey(key)) { + return map.get(key); + } + throw new RuntimeException("Invalid LifecycleState: " + key); + } + }; + + /** + * Filter results by OCID. Must be an OCID of the correct type for + * the resouce type. + * + */ + private String id; + + /** + * The field to sort by. You can choose either value, but not both. + * By default, when you sort by time created, results are shown + * in descending order. When you sort by display name, results are + * shown in ascending order. + * + */ + private SortBy sortBy; + + /** + * The field to sort by. You can choose either value, but not both. + * By default, when you sort by time created, results are shown + * in descending order. When you sort by display name, results are + * shown in ascending order. + * + **/ + public enum SortBy { + Timecreated("TIMECREATED"), + Displayname("DISPLAYNAME"), + ; + + private final String value; + private static java.util.Map map; + + static { + map = new java.util.HashMap<>(); + for (SortBy v : SortBy.values()) { + map.put(v.getValue(), v); + } + } + + SortBy(String value) { + this.value = value; + } + + @com.fasterxml.jackson.annotation.JsonValue + public String getValue() { + return value; + } + + @com.fasterxml.jackson.annotation.JsonCreator + public static SortBy create(String key) { + if (map.containsKey(key)) { + return map.get(key); + } + throw new RuntimeException("Invalid SortBy: " + key); + } + }; + + /** + * The sort order to use, either 'asc' or 'desc', where 'asc' is + * ascending and 'desc' is descending. + * + */ + private SortOrder sortOrder; + + /** + * The sort order to use, either 'asc' or 'desc', where 'asc' is + * ascending and 'desc' is descending. + * + **/ + public enum SortOrder { + Asc("ASC"), + Desc("DESC"), + ; + + private final String value; + private static java.util.Map map; + + static { + map = new java.util.HashMap<>(); + for (SortOrder v : SortOrder.values()) { + map.put(v.getValue(), v); + } + } + + SortOrder(String value) { + this.value = value; + } + + @com.fasterxml.jackson.annotation.JsonValue + public String getValue() { + return value; + } + + @com.fasterxml.jackson.annotation.JsonCreator + public static SortOrder create(String key) { + if (map.containsKey(key)) { + return map.get(key); + } + throw new RuntimeException("Invalid SortOrder: " + key); + } + }; + + public static class Builder { + private com.oracle.bmc.util.internal.Consumer + invocationCallback = null; + + /** + * Set the invocation callback for the request to be built. + * @param invocationCallback the invocation callback to be set for the request + * @return this builder instance + */ + public Builder invocationCallback( + com.oracle.bmc.util.internal.Consumer + invocationCallback) { + this.invocationCallback = invocationCallback; + return this; + } + + /** + * Copy method to populate the builder with values from the given instance. + * @return this builder instance + */ + public Builder copy(ListMountTargetsRequest o) { + compartmentId(o.getCompartmentId()); + availabilityDomain(o.getAvailabilityDomain()); + limit(o.getLimit()); + page(o.getPage()); + displayName(o.getDisplayName()); + exportSetId(o.getExportSetId()); + lifecycleState(o.getLifecycleState()); + id(o.getId()); + sortBy(o.getSortBy()); + sortOrder(o.getSortOrder()); + return this; + } + + /** + * Build the instance of ListMountTargetsRequest as configured by this builder + * + * Note that this method takes calls to {@link Builder#invocationCallback(com.oracle.bmc.util.internal.Consumer)} into account, + * while the method {@link Builder#buildWithoutInvocationCallback} does not. + * + * This is the preferred method to build an instance. + * + * @return instance of ListMountTargetsRequest + */ + public ListMountTargetsRequest build() { + ListMountTargetsRequest request = buildWithoutInvocationCallback(); + request.setInvocationCallback(invocationCallback); + return request; + } + } +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/requests/ListSnapshotsRequest.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/requests/ListSnapshotsRequest.java new file mode 100644 index 00000000000..e67d8a7eddf --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/requests/ListSnapshotsRequest.java @@ -0,0 +1,178 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.requests; + +import com.oracle.bmc.filestorage.model.*; + +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.Builder(builderClassName = "Builder", buildMethodName = "buildWithoutInvocationCallback") +@lombok.Getter +public class ListSnapshotsRequest extends com.oracle.bmc.requests.BmcRequest { + + /** + * The OCID of the file system. + */ + private String fileSystemId; + + /** + * The maximum number of items to return in a paginated \"List\" call. + *

          + * Example: `500` + * + */ + private Integer limit; + + /** + * The value of the `opc-next-page` response header from the previous \"List\" call. + * + */ + private String page; + + /** + * Filter results by the specified lifecycle state. Must be a valid + * state for the resource type. + * + */ + private LifecycleState lifecycleState; + + /** + * Filter results by the specified lifecycle state. Must be a valid + * state for the resource type. + * + **/ + public enum LifecycleState { + Creating("CREATING"), + Active("ACTIVE"), + Deleting("DELETING"), + Deleted("DELETED"), + Failed("FAILED"), + ; + + private final String value; + private static java.util.Map map; + + static { + map = new java.util.HashMap<>(); + for (LifecycleState v : LifecycleState.values()) { + map.put(v.getValue(), v); + } + } + + LifecycleState(String value) { + this.value = value; + } + + @com.fasterxml.jackson.annotation.JsonValue + public String getValue() { + return value; + } + + @com.fasterxml.jackson.annotation.JsonCreator + public static LifecycleState create(String key) { + if (map.containsKey(key)) { + return map.get(key); + } + throw new RuntimeException("Invalid LifecycleState: " + key); + } + }; + + /** + * Filter results by OCID. Must be an OCID of the correct type for + * the resouce type. + * + */ + private String id; + + /** + * The sort order to use, either 'asc' or 'desc', where 'asc' is + * ascending and 'desc' is descending. + * + */ + private SortOrder sortOrder; + + /** + * The sort order to use, either 'asc' or 'desc', where 'asc' is + * ascending and 'desc' is descending. + * + **/ + public enum SortOrder { + Asc("ASC"), + Desc("DESC"), + ; + + private final String value; + private static java.util.Map map; + + static { + map = new java.util.HashMap<>(); + for (SortOrder v : SortOrder.values()) { + map.put(v.getValue(), v); + } + } + + SortOrder(String value) { + this.value = value; + } + + @com.fasterxml.jackson.annotation.JsonValue + public String getValue() { + return value; + } + + @com.fasterxml.jackson.annotation.JsonCreator + public static SortOrder create(String key) { + if (map.containsKey(key)) { + return map.get(key); + } + throw new RuntimeException("Invalid SortOrder: " + key); + } + }; + + public static class Builder { + private com.oracle.bmc.util.internal.Consumer + invocationCallback = null; + + /** + * Set the invocation callback for the request to be built. + * @param invocationCallback the invocation callback to be set for the request + * @return this builder instance + */ + public Builder invocationCallback( + com.oracle.bmc.util.internal.Consumer + invocationCallback) { + this.invocationCallback = invocationCallback; + return this; + } + + /** + * Copy method to populate the builder with values from the given instance. + * @return this builder instance + */ + public Builder copy(ListSnapshotsRequest o) { + fileSystemId(o.getFileSystemId()); + limit(o.getLimit()); + page(o.getPage()); + lifecycleState(o.getLifecycleState()); + id(o.getId()); + sortOrder(o.getSortOrder()); + return this; + } + + /** + * Build the instance of ListSnapshotsRequest as configured by this builder + * + * Note that this method takes calls to {@link Builder#invocationCallback(com.oracle.bmc.util.internal.Consumer)} into account, + * while the method {@link Builder#buildWithoutInvocationCallback} does not. + * + * This is the preferred method to build an instance. + * + * @return instance of ListSnapshotsRequest + */ + public ListSnapshotsRequest build() { + ListSnapshotsRequest request = buildWithoutInvocationCallback(); + request.setInvocationCallback(invocationCallback); + return request; + } + } +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/requests/UpdateExportSetRequest.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/requests/UpdateExportSetRequest.java new file mode 100644 index 00000000000..6019d304140 --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/requests/UpdateExportSetRequest.java @@ -0,0 +1,76 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.requests; + +import com.oracle.bmc.filestorage.model.*; + +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.Builder(builderClassName = "Builder", buildMethodName = "buildWithoutInvocationCallback") +@lombok.Getter +public class UpdateExportSetRequest extends com.oracle.bmc.requests.BmcRequest { + + /** + * The OCID of the export set. + */ + private String exportSetId; + + /** + * Details object for updating an export set. + */ + private UpdateExportSetDetails updateExportSetDetails; + + /** + * For optimistic concurrency control. In the PUT or DELETE call + * for a resource, set the `if-match` parameter to the value of the + * etag from a previous GET or POST response for that resource. + * The resource will be updated or deleted only if the etag you + * provide matches the resource's current etag value. + * + */ + private String ifMatch; + + public static class Builder { + private com.oracle.bmc.util.internal.Consumer + invocationCallback = null; + + /** + * Set the invocation callback for the request to be built. + * @param invocationCallback the invocation callback to be set for the request + * @return this builder instance + */ + public Builder invocationCallback( + com.oracle.bmc.util.internal.Consumer + invocationCallback) { + this.invocationCallback = invocationCallback; + return this; + } + + /** + * Copy method to populate the builder with values from the given instance. + * @return this builder instance + */ + public Builder copy(UpdateExportSetRequest o) { + exportSetId(o.getExportSetId()); + updateExportSetDetails(o.getUpdateExportSetDetails()); + ifMatch(o.getIfMatch()); + return this; + } + + /** + * Build the instance of UpdateExportSetRequest as configured by this builder + * + * Note that this method takes calls to {@link Builder#invocationCallback(com.oracle.bmc.util.internal.Consumer)} into account, + * while the method {@link Builder#buildWithoutInvocationCallback} does not. + * + * This is the preferred method to build an instance. + * + * @return instance of UpdateExportSetRequest + */ + public UpdateExportSetRequest build() { + UpdateExportSetRequest request = buildWithoutInvocationCallback(); + request.setInvocationCallback(invocationCallback); + return request; + } + } +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/requests/UpdateFileSystemRequest.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/requests/UpdateFileSystemRequest.java new file mode 100644 index 00000000000..d38773b4c8f --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/requests/UpdateFileSystemRequest.java @@ -0,0 +1,76 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.requests; + +import com.oracle.bmc.filestorage.model.*; + +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.Builder(builderClassName = "Builder", buildMethodName = "buildWithoutInvocationCallback") +@lombok.Getter +public class UpdateFileSystemRequest extends com.oracle.bmc.requests.BmcRequest { + + /** + * The OCID of the file system. + */ + private String fileSystemId; + + /** + * Details object for updating a file system. + */ + private UpdateFileSystemDetails updateFileSystemDetails; + + /** + * For optimistic concurrency control. In the PUT or DELETE call + * for a resource, set the `if-match` parameter to the value of the + * etag from a previous GET or POST response for that resource. + * The resource will be updated or deleted only if the etag you + * provide matches the resource's current etag value. + * + */ + private String ifMatch; + + public static class Builder { + private com.oracle.bmc.util.internal.Consumer + invocationCallback = null; + + /** + * Set the invocation callback for the request to be built. + * @param invocationCallback the invocation callback to be set for the request + * @return this builder instance + */ + public Builder invocationCallback( + com.oracle.bmc.util.internal.Consumer + invocationCallback) { + this.invocationCallback = invocationCallback; + return this; + } + + /** + * Copy method to populate the builder with values from the given instance. + * @return this builder instance + */ + public Builder copy(UpdateFileSystemRequest o) { + fileSystemId(o.getFileSystemId()); + updateFileSystemDetails(o.getUpdateFileSystemDetails()); + ifMatch(o.getIfMatch()); + return this; + } + + /** + * Build the instance of UpdateFileSystemRequest as configured by this builder + * + * Note that this method takes calls to {@link Builder#invocationCallback(com.oracle.bmc.util.internal.Consumer)} into account, + * while the method {@link Builder#buildWithoutInvocationCallback} does not. + * + * This is the preferred method to build an instance. + * + * @return instance of UpdateFileSystemRequest + */ + public UpdateFileSystemRequest build() { + UpdateFileSystemRequest request = buildWithoutInvocationCallback(); + request.setInvocationCallback(invocationCallback); + return request; + } + } +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/requests/UpdateMountTargetRequest.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/requests/UpdateMountTargetRequest.java new file mode 100644 index 00000000000..3e2018fa4ea --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/requests/UpdateMountTargetRequest.java @@ -0,0 +1,76 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.requests; + +import com.oracle.bmc.filestorage.model.*; + +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.Builder(builderClassName = "Builder", buildMethodName = "buildWithoutInvocationCallback") +@lombok.Getter +public class UpdateMountTargetRequest extends com.oracle.bmc.requests.BmcRequest { + + /** + * The OCID of the mount target. + */ + private String mountTargetId; + + /** + * Details object for updating a mount target. + */ + private UpdateMountTargetDetails updateMountTargetDetails; + + /** + * For optimistic concurrency control. In the PUT or DELETE call + * for a resource, set the `if-match` parameter to the value of the + * etag from a previous GET or POST response for that resource. + * The resource will be updated or deleted only if the etag you + * provide matches the resource's current etag value. + * + */ + private String ifMatch; + + public static class Builder { + private com.oracle.bmc.util.internal.Consumer + invocationCallback = null; + + /** + * Set the invocation callback for the request to be built. + * @param invocationCallback the invocation callback to be set for the request + * @return this builder instance + */ + public Builder invocationCallback( + com.oracle.bmc.util.internal.Consumer + invocationCallback) { + this.invocationCallback = invocationCallback; + return this; + } + + /** + * Copy method to populate the builder with values from the given instance. + * @return this builder instance + */ + public Builder copy(UpdateMountTargetRequest o) { + mountTargetId(o.getMountTargetId()); + updateMountTargetDetails(o.getUpdateMountTargetDetails()); + ifMatch(o.getIfMatch()); + return this; + } + + /** + * Build the instance of UpdateMountTargetRequest as configured by this builder + * + * Note that this method takes calls to {@link Builder#invocationCallback(com.oracle.bmc.util.internal.Consumer)} into account, + * while the method {@link Builder#buildWithoutInvocationCallback} does not. + * + * This is the preferred method to build an instance. + * + * @return instance of UpdateMountTargetRequest + */ + public UpdateMountTargetRequest build() { + UpdateMountTargetRequest request = buildWithoutInvocationCallback(); + request.setInvocationCallback(invocationCallback); + return request; + } + } +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/responses/CreateExportResponse.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/responses/CreateExportResponse.java new file mode 100644 index 00000000000..bd2d802fdd9 --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/responses/CreateExportResponse.java @@ -0,0 +1,44 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.responses; + +import com.oracle.bmc.filestorage.model.*; + +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.Builder(builderClassName = "Builder") +@lombok.Getter +public class CreateExportResponse { + + /** + * For optimistic concurrency control. See `if-match`. + */ + private String etag; + + /** + * Unique Oracle-assigned identifier for the request. If + * you need to contact Oracle about a particular request, + * please provide the request ID. + * + */ + private String opcRequestId; + + /** + * The returned Export instance. + */ + private Export export; + + public static class Builder { + /** + * Copy method to populate the builder with values from the given instance. + * @return this builder instance + */ + public Builder copy(CreateExportResponse o) { + etag(o.getEtag()); + opcRequestId(o.getOpcRequestId()); + export(o.getExport()); + + return this; + } + } +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/responses/CreateFileSystemResponse.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/responses/CreateFileSystemResponse.java new file mode 100644 index 00000000000..f3f09497add --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/responses/CreateFileSystemResponse.java @@ -0,0 +1,44 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.responses; + +import com.oracle.bmc.filestorage.model.*; + +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.Builder(builderClassName = "Builder") +@lombok.Getter +public class CreateFileSystemResponse { + + /** + * For optimistic concurrency control. See `if-match`. + */ + private String etag; + + /** + * Unique Oracle-assigned identifier for the request. If + * you need to contact Oracle about a particular request, + * please provide the request ID. + * + */ + private String opcRequestId; + + /** + * The returned FileSystem instance. + */ + private FileSystem fileSystem; + + public static class Builder { + /** + * Copy method to populate the builder with values from the given instance. + * @return this builder instance + */ + public Builder copy(CreateFileSystemResponse o) { + etag(o.getEtag()); + opcRequestId(o.getOpcRequestId()); + fileSystem(o.getFileSystem()); + + return this; + } + } +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/responses/CreateMountTargetResponse.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/responses/CreateMountTargetResponse.java new file mode 100644 index 00000000000..0337953b15d --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/responses/CreateMountTargetResponse.java @@ -0,0 +1,44 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.responses; + +import com.oracle.bmc.filestorage.model.*; + +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.Builder(builderClassName = "Builder") +@lombok.Getter +public class CreateMountTargetResponse { + + /** + * For optimistic concurrency control. See `if-match`. + */ + private String etag; + + /** + * Unique Oracle-assigned identifier for the request. If + * you need to contact Oracle about a particular request, + * please provide the request ID. + * + */ + private String opcRequestId; + + /** + * The returned MountTarget instance. + */ + private MountTarget mountTarget; + + public static class Builder { + /** + * Copy method to populate the builder with values from the given instance. + * @return this builder instance + */ + public Builder copy(CreateMountTargetResponse o) { + etag(o.getEtag()); + opcRequestId(o.getOpcRequestId()); + mountTarget(o.getMountTarget()); + + return this; + } + } +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/responses/CreateSnapshotResponse.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/responses/CreateSnapshotResponse.java new file mode 100644 index 00000000000..607a946bc38 --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/responses/CreateSnapshotResponse.java @@ -0,0 +1,44 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.responses; + +import com.oracle.bmc.filestorage.model.*; + +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.Builder(builderClassName = "Builder") +@lombok.Getter +public class CreateSnapshotResponse { + + /** + * For optimistic concurrency control. See `if-match`. + */ + private String etag; + + /** + * Unique Oracle-assigned identifier for the request. If + * you need to contact Oracle about a particular request, + * please provide the request ID. + * + */ + private String opcRequestId; + + /** + * The returned Snapshot instance. + */ + private Snapshot snapshot; + + public static class Builder { + /** + * Copy method to populate the builder with values from the given instance. + * @return this builder instance + */ + public Builder copy(CreateSnapshotResponse o) { + etag(o.getEtag()); + opcRequestId(o.getOpcRequestId()); + snapshot(o.getSnapshot()); + + return this; + } + } +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/responses/DeleteExportResponse.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/responses/DeleteExportResponse.java new file mode 100644 index 00000000000..8c664d285e1 --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/responses/DeleteExportResponse.java @@ -0,0 +1,32 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.responses; + +import com.oracle.bmc.filestorage.model.*; + +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.Builder(builderClassName = "Builder") +@lombok.Getter +public class DeleteExportResponse { + + /** + * Unique Oracle-assigned identifier for the request. If + * you need to contact Oracle about a particular request, + * please provide the request ID. + * + */ + private String opcRequestId; + + public static class Builder { + /** + * Copy method to populate the builder with values from the given instance. + * @return this builder instance + */ + public Builder copy(DeleteExportResponse o) { + opcRequestId(o.getOpcRequestId()); + + return this; + } + } +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/responses/DeleteFileSystemResponse.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/responses/DeleteFileSystemResponse.java new file mode 100644 index 00000000000..9d9534eb63c --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/responses/DeleteFileSystemResponse.java @@ -0,0 +1,32 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.responses; + +import com.oracle.bmc.filestorage.model.*; + +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.Builder(builderClassName = "Builder") +@lombok.Getter +public class DeleteFileSystemResponse { + + /** + * Unique Oracle-assigned identifier for the request. If + * you need to contact Oracle about a particular request, + * please provide the request ID. + * + */ + private String opcRequestId; + + public static class Builder { + /** + * Copy method to populate the builder with values from the given instance. + * @return this builder instance + */ + public Builder copy(DeleteFileSystemResponse o) { + opcRequestId(o.getOpcRequestId()); + + return this; + } + } +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/responses/DeleteMountTargetResponse.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/responses/DeleteMountTargetResponse.java new file mode 100644 index 00000000000..c976a372f34 --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/responses/DeleteMountTargetResponse.java @@ -0,0 +1,32 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.responses; + +import com.oracle.bmc.filestorage.model.*; + +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.Builder(builderClassName = "Builder") +@lombok.Getter +public class DeleteMountTargetResponse { + + /** + * Unique Oracle-assigned identifier for the request. If + * you need to contact Oracle about a particular request, + * please provide the request ID. + * + */ + private String opcRequestId; + + public static class Builder { + /** + * Copy method to populate the builder with values from the given instance. + * @return this builder instance + */ + public Builder copy(DeleteMountTargetResponse o) { + opcRequestId(o.getOpcRequestId()); + + return this; + } + } +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/responses/DeleteSnapshotResponse.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/responses/DeleteSnapshotResponse.java new file mode 100644 index 00000000000..f54328ea87c --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/responses/DeleteSnapshotResponse.java @@ -0,0 +1,32 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.responses; + +import com.oracle.bmc.filestorage.model.*; + +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.Builder(builderClassName = "Builder") +@lombok.Getter +public class DeleteSnapshotResponse { + + /** + * Unique Oracle-assigned identifier for the request. If + * you need to contact Oracle about a particular request, + * please provide the request ID. + * + */ + private String opcRequestId; + + public static class Builder { + /** + * Copy method to populate the builder with values from the given instance. + * @return this builder instance + */ + public Builder copy(DeleteSnapshotResponse o) { + opcRequestId(o.getOpcRequestId()); + + return this; + } + } +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/responses/GetExportResponse.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/responses/GetExportResponse.java new file mode 100644 index 00000000000..b79d375ffe7 --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/responses/GetExportResponse.java @@ -0,0 +1,44 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.responses; + +import com.oracle.bmc.filestorage.model.*; + +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.Builder(builderClassName = "Builder") +@lombok.Getter +public class GetExportResponse { + + /** + * For optimistic concurrency control. See `if-match`. + */ + private String etag; + + /** + * Unique Oracle-assigned identifier for the request. If + * you need to contact Oracle about a particular request, + * please provide the request ID. + * + */ + private String opcRequestId; + + /** + * The returned Export instance. + */ + private Export export; + + public static class Builder { + /** + * Copy method to populate the builder with values from the given instance. + * @return this builder instance + */ + public Builder copy(GetExportResponse o) { + etag(o.getEtag()); + opcRequestId(o.getOpcRequestId()); + export(o.getExport()); + + return this; + } + } +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/responses/GetExportSetResponse.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/responses/GetExportSetResponse.java new file mode 100644 index 00000000000..a3fc68f9579 --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/responses/GetExportSetResponse.java @@ -0,0 +1,44 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.responses; + +import com.oracle.bmc.filestorage.model.*; + +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.Builder(builderClassName = "Builder") +@lombok.Getter +public class GetExportSetResponse { + + /** + * For optimistic concurrency control. See `if-match`. + */ + private String etag; + + /** + * Unique Oracle-assigned identifier for the request. If + * you need to contact Oracle about a particular request, + * please provide the request ID. + * + */ + private String opcRequestId; + + /** + * The returned ExportSet instance. + */ + private ExportSet exportSet; + + public static class Builder { + /** + * Copy method to populate the builder with values from the given instance. + * @return this builder instance + */ + public Builder copy(GetExportSetResponse o) { + etag(o.getEtag()); + opcRequestId(o.getOpcRequestId()); + exportSet(o.getExportSet()); + + return this; + } + } +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/responses/GetFileSystemResponse.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/responses/GetFileSystemResponse.java new file mode 100644 index 00000000000..18e31361fc7 --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/responses/GetFileSystemResponse.java @@ -0,0 +1,44 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.responses; + +import com.oracle.bmc.filestorage.model.*; + +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.Builder(builderClassName = "Builder") +@lombok.Getter +public class GetFileSystemResponse { + + /** + * For optimistic concurrency control. See `if-match`. + */ + private String etag; + + /** + * Unique Oracle-assigned identifier for the request. If + * you need to contact Oracle about a particular request, + * please provide the request ID. + * + */ + private String opcRequestId; + + /** + * The returned FileSystem instance. + */ + private FileSystem fileSystem; + + public static class Builder { + /** + * Copy method to populate the builder with values from the given instance. + * @return this builder instance + */ + public Builder copy(GetFileSystemResponse o) { + etag(o.getEtag()); + opcRequestId(o.getOpcRequestId()); + fileSystem(o.getFileSystem()); + + return this; + } + } +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/responses/GetMountTargetResponse.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/responses/GetMountTargetResponse.java new file mode 100644 index 00000000000..e87ef376474 --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/responses/GetMountTargetResponse.java @@ -0,0 +1,44 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.responses; + +import com.oracle.bmc.filestorage.model.*; + +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.Builder(builderClassName = "Builder") +@lombok.Getter +public class GetMountTargetResponse { + + /** + * For optimistic concurrency control. See `if-match`. + */ + private String etag; + + /** + * Unique Oracle-assigned identifier for the request. If + * you need to contact Oracle about a particular request, + * please provide the request ID. + * + */ + private String opcRequestId; + + /** + * The returned MountTarget instance. + */ + private MountTarget mountTarget; + + public static class Builder { + /** + * Copy method to populate the builder with values from the given instance. + * @return this builder instance + */ + public Builder copy(GetMountTargetResponse o) { + etag(o.getEtag()); + opcRequestId(o.getOpcRequestId()); + mountTarget(o.getMountTarget()); + + return this; + } + } +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/responses/GetSnapshotResponse.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/responses/GetSnapshotResponse.java new file mode 100644 index 00000000000..ad279b0ccc4 --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/responses/GetSnapshotResponse.java @@ -0,0 +1,44 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.responses; + +import com.oracle.bmc.filestorage.model.*; + +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.Builder(builderClassName = "Builder") +@lombok.Getter +public class GetSnapshotResponse { + + /** + * For optimistic concurrency control. See `if-match`. + */ + private String etag; + + /** + * Unique Oracle-assigned identifier for the request. If + * you need to contact Oracle about a particular request, + * please provide the request ID. + * + */ + private String opcRequestId; + + /** + * The returned Snapshot instance. + */ + private Snapshot snapshot; + + public static class Builder { + /** + * Copy method to populate the builder with values from the given instance. + * @return this builder instance + */ + public Builder copy(GetSnapshotResponse o) { + etag(o.getEtag()); + opcRequestId(o.getOpcRequestId()); + snapshot(o.getSnapshot()); + + return this; + } + } +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/responses/ListExportSetsResponse.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/responses/ListExportSetsResponse.java new file mode 100644 index 00000000000..af3d6223857 --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/responses/ListExportSetsResponse.java @@ -0,0 +1,49 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.responses; + +import com.oracle.bmc.filestorage.model.*; + +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.Builder(builderClassName = "Builder") +@lombok.Getter +public class ListExportSetsResponse { + + /** + * For pagination of a list of items. When paging through + * a list, if this header appears in the response, then a + * partial list might have been returned. Include this + * value as the `page` parameter for the subsequent GET + * request to get the next batch of items. + * + */ + private String opcNextPage; + + /** + * Unique Oracle-assigned identifier for the request. If + * you need to contact Oracle about a particular request, + * please provide the request ID. + * + */ + private String opcRequestId; + + /** + * A list of ExportSetSummary instances. + */ + private java.util.List items; + + public static class Builder { + /** + * Copy method to populate the builder with values from the given instance. + * @return this builder instance + */ + public Builder copy(ListExportSetsResponse o) { + opcNextPage(o.getOpcNextPage()); + opcRequestId(o.getOpcRequestId()); + items(o.getItems()); + + return this; + } + } +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/responses/ListExportsResponse.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/responses/ListExportsResponse.java new file mode 100644 index 00000000000..94ee4470d20 --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/responses/ListExportsResponse.java @@ -0,0 +1,49 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.responses; + +import com.oracle.bmc.filestorage.model.*; + +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.Builder(builderClassName = "Builder") +@lombok.Getter +public class ListExportsResponse { + + /** + * For pagination of a list of items. When paging through + * a list, if this header appears in the response, then a + * partial list might have been returned. Include this + * value as the `page` parameter for the subsequent GET + * request to get the next batch of items. + * + */ + private String opcNextPage; + + /** + * Unique Oracle-assigned identifier for the request. If + * you need to contact Oracle about a particular request, + * please provide the request ID. + * + */ + private String opcRequestId; + + /** + * A list of ExportSummary instances. + */ + private java.util.List items; + + public static class Builder { + /** + * Copy method to populate the builder with values from the given instance. + * @return this builder instance + */ + public Builder copy(ListExportsResponse o) { + opcNextPage(o.getOpcNextPage()); + opcRequestId(o.getOpcRequestId()); + items(o.getItems()); + + return this; + } + } +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/responses/ListFileSystemsResponse.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/responses/ListFileSystemsResponse.java new file mode 100644 index 00000000000..b9975135e78 --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/responses/ListFileSystemsResponse.java @@ -0,0 +1,49 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.responses; + +import com.oracle.bmc.filestorage.model.*; + +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.Builder(builderClassName = "Builder") +@lombok.Getter +public class ListFileSystemsResponse { + + /** + * For pagination of a list of items. When paging through + * a list, if this header appears in the response, then a + * partial list might have been returned. Include this + * value as the `page` parameter for the subsequent GET + * request to get the next batch of items. + * + */ + private String opcNextPage; + + /** + * Unique Oracle-assigned identifier for the request. If + * you need to contact Oracle about a particular request, + * please provide the request ID. + * + */ + private String opcRequestId; + + /** + * A list of FileSystemSummary instances. + */ + private java.util.List items; + + public static class Builder { + /** + * Copy method to populate the builder with values from the given instance. + * @return this builder instance + */ + public Builder copy(ListFileSystemsResponse o) { + opcNextPage(o.getOpcNextPage()); + opcRequestId(o.getOpcRequestId()); + items(o.getItems()); + + return this; + } + } +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/responses/ListMountTargetsResponse.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/responses/ListMountTargetsResponse.java new file mode 100644 index 00000000000..217ff6c55f7 --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/responses/ListMountTargetsResponse.java @@ -0,0 +1,49 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.responses; + +import com.oracle.bmc.filestorage.model.*; + +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.Builder(builderClassName = "Builder") +@lombok.Getter +public class ListMountTargetsResponse { + + /** + * For pagination of a list of items. When paging through + * a list, if this header appears in the response, then a + * partial list might have been returned. Include this + * value as the `page` parameter for the subsequent GET + * request to get the next batch of items. + * + */ + private String opcNextPage; + + /** + * Unique Oracle-assigned identifier for the request. If + * you need to contact Oracle about a particular request, + * please provide the request ID. + * + */ + private String opcRequestId; + + /** + * A list of MountTargetSummary instances. + */ + private java.util.List items; + + public static class Builder { + /** + * Copy method to populate the builder with values from the given instance. + * @return this builder instance + */ + public Builder copy(ListMountTargetsResponse o) { + opcNextPage(o.getOpcNextPage()); + opcRequestId(o.getOpcRequestId()); + items(o.getItems()); + + return this; + } + } +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/responses/ListSnapshotsResponse.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/responses/ListSnapshotsResponse.java new file mode 100644 index 00000000000..0bf7bf5bc66 --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/responses/ListSnapshotsResponse.java @@ -0,0 +1,49 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.responses; + +import com.oracle.bmc.filestorage.model.*; + +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.Builder(builderClassName = "Builder") +@lombok.Getter +public class ListSnapshotsResponse { + + /** + * For pagination of a list of items. When paging through + * a list, if this header appears in the response, then a + * partial list might have been returned. Include this + * value as the `page` parameter for the subsequent GET + * request to get the next batch of items. + * + */ + private String opcNextPage; + + /** + * Unique Oracle-assigned identifier for the request. If + * you need to contact Oracle about a particular request, + * please provide the request ID. + * + */ + private String opcRequestId; + + /** + * A list of SnapshotSummary instances. + */ + private java.util.List items; + + public static class Builder { + /** + * Copy method to populate the builder with values from the given instance. + * @return this builder instance + */ + public Builder copy(ListSnapshotsResponse o) { + opcNextPage(o.getOpcNextPage()); + opcRequestId(o.getOpcRequestId()); + items(o.getItems()); + + return this; + } + } +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/responses/UpdateExportSetResponse.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/responses/UpdateExportSetResponse.java new file mode 100644 index 00000000000..4d5b5b3cefa --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/responses/UpdateExportSetResponse.java @@ -0,0 +1,44 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.responses; + +import com.oracle.bmc.filestorage.model.*; + +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.Builder(builderClassName = "Builder") +@lombok.Getter +public class UpdateExportSetResponse { + + /** + * For optimistic concurrency control. See `if-match`. + */ + private String etag; + + /** + * Unique Oracle-assigned identifier for the request. If + * you need to contact Oracle about a particular request, + * please provide the request ID. + * + */ + private String opcRequestId; + + /** + * The returned ExportSet instance. + */ + private ExportSet exportSet; + + public static class Builder { + /** + * Copy method to populate the builder with values from the given instance. + * @return this builder instance + */ + public Builder copy(UpdateExportSetResponse o) { + etag(o.getEtag()); + opcRequestId(o.getOpcRequestId()); + exportSet(o.getExportSet()); + + return this; + } + } +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/responses/UpdateFileSystemResponse.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/responses/UpdateFileSystemResponse.java new file mode 100644 index 00000000000..5a7b85d7b11 --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/responses/UpdateFileSystemResponse.java @@ -0,0 +1,44 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.responses; + +import com.oracle.bmc.filestorage.model.*; + +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.Builder(builderClassName = "Builder") +@lombok.Getter +public class UpdateFileSystemResponse { + + /** + * For optimistic concurrency control. See `if-match`. + */ + private String etag; + + /** + * Unique Oracle-assigned identifier for the request. If + * you need to contact Oracle about a particular request, + * please provide the request ID. + * + */ + private String opcRequestId; + + /** + * The returned FileSystem instance. + */ + private FileSystem fileSystem; + + public static class Builder { + /** + * Copy method to populate the builder with values from the given instance. + * @return this builder instance + */ + public Builder copy(UpdateFileSystemResponse o) { + etag(o.getEtag()); + opcRequestId(o.getOpcRequestId()); + fileSystem(o.getFileSystem()); + + return this; + } + } +} diff --git a/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/responses/UpdateMountTargetResponse.java b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/responses/UpdateMountTargetResponse.java new file mode 100644 index 00000000000..ebcdeb93ad6 --- /dev/null +++ b/bmc-filestorage/src/main/java/com/oracle/bmc/filestorage/responses/UpdateMountTargetResponse.java @@ -0,0 +1,44 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.filestorage.responses; + +import com.oracle.bmc.filestorage.model.*; + +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20171215") +@lombok.Builder(builderClassName = "Builder") +@lombok.Getter +public class UpdateMountTargetResponse { + + /** + * For optimistic concurrency control. See `if-match`. + */ + private String etag; + + /** + * Unique Oracle-assigned identifier for the request. If + * you need to contact Oracle about a particular request, + * please provide the request ID. + * + */ + private String opcRequestId; + + /** + * The returned MountTarget instance. + */ + private MountTarget mountTarget; + + public static class Builder { + /** + * Copy method to populate the builder with values from the given instance. + * @return this builder instance + */ + public Builder copy(UpdateMountTargetResponse o) { + etag(o.getEtag()); + opcRequestId(o.getOpcRequestId()); + mountTarget(o.getMountTarget()); + + return this; + } + } +} diff --git a/bmc-identity/pom.xml b/bmc-identity/pom.xml index d6c94295460..b04892afff4 100644 --- a/bmc-identity/pom.xml +++ b/bmc-identity/pom.xml @@ -5,7 +5,7 @@ com.oracle.oci.sdk oci-java-sdk - 1.2.27 + 1.2.28 ../pom.xml @@ -18,7 +18,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 1.2.27 + 1.2.28 diff --git a/bmc-identity/src/main/java/com/oracle/bmc/identity/Identity.java b/bmc-identity/src/main/java/com/oracle/bmc/identity/Identity.java index c125ffbacdd..4f0f2520c1e 100644 --- a/bmc-identity/src/main/java/com/oracle/bmc/identity/Identity.java +++ b/bmc-identity/src/main/java/com/oracle/bmc/identity/Identity.java @@ -855,4 +855,13 @@ ListUserGroupMembershipsResponse listUserGroupMemberships( * @return The service waiters. */ IdentityWaiters getWaiters(); + + /** + * Gets the pre-configured paginators available for list operations in this service which may return multiple + * pages of data. These paginators provide an {@link java.lang.Iterable} interface so that service responses, or + * resources/records, can be iterated through without having to manually deal with pagination and page tokens. + * + * @return The service paginators. + */ + IdentityPaginators getPaginators(); } diff --git a/bmc-identity/src/main/java/com/oracle/bmc/identity/IdentityClient.java b/bmc-identity/src/main/java/com/oracle/bmc/identity/IdentityClient.java index 5e21e35fb29..7fb16bfed8b 100644 --- a/bmc-identity/src/main/java/com/oracle/bmc/identity/IdentityClient.java +++ b/bmc-identity/src/main/java/com/oracle/bmc/identity/IdentityClient.java @@ -16,10 +16,11 @@ public class IdentityClient implements Identity { */ public static final com.oracle.bmc.Service SERVICE = com.oracle.bmc.Services.create("IDENTITY", "identity"); + // attempt twice if it's instance principals, immediately failures will try to refresh the token + private static final int MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS = 2; - private final java.util.concurrent.ExecutorService executorService = - java.util.concurrent.Executors.newFixedThreadPool(50); private final IdentityWaiters waiters; + private final IdentityPaginators paginators; @lombok.Getter(value = lombok.AccessLevel.PACKAGE) private final com.oracle.bmc.http.internal.RestClient client; @@ -106,6 +107,8 @@ public IdentityClient( this.waiters = new IdentityWaiters(executorService, this); + this.paginators = new IdentityPaginators(this); + if (this.authenticationDetailsProvider instanceof com.oracle.bmc.auth.RegionProvider) { com.oracle.bmc.auth.RegionProvider provider = (com.oracle.bmc.auth.RegionProvider) this.authenticationDetailsProvider; @@ -160,28 +163,20 @@ public AddUserToGroupResponse addUserToGroup(AddUserToGroupRequest request) { com.google.common.base.Function transformer = AddUserToGroupConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.post(ib, request.getAddUserToGroupDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.post(ib, request.getAddUserToGroupDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.post(ib, request.getAddUserToGroupDetails(), request); - return transformer.apply(response); } } @@ -194,28 +189,20 @@ public CreateCompartmentResponse createCompartment(CreateCompartmentRequest requ com.google.common.base.Function transformer = CreateCompartmentConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.post(ib, request.getCreateCompartmentDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateCompartmentDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateCompartmentDetails(), request); - return transformer.apply(response); } } @@ -229,28 +216,20 @@ public CreateCustomerSecretKeyResponse createCustomerSecretKey( com.google.common.base.Function transformer = CreateCustomerSecretKeyConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.post(ib, request.getCreateCustomerSecretKeyDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateCustomerSecretKeyDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateCustomerSecretKeyDetails(), request); - return transformer.apply(response); } } @@ -263,28 +242,20 @@ public CreateDynamicGroupResponse createDynamicGroup(CreateDynamicGroupRequest r com.google.common.base.Function transformer = CreateDynamicGroupConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.post(ib, request.getCreateDynamicGroupDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateDynamicGroupDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateDynamicGroupDetails(), request); - return transformer.apply(response); } } @@ -297,28 +268,20 @@ public CreateGroupResponse createGroup(CreateGroupRequest request) { com.google.common.base.Function transformer = CreateGroupConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.post(ib, request.getCreateGroupDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateGroupDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateGroupDetails(), request); - return transformer.apply(response); } } @@ -332,28 +295,20 @@ public CreateIdentityProviderResponse createIdentityProvider( com.google.common.base.Function transformer = CreateIdentityProviderConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.post(ib, request.getCreateIdentityProviderDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateIdentityProviderDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateIdentityProviderDetails(), request); - return transformer.apply(response); } } @@ -367,28 +322,20 @@ public CreateIdpGroupMappingResponse createIdpGroupMapping( com.google.common.base.Function transformer = CreateIdpGroupMappingConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.post(ib, request.getCreateIdpGroupMappingDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateIdpGroupMappingDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateIdpGroupMappingDetails(), request); - return transformer.apply(response); } } @@ -402,25 +349,19 @@ public CreateOrResetUIPasswordResponse createOrResetUIPassword( com.google.common.base.Function transformer = CreateOrResetUIPasswordConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.post(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.post(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.post(ib, request); - return transformer.apply(response); } } @@ -433,28 +374,20 @@ public CreatePolicyResponse createPolicy(CreatePolicyRequest request) { com.google.common.base.Function transformer = CreatePolicyConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.post(ib, request.getCreatePolicyDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.post(ib, request.getCreatePolicyDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.post(ib, request.getCreatePolicyDetails(), request); - return transformer.apply(response); } } @@ -468,28 +401,20 @@ public CreateRegionSubscriptionResponse createRegionSubscription( com.google.common.base.Function transformer = CreateRegionSubscriptionConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.post(ib, request.getCreateRegionSubscriptionDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateRegionSubscriptionDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateRegionSubscriptionDetails(), request); - return transformer.apply(response); } } @@ -502,28 +427,20 @@ public CreateSwiftPasswordResponse createSwiftPassword(CreateSwiftPasswordReques com.google.common.base.Function transformer = CreateSwiftPasswordConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.post(ib, request.getCreateSwiftPasswordDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateSwiftPasswordDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateSwiftPasswordDetails(), request); - return transformer.apply(response); } } @@ -536,28 +453,20 @@ public CreateTagResponse createTag(CreateTagRequest request) { com.google.common.base.Function transformer = CreateTagConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.post(ib, request.getCreateTagDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateTagDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateTagDetails(), request); - return transformer.apply(response); } } @@ -570,28 +479,20 @@ public CreateTagNamespaceResponse createTagNamespace(CreateTagNamespaceRequest r com.google.common.base.Function transformer = CreateTagNamespaceConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.post(ib, request.getCreateTagNamespaceDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateTagNamespaceDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateTagNamespaceDetails(), request); - return transformer.apply(response); } } @@ -604,28 +505,20 @@ public CreateUserResponse createUser(CreateUserRequest request) { com.google.common.base.Function transformer = CreateUserConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.post(ib, request.getCreateUserDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateUserDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateUserDetails(), request); - return transformer.apply(response); } } @@ -638,25 +531,19 @@ public DeleteApiKeyResponse deleteApiKey(DeleteApiKeyRequest request) { com.google.common.base.Function transformer = DeleteApiKeyConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.delete(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); } } @@ -670,25 +557,19 @@ public DeleteCustomerSecretKeyResponse deleteCustomerSecretKey( com.google.common.base.Function transformer = DeleteCustomerSecretKeyConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.delete(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); } } @@ -701,25 +582,19 @@ public DeleteDynamicGroupResponse deleteDynamicGroup(DeleteDynamicGroupRequest r com.google.common.base.Function transformer = DeleteDynamicGroupConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.delete(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); } } @@ -732,25 +607,19 @@ public DeleteGroupResponse deleteGroup(DeleteGroupRequest request) { com.google.common.base.Function transformer = DeleteGroupConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.delete(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); } } @@ -764,25 +633,19 @@ public DeleteIdentityProviderResponse deleteIdentityProvider( com.google.common.base.Function transformer = DeleteIdentityProviderConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.delete(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); } } @@ -796,25 +659,19 @@ public DeleteIdpGroupMappingResponse deleteIdpGroupMapping( com.google.common.base.Function transformer = DeleteIdpGroupMappingConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.delete(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); } } @@ -827,25 +684,19 @@ public DeletePolicyResponse deletePolicy(DeletePolicyRequest request) { com.google.common.base.Function transformer = DeletePolicyConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.delete(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); } } @@ -858,25 +709,19 @@ public DeleteSwiftPasswordResponse deleteSwiftPassword(DeleteSwiftPasswordReques com.google.common.base.Function transformer = DeleteSwiftPasswordConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.delete(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); } } @@ -889,25 +734,19 @@ public DeleteUserResponse deleteUser(DeleteUserRequest request) { com.google.common.base.Function transformer = DeleteUserConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.delete(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); } } @@ -920,25 +759,19 @@ public GetCompartmentResponse getCompartment(GetCompartmentRequest request) { com.google.common.base.Function transformer = GetCompartmentConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -951,25 +784,19 @@ public GetDynamicGroupResponse getDynamicGroup(GetDynamicGroupRequest request) { com.google.common.base.Function transformer = GetDynamicGroupConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -982,25 +809,19 @@ public GetGroupResponse getGroup(GetGroupRequest request) { com.google.common.base.Function transformer = GetGroupConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -1013,25 +834,19 @@ public GetIdentityProviderResponse getIdentityProvider(GetIdentityProviderReques com.google.common.base.Function transformer = GetIdentityProviderConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -1044,25 +859,19 @@ public GetIdpGroupMappingResponse getIdpGroupMapping(GetIdpGroupMappingRequest r com.google.common.base.Function transformer = GetIdpGroupMappingConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -1075,25 +884,19 @@ public GetPolicyResponse getPolicy(GetPolicyRequest request) { com.google.common.base.Function transformer = GetPolicyConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -1106,25 +909,19 @@ public GetTagResponse getTag(GetTagRequest request) { com.google.common.base.Function transformer = GetTagConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -1137,25 +934,19 @@ public GetTagNamespaceResponse getTagNamespace(GetTagNamespaceRequest request) { com.google.common.base.Function transformer = GetTagNamespaceConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -1168,25 +959,19 @@ public GetTenancyResponse getTenancy(GetTenancyRequest request) { com.google.common.base.Function transformer = GetTenancyConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -1199,25 +984,19 @@ public GetUserResponse getUser(GetUserRequest request) { com.google.common.base.Function transformer = GetUserConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -1231,25 +1010,19 @@ public GetUserGroupMembershipResponse getUserGroupMembership( com.google.common.base.Function transformer = GetUserGroupMembershipConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -1262,25 +1035,19 @@ public ListApiKeysResponse listApiKeys(ListApiKeysRequest request) { com.google.common.base.Function transformer = ListApiKeysConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -1294,25 +1061,19 @@ public ListAvailabilityDomainsResponse listAvailabilityDomains( com.google.common.base.Function transformer = ListAvailabilityDomainsConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -1325,25 +1086,19 @@ public ListCompartmentsResponse listCompartments(ListCompartmentsRequest request com.google.common.base.Function transformer = ListCompartmentsConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -1357,25 +1112,19 @@ public ListCustomerSecretKeysResponse listCustomerSecretKeys( com.google.common.base.Function transformer = ListCustomerSecretKeysConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -1388,25 +1137,19 @@ public ListDynamicGroupsResponse listDynamicGroups(ListDynamicGroupsRequest requ com.google.common.base.Function transformer = ListDynamicGroupsConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -1419,25 +1162,19 @@ public ListGroupsResponse listGroups(ListGroupsRequest request) { com.google.common.base.Function transformer = ListGroupsConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -1451,25 +1188,19 @@ public ListIdentityProvidersResponse listIdentityProviders( com.google.common.base.Function transformer = ListIdentityProvidersConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -1482,25 +1213,19 @@ public ListIdpGroupMappingsResponse listIdpGroupMappings(ListIdpGroupMappingsReq com.google.common.base.Function transformer = ListIdpGroupMappingsConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -1513,25 +1238,19 @@ public ListPoliciesResponse listPolicies(ListPoliciesRequest request) { com.google.common.base.Function transformer = ListPoliciesConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -1545,25 +1264,19 @@ public ListRegionSubscriptionsResponse listRegionSubscriptions( com.google.common.base.Function transformer = ListRegionSubscriptionsConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -1576,25 +1289,19 @@ public ListRegionsResponse listRegions(ListRegionsRequest request) { com.google.common.base.Function transformer = ListRegionsConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -1607,25 +1314,19 @@ public ListSwiftPasswordsResponse listSwiftPasswords(ListSwiftPasswordsRequest r com.google.common.base.Function transformer = ListSwiftPasswordsConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -1638,25 +1339,19 @@ public ListTagNamespacesResponse listTagNamespaces(ListTagNamespacesRequest requ com.google.common.base.Function transformer = ListTagNamespacesConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -1669,25 +1364,19 @@ public ListTagsResponse listTags(ListTagsRequest request) { com.google.common.base.Function transformer = ListTagsConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -1701,25 +1390,19 @@ public ListUserGroupMembershipsResponse listUserGroupMemberships( com.google.common.base.Function transformer = ListUserGroupMembershipsConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -1732,25 +1415,19 @@ public ListUsersResponse listUsers(ListUsersRequest request) { com.google.common.base.Function transformer = ListUsersConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -1763,25 +1440,19 @@ public RemoveUserFromGroupResponse removeUserFromGroup(RemoveUserFromGroupReques com.google.common.base.Function transformer = RemoveUserFromGroupConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.delete(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); } } @@ -1794,28 +1465,20 @@ public UpdateCompartmentResponse updateCompartment(UpdateCompartmentRequest requ com.google.common.base.Function transformer = UpdateCompartmentConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.put(ib, request.getUpdateCompartmentDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateCompartmentDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateCompartmentDetails(), request); - return transformer.apply(response); } } @@ -1829,28 +1492,20 @@ public UpdateCustomerSecretKeyResponse updateCustomerSecretKey( com.google.common.base.Function transformer = UpdateCustomerSecretKeyConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.put(ib, request.getUpdateCustomerSecretKeyDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateCustomerSecretKeyDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateCustomerSecretKeyDetails(), request); - return transformer.apply(response); } } @@ -1863,28 +1518,20 @@ public UpdateDynamicGroupResponse updateDynamicGroup(UpdateDynamicGroupRequest r com.google.common.base.Function transformer = UpdateDynamicGroupConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.put(ib, request.getUpdateDynamicGroupDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateDynamicGroupDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateDynamicGroupDetails(), request); - return transformer.apply(response); } } @@ -1897,28 +1544,20 @@ public UpdateGroupResponse updateGroup(UpdateGroupRequest request) { com.google.common.base.Function transformer = UpdateGroupConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.put(ib, request.getUpdateGroupDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateGroupDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateGroupDetails(), request); - return transformer.apply(response); } } @@ -1932,28 +1571,20 @@ public UpdateIdentityProviderResponse updateIdentityProvider( com.google.common.base.Function transformer = UpdateIdentityProviderConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.put(ib, request.getUpdateIdentityProviderDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateIdentityProviderDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateIdentityProviderDetails(), request); - return transformer.apply(response); } } @@ -1967,28 +1598,20 @@ public UpdateIdpGroupMappingResponse updateIdpGroupMapping( com.google.common.base.Function transformer = UpdateIdpGroupMappingConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.put(ib, request.getUpdateIdpGroupMappingDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateIdpGroupMappingDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateIdpGroupMappingDetails(), request); - return transformer.apply(response); } } @@ -2001,28 +1624,20 @@ public UpdatePolicyResponse updatePolicy(UpdatePolicyRequest request) { com.google.common.base.Function transformer = UpdatePolicyConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.put(ib, request.getUpdatePolicyDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdatePolicyDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdatePolicyDetails(), request); - return transformer.apply(response); } } @@ -2035,28 +1650,20 @@ public UpdateSwiftPasswordResponse updateSwiftPassword(UpdateSwiftPasswordReques com.google.common.base.Function transformer = UpdateSwiftPasswordConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.put(ib, request.getUpdateSwiftPasswordDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateSwiftPasswordDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateSwiftPasswordDetails(), request); - return transformer.apply(response); } } @@ -2069,28 +1676,20 @@ public UpdateTagResponse updateTag(UpdateTagRequest request) { com.google.common.base.Function transformer = UpdateTagConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.put(ib, request.getUpdateTagDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateTagDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateTagDetails(), request); - return transformer.apply(response); } } @@ -2103,28 +1702,20 @@ public UpdateTagNamespaceResponse updateTagNamespace(UpdateTagNamespaceRequest r com.google.common.base.Function transformer = UpdateTagNamespaceConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.put(ib, request.getUpdateTagNamespaceDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateTagNamespaceDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateTagNamespaceDetails(), request); - return transformer.apply(response); } } @@ -2137,28 +1728,20 @@ public UpdateUserResponse updateUser(UpdateUserRequest request) { com.google.common.base.Function transformer = UpdateUserConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.put(ib, request.getUpdateUserDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateUserDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateUserDetails(), request); - return transformer.apply(response); } } @@ -2171,28 +1754,20 @@ public UpdateUserStateResponse updateUserState(UpdateUserStateRequest request) { com.google.common.base.Function transformer = UpdateUserStateConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.put(ib, request.getUpdateStateDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateStateDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateStateDetails(), request); - return transformer.apply(response); } } @@ -2205,33 +1780,43 @@ public UploadApiKeyResponse uploadApiKey(UploadApiKeyRequest request) { com.google.common.base.Function transformer = UploadApiKeyConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.post(ib, request.getCreateApiKeyDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateApiKeyDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateApiKeyDetails(), request); - return transformer.apply(response); } } + private boolean canRetryRequestIfInstancePrincipalsUsed(com.oracle.bmc.model.BmcException e) { + if (e.getStatusCode() == 401 + && this.authenticationDetailsProvider + instanceof + com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) + this.authenticationDetailsProvider) + .refreshSecurityToken(); + return true; + } + return false; + } + @Override public IdentityWaiters getWaiters() { return waiters; } + + @Override + public IdentityPaginators getPaginators() { + return paginators; + } } diff --git a/bmc-identity/src/main/java/com/oracle/bmc/identity/IdentityPaginators.java b/bmc-identity/src/main/java/com/oracle/bmc/identity/IdentityPaginators.java new file mode 100644 index 00000000000..0a56f78ae70 --- /dev/null +++ b/bmc-identity/src/main/java/com/oracle/bmc/identity/IdentityPaginators.java @@ -0,0 +1,1149 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.identity; + +import com.oracle.bmc.identity.requests.*; +import com.oracle.bmc.identity.responses.*; + +/** + * Collection of helper methods that can be used to provide an {@link java.lang.Iterable} interface + * to any list operations of Identity where multiple pages of data may be fetched. + * Two styles of iteration are supported: + * + *

            + *
          • Iterating over the Response objects returned by the list operation. These are referred to as ResponseIterators, and the methods are suffixed with ResponseIterator. For example: listUsersResponseIterator
          • + *
          • Iterating over the resources/records being listed. These are referred to as RecordIterators, and the methods are suffixed with RecordIterator. For example: listUsersRecordIterator
          • + *
          + * + * These iterables abstract away the need to write code to manually handle pagination via looping and using the page tokens. + * They will automatically fetch more data from the service when required. + * + * As an example, if we were using the ListUsers operation in IdentityService, then the {@link java.lang.Interable} returned by calling a + * ResponseIterator method would iterate over the ListUsersResponse objects returned by each ListUsers call, whereas the {@link java.lang.Iterable} + * returned by calling a RecordIterator method would iterate over the User records and we don't have to deal with ListUsersResponse objects at all. + * In either case, pagination will be automatically handled so we can iterate until there are no more responses or no more resources/records available. + */ +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20160918") +@lombok.RequiredArgsConstructor +public class IdentityPaginators { + private final Identity client; + + /** + * Creates a new iterable which will iterate over the responses received from the listCompartments operation. This iterable + * will fetch more data from the server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the responses received from the service. + */ + public Iterable listCompartmentsResponseIterator( + final ListCompartmentsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseIterable< + ListCompartmentsRequest.Builder, ListCompartmentsRequest, ListCompartmentsResponse>( + new com.google.common.base.Supplier() { + @Override + public ListCompartmentsRequest.Builder get() { + return ListCompartmentsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListCompartmentsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListCompartmentsRequest.Builder>, + ListCompartmentsRequest>() { + @Override + public ListCompartmentsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListCompartmentsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListCompartmentsRequest, ListCompartmentsResponse>() { + @Override + public ListCompartmentsResponse apply(ListCompartmentsRequest request) { + return client.listCompartments(request); + } + }); + } + + /** + * Creates a new iterable which will iterate over the {@link com.oracle.bmc.identity.model.Compartment} objects + * contained in responses from the listCompartments operation. This iterable will fetch more data from the + * server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link com.oracle.bmc.identity.model.Compartment} objects + * contained in responses received from the service. + */ + public Iterable listCompartmentsRecordIterator( + final ListCompartmentsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseRecordIterable< + ListCompartmentsRequest.Builder, ListCompartmentsRequest, ListCompartmentsResponse, + com.oracle.bmc.identity.model.Compartment>( + new com.google.common.base.Supplier() { + @Override + public ListCompartmentsRequest.Builder get() { + return ListCompartmentsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListCompartmentsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListCompartmentsRequest.Builder>, + ListCompartmentsRequest>() { + @Override + public ListCompartmentsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListCompartmentsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListCompartmentsRequest, ListCompartmentsResponse>() { + @Override + public ListCompartmentsResponse apply(ListCompartmentsRequest request) { + return client.listCompartments(request); + } + }, + new com.google.common.base.Function< + ListCompartmentsResponse, + java.util.List>() { + @Override + public java.util.List apply( + ListCompartmentsResponse response) { + return response.getItems(); + } + }); + } + + /** + * Creates a new iterable which will iterate over the responses received from the listDynamicGroups operation. This iterable + * will fetch more data from the server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the responses received from the service. + */ + public Iterable listDynamicGroupsResponseIterator( + final ListDynamicGroupsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseIterable< + ListDynamicGroupsRequest.Builder, ListDynamicGroupsRequest, + ListDynamicGroupsResponse>( + new com.google.common.base.Supplier() { + @Override + public ListDynamicGroupsRequest.Builder get() { + return ListDynamicGroupsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListDynamicGroupsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListDynamicGroupsRequest.Builder>, + ListDynamicGroupsRequest>() { + @Override + public ListDynamicGroupsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListDynamicGroupsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListDynamicGroupsRequest, ListDynamicGroupsResponse>() { + @Override + public ListDynamicGroupsResponse apply(ListDynamicGroupsRequest request) { + return client.listDynamicGroups(request); + } + }); + } + + /** + * Creates a new iterable which will iterate over the {@link com.oracle.bmc.identity.model.DynamicGroup} objects + * contained in responses from the listDynamicGroups operation. This iterable will fetch more data from the + * server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link com.oracle.bmc.identity.model.DynamicGroup} objects + * contained in responses received from the service. + */ + public Iterable listDynamicGroupsRecordIterator( + final ListDynamicGroupsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseRecordIterable< + ListDynamicGroupsRequest.Builder, ListDynamicGroupsRequest, + ListDynamicGroupsResponse, com.oracle.bmc.identity.model.DynamicGroup>( + new com.google.common.base.Supplier() { + @Override + public ListDynamicGroupsRequest.Builder get() { + return ListDynamicGroupsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListDynamicGroupsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListDynamicGroupsRequest.Builder>, + ListDynamicGroupsRequest>() { + @Override + public ListDynamicGroupsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListDynamicGroupsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListDynamicGroupsRequest, ListDynamicGroupsResponse>() { + @Override + public ListDynamicGroupsResponse apply(ListDynamicGroupsRequest request) { + return client.listDynamicGroups(request); + } + }, + new com.google.common.base.Function< + ListDynamicGroupsResponse, + java.util.List>() { + @Override + public java.util.List apply( + ListDynamicGroupsResponse response) { + return response.getItems(); + } + }); + } + + /** + * Creates a new iterable which will iterate over the responses received from the listGroups operation. This iterable + * will fetch more data from the server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the responses received from the service. + */ + public Iterable listGroupsResponseIterator( + final ListGroupsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseIterable< + ListGroupsRequest.Builder, ListGroupsRequest, ListGroupsResponse>( + new com.google.common.base.Supplier() { + @Override + public ListGroupsRequest.Builder get() { + return ListGroupsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListGroupsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListGroupsRequest.Builder>, + ListGroupsRequest>() { + @Override + public ListGroupsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListGroupsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function() { + @Override + public ListGroupsResponse apply(ListGroupsRequest request) { + return client.listGroups(request); + } + }); + } + + /** + * Creates a new iterable which will iterate over the {@link com.oracle.bmc.identity.model.Group} objects + * contained in responses from the listGroups operation. This iterable will fetch more data from the + * server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link com.oracle.bmc.identity.model.Group} objects + * contained in responses received from the service. + */ + public Iterable listGroupsRecordIterator( + final ListGroupsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseRecordIterable< + ListGroupsRequest.Builder, ListGroupsRequest, ListGroupsResponse, + com.oracle.bmc.identity.model.Group>( + new com.google.common.base.Supplier() { + @Override + public ListGroupsRequest.Builder get() { + return ListGroupsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListGroupsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListGroupsRequest.Builder>, + ListGroupsRequest>() { + @Override + public ListGroupsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListGroupsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function() { + @Override + public ListGroupsResponse apply(ListGroupsRequest request) { + return client.listGroups(request); + } + }, + new com.google.common.base.Function< + ListGroupsResponse, java.util.List>() { + @Override + public java.util.List apply( + ListGroupsResponse response) { + return response.getItems(); + } + }); + } + + /** + * Creates a new iterable which will iterate over the responses received from the listIdentityProviders operation. This iterable + * will fetch more data from the server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the responses received from the service. + */ + public Iterable listIdentityProvidersResponseIterator( + final ListIdentityProvidersRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseIterable< + ListIdentityProvidersRequest.Builder, ListIdentityProvidersRequest, + ListIdentityProvidersResponse>( + new com.google.common.base.Supplier() { + @Override + public ListIdentityProvidersRequest.Builder get() { + return ListIdentityProvidersRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListIdentityProvidersResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListIdentityProvidersRequest.Builder>, + ListIdentityProvidersRequest>() { + @Override + public ListIdentityProvidersRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListIdentityProvidersRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListIdentityProvidersRequest, ListIdentityProvidersResponse>() { + @Override + public ListIdentityProvidersResponse apply( + ListIdentityProvidersRequest request) { + return client.listIdentityProviders(request); + } + }); + } + + /** + * Creates a new iterable which will iterate over the {@link com.oracle.bmc.identity.model.IdentityProvider} objects + * contained in responses from the listIdentityProviders operation. This iterable will fetch more data from the + * server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link com.oracle.bmc.identity.model.IdentityProvider} objects + * contained in responses received from the service. + */ + public Iterable + listIdentityProvidersRecordIterator(final ListIdentityProvidersRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseRecordIterable< + ListIdentityProvidersRequest.Builder, ListIdentityProvidersRequest, + ListIdentityProvidersResponse, com.oracle.bmc.identity.model.IdentityProvider>( + new com.google.common.base.Supplier() { + @Override + public ListIdentityProvidersRequest.Builder get() { + return ListIdentityProvidersRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListIdentityProvidersResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListIdentityProvidersRequest.Builder>, + ListIdentityProvidersRequest>() { + @Override + public ListIdentityProvidersRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListIdentityProvidersRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListIdentityProvidersRequest, ListIdentityProvidersResponse>() { + @Override + public ListIdentityProvidersResponse apply( + ListIdentityProvidersRequest request) { + return client.listIdentityProviders(request); + } + }, + new com.google.common.base.Function< + ListIdentityProvidersResponse, + java.util.List>() { + @Override + public java.util.List apply( + ListIdentityProvidersResponse response) { + return response.getItems(); + } + }); + } + + /** + * Creates a new iterable which will iterate over the responses received from the listIdpGroupMappings operation. This iterable + * will fetch more data from the server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the responses received from the service. + */ + public Iterable listIdpGroupMappingsResponseIterator( + final ListIdpGroupMappingsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseIterable< + ListIdpGroupMappingsRequest.Builder, ListIdpGroupMappingsRequest, + ListIdpGroupMappingsResponse>( + new com.google.common.base.Supplier() { + @Override + public ListIdpGroupMappingsRequest.Builder get() { + return ListIdpGroupMappingsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListIdpGroupMappingsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListIdpGroupMappingsRequest.Builder>, + ListIdpGroupMappingsRequest>() { + @Override + public ListIdpGroupMappingsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListIdpGroupMappingsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListIdpGroupMappingsRequest, ListIdpGroupMappingsResponse>() { + @Override + public ListIdpGroupMappingsResponse apply(ListIdpGroupMappingsRequest request) { + return client.listIdpGroupMappings(request); + } + }); + } + + /** + * Creates a new iterable which will iterate over the {@link com.oracle.bmc.identity.model.IdpGroupMapping} objects + * contained in responses from the listIdpGroupMappings operation. This iterable will fetch more data from the + * server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link com.oracle.bmc.identity.model.IdpGroupMapping} objects + * contained in responses received from the service. + */ + public Iterable + listIdpGroupMappingsRecordIterator(final ListIdpGroupMappingsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseRecordIterable< + ListIdpGroupMappingsRequest.Builder, ListIdpGroupMappingsRequest, + ListIdpGroupMappingsResponse, com.oracle.bmc.identity.model.IdpGroupMapping>( + new com.google.common.base.Supplier() { + @Override + public ListIdpGroupMappingsRequest.Builder get() { + return ListIdpGroupMappingsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListIdpGroupMappingsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListIdpGroupMappingsRequest.Builder>, + ListIdpGroupMappingsRequest>() { + @Override + public ListIdpGroupMappingsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListIdpGroupMappingsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListIdpGroupMappingsRequest, ListIdpGroupMappingsResponse>() { + @Override + public ListIdpGroupMappingsResponse apply(ListIdpGroupMappingsRequest request) { + return client.listIdpGroupMappings(request); + } + }, + new com.google.common.base.Function< + ListIdpGroupMappingsResponse, + java.util.List>() { + @Override + public java.util.List apply( + ListIdpGroupMappingsResponse response) { + return response.getItems(); + } + }); + } + + /** + * Creates a new iterable which will iterate over the responses received from the listPolicies operation. This iterable + * will fetch more data from the server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the responses received from the service. + */ + public Iterable listPoliciesResponseIterator( + final ListPoliciesRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseIterable< + ListPoliciesRequest.Builder, ListPoliciesRequest, ListPoliciesResponse>( + new com.google.common.base.Supplier() { + @Override + public ListPoliciesRequest.Builder get() { + return ListPoliciesRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListPoliciesResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListPoliciesRequest.Builder>, + ListPoliciesRequest>() { + @Override + public ListPoliciesRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListPoliciesRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function() { + @Override + public ListPoliciesResponse apply(ListPoliciesRequest request) { + return client.listPolicies(request); + } + }); + } + + /** + * Creates a new iterable which will iterate over the {@link com.oracle.bmc.identity.model.Policy} objects + * contained in responses from the listPolicies operation. This iterable will fetch more data from the + * server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link com.oracle.bmc.identity.model.Policy} objects + * contained in responses received from the service. + */ + public Iterable listPoliciesRecordIterator( + final ListPoliciesRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseRecordIterable< + ListPoliciesRequest.Builder, ListPoliciesRequest, ListPoliciesResponse, + com.oracle.bmc.identity.model.Policy>( + new com.google.common.base.Supplier() { + @Override + public ListPoliciesRequest.Builder get() { + return ListPoliciesRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListPoliciesResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListPoliciesRequest.Builder>, + ListPoliciesRequest>() { + @Override + public ListPoliciesRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListPoliciesRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function() { + @Override + public ListPoliciesResponse apply(ListPoliciesRequest request) { + return client.listPolicies(request); + } + }, + new com.google.common.base.Function< + ListPoliciesResponse, + java.util.List>() { + @Override + public java.util.List apply( + ListPoliciesResponse response) { + return response.getItems(); + } + }); + } + + /** + * Creates a new iterable which will iterate over the responses received from the listTagNamespaces operation. This iterable + * will fetch more data from the server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the responses received from the service. + */ + public Iterable listTagNamespacesResponseIterator( + final ListTagNamespacesRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseIterable< + ListTagNamespacesRequest.Builder, ListTagNamespacesRequest, + ListTagNamespacesResponse>( + new com.google.common.base.Supplier() { + @Override + public ListTagNamespacesRequest.Builder get() { + return ListTagNamespacesRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListTagNamespacesResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListTagNamespacesRequest.Builder>, + ListTagNamespacesRequest>() { + @Override + public ListTagNamespacesRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListTagNamespacesRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListTagNamespacesRequest, ListTagNamespacesResponse>() { + @Override + public ListTagNamespacesResponse apply(ListTagNamespacesRequest request) { + return client.listTagNamespaces(request); + } + }); + } + + /** + * Creates a new iterable which will iterate over the {@link com.oracle.bmc.identity.model.TagNamespaceSummary} objects + * contained in responses from the listTagNamespaces operation. This iterable will fetch more data from the + * server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link com.oracle.bmc.identity.model.TagNamespaceSummary} objects + * contained in responses received from the service. + */ + public Iterable + listTagNamespacesRecordIterator(final ListTagNamespacesRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseRecordIterable< + ListTagNamespacesRequest.Builder, ListTagNamespacesRequest, + ListTagNamespacesResponse, com.oracle.bmc.identity.model.TagNamespaceSummary>( + new com.google.common.base.Supplier() { + @Override + public ListTagNamespacesRequest.Builder get() { + return ListTagNamespacesRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListTagNamespacesResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListTagNamespacesRequest.Builder>, + ListTagNamespacesRequest>() { + @Override + public ListTagNamespacesRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListTagNamespacesRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListTagNamespacesRequest, ListTagNamespacesResponse>() { + @Override + public ListTagNamespacesResponse apply(ListTagNamespacesRequest request) { + return client.listTagNamespaces(request); + } + }, + new com.google.common.base.Function< + ListTagNamespacesResponse, + java.util.List>() { + @Override + public java.util.List apply( + ListTagNamespacesResponse response) { + return response.getItems(); + } + }); + } + + /** + * Creates a new iterable which will iterate over the responses received from the listTags operation. This iterable + * will fetch more data from the server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the responses received from the service. + */ + public Iterable listTagsResponseIterator(final ListTagsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseIterable< + ListTagsRequest.Builder, ListTagsRequest, ListTagsResponse>( + new com.google.common.base.Supplier() { + @Override + public ListTagsRequest.Builder get() { + return ListTagsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListTagsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListTagsRequest.Builder>, + ListTagsRequest>() { + @Override + public ListTagsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListTagsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function() { + @Override + public ListTagsResponse apply(ListTagsRequest request) { + return client.listTags(request); + } + }); + } + + /** + * Creates a new iterable which will iterate over the {@link com.oracle.bmc.identity.model.TagSummary} objects + * contained in responses from the listTags operation. This iterable will fetch more data from the + * server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link com.oracle.bmc.identity.model.TagSummary} objects + * contained in responses received from the service. + */ + public Iterable listTagsRecordIterator( + final ListTagsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseRecordIterable< + ListTagsRequest.Builder, ListTagsRequest, ListTagsResponse, + com.oracle.bmc.identity.model.TagSummary>( + new com.google.common.base.Supplier() { + @Override + public ListTagsRequest.Builder get() { + return ListTagsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListTagsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListTagsRequest.Builder>, + ListTagsRequest>() { + @Override + public ListTagsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListTagsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function() { + @Override + public ListTagsResponse apply(ListTagsRequest request) { + return client.listTags(request); + } + }, + new com.google.common.base.Function< + ListTagsResponse, + java.util.List>() { + @Override + public java.util.List apply( + ListTagsResponse response) { + return response.getItems(); + } + }); + } + + /** + * Creates a new iterable which will iterate over the responses received from the listUserGroupMemberships operation. This iterable + * will fetch more data from the server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the responses received from the service. + */ + public Iterable listUserGroupMembershipsResponseIterator( + final ListUserGroupMembershipsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseIterable< + ListUserGroupMembershipsRequest.Builder, ListUserGroupMembershipsRequest, + ListUserGroupMembershipsResponse>( + new com.google.common.base.Supplier() { + @Override + public ListUserGroupMembershipsRequest.Builder get() { + return ListUserGroupMembershipsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListUserGroupMembershipsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListUserGroupMembershipsRequest.Builder>, + ListUserGroupMembershipsRequest>() { + @Override + public ListUserGroupMembershipsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListUserGroupMembershipsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListUserGroupMembershipsRequest, ListUserGroupMembershipsResponse>() { + @Override + public ListUserGroupMembershipsResponse apply( + ListUserGroupMembershipsRequest request) { + return client.listUserGroupMemberships(request); + } + }); + } + + /** + * Creates a new iterable which will iterate over the {@link com.oracle.bmc.identity.model.UserGroupMembership} objects + * contained in responses from the listUserGroupMemberships operation. This iterable will fetch more data from the + * server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link com.oracle.bmc.identity.model.UserGroupMembership} objects + * contained in responses received from the service. + */ + public Iterable + listUserGroupMembershipsRecordIterator(final ListUserGroupMembershipsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseRecordIterable< + ListUserGroupMembershipsRequest.Builder, ListUserGroupMembershipsRequest, + ListUserGroupMembershipsResponse, + com.oracle.bmc.identity.model.UserGroupMembership>( + new com.google.common.base.Supplier() { + @Override + public ListUserGroupMembershipsRequest.Builder get() { + return ListUserGroupMembershipsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListUserGroupMembershipsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListUserGroupMembershipsRequest.Builder>, + ListUserGroupMembershipsRequest>() { + @Override + public ListUserGroupMembershipsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListUserGroupMembershipsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListUserGroupMembershipsRequest, ListUserGroupMembershipsResponse>() { + @Override + public ListUserGroupMembershipsResponse apply( + ListUserGroupMembershipsRequest request) { + return client.listUserGroupMemberships(request); + } + }, + new com.google.common.base.Function< + ListUserGroupMembershipsResponse, + java.util.List>() { + @Override + public java.util.List apply( + ListUserGroupMembershipsResponse response) { + return response.getItems(); + } + }); + } + + /** + * Creates a new iterable which will iterate over the responses received from the listUsers operation. This iterable + * will fetch more data from the server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the responses received from the service. + */ + public Iterable listUsersResponseIterator(final ListUsersRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseIterable< + ListUsersRequest.Builder, ListUsersRequest, ListUsersResponse>( + new com.google.common.base.Supplier() { + @Override + public ListUsersRequest.Builder get() { + return ListUsersRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListUsersResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListUsersRequest.Builder>, + ListUsersRequest>() { + @Override + public ListUsersRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListUsersRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function() { + @Override + public ListUsersResponse apply(ListUsersRequest request) { + return client.listUsers(request); + } + }); + } + + /** + * Creates a new iterable which will iterate over the {@link com.oracle.bmc.identity.model.User} objects + * contained in responses from the listUsers operation. This iterable will fetch more data from the + * server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link com.oracle.bmc.identity.model.User} objects + * contained in responses received from the service. + */ + public Iterable listUsersRecordIterator( + final ListUsersRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseRecordIterable< + ListUsersRequest.Builder, ListUsersRequest, ListUsersResponse, + com.oracle.bmc.identity.model.User>( + new com.google.common.base.Supplier() { + @Override + public ListUsersRequest.Builder get() { + return ListUsersRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListUsersResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListUsersRequest.Builder>, + ListUsersRequest>() { + @Override + public ListUsersRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListUsersRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function() { + @Override + public ListUsersResponse apply(ListUsersRequest request) { + return client.listUsers(request); + } + }, + new com.google.common.base.Function< + ListUsersResponse, java.util.List>() { + @Override + public java.util.List apply( + ListUsersResponse response) { + return response.getItems(); + } + }); + } +} diff --git a/bmc-loadbalancer/pom.xml b/bmc-loadbalancer/pom.xml index 6bab50597fc..43403458055 100644 --- a/bmc-loadbalancer/pom.xml +++ b/bmc-loadbalancer/pom.xml @@ -5,7 +5,7 @@ com.oracle.oci.sdk oci-java-sdk - 1.2.27 + 1.2.28 ../pom.xml @@ -18,7 +18,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 1.2.27 + 1.2.28 diff --git a/bmc-loadbalancer/src/main/java/com/oracle/bmc/loadbalancer/LoadBalancer.java b/bmc-loadbalancer/src/main/java/com/oracle/bmc/loadbalancer/LoadBalancer.java index daddde9cb27..81528f5eaa8 100644 --- a/bmc-loadbalancer/src/main/java/com/oracle/bmc/loadbalancer/LoadBalancer.java +++ b/bmc-loadbalancer/src/main/java/com/oracle/bmc/loadbalancer/LoadBalancer.java @@ -380,4 +380,13 @@ public interface LoadBalancer extends AutoCloseable { * @return The service waiters. */ LoadBalancerWaiters getWaiters(); + + /** + * Gets the pre-configured paginators available for list operations in this service which may return multiple + * pages of data. These paginators provide an {@link java.lang.Iterable} interface so that service responses, or + * resources/records, can be iterated through without having to manually deal with pagination and page tokens. + * + * @return The service paginators. + */ + LoadBalancerPaginators getPaginators(); } diff --git a/bmc-loadbalancer/src/main/java/com/oracle/bmc/loadbalancer/LoadBalancerClient.java b/bmc-loadbalancer/src/main/java/com/oracle/bmc/loadbalancer/LoadBalancerClient.java index 2d7bc092d87..035841c65da 100644 --- a/bmc-loadbalancer/src/main/java/com/oracle/bmc/loadbalancer/LoadBalancerClient.java +++ b/bmc-loadbalancer/src/main/java/com/oracle/bmc/loadbalancer/LoadBalancerClient.java @@ -16,10 +16,11 @@ public class LoadBalancerClient implements LoadBalancer { */ public static final com.oracle.bmc.Service SERVICE = com.oracle.bmc.Services.create("LOADBALANCER", "iaas"); + // attempt twice if it's instance principals, immediately failures will try to refresh the token + private static final int MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS = 2; - private final java.util.concurrent.ExecutorService executorService = - java.util.concurrent.Executors.newFixedThreadPool(50); private final LoadBalancerWaiters waiters; + private final LoadBalancerPaginators paginators; @lombok.Getter(value = lombok.AccessLevel.PACKAGE) private final com.oracle.bmc.http.internal.RestClient client; @@ -106,6 +107,8 @@ public LoadBalancerClient( this.waiters = new LoadBalancerWaiters(executorService, this); + this.paginators = new LoadBalancerPaginators(this); + if (this.authenticationDetailsProvider instanceof com.oracle.bmc.auth.RegionProvider) { com.oracle.bmc.auth.RegionProvider provider = (com.oracle.bmc.auth.RegionProvider) this.authenticationDetailsProvider; @@ -160,28 +163,20 @@ public CreateBackendResponse createBackend(CreateBackendRequest request) { com.google.common.base.Function transformer = CreateBackendConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.post(ib, request.getCreateBackendDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateBackendDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateBackendDetails(), request); - return transformer.apply(response); } } @@ -194,28 +189,20 @@ public CreateBackendSetResponse createBackendSet(CreateBackendSetRequest request com.google.common.base.Function transformer = CreateBackendSetConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.post(ib, request.getCreateBackendSetDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateBackendSetDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateBackendSetDetails(), request); - return transformer.apply(response); } } @@ -228,28 +215,20 @@ public CreateCertificateResponse createCertificate(CreateCertificateRequest requ com.google.common.base.Function transformer = CreateCertificateConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.post(ib, request.getCreateCertificateDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateCertificateDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateCertificateDetails(), request); - return transformer.apply(response); } } @@ -262,28 +241,20 @@ public CreateListenerResponse createListener(CreateListenerRequest request) { com.google.common.base.Function transformer = CreateListenerConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.post(ib, request.getCreateListenerDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateListenerDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateListenerDetails(), request); - return transformer.apply(response); } } @@ -296,28 +267,20 @@ public CreateLoadBalancerResponse createLoadBalancer(CreateLoadBalancerRequest r com.google.common.base.Function transformer = CreateLoadBalancerConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.post(ib, request.getCreateLoadBalancerDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateLoadBalancerDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateLoadBalancerDetails(), request); - return transformer.apply(response); } } @@ -330,28 +293,20 @@ public CreatePathRouteSetResponse createPathRouteSet(CreatePathRouteSetRequest r com.google.common.base.Function transformer = CreatePathRouteSetConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.post(ib, request.getCreatePathRouteSetDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.post(ib, request.getCreatePathRouteSetDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.post(ib, request.getCreatePathRouteSetDetails(), request); - return transformer.apply(response); } } @@ -364,25 +319,19 @@ public DeleteBackendResponse deleteBackend(DeleteBackendRequest request) { com.google.common.base.Function transformer = DeleteBackendConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.delete(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); } } @@ -395,25 +344,19 @@ public DeleteBackendSetResponse deleteBackendSet(DeleteBackendSetRequest request com.google.common.base.Function transformer = DeleteBackendSetConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.delete(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); } } @@ -426,25 +369,19 @@ public DeleteCertificateResponse deleteCertificate(DeleteCertificateRequest requ com.google.common.base.Function transformer = DeleteCertificateConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.delete(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); } } @@ -457,25 +394,19 @@ public DeleteListenerResponse deleteListener(DeleteListenerRequest request) { com.google.common.base.Function transformer = DeleteListenerConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.delete(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); } } @@ -488,25 +419,19 @@ public DeleteLoadBalancerResponse deleteLoadBalancer(DeleteLoadBalancerRequest r com.google.common.base.Function transformer = DeleteLoadBalancerConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.delete(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); } } @@ -519,25 +444,19 @@ public DeletePathRouteSetResponse deletePathRouteSet(DeletePathRouteSetRequest r com.google.common.base.Function transformer = DeletePathRouteSetConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.delete(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); } } @@ -550,25 +469,19 @@ public GetBackendResponse getBackend(GetBackendRequest request) { com.google.common.base.Function transformer = GetBackendConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -581,25 +494,19 @@ public GetBackendHealthResponse getBackendHealth(GetBackendHealthRequest request com.google.common.base.Function transformer = GetBackendHealthConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -612,25 +519,19 @@ public GetBackendSetResponse getBackendSet(GetBackendSetRequest request) { com.google.common.base.Function transformer = GetBackendSetConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -643,25 +544,19 @@ public GetBackendSetHealthResponse getBackendSetHealth(GetBackendSetHealthReques com.google.common.base.Function transformer = GetBackendSetHealthConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -674,25 +569,19 @@ public GetHealthCheckerResponse getHealthChecker(GetHealthCheckerRequest request com.google.common.base.Function transformer = GetHealthCheckerConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -705,25 +594,19 @@ public GetLoadBalancerResponse getLoadBalancer(GetLoadBalancerRequest request) { com.google.common.base.Function transformer = GetLoadBalancerConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -737,25 +620,19 @@ public GetLoadBalancerHealthResponse getLoadBalancerHealth( com.google.common.base.Function transformer = GetLoadBalancerHealthConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -768,25 +645,19 @@ public GetPathRouteSetResponse getPathRouteSet(GetPathRouteSetRequest request) { com.google.common.base.Function transformer = GetPathRouteSetConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -799,25 +670,19 @@ public GetWorkRequestResponse getWorkRequest(GetWorkRequestRequest request) { com.google.common.base.Function transformer = GetWorkRequestConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -830,25 +695,19 @@ public ListBackendSetsResponse listBackendSets(ListBackendSetsRequest request) { com.google.common.base.Function transformer = ListBackendSetsConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -861,25 +720,19 @@ public ListBackendsResponse listBackends(ListBackendsRequest request) { com.google.common.base.Function transformer = ListBackendsConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -892,25 +745,19 @@ public ListCertificatesResponse listCertificates(ListCertificatesRequest request com.google.common.base.Function transformer = ListCertificatesConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -924,25 +771,19 @@ public ListLoadBalancerHealthsResponse listLoadBalancerHealths( com.google.common.base.Function transformer = ListLoadBalancerHealthsConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -955,25 +796,19 @@ public ListLoadBalancersResponse listLoadBalancers(ListLoadBalancersRequest requ com.google.common.base.Function transformer = ListLoadBalancersConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -986,25 +821,19 @@ public ListPathRouteSetsResponse listPathRouteSets(ListPathRouteSetsRequest requ com.google.common.base.Function transformer = ListPathRouteSetsConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -1017,25 +846,19 @@ public ListPoliciesResponse listPolicies(ListPoliciesRequest request) { com.google.common.base.Function transformer = ListPoliciesConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -1048,25 +871,19 @@ public ListProtocolsResponse listProtocols(ListProtocolsRequest request) { com.google.common.base.Function transformer = ListProtocolsConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -1079,25 +896,19 @@ public ListShapesResponse listShapes(ListShapesRequest request) { com.google.common.base.Function transformer = ListShapesConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -1110,25 +921,19 @@ public ListWorkRequestsResponse listWorkRequests(ListWorkRequestsRequest request com.google.common.base.Function transformer = ListWorkRequestsConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -1141,28 +946,20 @@ public UpdateBackendResponse updateBackend(UpdateBackendRequest request) { com.google.common.base.Function transformer = UpdateBackendConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.put(ib, request.getUpdateBackendDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateBackendDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateBackendDetails(), request); - return transformer.apply(response); } } @@ -1175,28 +972,20 @@ public UpdateBackendSetResponse updateBackendSet(UpdateBackendSetRequest request com.google.common.base.Function transformer = UpdateBackendSetConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.put(ib, request.getUpdateBackendSetDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateBackendSetDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateBackendSetDetails(), request); - return transformer.apply(response); } } @@ -1209,28 +998,20 @@ public UpdateHealthCheckerResponse updateHealthChecker(UpdateHealthCheckerReques com.google.common.base.Function transformer = UpdateHealthCheckerConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.put(ib, request.getHealthChecker(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.put(ib, request.getHealthChecker(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.put(ib, request.getHealthChecker(), request); - return transformer.apply(response); } } @@ -1243,28 +1024,20 @@ public UpdateListenerResponse updateListener(UpdateListenerRequest request) { com.google.common.base.Function transformer = UpdateListenerConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.put(ib, request.getUpdateListenerDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateListenerDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateListenerDetails(), request); - return transformer.apply(response); } } @@ -1277,28 +1050,20 @@ public UpdateLoadBalancerResponse updateLoadBalancer(UpdateLoadBalancerRequest r com.google.common.base.Function transformer = UpdateLoadBalancerConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.put(ib, request.getUpdateLoadBalancerDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateLoadBalancerDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateLoadBalancerDetails(), request); - return transformer.apply(response); } } @@ -1311,33 +1076,43 @@ public UpdatePathRouteSetResponse updatePathRouteSet(UpdatePathRouteSetRequest r com.google.common.base.Function transformer = UpdatePathRouteSetConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.put(ib, request.getUpdatePathRouteSetDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdatePathRouteSetDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdatePathRouteSetDetails(), request); - return transformer.apply(response); } } + private boolean canRetryRequestIfInstancePrincipalsUsed(com.oracle.bmc.model.BmcException e) { + if (e.getStatusCode() == 401 + && this.authenticationDetailsProvider + instanceof + com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) + this.authenticationDetailsProvider) + .refreshSecurityToken(); + return true; + } + return false; + } + @Override public LoadBalancerWaiters getWaiters() { return waiters; } + + @Override + public LoadBalancerPaginators getPaginators() { + return paginators; + } } diff --git a/bmc-loadbalancer/src/main/java/com/oracle/bmc/loadbalancer/LoadBalancerPaginators.java b/bmc-loadbalancer/src/main/java/com/oracle/bmc/loadbalancer/LoadBalancerPaginators.java new file mode 100644 index 00000000000..2fef22d3867 --- /dev/null +++ b/bmc-loadbalancer/src/main/java/com/oracle/bmc/loadbalancer/LoadBalancerPaginators.java @@ -0,0 +1,704 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.loadbalancer; + +import com.oracle.bmc.loadbalancer.requests.*; +import com.oracle.bmc.loadbalancer.responses.*; + +/** + * Collection of helper methods that can be used to provide an {@link java.lang.Iterable} interface + * to any list operations of LoadBalancer where multiple pages of data may be fetched. + * Two styles of iteration are supported: + * + *
            + *
          • Iterating over the Response objects returned by the list operation. These are referred to as ResponseIterators, and the methods are suffixed with ResponseIterator. For example: listUsersResponseIterator
          • + *
          • Iterating over the resources/records being listed. These are referred to as RecordIterators, and the methods are suffixed with RecordIterator. For example: listUsersRecordIterator
          • + *
          + * + * These iterables abstract away the need to write code to manually handle pagination via looping and using the page tokens. + * They will automatically fetch more data from the service when required. + * + * As an example, if we were using the ListUsers operation in IdentityService, then the {@link java.lang.Interable} returned by calling a + * ResponseIterator method would iterate over the ListUsersResponse objects returned by each ListUsers call, whereas the {@link java.lang.Iterable} + * returned by calling a RecordIterator method would iterate over the User records and we don't have to deal with ListUsersResponse objects at all. + * In either case, pagination will be automatically handled so we can iterate until there are no more responses or no more resources/records available. + */ +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20170115") +@lombok.RequiredArgsConstructor +public class LoadBalancerPaginators { + private final LoadBalancer client; + + /** + * Creates a new iterable which will iterate over the responses received from the listLoadBalancerHealths operation. This iterable + * will fetch more data from the server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the responses received from the service. + */ + public Iterable listLoadBalancerHealthsResponseIterator( + final ListLoadBalancerHealthsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseIterable< + ListLoadBalancerHealthsRequest.Builder, ListLoadBalancerHealthsRequest, + ListLoadBalancerHealthsResponse>( + new com.google.common.base.Supplier() { + @Override + public ListLoadBalancerHealthsRequest.Builder get() { + return ListLoadBalancerHealthsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListLoadBalancerHealthsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListLoadBalancerHealthsRequest.Builder>, + ListLoadBalancerHealthsRequest>() { + @Override + public ListLoadBalancerHealthsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListLoadBalancerHealthsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListLoadBalancerHealthsRequest, ListLoadBalancerHealthsResponse>() { + @Override + public ListLoadBalancerHealthsResponse apply( + ListLoadBalancerHealthsRequest request) { + return client.listLoadBalancerHealths(request); + } + }); + } + + /** + * Creates a new iterable which will iterate over the {@link com.oracle.bmc.loadbalancer.model.LoadBalancerHealthSummary} objects + * contained in responses from the listLoadBalancerHealths operation. This iterable will fetch more data from the + * server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link com.oracle.bmc.loadbalancer.model.LoadBalancerHealthSummary} objects + * contained in responses received from the service. + */ + public Iterable + listLoadBalancerHealthsRecordIterator(final ListLoadBalancerHealthsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseRecordIterable< + ListLoadBalancerHealthsRequest.Builder, ListLoadBalancerHealthsRequest, + ListLoadBalancerHealthsResponse, + com.oracle.bmc.loadbalancer.model.LoadBalancerHealthSummary>( + new com.google.common.base.Supplier() { + @Override + public ListLoadBalancerHealthsRequest.Builder get() { + return ListLoadBalancerHealthsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListLoadBalancerHealthsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListLoadBalancerHealthsRequest.Builder>, + ListLoadBalancerHealthsRequest>() { + @Override + public ListLoadBalancerHealthsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListLoadBalancerHealthsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListLoadBalancerHealthsRequest, ListLoadBalancerHealthsResponse>() { + @Override + public ListLoadBalancerHealthsResponse apply( + ListLoadBalancerHealthsRequest request) { + return client.listLoadBalancerHealths(request); + } + }, + new com.google.common.base.Function< + ListLoadBalancerHealthsResponse, + java.util.List< + com.oracle.bmc.loadbalancer.model.LoadBalancerHealthSummary>>() { + @Override + public java.util.List< + com.oracle.bmc.loadbalancer.model.LoadBalancerHealthSummary> + apply(ListLoadBalancerHealthsResponse response) { + return response.getItems(); + } + }); + } + + /** + * Creates a new iterable which will iterate over the responses received from the listLoadBalancers operation. This iterable + * will fetch more data from the server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the responses received from the service. + */ + public Iterable listLoadBalancersResponseIterator( + final ListLoadBalancersRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseIterable< + ListLoadBalancersRequest.Builder, ListLoadBalancersRequest, + ListLoadBalancersResponse>( + new com.google.common.base.Supplier() { + @Override + public ListLoadBalancersRequest.Builder get() { + return ListLoadBalancersRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListLoadBalancersResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListLoadBalancersRequest.Builder>, + ListLoadBalancersRequest>() { + @Override + public ListLoadBalancersRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListLoadBalancersRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListLoadBalancersRequest, ListLoadBalancersResponse>() { + @Override + public ListLoadBalancersResponse apply(ListLoadBalancersRequest request) { + return client.listLoadBalancers(request); + } + }); + } + + /** + * Creates a new iterable which will iterate over the {@link com.oracle.bmc.loadbalancer.model.LoadBalancer} objects + * contained in responses from the listLoadBalancers operation. This iterable will fetch more data from the + * server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link com.oracle.bmc.loadbalancer.model.LoadBalancer} objects + * contained in responses received from the service. + */ + public Iterable listLoadBalancersRecordIterator( + final ListLoadBalancersRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseRecordIterable< + ListLoadBalancersRequest.Builder, ListLoadBalancersRequest, + ListLoadBalancersResponse, com.oracle.bmc.loadbalancer.model.LoadBalancer>( + new com.google.common.base.Supplier() { + @Override + public ListLoadBalancersRequest.Builder get() { + return ListLoadBalancersRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListLoadBalancersResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListLoadBalancersRequest.Builder>, + ListLoadBalancersRequest>() { + @Override + public ListLoadBalancersRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListLoadBalancersRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListLoadBalancersRequest, ListLoadBalancersResponse>() { + @Override + public ListLoadBalancersResponse apply(ListLoadBalancersRequest request) { + return client.listLoadBalancers(request); + } + }, + new com.google.common.base.Function< + ListLoadBalancersResponse, + java.util.List>() { + @Override + public java.util.List apply( + ListLoadBalancersResponse response) { + return response.getItems(); + } + }); + } + + /** + * Creates a new iterable which will iterate over the responses received from the listPolicies operation. This iterable + * will fetch more data from the server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the responses received from the service. + */ + public Iterable listPoliciesResponseIterator( + final ListPoliciesRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseIterable< + ListPoliciesRequest.Builder, ListPoliciesRequest, ListPoliciesResponse>( + new com.google.common.base.Supplier() { + @Override + public ListPoliciesRequest.Builder get() { + return ListPoliciesRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListPoliciesResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListPoliciesRequest.Builder>, + ListPoliciesRequest>() { + @Override + public ListPoliciesRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListPoliciesRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function() { + @Override + public ListPoliciesResponse apply(ListPoliciesRequest request) { + return client.listPolicies(request); + } + }); + } + + /** + * Creates a new iterable which will iterate over the {@link com.oracle.bmc.loadbalancer.model.LoadBalancerPolicy} objects + * contained in responses from the listPolicies operation. This iterable will fetch more data from the + * server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link com.oracle.bmc.loadbalancer.model.LoadBalancerPolicy} objects + * contained in responses received from the service. + */ + public Iterable + listPoliciesRecordIterator(final ListPoliciesRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseRecordIterable< + ListPoliciesRequest.Builder, ListPoliciesRequest, ListPoliciesResponse, + com.oracle.bmc.loadbalancer.model.LoadBalancerPolicy>( + new com.google.common.base.Supplier() { + @Override + public ListPoliciesRequest.Builder get() { + return ListPoliciesRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListPoliciesResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListPoliciesRequest.Builder>, + ListPoliciesRequest>() { + @Override + public ListPoliciesRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListPoliciesRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function() { + @Override + public ListPoliciesResponse apply(ListPoliciesRequest request) { + return client.listPolicies(request); + } + }, + new com.google.common.base.Function< + ListPoliciesResponse, + java.util.List>() { + @Override + public java.util.List + apply(ListPoliciesResponse response) { + return response.getItems(); + } + }); + } + + /** + * Creates a new iterable which will iterate over the responses received from the listProtocols operation. This iterable + * will fetch more data from the server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the responses received from the service. + */ + public Iterable listProtocolsResponseIterator( + final ListProtocolsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseIterable< + ListProtocolsRequest.Builder, ListProtocolsRequest, ListProtocolsResponse>( + new com.google.common.base.Supplier() { + @Override + public ListProtocolsRequest.Builder get() { + return ListProtocolsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListProtocolsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListProtocolsRequest.Builder>, + ListProtocolsRequest>() { + @Override + public ListProtocolsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListProtocolsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function() { + @Override + public ListProtocolsResponse apply(ListProtocolsRequest request) { + return client.listProtocols(request); + } + }); + } + + /** + * Creates a new iterable which will iterate over the {@link com.oracle.bmc.loadbalancer.model.LoadBalancerProtocol} objects + * contained in responses from the listProtocols operation. This iterable will fetch more data from the + * server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link com.oracle.bmc.loadbalancer.model.LoadBalancerProtocol} objects + * contained in responses received from the service. + */ + public Iterable + listProtocolsRecordIterator(final ListProtocolsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseRecordIterable< + ListProtocolsRequest.Builder, ListProtocolsRequest, ListProtocolsResponse, + com.oracle.bmc.loadbalancer.model.LoadBalancerProtocol>( + new com.google.common.base.Supplier() { + @Override + public ListProtocolsRequest.Builder get() { + return ListProtocolsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListProtocolsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListProtocolsRequest.Builder>, + ListProtocolsRequest>() { + @Override + public ListProtocolsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListProtocolsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function() { + @Override + public ListProtocolsResponse apply(ListProtocolsRequest request) { + return client.listProtocols(request); + } + }, + new com.google.common.base.Function< + ListProtocolsResponse, + java.util.List>() { + @Override + public java.util.List + apply(ListProtocolsResponse response) { + return response.getItems(); + } + }); + } + + /** + * Creates a new iterable which will iterate over the responses received from the listShapes operation. This iterable + * will fetch more data from the server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the responses received from the service. + */ + public Iterable listShapesResponseIterator( + final ListShapesRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseIterable< + ListShapesRequest.Builder, ListShapesRequest, ListShapesResponse>( + new com.google.common.base.Supplier() { + @Override + public ListShapesRequest.Builder get() { + return ListShapesRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListShapesResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListShapesRequest.Builder>, + ListShapesRequest>() { + @Override + public ListShapesRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListShapesRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function() { + @Override + public ListShapesResponse apply(ListShapesRequest request) { + return client.listShapes(request); + } + }); + } + + /** + * Creates a new iterable which will iterate over the {@link com.oracle.bmc.loadbalancer.model.LoadBalancerShape} objects + * contained in responses from the listShapes operation. This iterable will fetch more data from the + * server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link com.oracle.bmc.loadbalancer.model.LoadBalancerShape} objects + * contained in responses received from the service. + */ + public Iterable listShapesRecordIterator( + final ListShapesRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseRecordIterable< + ListShapesRequest.Builder, ListShapesRequest, ListShapesResponse, + com.oracle.bmc.loadbalancer.model.LoadBalancerShape>( + new com.google.common.base.Supplier() { + @Override + public ListShapesRequest.Builder get() { + return ListShapesRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListShapesResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListShapesRequest.Builder>, + ListShapesRequest>() { + @Override + public ListShapesRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListShapesRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function() { + @Override + public ListShapesResponse apply(ListShapesRequest request) { + return client.listShapes(request); + } + }, + new com.google.common.base.Function< + ListShapesResponse, + java.util.List>() { + @Override + public java.util.List + apply(ListShapesResponse response) { + return response.getItems(); + } + }); + } + + /** + * Creates a new iterable which will iterate over the responses received from the listWorkRequests operation. This iterable + * will fetch more data from the server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the responses received from the service. + */ + public Iterable listWorkRequestsResponseIterator( + final ListWorkRequestsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseIterable< + ListWorkRequestsRequest.Builder, ListWorkRequestsRequest, ListWorkRequestsResponse>( + new com.google.common.base.Supplier() { + @Override + public ListWorkRequestsRequest.Builder get() { + return ListWorkRequestsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListWorkRequestsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListWorkRequestsRequest.Builder>, + ListWorkRequestsRequest>() { + @Override + public ListWorkRequestsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListWorkRequestsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListWorkRequestsRequest, ListWorkRequestsResponse>() { + @Override + public ListWorkRequestsResponse apply(ListWorkRequestsRequest request) { + return client.listWorkRequests(request); + } + }); + } + + /** + * Creates a new iterable which will iterate over the {@link com.oracle.bmc.loadbalancer.model.WorkRequest} objects + * contained in responses from the listWorkRequests operation. This iterable will fetch more data from the + * server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link com.oracle.bmc.loadbalancer.model.WorkRequest} objects + * contained in responses received from the service. + */ + public Iterable listWorkRequestsRecordIterator( + final ListWorkRequestsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseRecordIterable< + ListWorkRequestsRequest.Builder, ListWorkRequestsRequest, ListWorkRequestsResponse, + com.oracle.bmc.loadbalancer.model.WorkRequest>( + new com.google.common.base.Supplier() { + @Override + public ListWorkRequestsRequest.Builder get() { + return ListWorkRequestsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListWorkRequestsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListWorkRequestsRequest.Builder>, + ListWorkRequestsRequest>() { + @Override + public ListWorkRequestsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListWorkRequestsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListWorkRequestsRequest, ListWorkRequestsResponse>() { + @Override + public ListWorkRequestsResponse apply(ListWorkRequestsRequest request) { + return client.listWorkRequests(request); + } + }, + new com.google.common.base.Function< + ListWorkRequestsResponse, + java.util.List>() { + @Override + public java.util.List apply( + ListWorkRequestsResponse response) { + return response.getItems(); + } + }); + } +} diff --git a/bmc-objectstorage/bmc-objectstorage-combined/pom.xml b/bmc-objectstorage/bmc-objectstorage-combined/pom.xml index 7e14a5a05e5..68727bbe775 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 - 1.2.27 + 1.2.28 ../pom.xml @@ -47,14 +47,14 @@ com.oracle.oci.sdk oci-java-sdk-objectstorage-generated - 1.2.27 + 1.2.28 jar compile com.oracle.oci.sdk oci-java-sdk-objectstorage-extensions - 1.2.27 + 1.2.28 jar compile diff --git a/bmc-objectstorage/bmc-objectstorage-extensions/pom.xml b/bmc-objectstorage/bmc-objectstorage-extensions/pom.xml index bd5295e62d7..27d71ba63bb 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 - 1.2.27 + 1.2.28 ../pom.xml @@ -18,12 +18,12 @@ com.oracle.oci.sdk oci-java-sdk-common - 1.2.27 + 1.2.28 com.oracle.oci.sdk oci-java-sdk-objectstorage-generated - 1.2.27 + 1.2.28 diff --git a/bmc-objectstorage/bmc-objectstorage-generated/pom.xml b/bmc-objectstorage/bmc-objectstorage-generated/pom.xml index 800892dd0e8..01beac1f804 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 - 1.2.27 + 1.2.28 ../pom.xml @@ -18,7 +18,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 1.2.27 + 1.2.28 diff --git a/bmc-objectstorage/bmc-objectstorage-generated/src/main/java/com/oracle/bmc/objectstorage/ObjectStorage.java b/bmc-objectstorage/bmc-objectstorage-generated/src/main/java/com/oracle/bmc/objectstorage/ObjectStorage.java index b4f016599b3..8ebca770aee 100644 --- a/bmc-objectstorage/bmc-objectstorage-generated/src/main/java/com/oracle/bmc/objectstorage/ObjectStorage.java +++ b/bmc-objectstorage/bmc-objectstorage-generated/src/main/java/com/oracle/bmc/objectstorage/ObjectStorage.java @@ -252,6 +252,7 @@ ListPreauthenticatedRequestsResponse listPreauthenticatedRequests( /** * Restore one or more objects specified by objectName parameter. + * By default object will be restored for 24 hours.Duration can be configured using hours parameter. * * @param request The request object containing the details to send * @return A response object containing details about the completed operation @@ -288,4 +289,13 @@ ListPreauthenticatedRequestsResponse listPreauthenticatedRequests( * @throws BmcException when an error occurs. */ UploadPartResponse uploadPart(UploadPartRequest request); + + /** + * Gets the pre-configured paginators available for list operations in this service which may return multiple + * pages of data. These paginators provide an {@link java.lang.Iterable} interface so that service responses, or + * resources/records, can be iterated through without having to manually deal with pagination and page tokens. + * + * @return The service paginators. + */ + ObjectStoragePaginators getPaginators(); } diff --git a/bmc-objectstorage/bmc-objectstorage-generated/src/main/java/com/oracle/bmc/objectstorage/ObjectStorageAsync.java b/bmc-objectstorage/bmc-objectstorage-generated/src/main/java/com/oracle/bmc/objectstorage/ObjectStorageAsync.java index 7878fbc93fa..7072cf8b7c5 100644 --- a/bmc-objectstorage/bmc-objectstorage-generated/src/main/java/com/oracle/bmc/objectstorage/ObjectStorageAsync.java +++ b/bmc-objectstorage/bmc-objectstorage-generated/src/main/java/com/oracle/bmc/objectstorage/ObjectStorageAsync.java @@ -409,6 +409,7 @@ java.util.concurrent.Future renameObject( /** * Restore one or more objects specified by objectName parameter. + * By default object will be restored for 24 hours.Duration can be configured using hours parameter. * * * @param request The request object containing the details to send diff --git a/bmc-objectstorage/bmc-objectstorage-generated/src/main/java/com/oracle/bmc/objectstorage/ObjectStorageClient.java b/bmc-objectstorage/bmc-objectstorage-generated/src/main/java/com/oracle/bmc/objectstorage/ObjectStorageClient.java index b8eb2b4b387..287809fa7eb 100644 --- a/bmc-objectstorage/bmc-objectstorage-generated/src/main/java/com/oracle/bmc/objectstorage/ObjectStorageClient.java +++ b/bmc-objectstorage/bmc-objectstorage-generated/src/main/java/com/oracle/bmc/objectstorage/ObjectStorageClient.java @@ -16,6 +16,10 @@ public class ObjectStorageClient implements ObjectStorage { */ public static final com.oracle.bmc.Service SERVICE = com.oracle.bmc.Services.create("OBJECTSTORAGE", "objectstorage"); + // attempt twice if it's instance principals, immediately failures will try to refresh the token + private static final int MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS = 2; + + private final ObjectStoragePaginators paginators; @lombok.Getter(value = lombok.AccessLevel.PACKAGE) private final com.oracle.bmc.http.internal.RestClient client; @@ -89,6 +93,8 @@ public ObjectStorageClient( SERVICE, this.authenticationDetailsProvider); this.client = restClientFactory.create(requestSigner, configuration); + this.paginators = new ObjectStoragePaginators(this); + if (this.authenticationDetailsProvider instanceof com.oracle.bmc.auth.RegionProvider) { com.oracle.bmc.auth.RegionProvider provider = (com.oracle.bmc.auth.RegionProvider) this.authenticationDetailsProvider; @@ -143,25 +149,19 @@ public AbortMultipartUploadResponse abortMultipartUpload(AbortMultipartUploadReq com.google.common.base.Function transformer = AbortMultipartUploadConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.delete(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); } } @@ -175,28 +175,20 @@ public CommitMultipartUploadResponse commitMultipartUpload( com.google.common.base.Function transformer = CommitMultipartUploadConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.post(ib, request.getCommitMultipartUploadDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.post(ib, request.getCommitMultipartUploadDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.post(ib, request.getCommitMultipartUploadDetails(), request); - return transformer.apply(response); } } @@ -209,28 +201,20 @@ public CreateBucketResponse createBucket(CreateBucketRequest request) { com.google.common.base.Function transformer = CreateBucketConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.post(ib, request.getCreateBucketDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateBucketDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateBucketDetails(), request); - return transformer.apply(response); } } @@ -244,28 +228,20 @@ public CreateMultipartUploadResponse createMultipartUpload( com.google.common.base.Function transformer = CreateMultipartUploadConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.post(ib, request.getCreateMultipartUploadDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateMultipartUploadDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.post(ib, request.getCreateMultipartUploadDetails(), request); - return transformer.apply(response); } } @@ -280,29 +256,20 @@ public CreatePreauthenticatedRequestResponse createPreauthenticatedRequest( javax.ws.rs.core.Response, CreatePreauthenticatedRequestResponse> transformer = CreatePreauthenticatedRequestConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.post(ib, request.getCreatePreauthenticatedRequestDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.post( - ib, request.getCreatePreauthenticatedRequestDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.post(ib, request.getCreatePreauthenticatedRequestDetails(), request); - return transformer.apply(response); } } @@ -315,25 +282,19 @@ public DeleteBucketResponse deleteBucket(DeleteBucketRequest request) { com.google.common.base.Function transformer = DeleteBucketConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.delete(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); } } @@ -346,25 +307,19 @@ public DeleteObjectResponse deleteObject(DeleteObjectRequest request) { com.google.common.base.Function transformer = DeleteObjectConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.delete(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); } } @@ -379,25 +334,19 @@ public DeletePreauthenticatedRequestResponse deletePreauthenticatedRequest( javax.ws.rs.core.Response, DeletePreauthenticatedRequestResponse> transformer = DeletePreauthenticatedRequestConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.delete(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.delete(ib, request); - return transformer.apply(response); } } @@ -410,25 +359,19 @@ public GetBucketResponse getBucket(GetBucketRequest request) { com.google.common.base.Function transformer = GetBucketConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -441,25 +384,19 @@ public GetNamespaceResponse getNamespace(GetNamespaceRequest request) { com.google.common.base.Function transformer = GetNamespaceConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -472,25 +409,19 @@ public GetNamespaceMetadataResponse getNamespaceMetadata(GetNamespaceMetadataReq com.google.common.base.Function transformer = GetNamespaceMetadataConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -503,25 +434,19 @@ public GetObjectResponse getObject(GetObjectRequest request) { com.google.common.base.Function transformer = GetObjectConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -536,25 +461,19 @@ public GetPreauthenticatedRequestResponse getPreauthenticatedRequest( javax.ws.rs.core.Response, GetPreauthenticatedRequestResponse> transformer = GetPreauthenticatedRequestConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -567,25 +486,19 @@ public HeadBucketResponse headBucket(HeadBucketRequest request) { com.google.common.base.Function transformer = HeadBucketConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.head(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.head(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.head(ib, request); - return transformer.apply(response); } } @@ -598,25 +511,19 @@ public HeadObjectResponse headObject(HeadObjectRequest request) { com.google.common.base.Function transformer = HeadObjectConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.head(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.head(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.head(ib, request); - return transformer.apply(response); } } @@ -629,25 +536,19 @@ public ListBucketsResponse listBuckets(ListBucketsRequest request) { com.google.common.base.Function transformer = ListBucketsConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -661,25 +562,19 @@ public ListMultipartUploadPartsResponse listMultipartUploadParts( com.google.common.base.Function transformer = ListMultipartUploadPartsConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -692,25 +587,19 @@ public ListMultipartUploadsResponse listMultipartUploads(ListMultipartUploadsReq com.google.common.base.Function transformer = ListMultipartUploadsConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -723,25 +612,19 @@ public ListObjectsResponse listObjects(ListObjectsRequest request) { com.google.common.base.Function transformer = ListObjectsConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -756,25 +639,19 @@ public ListPreauthenticatedRequestsResponse listPreauthenticatedRequests( javax.ws.rs.core.Response, ListPreauthenticatedRequestsResponse> transformer = ListPreauthenticatedRequestsConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.get(ib, request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = client.get(ib, request); - return transformer.apply(response); } } @@ -787,28 +664,20 @@ public PutObjectResponse putObject(PutObjectRequest request) { com.google.common.base.Function transformer = PutObjectConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.put(ib, request.getPutObjectBody(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.put(ib, request.getPutObjectBody(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.put(ib, request.getPutObjectBody(), request); - return transformer.apply(response); } } @@ -821,28 +690,20 @@ public RenameObjectResponse renameObject(RenameObjectRequest request) { com.google.common.base.Function transformer = RenameObjectConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.post(ib, request.getRenameObjectDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.post(ib, request.getRenameObjectDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.post(ib, request.getRenameObjectDetails(), request); - return transformer.apply(response); } } @@ -855,28 +716,20 @@ public RestoreObjectsResponse restoreObjects(RestoreObjectsRequest request) { com.google.common.base.Function transformer = RestoreObjectsConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.post(ib, request.getRestoreObjectsDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.post(ib, request.getRestoreObjectsDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.post(ib, request.getRestoreObjectsDetails(), request); - return transformer.apply(response); } } @@ -889,28 +742,20 @@ public UpdateBucketResponse updateBucket(UpdateBucketRequest request) { com.google.common.base.Function transformer = UpdateBucketConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.post(ib, request.getUpdateBucketDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.post(ib, request.getUpdateBucketDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.post(ib, request.getUpdateBucketDetails(), request); - return transformer.apply(response); } } @@ -924,28 +769,20 @@ public UpdateNamespaceMetadataResponse updateNamespaceMetadata( com.google.common.base.Function transformer = UpdateNamespaceMetadataConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.put(ib, request.getUpdateNamespaceMetadataDetails(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateNamespaceMetadataDetails(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.put(ib, request.getUpdateNamespaceMetadataDetails(), request); - return transformer.apply(response); } } @@ -958,28 +795,38 @@ public UploadPartResponse uploadPart(UploadPartRequest request) { com.google.common.base.Function transformer = UploadPartConverter.fromResponse(); - if (this.authenticationDetailsProvider - instanceof com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + int attempts = 0; + while (true) { try { javax.ws.rs.core.Response response = client.put(ib, request.getUploadPartBody(), request); return transformer.apply(response); } catch (com.oracle.bmc.model.BmcException e) { - if (e.getStatusCode() == 401) { - ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) - this.authenticationDetailsProvider) - .refreshSecurityToken(); - javax.ws.rs.core.Response response = - client.put(ib, request.getUploadPartBody(), request); - return transformer.apply(response); + if (++attempts < MAX_IMMEDIATE_RETRIES_IF_USING_INSTANCE_PRINCIPALS + && canRetryRequestIfInstancePrincipalsUsed(e)) { + continue; } else { throw e; } } - } else { - javax.ws.rs.core.Response response = - client.put(ib, request.getUploadPartBody(), request); - return transformer.apply(response); } } + + private boolean canRetryRequestIfInstancePrincipalsUsed(com.oracle.bmc.model.BmcException e) { + if (e.getStatusCode() == 401 + && this.authenticationDetailsProvider + instanceof + com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) { + ((com.oracle.bmc.auth.InstancePrincipalsAuthenticationDetailsProvider) + this.authenticationDetailsProvider) + .refreshSecurityToken(); + return true; + } + return false; + } + + @Override + public ObjectStoragePaginators getPaginators() { + return paginators; + } } diff --git a/bmc-objectstorage/bmc-objectstorage-generated/src/main/java/com/oracle/bmc/objectstorage/ObjectStoragePaginators.java b/bmc-objectstorage/bmc-objectstorage-generated/src/main/java/com/oracle/bmc/objectstorage/ObjectStoragePaginators.java new file mode 100644 index 00000000000..7657221c6b5 --- /dev/null +++ b/bmc-objectstorage/bmc-objectstorage-generated/src/main/java/com/oracle/bmc/objectstorage/ObjectStoragePaginators.java @@ -0,0 +1,498 @@ +/** + * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. + */ +package com.oracle.bmc.objectstorage; + +import com.oracle.bmc.objectstorage.requests.*; +import com.oracle.bmc.objectstorage.responses.*; + +/** + * Collection of helper methods that can be used to provide an {@link java.lang.Iterable} interface + * to any list operations of ObjectStorage where multiple pages of data may be fetched. + * Two styles of iteration are supported: + * + *
            + *
          • Iterating over the Response objects returned by the list operation. These are referred to as ResponseIterators, and the methods are suffixed with ResponseIterator. For example: listUsersResponseIterator
          • + *
          • Iterating over the resources/records being listed. These are referred to as RecordIterators, and the methods are suffixed with RecordIterator. For example: listUsersRecordIterator
          • + *
          + * + * These iterables abstract away the need to write code to manually handle pagination via looping and using the page tokens. + * They will automatically fetch more data from the service when required. + * + * As an example, if we were using the ListUsers operation in IdentityService, then the {@link java.lang.Interable} returned by calling a + * ResponseIterator method would iterate over the ListUsersResponse objects returned by each ListUsers call, whereas the {@link java.lang.Iterable} + * returned by calling a RecordIterator method would iterate over the User records and we don't have to deal with ListUsersResponse objects at all. + * In either case, pagination will be automatically handled so we can iterate until there are no more responses or no more resources/records available. + */ +@javax.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20160918") +@lombok.RequiredArgsConstructor +public class ObjectStoragePaginators { + private final ObjectStorage client; + + /** + * Creates a new iterable which will iterate over the responses received from the listBuckets operation. This iterable + * will fetch more data from the server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the responses received from the service. + */ + public Iterable listBucketsResponseIterator( + final ListBucketsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseIterable< + ListBucketsRequest.Builder, ListBucketsRequest, ListBucketsResponse>( + new com.google.common.base.Supplier() { + @Override + public ListBucketsRequest.Builder get() { + return ListBucketsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListBucketsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListBucketsRequest.Builder>, + ListBucketsRequest>() { + @Override + public ListBucketsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListBucketsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function() { + @Override + public ListBucketsResponse apply(ListBucketsRequest request) { + return client.listBuckets(request); + } + }); + } + + /** + * Creates a new iterable which will iterate over the {@link com.oracle.bmc.objectstorage.model.BucketSummary} objects + * contained in responses from the listBuckets operation. This iterable will fetch more data from the + * server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link com.oracle.bmc.objectstorage.model.BucketSummary} objects + * contained in responses received from the service. + */ + public Iterable listBucketsRecordIterator( + final ListBucketsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseRecordIterable< + ListBucketsRequest.Builder, ListBucketsRequest, ListBucketsResponse, + com.oracle.bmc.objectstorage.model.BucketSummary>( + new com.google.common.base.Supplier() { + @Override + public ListBucketsRequest.Builder get() { + return ListBucketsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListBucketsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListBucketsRequest.Builder>, + ListBucketsRequest>() { + @Override + public ListBucketsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListBucketsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function() { + @Override + public ListBucketsResponse apply(ListBucketsRequest request) { + return client.listBuckets(request); + } + }, + new com.google.common.base.Function< + ListBucketsResponse, + java.util.List>() { + @Override + public java.util.List apply( + ListBucketsResponse response) { + return response.getItems(); + } + }); + } + + /** + * Creates a new iterable which will iterate over the responses received from the listMultipartUploadParts operation. This iterable + * will fetch more data from the server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the responses received from the service. + */ + public Iterable listMultipartUploadPartsResponseIterator( + final ListMultipartUploadPartsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseIterable< + ListMultipartUploadPartsRequest.Builder, ListMultipartUploadPartsRequest, + ListMultipartUploadPartsResponse>( + new com.google.common.base.Supplier() { + @Override + public ListMultipartUploadPartsRequest.Builder get() { + return ListMultipartUploadPartsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListMultipartUploadPartsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListMultipartUploadPartsRequest.Builder>, + ListMultipartUploadPartsRequest>() { + @Override + public ListMultipartUploadPartsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListMultipartUploadPartsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListMultipartUploadPartsRequest, ListMultipartUploadPartsResponse>() { + @Override + public ListMultipartUploadPartsResponse apply( + ListMultipartUploadPartsRequest request) { + return client.listMultipartUploadParts(request); + } + }); + } + + /** + * Creates a new iterable which will iterate over the {@link com.oracle.bmc.objectstorage.model.MultipartUploadPartSummary} objects + * contained in responses from the listMultipartUploadParts operation. This iterable will fetch more data from the + * server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link com.oracle.bmc.objectstorage.model.MultipartUploadPartSummary} objects + * contained in responses received from the service. + */ + public Iterable + listMultipartUploadPartsRecordIterator(final ListMultipartUploadPartsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseRecordIterable< + ListMultipartUploadPartsRequest.Builder, ListMultipartUploadPartsRequest, + ListMultipartUploadPartsResponse, + com.oracle.bmc.objectstorage.model.MultipartUploadPartSummary>( + new com.google.common.base.Supplier() { + @Override + public ListMultipartUploadPartsRequest.Builder get() { + return ListMultipartUploadPartsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListMultipartUploadPartsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListMultipartUploadPartsRequest.Builder>, + ListMultipartUploadPartsRequest>() { + @Override + public ListMultipartUploadPartsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListMultipartUploadPartsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListMultipartUploadPartsRequest, ListMultipartUploadPartsResponse>() { + @Override + public ListMultipartUploadPartsResponse apply( + ListMultipartUploadPartsRequest request) { + return client.listMultipartUploadParts(request); + } + }, + new com.google.common.base.Function< + ListMultipartUploadPartsResponse, + java.util.List< + com.oracle.bmc.objectstorage.model.MultipartUploadPartSummary>>() { + @Override + public java.util.List< + com.oracle.bmc.objectstorage.model.MultipartUploadPartSummary> + apply(ListMultipartUploadPartsResponse response) { + return response.getItems(); + } + }); + } + + /** + * Creates a new iterable which will iterate over the responses received from the listMultipartUploads operation. This iterable + * will fetch more data from the server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the responses received from the service. + */ + public Iterable listMultipartUploadsResponseIterator( + final ListMultipartUploadsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseIterable< + ListMultipartUploadsRequest.Builder, ListMultipartUploadsRequest, + ListMultipartUploadsResponse>( + new com.google.common.base.Supplier() { + @Override + public ListMultipartUploadsRequest.Builder get() { + return ListMultipartUploadsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListMultipartUploadsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListMultipartUploadsRequest.Builder>, + ListMultipartUploadsRequest>() { + @Override + public ListMultipartUploadsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListMultipartUploadsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListMultipartUploadsRequest, ListMultipartUploadsResponse>() { + @Override + public ListMultipartUploadsResponse apply(ListMultipartUploadsRequest request) { + return client.listMultipartUploads(request); + } + }); + } + + /** + * Creates a new iterable which will iterate over the {@link com.oracle.bmc.objectstorage.model.MultipartUpload} objects + * contained in responses from the listMultipartUploads operation. This iterable will fetch more data from the + * server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link com.oracle.bmc.objectstorage.model.MultipartUpload} objects + * contained in responses received from the service. + */ + public Iterable + listMultipartUploadsRecordIterator(final ListMultipartUploadsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseRecordIterable< + ListMultipartUploadsRequest.Builder, ListMultipartUploadsRequest, + ListMultipartUploadsResponse, com.oracle.bmc.objectstorage.model.MultipartUpload>( + new com.google.common.base.Supplier() { + @Override + public ListMultipartUploadsRequest.Builder get() { + return ListMultipartUploadsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function() { + @Override + public String apply(ListMultipartUploadsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListMultipartUploadsRequest.Builder>, + ListMultipartUploadsRequest>() { + @Override + public ListMultipartUploadsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListMultipartUploadsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListMultipartUploadsRequest, ListMultipartUploadsResponse>() { + @Override + public ListMultipartUploadsResponse apply(ListMultipartUploadsRequest request) { + return client.listMultipartUploads(request); + } + }, + new com.google.common.base.Function< + ListMultipartUploadsResponse, + java.util.List>() { + @Override + public java.util.List apply( + ListMultipartUploadsResponse response) { + return response.getItems(); + } + }); + } + + /** + * Creates a new iterable which will iterate over the responses received from the listPreauthenticatedRequests operation. This iterable + * will fetch more data from the server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the responses received from the service. + */ + public Iterable + listPreauthenticatedRequestsResponseIterator( + final ListPreauthenticatedRequestsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseIterable< + ListPreauthenticatedRequestsRequest.Builder, ListPreauthenticatedRequestsRequest, + ListPreauthenticatedRequestsResponse>( + new com.google.common.base.Supplier() { + @Override + public ListPreauthenticatedRequestsRequest.Builder get() { + return ListPreauthenticatedRequestsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function< + ListPreauthenticatedRequestsResponse, String>() { + @Override + public String apply(ListPreauthenticatedRequestsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListPreauthenticatedRequestsRequest.Builder>, + ListPreauthenticatedRequestsRequest>() { + @Override + public ListPreauthenticatedRequestsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListPreauthenticatedRequestsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListPreauthenticatedRequestsRequest, + ListPreauthenticatedRequestsResponse>() { + @Override + public ListPreauthenticatedRequestsResponse apply( + ListPreauthenticatedRequestsRequest request) { + return client.listPreauthenticatedRequests(request); + } + }); + } + + /** + * Creates a new iterable which will iterate over the {@link com.oracle.bmc.objectstorage.model.PreauthenticatedRequestSummary} objects + * contained in responses from the listPreauthenticatedRequests operation. This iterable will fetch more data from the + * server as needed. + * + * @param request a request which can be sent to the service operation + * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link com.oracle.bmc.objectstorage.model.PreauthenticatedRequestSummary} objects + * contained in responses received from the service. + */ + public Iterable + listPreauthenticatedRequestsRecordIterator( + final ListPreauthenticatedRequestsRequest request) { + return new com.oracle.bmc.paginator.internal.ResponseRecordIterable< + ListPreauthenticatedRequestsRequest.Builder, ListPreauthenticatedRequestsRequest, + ListPreauthenticatedRequestsResponse, + com.oracle.bmc.objectstorage.model.PreauthenticatedRequestSummary>( + new com.google.common.base.Supplier() { + @Override + public ListPreauthenticatedRequestsRequest.Builder get() { + return ListPreauthenticatedRequestsRequest.builder().copy(request); + } + }, + new com.google.common.base.Function< + ListPreauthenticatedRequestsResponse, String>() { + @Override + public String apply(ListPreauthenticatedRequestsResponse response) { + return response.getOpcNextPage(); + } + }, + new com.google.common.base.Function< + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListPreauthenticatedRequestsRequest.Builder>, + ListPreauthenticatedRequestsRequest>() { + @Override + public ListPreauthenticatedRequestsRequest apply( + com.oracle.bmc.paginator.internal.RequestBuilderAndToken< + ListPreauthenticatedRequestsRequest.Builder> + input) { + if (input.getToken() == null) { + return input.getRequestBuilder().build(); + } else { + return input.getRequestBuilder() + .page(input.getToken().orNull()) + .build(); + } + } + }, + new com.google.common.base.Function< + ListPreauthenticatedRequestsRequest, + ListPreauthenticatedRequestsResponse>() { + @Override + public ListPreauthenticatedRequestsResponse apply( + ListPreauthenticatedRequestsRequest request) { + return client.listPreauthenticatedRequests(request); + } + }, + new com.google.common.base.Function< + ListPreauthenticatedRequestsResponse, + java.util.List< + com.oracle.bmc.objectstorage.model + .PreauthenticatedRequestSummary>>() { + @Override + public java.util.List< + com.oracle.bmc.objectstorage.model + .PreauthenticatedRequestSummary> + apply(ListPreauthenticatedRequestsResponse response) { + return response.getItems(); + } + }); + } +} diff --git a/bmc-objectstorage/bmc-objectstorage-generated/src/main/java/com/oracle/bmc/objectstorage/internal/http/ListBucketsConverter.java b/bmc-objectstorage/bmc-objectstorage-generated/src/main/java/com/oracle/bmc/objectstorage/internal/http/ListBucketsConverter.java index 1df847bc045..dba02da4570 100644 --- a/bmc-objectstorage/bmc-objectstorage-generated/src/main/java/com/oracle/bmc/objectstorage/internal/http/ListBucketsConverter.java +++ b/bmc-objectstorage/bmc-objectstorage-generated/src/main/java/com/oracle/bmc/objectstorage/internal/http/ListBucketsConverter.java @@ -64,6 +64,15 @@ public static com.oracle.bmc.http.internal.WrappedInvocationBuilder fromRequest( request.getPage())); } + if (request.getFields() != null) { + target = + com.oracle.bmc.util.internal.HttpUtils.encodeCollectionFormatQueryParam( + target, + "fields", + request.getFields(), + com.oracle.bmc.util.internal.CollectionFormatType.CommaSeparated); + } + com.oracle.bmc.http.internal.WrappedInvocationBuilder ib = target.request(); ib.accept(javax.ws.rs.core.MediaType.APPLICATION_JSON); diff --git a/bmc-objectstorage/bmc-objectstorage-generated/src/main/java/com/oracle/bmc/objectstorage/model/Bucket.java b/bmc-objectstorage/bmc-objectstorage-generated/src/main/java/com/oracle/bmc/objectstorage/model/Bucket.java index d611b2c3bf6..7e9cdcaa131 100644 --- a/bmc-objectstorage/bmc-objectstorage-generated/src/main/java/com/oracle/bmc/objectstorage/model/Bucket.java +++ b/bmc-objectstorage/bmc-objectstorage-generated/src/main/java/com/oracle/bmc/objectstorage/model/Bucket.java @@ -109,6 +109,25 @@ public Builder storageTier(StorageTier storageTier) { return this; } + @com.fasterxml.jackson.annotation.JsonProperty("freeformTags") + private java.util.Map freeformTags; + + public Builder freeformTags(java.util.Map freeformTags) { + this.freeformTags = freeformTags; + this.__explicitlySet__.add("freeformTags"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("definedTags") + private java.util.Map> definedTags; + + public Builder definedTags( + java.util.Map> definedTags) { + this.definedTags = definedTags; + this.__explicitlySet__.add("definedTags"); + return this; + } + @com.fasterxml.jackson.annotation.JsonIgnore private final java.util.Set __explicitlySet__ = new java.util.HashSet(); @@ -123,7 +142,9 @@ public Bucket build() { timeCreated, etag, publicAccessType, - storageTier); + storageTier, + freeformTags, + definedTags); __instance__.__explicitlySet__.addAll(__explicitlySet__); return __instance__; } @@ -139,7 +160,9 @@ public Builder copy(Bucket o) { .timeCreated(o.getTimeCreated()) .etag(o.getEtag()) .publicAccessType(o.getPublicAccessType()) - .storageTier(o.getStorageTier()); + .storageTier(o.getStorageTier()) + .freeformTags(o.getFreeformTags()) + .definedTags(o.getDefinedTags()); copiedBuilder.__explicitlySet__.retainAll(o.__explicitlySet__); return copiedBuilder; @@ -261,8 +284,8 @@ public static PublicAccessType create(String key) { /** * The type of storage tier of this bucket. * A bucket is set to 'Standard' tier by default, which means the bucket will be put in the standard storage tier. - * When 'Archive' tier type is set explicitly, the bucket is put in the Archive Storage tier. The 'storageTier' - * property is immutable once the bucket is created. + * When 'Archive' tier type is set explicitly, the bucket is put in the archive storage tier. The 'storageTier' + * property is immutable after bucket is created. * **/ @lombok.extern.slf4j.Slf4j @@ -311,13 +334,31 @@ public static StorageTier create(String key) { /** * The type of storage tier of this bucket. * A bucket is set to 'Standard' tier by default, which means the bucket will be put in the standard storage tier. - * When 'Archive' tier type is set explicitly, the bucket is put in the Archive Storage tier. The 'storageTier' - * property is immutable once the bucket is created. + * When 'Archive' tier type is set explicitly, the bucket is put in the archive storage tier. The 'storageTier' + * property is immutable after bucket is created. * **/ @com.fasterxml.jackson.annotation.JsonProperty("storageTier") StorageTier storageTier; + /** + * Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. + * For more information, see [Resource Tags](https://docs.us-phoenix-1.oraclecloud.com/Content/General/Concepts/resourcetags.htm). + * Example: `{\"Department\": \"Finance\"}` + * + **/ + @com.fasterxml.jackson.annotation.JsonProperty("freeformTags") + java.util.Map freeformTags; + + /** + * Defined tags for this resource. Each key is predefined and scoped to a namespace. + * For more information, see [Resource Tags](https://docs.us-phoenix-1.oraclecloud.com/Content/General/Concepts/resourcetags.htm). + * Example: `{\"Operations\": {\"CostCenter\": \"42\"}}` + * + **/ + @com.fasterxml.jackson.annotation.JsonProperty("definedTags") + java.util.Map> definedTags; + @com.fasterxml.jackson.annotation.JsonIgnore private final java.util.Set __explicitlySet__ = new java.util.HashSet(); } diff --git a/bmc-objectstorage/bmc-objectstorage-generated/src/main/java/com/oracle/bmc/objectstorage/model/BucketSummary.java b/bmc-objectstorage/bmc-objectstorage-generated/src/main/java/com/oracle/bmc/objectstorage/model/BucketSummary.java index 089c3be8df6..98610668356 100644 --- a/bmc-objectstorage/bmc-objectstorage-generated/src/main/java/com/oracle/bmc/objectstorage/model/BucketSummary.java +++ b/bmc-objectstorage/bmc-objectstorage-generated/src/main/java/com/oracle/bmc/objectstorage/model/BucketSummary.java @@ -78,12 +78,39 @@ public Builder etag(String etag) { return this; } + @com.fasterxml.jackson.annotation.JsonProperty("freeformTags") + private java.util.Map freeformTags; + + public Builder freeformTags(java.util.Map freeformTags) { + this.freeformTags = freeformTags; + this.__explicitlySet__.add("freeformTags"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("definedTags") + private java.util.Map> definedTags; + + public Builder definedTags( + java.util.Map> definedTags) { + this.definedTags = definedTags; + this.__explicitlySet__.add("definedTags"); + return this; + } + @com.fasterxml.jackson.annotation.JsonIgnore private final java.util.Set __explicitlySet__ = new java.util.HashSet(); public BucketSummary build() { BucketSummary __instance__ = - new BucketSummary(namespace, name, compartmentId, createdBy, timeCreated, etag); + new BucketSummary( + namespace, + name, + compartmentId, + createdBy, + timeCreated, + etag, + freeformTags, + definedTags); __instance__.__explicitlySet__.addAll(__explicitlySet__); return __instance__; } @@ -96,7 +123,9 @@ public Builder copy(BucketSummary o) { .compartmentId(o.getCompartmentId()) .createdBy(o.getCreatedBy()) .timeCreated(o.getTimeCreated()) - .etag(o.getEtag()); + .etag(o.getEtag()) + .freeformTags(o.getFreeformTags()) + .definedTags(o.getDefinedTags()); copiedBuilder.__explicitlySet__.retainAll(o.__explicitlySet__); return copiedBuilder; @@ -148,6 +177,24 @@ public static Builder builder() { @com.fasterxml.jackson.annotation.JsonProperty("etag") String etag; + /** + * Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. + * For more information, see [Resource Tags](https://docs.us-phoenix-1.oraclecloud.com/Content/General/Concepts/resourcetags.htm). + * Example: `{\"Department\": \"Finance\"}` + * + **/ + @com.fasterxml.jackson.annotation.JsonProperty("freeformTags") + java.util.Map freeformTags; + + /** + * Defined tags for this resource. Each key is predefined and scoped to a namespace. + * For more information, see [Resource Tags](https://docs.us-phoenix-1.oraclecloud.com/Content/General/Concepts/resourcetags.htm). + * Example: `{\"Operations\": {\"CostCenter\": \"42\"}}` + * + **/ + @com.fasterxml.jackson.annotation.JsonProperty("definedTags") + java.util.Map> definedTags; + @com.fasterxml.jackson.annotation.JsonIgnore private final java.util.Set __explicitlySet__ = new java.util.HashSet(); } diff --git a/bmc-objectstorage/bmc-objectstorage-generated/src/main/java/com/oracle/bmc/objectstorage/model/CreateBucketDetails.java b/bmc-objectstorage/bmc-objectstorage-generated/src/main/java/com/oracle/bmc/objectstorage/model/CreateBucketDetails.java index 4e13b2394c4..cd682152fe3 100644 --- a/bmc-objectstorage/bmc-objectstorage-generated/src/main/java/com/oracle/bmc/objectstorage/model/CreateBucketDetails.java +++ b/bmc-objectstorage/bmc-objectstorage-generated/src/main/java/com/oracle/bmc/objectstorage/model/CreateBucketDetails.java @@ -71,13 +71,38 @@ public Builder storageTier(StorageTier storageTier) { return this; } + @com.fasterxml.jackson.annotation.JsonProperty("freeformTags") + private java.util.Map freeformTags; + + public Builder freeformTags(java.util.Map freeformTags) { + this.freeformTags = freeformTags; + this.__explicitlySet__.add("freeformTags"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("definedTags") + private java.util.Map> definedTags; + + public Builder definedTags( + java.util.Map> definedTags) { + this.definedTags = definedTags; + this.__explicitlySet__.add("definedTags"); + return this; + } + @com.fasterxml.jackson.annotation.JsonIgnore private final java.util.Set __explicitlySet__ = new java.util.HashSet(); public CreateBucketDetails build() { CreateBucketDetails __instance__ = new CreateBucketDetails( - name, compartmentId, metadata, publicAccessType, storageTier); + name, + compartmentId, + metadata, + publicAccessType, + storageTier, + freeformTags, + definedTags); __instance__.__explicitlySet__.addAll(__explicitlySet__); return __instance__; } @@ -89,7 +114,9 @@ public Builder copy(CreateBucketDetails o) { .compartmentId(o.getCompartmentId()) .metadata(o.getMetadata()) .publicAccessType(o.getPublicAccessType()) - .storageTier(o.getStorageTier()); + .storageTier(o.getStorageTier()) + .freeformTags(o.getFreeformTags()) + .definedTags(o.getDefinedTags()); copiedBuilder.__explicitlySet__.retainAll(o.__explicitlySet__); return copiedBuilder; @@ -223,6 +250,24 @@ public static StorageTier create(String key) { @com.fasterxml.jackson.annotation.JsonProperty("storageTier") StorageTier storageTier; + /** + * Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. + * For more information, see [Resource Tags](https://docs.us-phoenix-1.oraclecloud.com/Content/General/Concepts/resourcetags.htm). + * Example: `{\"Department\": \"Finance\"}` + * + **/ + @com.fasterxml.jackson.annotation.JsonProperty("freeformTags") + java.util.Map freeformTags; + + /** + * Defined tags for this resource. Each key is predefined and scoped to a namespace. + * For more information, see [Resource Tags](https://docs.us-phoenix-1.oraclecloud.com/Content/General/Concepts/resourcetags.htm). + * Example: `{\"Operations\": {\"CostCenter\": \"42\"}}` + * + **/ + @com.fasterxml.jackson.annotation.JsonProperty("definedTags") + java.util.Map> definedTags; + @com.fasterxml.jackson.annotation.JsonIgnore private final java.util.Set __explicitlySet__ = new java.util.HashSet(); } diff --git a/bmc-objectstorage/bmc-objectstorage-generated/src/main/java/com/oracle/bmc/objectstorage/model/RestoreObjectsDetails.java b/bmc-objectstorage/bmc-objectstorage-generated/src/main/java/com/oracle/bmc/objectstorage/model/RestoreObjectsDetails.java index 1b556f1597a..8ff9494efab 100644 --- a/bmc-objectstorage/bmc-objectstorage-generated/src/main/java/com/oracle/bmc/objectstorage/model/RestoreObjectsDetails.java +++ b/bmc-objectstorage/bmc-objectstorage-generated/src/main/java/com/oracle/bmc/objectstorage/model/RestoreObjectsDetails.java @@ -32,18 +32,27 @@ public Builder objectName(String objectName) { return this; } + @com.fasterxml.jackson.annotation.JsonProperty("hours") + private Integer hours; + + public Builder hours(Integer hours) { + this.hours = hours; + this.__explicitlySet__.add("hours"); + return this; + } + @com.fasterxml.jackson.annotation.JsonIgnore private final java.util.Set __explicitlySet__ = new java.util.HashSet(); public RestoreObjectsDetails build() { - RestoreObjectsDetails __instance__ = new RestoreObjectsDetails(objectName); + RestoreObjectsDetails __instance__ = new RestoreObjectsDetails(objectName, hours); __instance__.__explicitlySet__.addAll(__explicitlySet__); return __instance__; } @com.fasterxml.jackson.annotation.JsonIgnore public Builder copy(RestoreObjectsDetails o) { - Builder copiedBuilder = objectName(o.getObjectName()); + Builder copiedBuilder = objectName(o.getObjectName()).hours(o.getHours()); copiedBuilder.__explicitlySet__.retainAll(o.__explicitlySet__); return copiedBuilder; @@ -63,6 +72,14 @@ public static Builder builder() { @com.fasterxml.jackson.annotation.JsonProperty("objectName") String objectName; + /** + * The number of hours for which this object will be restored. + * By default object will be restored for 24 hours.It can be configured using hours parameter. + * + **/ + @com.fasterxml.jackson.annotation.JsonProperty("hours") + Integer hours; + @com.fasterxml.jackson.annotation.JsonIgnore private final java.util.Set __explicitlySet__ = new java.util.HashSet(); } diff --git a/bmc-objectstorage/bmc-objectstorage-generated/src/main/java/com/oracle/bmc/objectstorage/model/UpdateBucketDetails.java b/bmc-objectstorage/bmc-objectstorage-generated/src/main/java/com/oracle/bmc/objectstorage/model/UpdateBucketDetails.java index 580c5c5ee4f..fb8230c35e7 100644 --- a/bmc-objectstorage/bmc-objectstorage-generated/src/main/java/com/oracle/bmc/objectstorage/model/UpdateBucketDetails.java +++ b/bmc-objectstorage/bmc-objectstorage-generated/src/main/java/com/oracle/bmc/objectstorage/model/UpdateBucketDetails.java @@ -71,13 +71,38 @@ public Builder publicAccessType(PublicAccessType publicAccessType) { return this; } + @com.fasterxml.jackson.annotation.JsonProperty("freeformTags") + private java.util.Map freeformTags; + + public Builder freeformTags(java.util.Map freeformTags) { + this.freeformTags = freeformTags; + this.__explicitlySet__.add("freeformTags"); + return this; + } + + @com.fasterxml.jackson.annotation.JsonProperty("definedTags") + private java.util.Map> definedTags; + + public Builder definedTags( + java.util.Map> definedTags) { + this.definedTags = definedTags; + this.__explicitlySet__.add("definedTags"); + return this; + } + @com.fasterxml.jackson.annotation.JsonIgnore private final java.util.Set __explicitlySet__ = new java.util.HashSet(); public UpdateBucketDetails build() { UpdateBucketDetails __instance__ = new UpdateBucketDetails( - namespace, compartmentId, name, metadata, publicAccessType); + namespace, + compartmentId, + name, + metadata, + publicAccessType, + freeformTags, + definedTags); __instance__.__explicitlySet__.addAll(__explicitlySet__); return __instance__; } @@ -89,7 +114,9 @@ public Builder copy(UpdateBucketDetails o) { .compartmentId(o.getCompartmentId()) .name(o.getName()) .metadata(o.getMetadata()) - .publicAccessType(o.getPublicAccessType()); + .publicAccessType(o.getPublicAccessType()) + .freeformTags(o.getFreeformTags()) + .definedTags(o.getDefinedTags()); copiedBuilder.__explicitlySet__.retainAll(o.__explicitlySet__); return copiedBuilder; @@ -178,6 +205,24 @@ public static PublicAccessType create(String key) { @com.fasterxml.jackson.annotation.JsonProperty("publicAccessType") PublicAccessType publicAccessType; + /** + * Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. + * For more information, see [Resource Tags](https://docs.us-phoenix-1.oraclecloud.com/Content/General/Concepts/resourcetags.htm). + * Example: `{\"Department\": \"Finance\"}` + * + **/ + @com.fasterxml.jackson.annotation.JsonProperty("freeformTags") + java.util.Map freeformTags; + + /** + * Defined tags for this resource. Each key is predefined and scoped to a namespace. + * For more information, see [Resource Tags](https://docs.us-phoenix-1.oraclecloud.com/Content/General/Concepts/resourcetags.htm). + * Example: `{\"Operations\": {\"CostCenter\": \"42\"}} + * + **/ + @com.fasterxml.jackson.annotation.JsonProperty("definedTags") + java.util.Map> definedTags; + @com.fasterxml.jackson.annotation.JsonIgnore private final java.util.Set __explicitlySet__ = new java.util.HashSet(); } diff --git a/bmc-objectstorage/bmc-objectstorage-generated/src/main/java/com/oracle/bmc/objectstorage/requests/ListBucketsRequest.java b/bmc-objectstorage/bmc-objectstorage-generated/src/main/java/com/oracle/bmc/objectstorage/requests/ListBucketsRequest.java index 4ac3b028304..0cfa7a1ef08 100644 --- a/bmc-objectstorage/bmc-objectstorage-generated/src/main/java/com/oracle/bmc/objectstorage/requests/ListBucketsRequest.java +++ b/bmc-objectstorage/bmc-objectstorage-generated/src/main/java/com/oracle/bmc/objectstorage/requests/ListBucketsRequest.java @@ -30,6 +30,52 @@ public class ListBucketsRequest extends com.oracle.bmc.requests.BmcRequest { */ private String page; + /** + * Bucket summary in list of buckets includes the 'namespace', 'name', 'compartmentId', 'createdBy', 'timeCreated', + * and 'etag' fields. This parameter can also include 'tags' (freeformTags and definedTags). The only supported value + * of this parameter is 'tags' for now. Example 'tags'. + * + */ + private java.util.List fields; + + /** + * Bucket summary in list of buckets includes the 'namespace', 'name', 'compartmentId', 'createdBy', 'timeCreated', + * and 'etag' fields. This parameter can also include 'tags' (freeformTags and definedTags). The only supported value + * of this parameter is 'tags' for now. Example 'tags'. + * + **/ + public enum Fields { + Tags("tags"), + ; + + private final String value; + private static java.util.Map map; + + static { + map = new java.util.HashMap<>(); + for (Fields v : Fields.values()) { + map.put(v.getValue(), v); + } + } + + Fields(String value) { + this.value = value; + } + + @com.fasterxml.jackson.annotation.JsonValue + public String getValue() { + return value; + } + + @com.fasterxml.jackson.annotation.JsonCreator + public static Fields create(String key) { + if (map.containsKey(key)) { + return map.get(key); + } + throw new RuntimeException("Invalid Fields: " + key); + } + }; + /** * The client request ID for tracing. */ @@ -60,6 +106,7 @@ public Builder copy(ListBucketsRequest o) { compartmentId(o.getCompartmentId()); limit(o.getLimit()); page(o.getPage()); + fields(o.getFields()); opcClientRequestId(o.getOpcClientRequestId()); return this; } diff --git a/bmc-objectstorage/pom.xml b/bmc-objectstorage/pom.xml index 06972b51c4c..3d20207d189 100644 --- a/bmc-objectstorage/pom.xml +++ b/bmc-objectstorage/pom.xml @@ -5,7 +5,7 @@ com.oracle.oci.sdk oci-java-sdk - 1.2.27 + 1.2.28 ../pom.xml @@ -19,7 +19,7 @@ com.oracle.oci.sdk oci-java-sdk-common - 1.2.27 + 1.2.28 diff --git a/pom.xml b/pom.xml index ec72ab020ca..e3406e82206 100644 --- a/pom.xml +++ b/pom.xml @@ -1,17 +1,14 @@ - + + 4.0.0 - com.oracle.oci.sdk oci-java-sdk - 1.2.27 + 1.2.28 pom - Oracle Cloud Infrastructure SDK This project contains the SDK used for Oracle Cloud Infrastructure https://docs.us-phoenix-1.oraclecloud.com/Content/API/SDKDocs/javasdk.htm 2016 - The Universal Permissive License (UPL), Version 1.0 @@ -24,17 +21,15 @@ repo - UTF-8 - 2.9.0 + 2.9.3 2.24.1 19.0 4.11 1.16.16 1.16.16.0 - dev @@ -45,20 +40,20 @@ directory-maven-plugin 0.1 - - directories - - directory-of - - initialize - - ocijavasdk.basedir - - com.oracle.oci.sdk - oci-java-sdk - - - + + directories + + directory-of + + initialize + + ocijavasdk.basedir + + com.oracle.oci.sdk + oci-java-sdk + + + @@ -87,8 +82,7 @@ process-sources - + false @@ -139,7 +133,6 @@ - @@ -295,7 +288,6 @@ - maven-compiler-plugin @@ -313,7 +305,6 @@ - @@ -323,7 +314,6 @@ - @@ -343,14 +333,12 @@ 2.10.0 test - org.projectlombok lombok provided - javax.ws.rs @@ -367,9 +355,7 @@ slf4j-api 1.7.23 - - @@ -377,7 +363,6 @@ jersey-client ${jersey.version} - com.google.code.findbugs jsr305 @@ -388,14 +373,12 @@ guava ${guava.version} - org.projectlombok lombok ${lombok.version} provided - commons-codec commons-codec @@ -411,7 +394,6 @@ commons-io 2.5 - com.fasterxml.jackson.jaxrs jackson-jaxrs-json-provider @@ -454,7 +436,6 @@ - bmc-audit bmc-bom @@ -466,5 +447,6 @@ bmc-identity bmc-loadbalancer bmc-objectstorage + bmc-filestorage