Skip to content

Commit 76ac03e

Browse files
Add PresignedUrlManager support to code generated S3AsyncClient (#6269)
* async s3 client codegen changes * minimised service-2.json
1 parent 2839284 commit 76ac03e

File tree

20 files changed

+629
-1
lines changed

20 files changed

+629
-1
lines changed

codegen/src/main/java/software/amazon/awssdk/codegen/AddMetadata.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ public static Metadata constructMetadata(ServiceModel serviceModel,
6262
.withDocumentation(serviceModel.getDocumentation())
6363
.withServiceAbbreviation(serviceMetadata.getServiceAbbreviation())
6464
.withBatchmanagerPackageName(namingStrategy.getBatchManagerPackageName(serviceName))
65+
.withPresignedUrlPackageName(namingStrategy.getPresignedUrlPackageName(serviceName))
6566
.withServiceFullName(serviceMetadata.getServiceFullName())
6667
.withServiceName(serviceName)
6768
.withSyncClient(String.format(Constant.SYNC_CLIENT_CLASS_NAME_PATTERN, serviceName))

codegen/src/main/java/software/amazon/awssdk/codegen/internal/Constant.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,8 @@ public final class Constant {
7878

7979
public static final String PACKAGE_NAME_BATCHMANAGER_PATTERN = "%s.batchmanager";
8080

81+
public static final String PACKAGE_NAME_PRESIGNEDURL_PATTERN = "%s.presignedurl";
82+
8183
public static final String PACKAGE_NAME_CUSTOM_AUTH_PATTERN = "%s.auth";
8284

8385
public static final String AUTH_POLICY_ENUM_CLASS_DIR = "software/amazon/awssdk/auth/policy/actions";

codegen/src/main/java/software/amazon/awssdk/codegen/model/config/customization/CustomizationConfig.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -345,6 +345,11 @@ public class CustomizationConfig {
345345
*/
346346
private boolean batchManagerSupported;
347347

348+
/**
349+
* A boolean flag to indicate if Presigned URL Manager is supported.
350+
*/
351+
private boolean presignedUrlManagerSupported;
352+
348353
/**
349354
* A boolean flag to indicate if the fast unmarshaller code path is enabled.
350355
*/
@@ -924,6 +929,14 @@ public void setBatchManagerSupported(boolean batchManagerSupported) {
924929
this.batchManagerSupported = batchManagerSupported;
925930
}
926931

932+
public boolean getPresignedUrlManagerSupported() {
933+
return presignedUrlManagerSupported;
934+
}
935+
936+
public void setPresignedUrlManagerSupported(boolean presignedUrlManagerSupported) {
937+
this.presignedUrlManagerSupported = presignedUrlManagerSupported;
938+
}
939+
927940
public boolean getEnableFastUnmarshaller() {
928941
return enableFastUnmarshaller;
929942
}

codegen/src/main/java/software/amazon/awssdk/codegen/model/intermediate/Metadata.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,8 @@ public class Metadata {
7373

7474
private String batchManagerPackageName;
7575

76+
private String presignedUrlPackageName;
77+
7678
private String endpointRulesPackageName;
7779

7880
private String authSchemePackageName;
@@ -815,4 +817,20 @@ public String getFullBatchManagerPackageName() {
815817
return joinPackageNames(rootPackageName, getBatchManagerPackageName());
816818
}
817819

820+
public Metadata withPresignedUrlPackageName(String presignedUrlPackageName) {
821+
setPresignedUrlPackageName(presignedUrlPackageName);
822+
return this;
823+
}
824+
825+
public String getPresignedUrlPackageName() {
826+
return presignedUrlPackageName;
827+
}
828+
829+
public void setPresignedUrlPackageName(String presignedUrlPackageName) {
830+
this.presignedUrlPackageName = presignedUrlPackageName;
831+
}
832+
833+
public String getFullPresignedUrlPackageName() {
834+
return joinPackageNames(rootPackageName, getPresignedUrlPackageName());
835+
}
818836
}

codegen/src/main/java/software/amazon/awssdk/codegen/naming/DefaultNamingStrategy.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,11 @@ public String getJmesPathPackageName(String serviceName) {
216216
public String getBatchManagerPackageName(String serviceName) {
217217
return getCustomizedPackageName(concatServiceNameIfShareModel(serviceName), Constant.PACKAGE_NAME_BATCHMANAGER_PATTERN);
218218
}
219+
220+
@Override
221+
public String getPresignedUrlPackageName(String serviceName) {
222+
return getCustomizedPackageName(concatServiceNameIfShareModel(serviceName), Constant.PACKAGE_NAME_PRESIGNEDURL_PATTERN);
223+
}
219224

220225
@Override
221226
public String getSmokeTestPackageName(String serviceName) {

codegen/src/main/java/software/amazon/awssdk/codegen/naming/NamingStrategy.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,11 @@ public interface NamingStrategy {
9393
* Retrieve the batchManager package name that should be used based on the service name.
9494
*/
9595
String getBatchManagerPackageName(String serviceName);
96+
97+
/**
98+
* Retrieve the presignedUrl package name that should be used based on the service name.
99+
*/
100+
String getPresignedUrlPackageName(String serviceName);
96101

97102
/**
98103
* Retrieve the smote test package name that should be used based on the service name.

codegen/src/main/java/software/amazon/awssdk/codegen/poet/PoetExtension.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -209,4 +209,8 @@ public ClassName getBatchManagerAsyncInterface() {
209209
return ClassName.get(model.getMetadata().getFullBatchManagerPackageName(),
210210
model.getMetadata().getServiceName() + "AsyncBatchManager");
211211
}
212+
213+
public ClassName getPresignedUrlManagerAsyncInterface() {
214+
return ClassName.get(model.getMetadata().getFullPresignedUrlPackageName(), "AsyncPresignedUrlManager");
215+
}
212216
}

codegen/src/main/java/software/amazon/awssdk/codegen/poet/client/AsyncClientClass.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -584,6 +584,26 @@ protected void addBatchManagerMethod(Builder type) {
584584

585585
type.addMethod(batchManager);
586586
}
587+
588+
@Override
589+
protected void addPresignedUrlManagerMethod(Builder type) {
590+
ClassName returnType = poetExtensions.getPresignedUrlManagerAsyncInterface();
591+
String internalPresignedUrlPackage = model.getMetadata().getFullInternalPackageName() + ".presignedurl";
592+
ClassName implClass = ClassName.get(internalPresignedUrlPackage, "DefaultAsyncPresignedUrlManager");
593+
594+
MethodSpec presignedUrlManager = MethodSpec.methodBuilder("presignedUrlManager")
595+
.addModifiers(PUBLIC)
596+
.addAnnotation(Override.class)
597+
.returns(returnType)
598+
.addStatement("return new $T(clientHandler,"
599+
+ " protocolFactory, "
600+
+ "clientConfiguration,"
601+
+ " protocolMetadata)",
602+
implClass)
603+
.build();
604+
605+
type.addMethod(presignedUrlManager);
606+
}
587607

588608
private MethodSpec resolveMetricPublishersMethod() {
589609
String clientConfigName = "clientConfiguration";

codegen/src/main/java/software/amazon/awssdk/codegen/poet/client/AsyncClientInterface.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,9 @@ public TypeSpec poetSpec() {
9999
if (model.getCustomizationConfig().getBatchManagerSupported()) {
100100
addBatchManagerMethod(result);
101101
}
102+
if (model.getCustomizationConfig().getPresignedUrlManagerSupported()) {
103+
addPresignedUrlManagerMethod(result);
104+
}
102105
result.addMethod(serviceClientConfigMethod());
103106
addAdditionalMethods(result);
104107
addCloseMethod(result);
@@ -174,6 +177,16 @@ protected void addBatchManagerMethod(TypeSpec.Builder type) {
174177
+ "configuration set on this client.", returnType);
175178
type.addMethod(batchManagerOperationBody(builder).build());
176179
}
180+
181+
protected void addPresignedUrlManagerMethod(TypeSpec.Builder type) {
182+
ClassName returnType = poetExtensions.getPresignedUrlManagerAsyncInterface();
183+
MethodSpec.Builder builder = MethodSpec.methodBuilder("presignedUrlManager")
184+
.addModifiers(PUBLIC)
185+
.returns(returnType)
186+
.addJavadoc("Creates an instance of {@link $T} object with the "
187+
+ "configuration set on this client.", returnType);
188+
type.addMethod(presignedUrlManagerOperationBody(builder).build());
189+
}
177190

178191
@Override
179192
public ClassName className() {
@@ -550,5 +563,10 @@ protected MethodSpec.Builder batchManagerOperationBody(MethodSpec.Builder builde
550563
return builder.addModifiers(DEFAULT, PUBLIC)
551564
.addStatement("throw new $T()", UnsupportedOperationException.class);
552565
}
566+
567+
protected MethodSpec.Builder presignedUrlManagerOperationBody(MethodSpec.Builder builder) {
568+
return builder.addModifiers(DEFAULT, PUBLIC)
569+
.addStatement("throw new $T()", UnsupportedOperationException.class);
570+
}
553571

554572
}

codegen/src/main/java/software/amazon/awssdk/codegen/poet/client/DelegatingAsyncClientClass.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -222,4 +222,9 @@ protected MethodSpec.Builder waiterOperationBody(MethodSpec.Builder builder) {
222222
protected MethodSpec.Builder batchManagerOperationBody(MethodSpec.Builder builder) {
223223
return builder.addAnnotation(Override.class).addStatement("return delegate.batchManager()");
224224
}
225+
226+
@Override
227+
protected MethodSpec.Builder presignedUrlManagerOperationBody(MethodSpec.Builder builder) {
228+
return builder.addAnnotation(Override.class).addStatement("return delegate.presignedUrlManager()");
229+
}
225230
}

0 commit comments

Comments
 (0)