Skip to content

Commit 4e0e5a1

Browse files
committed
Removed from S3Configurations
1 parent 7cf057a commit 4e0e5a1

File tree

17 files changed

+73
-206
lines changed

17 files changed

+73
-206
lines changed

codegen/src/main/java/software/amazon/awssdk/codegen/poet/builder/AsyncClientBuilderClass.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ private MethodSpec buildClientMethod() {
148148
builder.addStatement("$1T client = new $2T(serviceClientConfiguration, clientConfiguration)",
149149
clientInterfaceName, clientClassName);
150150
if (model.asyncClientDecoratorClassName().isPresent()) {
151-
builder.addStatement("return new $T().decorate(client, clientConfiguration)",
151+
builder.addStatement("return new $T().decorate(client, clientConfiguration, clientContextParams.copy().build())",
152152
PoetUtils.classNameFromFqcn(model.asyncClientDecoratorClassName().get()));
153153
} else {
154154
builder.addStatement("return client");

codegen/src/main/java/software/amazon/awssdk/codegen/poet/builder/BaseClientBuilderClass.java

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -441,19 +441,6 @@ private void mergeServiceConfiguration(MethodSpec.Builder builder, String client
441441
.addCode("}");
442442
}
443443

444-
if (model.getCustomizationConfig().getServiceConfig().hasCrossRegionAccessEnabledProperty()) {
445-
builder.addCode("if (serviceConfigBuilder.crossRegionAccessEnabled() != null) {")
446-
.addCode(" $T.validState(clientContextParams.get($T.CROSS_REGION_ACCESS_ENABLED) == null, "
447-
+ "\"Cross region access enabled has been configured on both $L and the client level. "
448-
+ "Please limit this configuration to one location.\");",
449-
Validate.class, endpointRulesSpecUtils.clientContextParamsName(), clientConfigClassName)
450-
.addCode("} else {")
451-
.addCode(" serviceConfigBuilder.crossRegionAccessEnabled(clientContextParams.get($T"
452-
+ ".CROSS_REGION_ACCESS_ENABLED));",
453-
endpointRulesSpecUtils.clientContextParamsName())
454-
.addCode("}");
455-
}
456-
457444
builder.addStatement("$T finalServiceConfig = serviceConfigBuilder.build()", clientConfigClass);
458445

459446
if (model.getCustomizationConfig().getServiceConfig().hasUseArnRegionProperty()) {
@@ -488,14 +475,6 @@ private void mergeServiceConfiguration(MethodSpec.Builder builder, String client
488475
endpointRulesSpecUtils.clientContextParamsName())
489476
.build());
490477
}
491-
492-
if (model.getCustomizationConfig().getServiceConfig().hasCrossRegionAccessEnabledProperty()) {
493-
builder.addCode(CodeBlock.builder()
494-
.addStatement("clientContextParams.put($T.CROSS_REGION_ACCESS_ENABLED, finalServiceConfig"
495-
+ ".crossRegionAccessEnabled())",
496-
endpointRulesSpecUtils.clientContextParamsName())
497-
.build());
498-
}
499478
}
500479

501480
private MethodSpec setServiceConfigurationMethod() {

codegen/src/main/java/software/amazon/awssdk/codegen/poet/builder/SyncClientBuilderClass.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -140,13 +140,12 @@ private MethodSpec buildClientMethod() {
140140
.addStatement("$T serviceClientConfiguration = initializeServiceClientConfig"
141141
+ "(clientConfiguration)",
142142
serviceConfigClassName);
143-
144143
addQueryProtocolInterceptors(builder);
145144

146145
builder.addStatement("$1T client = new $2T(serviceClientConfiguration, clientConfiguration)",
147146
clientInterfaceName, clientClassName);
148147
if (model.syncClientDecoratorClassName().isPresent()) {
149-
builder.addStatement("return new $T().decorate(client, clientConfiguration)",
148+
builder.addStatement("return new $T().decorate(client, clientConfiguration, clientContextParams.copy().build())",
150149
PoetUtils.classNameFromFqcn(model.syncClientDecoratorClassName().get()));
151150
} else {
152151
builder.addStatement("return client");

codegen/src/test/resources/software/amazon/awssdk/codegen/poet/builder/test-composed-async-client-builder-class.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ protected final JsonAsyncClient buildClient() {
3636
this.validateClientOptions(clientConfiguration);
3737
JsonServiceClientConfiguration serviceClientConfiguration = initializeServiceClientConfig(clientConfiguration);
3838
JsonAsyncClient client = new DefaultJsonAsyncClient(serviceClientConfiguration, clientConfiguration);
39-
return new AsyncClientDecorator().decorate(client, clientConfiguration);
39+
return new AsyncClientDecorator().decorate(client, clientConfiguration, clientContextParams.copy().build());
4040
}
4141

4242
private JsonServiceClientConfiguration initializeServiceClientConfig(SdkClientConfiguration clientConfig) {

codegen/src/test/resources/software/amazon/awssdk/codegen/poet/builder/test-composed-sync-client-builder-class.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ protected final JsonClient buildClient() {
3636
this.validateClientOptions(clientConfiguration);
3737
JsonServiceClientConfiguration serviceClientConfiguration = initializeServiceClientConfig(clientConfiguration);
3838
JsonClient client = new DefaultJsonClient(serviceClientConfiguration, clientConfiguration);
39-
return new SyncClientDecorator().decorate(client, clientConfiguration);
39+
return new SyncClientDecorator().decorate(client, clientConfiguration, clientContextParams.copy().build());
4040
}
4141

4242
private JsonServiceClientConfiguration initializeServiceClientConfig(SdkClientConfiguration clientConfig) {

codegen/src/test/resources/software/amazon/awssdk/codegen/poet/builder/test-composed-sync-default-client-builder.java

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -69,17 +69,7 @@ protected final SdkClientConfiguration finalizeServiceConfiguration(SdkClientCon
6969
.profileFileSupplier() : config.option(SdkClientOption.PROFILE_FILE_SUPPLIER));
7070
serviceConfigBuilder.profileName(serviceConfigBuilder.profileName() != null ? serviceConfigBuilder.profileName() : config
7171
.option(SdkClientOption.PROFILE_NAME));
72-
if (serviceConfigBuilder.crossRegionAccessEnabled() != null) {
73-
Validate.validState(
74-
clientContextParams.get(JsonClientContextParams.CROSS_REGION_ACCESS_ENABLED) == null,
75-
"Cross region access enabled has been configured on both ServiceConfiguration and the client level. Please limit this configuration to one location.");
76-
} else {
77-
serviceConfigBuilder.crossRegionAccessEnabled(clientContextParams
78-
.get(JsonClientContextParams.CROSS_REGION_ACCESS_ENABLED));
79-
}
8072
ServiceConfiguration finalServiceConfig = serviceConfigBuilder.build();
81-
clientContextParams.put(JsonClientContextParams.CROSS_REGION_ACCESS_ENABLED,
82-
finalServiceConfig.crossRegionAccessEnabled());
8373
return config.toBuilder().option(SdkClientOption.EXECUTION_INTERCEPTORS, interceptors)
8474
.option(SdkClientOption.SERVICE_CONFIGURATION, finalServiceConfig).build();
8575
}

services/s3/src/it/java/software/amazon/awssdk/services/s3/crossregion/S3CrossRegionAsyncIntegrationTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ static void clearClass() {
4040
public void initialize() {
4141
crossRegionS3Client = S3AsyncClient.builder()
4242
.region(CROSS_REGION)
43-
.serviceConfiguration(s -> s.crossRegionAccessEnabled(true))
43+
.crossRegionAccessEnabled(true)
4444
.build();
4545
}
4646

services/s3/src/it/java/software/amazon/awssdk/services/s3/crossregion/S3CrossRegionSyncIntegrationTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ static void clearClass() {
6060
public void initialize() {
6161
crossRegionS3Client = S3Client.builder()
6262
.region(CROSS_REGION)
63-
.serviceConfiguration(s -> s.crossRegionAccessEnabled(true))
63+
.crossRegionAccessEnabled(true)
6464
.build();
6565
}
6666

services/s3/src/main/java/software/amazon/awssdk/services/s3/S3Configuration.java

Lines changed: 1 addition & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -64,16 +64,11 @@ public final class S3Configuration implements ServiceConfiguration, ToCopyableBu
6464
*/
6565
private static final boolean DEFAULT_CHUNKED_ENCODING_ENABLED = true;
6666

67-
private static final boolean DEFAULT_CROSS_REGION_ACCESS_ENABLED = false;
68-
69-
7067
private final FieldWithDefault<Boolean> pathStyleAccessEnabled;
7168
private final FieldWithDefault<Boolean> accelerateModeEnabled;
7269
private final FieldWithDefault<Boolean> dualstackEnabled;
7370
private final FieldWithDefault<Boolean> checksumValidationEnabled;
7471
private final FieldWithDefault<Boolean> chunkedEncodingEnabled;
75-
private final FieldWithDefault<Boolean> crossRegionAccessEnabled;
76-
7772
private final Boolean useArnRegionEnabled;
7873
private final Boolean multiRegionEnabled;
7974
private final FieldWithDefault<Supplier<ProfileFile>> profileFile;
@@ -95,9 +90,6 @@ private S3Configuration(DefaultS3ServiceConfigurationBuilder builder) {
9590
if (accelerateModeEnabled() && pathStyleAccessEnabled()) {
9691
throw new IllegalArgumentException("Accelerate mode cannot be used with path style addressing");
9792
}
98-
this.crossRegionAccessEnabled = FieldWithDefault.create(builder.crossRegionAccessEnabled,
99-
DEFAULT_CROSS_REGION_ACCESS_ENABLED);
100-
10193
}
10294

10395
private boolean resolveUseArnRegionEnabled() {
@@ -214,18 +206,6 @@ public boolean multiRegionEnabled() {
214206
.orElseGet(this::resolveMultiRegionEnabled);
215207
}
216208

217-
218-
219-
/**
220-
* Returns whether the client is allowed to make cross-region calls based on bucket names.
221-
* <p>
222-
* @return True if cross Region Bucket Access Enabled
223-
*/
224-
public boolean crossRegionAccessEnabled() {
225-
return crossRegionAccessEnabled.value();
226-
}
227-
228-
229209
@Override
230210
public Builder toBuilder() {
231211
return builder()
@@ -237,8 +217,7 @@ public Builder toBuilder() {
237217
.chunkedEncodingEnabled(chunkedEncodingEnabled.valueOrNullIfDefault())
238218
.useArnRegionEnabled(useArnRegionEnabled)
239219
.profileFile(profileFile.valueOrNullIfDefault())
240-
.profileName(profileName.valueOrNullIfDefault())
241-
.crossRegionAccessEnabled(crossRegionAccessEnabled.valueOrNullIfDefault());
220+
.profileName(profileName.valueOrNullIfDefault());
242221
}
243222

244223
@NotThreadSafe
@@ -376,33 +355,6 @@ public interface Builder extends CopyableBuilder<Builder, S3Configuration> {
376355
* </p>
377356
*/
378357
Builder profileName(String profileName);
379-
380-
/**
381-
* <p> Configures whether cross-region bucket access is enabled for clients using the configuration.
382-
* <p>The following behavior is used when this mode is enabled:
383-
* <ol>
384-
* <li>This method allows enabling or disabling cross-region bucket access for clients. When cross-region bucket
385-
* access is enabled, requests that do not act on an existing bucket (e.g., createBucket API) will be routed to the
386-
* region configured on the client</li>
387-
* <li>The first time a request is made that references an existing bucket (e.g., putObject API), a request will be
388-
* made to the client-configured region. If the bucket does not exist in this region, the service will include the
389-
* actual region in the error responses. Subsequently, the API will be called using the correct region obtained
390-
* from the error response. </li>
391-
* <li>This location may be cached in the client for subsequent requests to the same bucket.</li>
392-
* </ol>
393-
* <p>Enabling this mode has several drawbacks, as it can increase latency if the bucket's location is physically far
394-
* from the location of the request.Therefore, it is strongly advised, whenever possible, to know the location of your
395-
* buckets and create a region-specific client to access them
396-
*
397-
* @param crossRegionAccessEnabled Whether cross region bucket access should be enabled.
398-
* @return The builder object for method chaining.
399-
*/
400-
Builder crossRegionAccessEnabled(Boolean crossRegionAccessEnabled);
401-
402-
/**
403-
* Returns value of crossRegionAccessEnabled value set using {@link Builder#crossRegionAccessEnabled(Boolean)}
404-
*/
405-
Boolean crossRegionAccessEnabled();
406358
}
407359

408360
static final class DefaultS3ServiceConfigurationBuilder implements Builder {
@@ -416,8 +368,6 @@ static final class DefaultS3ServiceConfigurationBuilder implements Builder {
416368
private Supplier<ProfileFile> profileFile;
417369
private String profileName;
418370

419-
private Boolean crossRegionAccessEnabled;
420-
421371
@Override
422372
public Boolean dualstackEnabled() {
423373
return dualstackEnabled;
@@ -555,26 +505,6 @@ public void setUseArnRegionEnabled(Boolean useArnRegionEnabled) {
555505
useArnRegionEnabled(useArnRegionEnabled);
556506
}
557507

558-
559-
@Override
560-
public Boolean crossRegionAccessEnabled() {
561-
return crossRegionAccessEnabled;
562-
}
563-
564-
@Override
565-
public Builder crossRegionAccessEnabled(Boolean crossRegionAccessEnabled) {
566-
this.crossRegionAccessEnabled = crossRegionAccessEnabled;
567-
return this;
568-
}
569-
570-
/**
571-
* refer {@link Builder#crossRegionAccessEnabled(Boolean)}
572-
* @param crossRegionAccessEnabled
573-
*/
574-
public void setCrossRegionAccessEnabled(Boolean crossRegionAccessEnabled) {
575-
crossRegionAccessEnabled(crossRegionAccessEnabled);
576-
}
577-
578508
@Override
579509
public S3Configuration build() {
580510
return new S3Configuration(this);

services/s3/src/main/java/software/amazon/awssdk/services/s3/S3Utilities.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -499,8 +499,6 @@ private AttributeMap createClientContextParams() {
499499
!s3Configuration.multiRegionEnabled());
500500
params.put(S3ClientContextParams.FORCE_PATH_STYLE, s3Configuration.pathStyleAccessEnabled());
501501
params.put(S3ClientContextParams.ACCELERATE, s3Configuration.accelerateModeEnabled());
502-
params.put(S3ClientContextParams.CROSS_REGION_ACCESS_ENABLED, s3Configuration.crossRegionAccessEnabled());
503-
504502
return params.build();
505503
}
506504

services/s3/src/main/java/software/amazon/awssdk/services/s3/internal/client/S3AsyncClientDecorator.java

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,10 @@
2020
import java.util.function.Predicate;
2121
import software.amazon.awssdk.annotations.SdkInternalApi;
2222
import software.amazon.awssdk.core.client.config.SdkClientConfiguration;
23-
import software.amazon.awssdk.core.client.config.SdkClientOption;
2423
import software.amazon.awssdk.services.s3.S3AsyncClient;
25-
import software.amazon.awssdk.services.s3.S3Configuration;
24+
import software.amazon.awssdk.services.s3.endpoints.S3ClientContextParams;
2625
import software.amazon.awssdk.services.s3.internal.crossregion.S3CrossRegionAsyncClient;
26+
import software.amazon.awssdk.utils.AttributeMap;
2727
import software.amazon.awssdk.utils.ConditionalDecorator;
2828

2929
@SdkInternalApi
@@ -32,16 +32,18 @@ public class S3AsyncClientDecorator {
3232
public S3AsyncClientDecorator() {
3333
}
3434

35-
public S3AsyncClient decorate(S3AsyncClient base, SdkClientConfiguration clientConfiguration) {
35+
public S3AsyncClient decorate(S3AsyncClient base,
36+
SdkClientConfiguration clientConfiguration,
37+
AttributeMap clientContextParams) {
3638
List<ConditionalDecorator<S3AsyncClient>> decorators = new ArrayList<>();
37-
decorators.add(ConditionalDecorator.create(isCrossRegionEnabledAsync(clientConfiguration),
39+
decorators.add(ConditionalDecorator.create(isCrossRegionEnabledAsync(clientContextParams),
3840
S3CrossRegionAsyncClient::new));
3941
return ConditionalDecorator.decorate(base, decorators);
4042
}
4143

42-
private Predicate<S3AsyncClient> isCrossRegionEnabledAsync(SdkClientConfiguration clientConfiguration) {
43-
return client -> ((S3Configuration) clientConfiguration.option(SdkClientOption.SERVICE_CONFIGURATION))
44-
.crossRegionAccessEnabled();
44+
private Predicate<S3AsyncClient> isCrossRegionEnabledAsync(AttributeMap clientContextParams) {
45+
Boolean crossRegionEnabled = clientContextParams.get(S3ClientContextParams.CROSS_REGION_ACCESS_ENABLED);
46+
return client -> crossRegionEnabled != null && crossRegionEnabled.booleanValue();
4547
}
4648

4749
}

services/s3/src/main/java/software/amazon/awssdk/services/s3/internal/client/S3SyncClientDecorator.java

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,10 @@
2020
import java.util.function.Predicate;
2121
import software.amazon.awssdk.annotations.SdkInternalApi;
2222
import software.amazon.awssdk.core.client.config.SdkClientConfiguration;
23-
import software.amazon.awssdk.core.client.config.SdkClientOption;
2423
import software.amazon.awssdk.services.s3.S3Client;
25-
import software.amazon.awssdk.services.s3.S3Configuration;
24+
import software.amazon.awssdk.services.s3.endpoints.S3ClientContextParams;
2625
import software.amazon.awssdk.services.s3.internal.crossregion.S3CrossRegionSyncClient;
26+
import software.amazon.awssdk.utils.AttributeMap;
2727
import software.amazon.awssdk.utils.ConditionalDecorator;
2828

2929
@SdkInternalApi
@@ -32,15 +32,18 @@ public class S3SyncClientDecorator {
3232
public S3SyncClientDecorator() {
3333
}
3434

35-
public S3Client decorate(S3Client base, SdkClientConfiguration clientConfiguration) {
35+
public S3Client decorate(S3Client base,
36+
SdkClientConfiguration clientConfiguration,
37+
AttributeMap clientContextParams) {
3638
List<ConditionalDecorator<S3Client>> decorators = new ArrayList<>();
37-
decorators.add(ConditionalDecorator.create(isCrossRegionEnabledSync(clientConfiguration),
39+
decorators.add(ConditionalDecorator.create(isCrossRegionEnabledSync(clientContextParams),
3840
S3CrossRegionSyncClient::new));
41+
3942
return ConditionalDecorator.decorate(base, decorators);
4043
}
4144

42-
private Predicate<S3Client> isCrossRegionEnabledSync(SdkClientConfiguration clientConfiguration) {
43-
return client -> ((S3Configuration) clientConfiguration.option(SdkClientOption.SERVICE_CONFIGURATION))
44-
.crossRegionAccessEnabled();
45+
private Predicate<S3Client> isCrossRegionEnabledSync(AttributeMap clientContextParams) {
46+
Boolean crossRegionEnabled = clientContextParams.get(S3ClientContextParams.CROSS_REGION_ACCESS_ENABLED);
47+
return client -> crossRegionEnabled != null && crossRegionEnabled.booleanValue();
4548
}
4649
}

services/s3/src/main/java/software/amazon/awssdk/services/s3/internal/crt/DefaultS3CrtAsyncClient.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,14 +96,14 @@ private static S3AsyncClient initializeS3AsyncClient(DefaultS3CrtClientBuilder b
9696
// Disable checksum, it is handled in CRT
9797
.serviceConfiguration(S3Configuration.builder()
9898
.checksumValidationEnabled(false)
99-
.crossRegionAccessEnabled(builder.crossRegionAccessEnabled)
10099
.build())
101100
.region(builder.region)
102101
.endpointOverride(builder.endpointOverride)
103102
.credentialsProvider(builder.credentialsProvider)
104103
.overrideConfiguration(overrideConfigurationBuilder.build())
105104
.accelerate(builder.accelerate)
106105
.forcePathStyle(builder.forcePathStyle)
106+
.crossRegionAccessEnabled(builder.crossRegionAccessEnabled)
107107
.httpClientBuilder(initializeS3CrtAsyncHttpClient(builder))
108108
.build();
109109
}

services/s3/src/test/java/software/amazon/awssdk/services/s3/S3ConfigurationTest.java

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@ public void createConfiguration_minimal() {
4646
assertThat(config.multiRegionEnabled()).isEqualTo(true);
4747
assertThat(config.pathStyleAccessEnabled()).isEqualTo(false);
4848
assertThat(config.useArnRegionEnabled()).isEqualTo(false);
49-
assertThat(config.crossRegionAccessEnabled()).isEqualTo(false);
5049
}
5150

5251
@Test
@@ -116,13 +115,5 @@ public void useArnRegionEnabled_enabledInCProfile_shouldResolveToConfigCorrectly
116115
assertThat(config.useArnRegionEnabled()).isEqualTo(false);
117116
}
118117

119-
@Test
120-
public void crossRegionEnabled__enabledInConfigOnly_shouldResolveCorrectly() {
121-
S3Configuration config = S3Configuration.builder().crossRegionAccessEnabled(true).build();
122-
assertThat(config.crossRegionAccessEnabled()).isEqualTo(true);
123-
124-
S3Configuration configDisabled = S3Configuration.builder().crossRegionAccessEnabled(false).build();
125-
assertThat(configDisabled.crossRegionAccessEnabled()).isEqualTo(false);
126-
}
127118

128119
}

0 commit comments

Comments
 (0)