From 4fd9154f86701d697efd57d50cb017c1882d6c7a Mon Sep 17 00:00:00 2001 From: Saranya Somepalli Date: Tue, 20 May 2025 09:11:37 -0700 Subject: [PATCH 01/12] Use partitions.json to generate Region class --- .../feature-AWSSDKforJavav2-7e045dc.json | 6 + .../maven/plugin/RegionGenerationMojo.java | 11 +- .../codegen/lite/regions/RegionGenerator.java | 32 +-- .../codegen/lite/regions/model/Partition.java | 122 ++++++++- .../internal/region/partitions.json.resource | 255 ++++++++++++++++++ .../amazon/awssdk/regions/RegionTest.java | 29 ++ test/region-testing/pom.xml | 1 + .../variants-test-partitions.json.resource | 255 ++++++++++++++++++ 8 files changed, 676 insertions(+), 35 deletions(-) create mode 100644 .changes/next-release/feature-AWSSDKforJavav2-7e045dc.json create mode 100644 core/regions/src/main/resources/software/amazon/awssdk/regions/internal/region/partitions.json.resource create mode 100644 test/region-testing/src/test/resources/variants-test-partitions.json.resource diff --git a/.changes/next-release/feature-AWSSDKforJavav2-7e045dc.json b/.changes/next-release/feature-AWSSDKforJavav2-7e045dc.json new file mode 100644 index 000000000000..ab97542dae5a --- /dev/null +++ b/.changes/next-release/feature-AWSSDKforJavav2-7e045dc.json @@ -0,0 +1,6 @@ +{ + "type": "feature", + "category": "AWS SDK for Java v2", + "contributor": "", + "description": "Updated Region class generation to use Partitions.json instead of the Endpoints.json and removed the hardcoded global regions." +} diff --git a/codegen-lite-maven-plugin/src/main/java/software/amazon/awssdk/codegen/lite/maven/plugin/RegionGenerationMojo.java b/codegen-lite-maven-plugin/src/main/java/software/amazon/awssdk/codegen/lite/maven/plugin/RegionGenerationMojo.java index e02358f3a67c..743e9bd33864 100644 --- a/codegen-lite-maven-plugin/src/main/java/software/amazon/awssdk/codegen/lite/maven/plugin/RegionGenerationMojo.java +++ b/codegen-lite-maven-plugin/src/main/java/software/amazon/awssdk/codegen/lite/maven/plugin/RegionGenerationMojo.java @@ -59,19 +59,24 @@ public class RegionGenerationMojo extends AbstractMojo { "${basedir}/src/main/resources/software/amazon/awssdk/regions/internal/region/endpoints.json") private File endpoints; + @Parameter(property = "partitionsjson", defaultValue = + "${basedir}/src/main/resources/software/amazon/awssdk/regions/internal/region/partitions.json.resource") + private File partitionsjson; + @Override public void execute() throws MojoExecutionException { Path baseSourcesDirectory = Paths.get(outputDirectory).resolve("generated-sources").resolve("sdk"); Path testsDirectory = Paths.get(outputDirectory).resolve("generated-test-sources").resolve("sdk-tests"); Partitions partitions = RegionMetadataLoader.build(endpoints); + Partitions regionpartitions = RegionMetadataLoader.build(partitionsjson); generatePartitionMetadataClass(baseSourcesDirectory, partitions); - generateRegionClass(baseSourcesDirectory, partitions); + generateRegionClass(baseSourcesDirectory, regionpartitions); generateServiceMetadata(baseSourcesDirectory, partitions); - generateRegions(baseSourcesDirectory, partitions); + generateRegions(baseSourcesDirectory, regionpartitions); generatePartitionProvider(baseSourcesDirectory, partitions); - generateRegionProvider(baseSourcesDirectory, partitions); + generateRegionProvider(baseSourcesDirectory, regionpartitions); generateServiceProvider(baseSourcesDirectory, partitions); generateEndpointTags(baseSourcesDirectory, partitions); diff --git a/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/RegionGenerator.java b/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/RegionGenerator.java index fa5467bc847f..5d6ecc6e697b 100644 --- a/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/RegionGenerator.java +++ b/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/RegionGenerator.java @@ -107,14 +107,7 @@ private void regions(TypeSpec.Builder builder) { return regionName(r); }).collect(Collectors.joining(", ")); - addGlobalRegions(builder); - - regionsArray.add(regionsCodeBlock + ", ") - .add("AWS_GLOBAL, ") - .add("AWS_CN_GLOBAL, ") - .add("AWS_US_GOV_GLOBAL, ") - .add("AWS_ISO_GLOBAL, ") - .add("AWS_ISO_B_GLOBAL"); + regionsArray.add(regionsCodeBlock); regionsArray.add("))"); TypeName listOfRegions = ParameterizedTypeName.get(ClassName.get(List.class), className()); @@ -123,29 +116,6 @@ private void regions(TypeSpec.Builder builder) { .initializer(regionsArray.build()).build()); } - private void addGlobalRegions(TypeSpec.Builder builder) { - builder.addField(FieldSpec.builder(className(), "AWS_GLOBAL") - .addModifiers(PUBLIC, STATIC, FINAL) - .initializer("$T.of($S, true)", className(), "aws-global") - .build()) - .addField(FieldSpec.builder(className(), "AWS_CN_GLOBAL") - .addModifiers(PUBLIC, STATIC, FINAL) - .initializer("$T.of($S, true)", className(), "aws-cn-global") - .build()) - .addField(FieldSpec.builder(className(), "AWS_US_GOV_GLOBAL") - .addModifiers(PUBLIC, STATIC, FINAL) - .initializer("$T.of($S, true)", className(), "aws-us-gov-global") - .build()) - .addField(FieldSpec.builder(className(), "AWS_ISO_GLOBAL") - .addModifiers(PUBLIC, STATIC, FINAL) - .initializer("$T.of($S, true)", className(), "aws-iso-global") - .build()) - .addField(FieldSpec.builder(className(), "AWS_ISO_B_GLOBAL") - .addModifiers(PUBLIC, STATIC, FINAL) - .initializer("$T.of($S, true)", className(), "aws-iso-b-global") - .build()); - } - private String regionName(String region) { return region.replace("-", "_").toUpperCase(Locale.US); } diff --git a/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/model/Partition.java b/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/model/Partition.java index e225d47bfd82..3f6cd8a288c4 100644 --- a/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/model/Partition.java +++ b/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/model/Partition.java @@ -62,6 +62,16 @@ public final class Partition { */ private Endpoint defaults; + /** + * The partition id. + */ + private String id; + + /** + * Configuration outputs for the partition. + */ + private PartitionOutputs outputs; + public Partition() { } @@ -69,10 +79,44 @@ public Partition(@JsonProperty(value = "partition") String partition, @JsonProperty(value = "regions") Map regions, @JsonProperty(value = "services") Map services) { + Service> services, + @JsonProperty(value = "id") String id, + @JsonProperty(value = "outputs") PartitionOutputs outputs, + @JsonProperty(value = "regionRegex") String regionRegex) { this.partition = Validate.paramNotNull(partition, "Partition"); this.regions = regions; this.services = services; + this.id = id; + this.outputs = outputs; + this.regionRegex = regionRegex; + } + + /** + * Returns the partition ID. + */ + public String getId() { + return id; + } + + /** + * Sets the partition id. + */ + public void setId(String id) { + this.id = id; + } + + /** + * Returns the configuration outputs for the partition. + */ + public PartitionOutputs getOutputs() { + return outputs; + } + + /** + * Sets the configuration outputs for the partition. + */ + public void setOutputs(PartitionOutputs outputs) { + this.outputs = outputs; } /** @@ -177,6 +221,82 @@ private boolean matchesRegionRegex(String region) { return p.matcher(region).matches(); } + public static class PartitionOutputs { + private String dnsSuffix; + private String dualStackDnsSuffix; + private String implicitGlobalRegion; + private String name; + private boolean supportsDualStack; + private boolean supportsFIPS; + + @JsonProperty("dnsSuffix") + public String getDnsSuffix() { + return dnsSuffix; + } + + public void setDnsSuffix(String dnsSuffix) { + this.dnsSuffix = dnsSuffix; + } + + @JsonProperty("dualStackDnsSuffix") + public String getDualStackDnsSuffix() { + return dualStackDnsSuffix; + } + + public void setDualStackDnsSuffix(String dualStackDnsSuffix) { + this.dualStackDnsSuffix = dualStackDnsSuffix; + } + + @JsonProperty("implicitGlobalRegion") + public String getImplicitGlobalRegion() { + return implicitGlobalRegion; + } + + public void setImplicitGlobalRegion(String implicitGlobalRegion) { + this.implicitGlobalRegion = implicitGlobalRegion; + } + + @JsonProperty("name") + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @JsonProperty("supportsDualStack") + public boolean getSupportsDualStack() { + return supportsDualStack; + } + + public void setSupportsDualStack(boolean supportsDualStack) { + this.supportsDualStack = supportsDualStack; + } + + @JsonProperty("supportsFIPS") + public boolean getSupportsFIPS() { + return supportsFIPS; + } + + public void setSupportsFIPS(boolean supportsFIPS) { + this.supportsFIPS = supportsFIPS; + } + } + + public static class Region { + private String description; + + @JsonProperty("description") + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + } + @Deprecated private boolean hasServiceEndpoint(String endpoint) { for (Service s : services.values()) { diff --git a/core/regions/src/main/resources/software/amazon/awssdk/regions/internal/region/partitions.json.resource b/core/regions/src/main/resources/software/amazon/awssdk/regions/internal/region/partitions.json.resource new file mode 100644 index 000000000000..3d7e9530924e --- /dev/null +++ b/core/regions/src/main/resources/software/amazon/awssdk/regions/internal/region/partitions.json.resource @@ -0,0 +1,255 @@ +{ + "partitions" : [ { + "id" : "aws", + "outputs" : { + "dnsSuffix" : "amazonaws.com", + "dualStackDnsSuffix" : "api.aws", + "implicitGlobalRegion" : "us-east-1", + "name" : "aws", + "supportsDualStack" : true, + "supportsFIPS" : true + }, + "regionRegex" : "^(us|eu|ap|sa|ca|me|af|il|mx)\\-\\w+\\-\\d+$", + "regions" : { + "af-south-1" : { + "description" : "Africa (Cape Town)" + }, + "ap-east-1" : { + "description" : "Asia Pacific (Hong Kong)" + }, + "ap-northeast-1" : { + "description" : "Asia Pacific (Tokyo)" + }, + "ap-northeast-2" : { + "description" : "Asia Pacific (Seoul)" + }, + "ap-northeast-3" : { + "description" : "Asia Pacific (Osaka)" + }, + "ap-south-1" : { + "description" : "Asia Pacific (Mumbai)" + }, + "ap-south-2" : { + "description" : "Asia Pacific (Hyderabad)" + }, + "ap-southeast-1" : { + "description" : "Asia Pacific (Singapore)" + }, + "ap-southeast-2" : { + "description" : "Asia Pacific (Sydney)" + }, + "ap-southeast-3" : { + "description" : "Asia Pacific (Jakarta)" + }, + "ap-southeast-4" : { + "description" : "Asia Pacific (Melbourne)" + }, + "ap-southeast-5" : { + "description" : "Asia Pacific (Malaysia)" + }, + "ap-southeast-7" : { + "description" : "Asia Pacific (Thailand)" + }, + "aws-global" : { + "description" : "AWS Standard global region" + }, + "ca-central-1" : { + "description" : "Canada (Central)" + }, + "ca-west-1" : { + "description" : "Canada West (Calgary)" + }, + "eu-central-1" : { + "description" : "Europe (Frankfurt)" + }, + "eu-central-2" : { + "description" : "Europe (Zurich)" + }, + "eu-north-1" : { + "description" : "Europe (Stockholm)" + }, + "eu-south-1" : { + "description" : "Europe (Milan)" + }, + "eu-south-2" : { + "description" : "Europe (Spain)" + }, + "eu-west-1" : { + "description" : "Europe (Ireland)" + }, + "eu-west-2" : { + "description" : "Europe (London)" + }, + "eu-west-3" : { + "description" : "Europe (Paris)" + }, + "il-central-1" : { + "description" : "Israel (Tel Aviv)" + }, + "me-central-1" : { + "description" : "Middle East (UAE)" + }, + "me-south-1" : { + "description" : "Middle East (Bahrain)" + }, + "mx-central-1" : { + "description" : "Mexico (Central)" + }, + "sa-east-1" : { + "description" : "South America (Sao Paulo)" + }, + "us-east-1" : { + "description" : "US East (N. Virginia)" + }, + "us-east-2" : { + "description" : "US East (Ohio)" + }, + "us-west-1" : { + "description" : "US West (N. California)" + }, + "us-west-2" : { + "description" : "US West (Oregon)" + } + } + }, { + "id" : "aws-cn", + "outputs" : { + "dnsSuffix" : "amazonaws.com.cn", + "dualStackDnsSuffix" : "api.amazonwebservices.com.cn", + "implicitGlobalRegion" : "cn-northwest-1", + "name" : "aws-cn", + "supportsDualStack" : true, + "supportsFIPS" : true + }, + "regionRegex" : "^cn\\-\\w+\\-\\d+$", + "regions" : { + "aws-cn-global" : { + "description" : "AWS China global region" + }, + "cn-north-1" : { + "description" : "China (Beijing)" + }, + "cn-northwest-1" : { + "description" : "China (Ningxia)" + } + } + }, { + "id" : "aws-us-gov", + "outputs" : { + "dnsSuffix" : "amazonaws.com", + "dualStackDnsSuffix" : "api.aws", + "implicitGlobalRegion" : "us-gov-west-1", + "name" : "aws-us-gov", + "supportsDualStack" : true, + "supportsFIPS" : true + }, + "regionRegex" : "^us\\-gov\\-\\w+\\-\\d+$", + "regions" : { + "aws-us-gov-global" : { + "description" : "AWS GovCloud (US) global region" + }, + "us-gov-east-1" : { + "description" : "AWS GovCloud (US-East)" + }, + "us-gov-west-1" : { + "description" : "AWS GovCloud (US-West)" + } + } + }, { + "id" : "aws-iso", + "outputs" : { + "dnsSuffix" : "c2s.ic.gov", + "dualStackDnsSuffix" : "c2s.ic.gov", + "implicitGlobalRegion" : "us-iso-east-1", + "name" : "aws-iso", + "supportsDualStack" : false, + "supportsFIPS" : true + }, + "regionRegex" : "^us\\-iso\\-\\w+\\-\\d+$", + "regions" : { + "aws-iso-global" : { + "description" : "AWS ISO (US) global region" + }, + "us-iso-east-1" : { + "description" : "US ISO East" + }, + "us-iso-west-1" : { + "description" : "US ISO WEST" + } + } + }, { + "id" : "aws-iso-b", + "outputs" : { + "dnsSuffix" : "sc2s.sgov.gov", + "dualStackDnsSuffix" : "sc2s.sgov.gov", + "implicitGlobalRegion" : "us-isob-east-1", + "name" : "aws-iso-b", + "supportsDualStack" : false, + "supportsFIPS" : true + }, + "regionRegex" : "^us\\-isob\\-\\w+\\-\\d+$", + "regions" : { + "aws-iso-b-global" : { + "description" : "AWS ISOB (US) global region" + }, + "us-isob-east-1" : { + "description" : "US ISOB East (Ohio)" + } + } + }, { + "id" : "aws-iso-e", + "outputs" : { + "dnsSuffix" : "cloud.adc-e.uk", + "dualStackDnsSuffix" : "cloud.adc-e.uk", + "implicitGlobalRegion" : "eu-isoe-west-1", + "name" : "aws-iso-e", + "supportsDualStack" : false, + "supportsFIPS" : true + }, + "regionRegex" : "^eu\\-isoe\\-\\w+\\-\\d+$", + "regions" : { + "eu-isoe-west-1" : { + "description" : "EU ISOE West" + } + } + }, { + "id" : "aws-iso-f", + "outputs" : { + "dnsSuffix" : "csp.hci.ic.gov", + "dualStackDnsSuffix" : "csp.hci.ic.gov", + "implicitGlobalRegion" : "us-isof-south-1", + "name" : "aws-iso-f", + "supportsDualStack" : false, + "supportsFIPS" : true + }, + "regionRegex" : "^us\\-isof\\-\\w+\\-\\d+$", + "regions" : { + "aws-iso-f-global" : { + "description" : "AWS ISOF global region" + }, + "us-isof-east-1" : { + "description" : "US ISOF EAST" + }, + "us-isof-south-1" : { + "description" : "US ISOF SOUTH" + } + } + }, { + "id" : "aws-eusc", + "outputs" : { + "dnsSuffix" : "amazonaws.eu", + "dualStackDnsSuffix" : "amazonaws.eu", + "implicitGlobalRegion" : "eusc-de-east-1", + "name" : "aws-eusc", + "supportsDualStack" : false, + "supportsFIPS" : true + }, + "regionRegex" : "^eusc\\-(de)\\-\\w+\\-\\d+$", + "regions" : { + "eusc-de-east-1" : { + "description" : "EU (Germany)" + } + } + } ], + "version" : "1.1" +} \ No newline at end of file diff --git a/core/regions/src/test/java/software/amazon/awssdk/regions/RegionTest.java b/core/regions/src/test/java/software/amazon/awssdk/regions/RegionTest.java index 49f057b746c2..d6d5a94deb97 100644 --- a/core/regions/src/test/java/software/amazon/awssdk/regions/RegionTest.java +++ b/core/regions/src/test/java/software/amazon/awssdk/regions/RegionTest.java @@ -66,4 +66,33 @@ public void idIsUrlEncoded() { Region region = Region.of("http://my-host.com/?"); assertThat(region.id()).isEqualTo("http%3A%2F%2Fmy-host.com%2F%3F"); } + + @Test + public void globalRegionIsRecognized() { + Region globalRegion = Region.of("aws-global"); + assertThat(globalRegion.id()).isEqualTo("aws-global"); + assertSame(Region.AWS_GLOBAL, globalRegion); + } + + @Test + public void multipleGlobalRegionsAreSupported() { + Region awsGlobal = Region.of("aws-global"); + Region s3Global = Region.of("s3-global"); + + assertThat(awsGlobal.id()).isEqualTo("aws-global"); + assertThat(s3Global.id()).isEqualTo("s3-global"); + + assertSame(Region.of("aws-global"), awsGlobal); + assertSame(Region.of("s3-global"), s3Global); + } + + @Test + public void allPartitionGlobalRegionsAreRecognized() { + assertThat(Region.of("aws-global").id()).isEqualTo("aws-global"); + assertThat(Region.of("aws-cn-global").id()).isEqualTo("aws-cn-global"); + assertThat(Region.of("aws-us-gov-global").id()).isEqualTo("aws-us-gov-global"); + assertThat(Region.of("aws-iso-global").id()).isEqualTo("aws-iso-global"); + assertThat(Region.of("aws-iso-b-global").id()).isEqualTo("aws-iso-b-global"); + assertThat(Region.of("aws-iso-f-global").id()).isEqualTo("aws-iso-f-global"); + } } diff --git a/test/region-testing/pom.xml b/test/region-testing/pom.xml index 1938f51ca2ed..2f924b4d3bb4 100644 --- a/test/region-testing/pom.xml +++ b/test/region-testing/pom.xml @@ -102,6 +102,7 @@ ${basedir}/src/test/resources/variants-test-endpoints.json + ${basedir}/src/test/resources/variants-test-partitions.json.resource diff --git a/test/region-testing/src/test/resources/variants-test-partitions.json.resource b/test/region-testing/src/test/resources/variants-test-partitions.json.resource new file mode 100644 index 000000000000..3d7e9530924e --- /dev/null +++ b/test/region-testing/src/test/resources/variants-test-partitions.json.resource @@ -0,0 +1,255 @@ +{ + "partitions" : [ { + "id" : "aws", + "outputs" : { + "dnsSuffix" : "amazonaws.com", + "dualStackDnsSuffix" : "api.aws", + "implicitGlobalRegion" : "us-east-1", + "name" : "aws", + "supportsDualStack" : true, + "supportsFIPS" : true + }, + "regionRegex" : "^(us|eu|ap|sa|ca|me|af|il|mx)\\-\\w+\\-\\d+$", + "regions" : { + "af-south-1" : { + "description" : "Africa (Cape Town)" + }, + "ap-east-1" : { + "description" : "Asia Pacific (Hong Kong)" + }, + "ap-northeast-1" : { + "description" : "Asia Pacific (Tokyo)" + }, + "ap-northeast-2" : { + "description" : "Asia Pacific (Seoul)" + }, + "ap-northeast-3" : { + "description" : "Asia Pacific (Osaka)" + }, + "ap-south-1" : { + "description" : "Asia Pacific (Mumbai)" + }, + "ap-south-2" : { + "description" : "Asia Pacific (Hyderabad)" + }, + "ap-southeast-1" : { + "description" : "Asia Pacific (Singapore)" + }, + "ap-southeast-2" : { + "description" : "Asia Pacific (Sydney)" + }, + "ap-southeast-3" : { + "description" : "Asia Pacific (Jakarta)" + }, + "ap-southeast-4" : { + "description" : "Asia Pacific (Melbourne)" + }, + "ap-southeast-5" : { + "description" : "Asia Pacific (Malaysia)" + }, + "ap-southeast-7" : { + "description" : "Asia Pacific (Thailand)" + }, + "aws-global" : { + "description" : "AWS Standard global region" + }, + "ca-central-1" : { + "description" : "Canada (Central)" + }, + "ca-west-1" : { + "description" : "Canada West (Calgary)" + }, + "eu-central-1" : { + "description" : "Europe (Frankfurt)" + }, + "eu-central-2" : { + "description" : "Europe (Zurich)" + }, + "eu-north-1" : { + "description" : "Europe (Stockholm)" + }, + "eu-south-1" : { + "description" : "Europe (Milan)" + }, + "eu-south-2" : { + "description" : "Europe (Spain)" + }, + "eu-west-1" : { + "description" : "Europe (Ireland)" + }, + "eu-west-2" : { + "description" : "Europe (London)" + }, + "eu-west-3" : { + "description" : "Europe (Paris)" + }, + "il-central-1" : { + "description" : "Israel (Tel Aviv)" + }, + "me-central-1" : { + "description" : "Middle East (UAE)" + }, + "me-south-1" : { + "description" : "Middle East (Bahrain)" + }, + "mx-central-1" : { + "description" : "Mexico (Central)" + }, + "sa-east-1" : { + "description" : "South America (Sao Paulo)" + }, + "us-east-1" : { + "description" : "US East (N. Virginia)" + }, + "us-east-2" : { + "description" : "US East (Ohio)" + }, + "us-west-1" : { + "description" : "US West (N. California)" + }, + "us-west-2" : { + "description" : "US West (Oregon)" + } + } + }, { + "id" : "aws-cn", + "outputs" : { + "dnsSuffix" : "amazonaws.com.cn", + "dualStackDnsSuffix" : "api.amazonwebservices.com.cn", + "implicitGlobalRegion" : "cn-northwest-1", + "name" : "aws-cn", + "supportsDualStack" : true, + "supportsFIPS" : true + }, + "regionRegex" : "^cn\\-\\w+\\-\\d+$", + "regions" : { + "aws-cn-global" : { + "description" : "AWS China global region" + }, + "cn-north-1" : { + "description" : "China (Beijing)" + }, + "cn-northwest-1" : { + "description" : "China (Ningxia)" + } + } + }, { + "id" : "aws-us-gov", + "outputs" : { + "dnsSuffix" : "amazonaws.com", + "dualStackDnsSuffix" : "api.aws", + "implicitGlobalRegion" : "us-gov-west-1", + "name" : "aws-us-gov", + "supportsDualStack" : true, + "supportsFIPS" : true + }, + "regionRegex" : "^us\\-gov\\-\\w+\\-\\d+$", + "regions" : { + "aws-us-gov-global" : { + "description" : "AWS GovCloud (US) global region" + }, + "us-gov-east-1" : { + "description" : "AWS GovCloud (US-East)" + }, + "us-gov-west-1" : { + "description" : "AWS GovCloud (US-West)" + } + } + }, { + "id" : "aws-iso", + "outputs" : { + "dnsSuffix" : "c2s.ic.gov", + "dualStackDnsSuffix" : "c2s.ic.gov", + "implicitGlobalRegion" : "us-iso-east-1", + "name" : "aws-iso", + "supportsDualStack" : false, + "supportsFIPS" : true + }, + "regionRegex" : "^us\\-iso\\-\\w+\\-\\d+$", + "regions" : { + "aws-iso-global" : { + "description" : "AWS ISO (US) global region" + }, + "us-iso-east-1" : { + "description" : "US ISO East" + }, + "us-iso-west-1" : { + "description" : "US ISO WEST" + } + } + }, { + "id" : "aws-iso-b", + "outputs" : { + "dnsSuffix" : "sc2s.sgov.gov", + "dualStackDnsSuffix" : "sc2s.sgov.gov", + "implicitGlobalRegion" : "us-isob-east-1", + "name" : "aws-iso-b", + "supportsDualStack" : false, + "supportsFIPS" : true + }, + "regionRegex" : "^us\\-isob\\-\\w+\\-\\d+$", + "regions" : { + "aws-iso-b-global" : { + "description" : "AWS ISOB (US) global region" + }, + "us-isob-east-1" : { + "description" : "US ISOB East (Ohio)" + } + } + }, { + "id" : "aws-iso-e", + "outputs" : { + "dnsSuffix" : "cloud.adc-e.uk", + "dualStackDnsSuffix" : "cloud.adc-e.uk", + "implicitGlobalRegion" : "eu-isoe-west-1", + "name" : "aws-iso-e", + "supportsDualStack" : false, + "supportsFIPS" : true + }, + "regionRegex" : "^eu\\-isoe\\-\\w+\\-\\d+$", + "regions" : { + "eu-isoe-west-1" : { + "description" : "EU ISOE West" + } + } + }, { + "id" : "aws-iso-f", + "outputs" : { + "dnsSuffix" : "csp.hci.ic.gov", + "dualStackDnsSuffix" : "csp.hci.ic.gov", + "implicitGlobalRegion" : "us-isof-south-1", + "name" : "aws-iso-f", + "supportsDualStack" : false, + "supportsFIPS" : true + }, + "regionRegex" : "^us\\-isof\\-\\w+\\-\\d+$", + "regions" : { + "aws-iso-f-global" : { + "description" : "AWS ISOF global region" + }, + "us-isof-east-1" : { + "description" : "US ISOF EAST" + }, + "us-isof-south-1" : { + "description" : "US ISOF SOUTH" + } + } + }, { + "id" : "aws-eusc", + "outputs" : { + "dnsSuffix" : "amazonaws.eu", + "dualStackDnsSuffix" : "amazonaws.eu", + "implicitGlobalRegion" : "eusc-de-east-1", + "name" : "aws-eusc", + "supportsDualStack" : false, + "supportsFIPS" : true + }, + "regionRegex" : "^eusc\\-(de)\\-\\w+\\-\\d+$", + "regions" : { + "eusc-de-east-1" : { + "description" : "EU (Germany)" + } + } + } ], + "version" : "1.1" +} \ No newline at end of file From 1d30afa190ce29f0688f38dc9e8b3493dab436aa Mon Sep 17 00:00:00 2001 From: Saranya Somepalli Date: Tue, 20 May 2025 15:39:04 -0700 Subject: [PATCH 02/12] Updating the test files --- .../codegen/lite/regions/RegionGenerator.java | 3 +- .../lite/regions/RegionGenerationTest.java | 8 +- .../awssdk/codegen/lite/regions/regions.java | 94 ++++--- .../lite/test-partitions.json.resource | 255 ++++++++++++++++++ 4 files changed, 328 insertions(+), 32 deletions(-) create mode 100644 codegen-lite/src/test/resources/software/amazon/awssdk/codegen/lite/test-partitions.json.resource diff --git a/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/RegionGenerator.java b/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/RegionGenerator.java index 5d6ecc6e697b..9ec7f874abf7 100644 --- a/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/RegionGenerator.java +++ b/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/RegionGenerator.java @@ -100,9 +100,10 @@ private void regions(TypeSpec.Builder builder) { .add("$T.unmodifiableList($T.asList(", Collections.class, Arrays.class); String regionsCodeBlock = regions.stream().map(r -> { + boolean isGlobal = r.toLowerCase().contains("global"); builder.addField(FieldSpec.builder(className(), regionName(r)) .addModifiers(PUBLIC, STATIC, FINAL) - .initializer("$T.of($S)", className(), r) + .initializer(isGlobal ? "$T.of($S, true)" : "$T.of($S)", className(), r) .build()); return regionName(r); }).collect(Collectors.joining(", ")); diff --git a/codegen-lite/src/test/java/software/amazon/awssdk/codegen/lite/regions/RegionGenerationTest.java b/codegen-lite/src/test/java/software/amazon/awssdk/codegen/lite/regions/RegionGenerationTest.java index 0240958a17d9..d00565f6372f 100644 --- a/codegen-lite/src/test/java/software/amazon/awssdk/codegen/lite/regions/RegionGenerationTest.java +++ b/codegen-lite/src/test/java/software/amazon/awssdk/codegen/lite/regions/RegionGenerationTest.java @@ -27,23 +27,29 @@ public class RegionGenerationTest { private static final String ENDPOINTS = "/software/amazon/awssdk/codegen/lite/test-endpoints.json"; + private static final String PARTITIONS = "/software/amazon/awssdk/codegen/lite/test-partitions.json.resource"; private static final String SERVICE_METADATA_BASE = "software.amazon.awssdk.regions.servicemetadata"; private static final String REGION_METADATA_BASE = "software.amazon.awssdk.regions.regionmetadata"; private static final String PARTITION_METADATA_BASE = "software.amazon.awssdk.regions.partitionmetadata"; private static final String REGION_BASE = "software.amazon.awssdk.regions"; private File endpoints; + private File partitionsFile; private Partitions partitions; + private Partitions partitionsRegions; + @BeforeEach public void before() throws Exception { this.endpoints = Paths.get(getClass().getResource(ENDPOINTS).toURI()).toFile(); + this.partitionsFile = Paths.get(getClass().getResource(PARTITIONS).toURI()).toFile(); this.partitions = RegionMetadataLoader.build(endpoints); + this.partitionsRegions = RegionMetadataLoader.build(partitionsFile); } @Test public void regionClass() { - RegionGenerator regions = new RegionGenerator(partitions, REGION_BASE); + RegionGenerator regions = new RegionGenerator(partitionsRegions, REGION_BASE); assertThat(regions, generatesTo("regions.java")); } diff --git a/codegen-lite/src/test/resources/software/amazon/awssdk/codegen/lite/regions/regions.java b/codegen-lite/src/test/resources/software/amazon/awssdk/codegen/lite/regions/regions.java index e007c4fbaf79..9935ffd3f4d9 100644 --- a/codegen-lite/src/test/resources/software/amazon/awssdk/codegen/lite/regions/regions.java +++ b/codegen-lite/src/test/resources/software/amazon/awssdk/codegen/lite/regions/regions.java @@ -36,17 +36,11 @@ @SdkPublicApi @Generated("software.amazon.awssdk:codegen") public final class Region { - public static final Region AP_SOUTH_1 = Region.of("ap-south-1"); - - public static final Region EU_SOUTH_1 = Region.of("eu-south-1"); - - public static final Region US_GOV_EAST_1 = Region.of("us-gov-east-1"); + public static final Region ME_CENTRAL_1 = Region.of("me-central-1"); - public static final Region CA_CENTRAL_1 = Region.of("ca-central-1"); + public static final Region AWS_CN_GLOBAL = Region.of("aws-cn-global", true); - public static final Region EU_CENTRAL_1 = Region.of("eu-central-1"); - - public static final Region US_ISO_WEST_1 = Region.of("us-iso-west-1"); + public static final Region US_ISOF_SOUTH_1 = Region.of("us-isof-south-1"); public static final Region US_WEST_1 = Region.of("us-west-1"); @@ -54,14 +48,6 @@ public final class Region { public static final Region AF_SOUTH_1 = Region.of("af-south-1"); - public static final Region EU_NORTH_1 = Region.of("eu-north-1"); - - public static final Region EU_WEST_3 = Region.of("eu-west-3"); - - public static final Region EU_WEST_2 = Region.of("eu-west-2"); - - public static final Region EU_WEST_1 = Region.of("eu-west-1"); - public static final Region AP_NORTHEAST_3 = Region.of("ap-northeast-3"); public static final Region AP_NORTHEAST_2 = Region.of("ap-northeast-2"); @@ -72,41 +58,89 @@ public final class Region { public static final Region SA_EAST_1 = Region.of("sa-east-1"); - public static final Region AP_EAST_1 = Region.of("ap-east-1"); - public static final Region CN_NORTH_1 = Region.of("cn-north-1"); - public static final Region US_GOV_WEST_1 = Region.of("us-gov-west-1"); - public static final Region AP_SOUTHEAST_1 = Region.of("ap-southeast-1"); public static final Region AP_SOUTHEAST_2 = Region.of("ap-southeast-2"); - public static final Region US_ISO_EAST_1 = Region.of("us-iso-east-1"); + public static final Region AP_SOUTHEAST_3 = Region.of("ap-southeast-3"); + + public static final Region AP_SOUTHEAST_4 = Region.of("ap-southeast-4"); + + public static final Region AP_SOUTHEAST_5 = Region.of("ap-southeast-5"); public static final Region US_EAST_1 = Region.of("us-east-1"); public static final Region US_EAST_2 = Region.of("us-east-2"); + public static final Region AP_SOUTHEAST_7 = Region.of("ap-southeast-7"); + public static final Region CN_NORTHWEST_1 = Region.of("cn-northwest-1"); - public static final Region US_ISOB_EAST_1 = Region.of("us-isob-east-1"); + public static final Region AP_SOUTH_2 = Region.of("ap-south-2"); + + public static final Region AP_SOUTH_1 = Region.of("ap-south-1"); + + public static final Region EU_SOUTH_1 = Region.of("eu-south-1"); + + public static final Region EU_SOUTH_2 = Region.of("eu-south-2"); + + public static final Region US_GOV_EAST_1 = Region.of("us-gov-east-1"); + + public static final Region IL_CENTRAL_1 = Region.of("il-central-1"); + + public static final Region CA_CENTRAL_1 = Region.of("ca-central-1"); + + public static final Region MX_CENTRAL_1 = Region.of("mx-central-1"); + + public static final Region EU_CENTRAL_1 = Region.of("eu-central-1"); + + public static final Region US_ISO_WEST_1 = Region.of("us-iso-west-1"); + + public static final Region EUSC_DE_EAST_1 = Region.of("eusc-de-east-1"); + + public static final Region EU_CENTRAL_2 = Region.of("eu-central-2"); + + public static final Region EU_ISOE_WEST_1 = Region.of("eu-isoe-west-1"); public static final Region AWS_GLOBAL = Region.of("aws-global", true); - public static final Region AWS_CN_GLOBAL = Region.of("aws-cn-global", true); + public static final Region EU_NORTH_1 = Region.of("eu-north-1"); - public static final Region AWS_US_GOV_GLOBAL = Region.of("aws-us-gov-global", true); + public static final Region EU_WEST_3 = Region.of("eu-west-3"); + + public static final Region EU_WEST_2 = Region.of("eu-west-2"); + + public static final Region EU_WEST_1 = Region.of("eu-west-1"); public static final Region AWS_ISO_GLOBAL = Region.of("aws-iso-global", true); + public static final Region AP_EAST_1 = Region.of("ap-east-1"); + + public static final Region CA_WEST_1 = Region.of("ca-west-1"); + + public static final Region US_GOV_WEST_1 = Region.of("us-gov-west-1"); + + public static final Region US_ISO_EAST_1 = Region.of("us-iso-east-1"); + public static final Region AWS_ISO_B_GLOBAL = Region.of("aws-iso-b-global", true); - private static final List REGIONS = Collections.unmodifiableList(Arrays.asList(AP_SOUTH_1, EU_SOUTH_1, US_GOV_EAST_1, - CA_CENTRAL_1, EU_CENTRAL_1, US_ISO_WEST_1, US_WEST_1, US_WEST_2, AF_SOUTH_1, EU_NORTH_1, EU_WEST_3, EU_WEST_2, - EU_WEST_1, AP_NORTHEAST_3, AP_NORTHEAST_2, AP_NORTHEAST_1, ME_SOUTH_1, SA_EAST_1, AP_EAST_1, CN_NORTH_1, - US_GOV_WEST_1, AP_SOUTHEAST_1, AP_SOUTHEAST_2, US_ISO_EAST_1, US_EAST_1, US_EAST_2, CN_NORTHWEST_1, US_ISOB_EAST_1, - AWS_GLOBAL, AWS_CN_GLOBAL, AWS_US_GOV_GLOBAL, AWS_ISO_GLOBAL, AWS_ISO_B_GLOBAL)); + public static final Region AWS_ISO_F_GLOBAL = Region.of("aws-iso-f-global", true); + + public static final Region AWS_US_GOV_GLOBAL = Region.of("aws-us-gov-global", true); + + public static final Region US_ISOB_EAST_1 = Region.of("us-isob-east-1"); + + public static final Region US_ISOF_EAST_1 = Region.of("us-isof-east-1"); + + private static final List REGIONS = Collections.unmodifiableList(Arrays.asList(ME_CENTRAL_1, AWS_CN_GLOBAL, + US_ISOF_SOUTH_1, US_WEST_1, US_WEST_2, AF_SOUTH_1, AP_NORTHEAST_3, AP_NORTHEAST_2, AP_NORTHEAST_1, ME_SOUTH_1, + SA_EAST_1, CN_NORTH_1, AP_SOUTHEAST_1, AP_SOUTHEAST_2, AP_SOUTHEAST_3, AP_SOUTHEAST_4, AP_SOUTHEAST_5, US_EAST_1, + US_EAST_2, AP_SOUTHEAST_7, CN_NORTHWEST_1, AP_SOUTH_2, AP_SOUTH_1, EU_SOUTH_1, EU_SOUTH_2, US_GOV_EAST_1, + IL_CENTRAL_1, CA_CENTRAL_1, MX_CENTRAL_1, EU_CENTRAL_1, US_ISO_WEST_1, EUSC_DE_EAST_1, EU_CENTRAL_2, EU_ISOE_WEST_1, + AWS_GLOBAL, EU_NORTH_1, EU_WEST_3, EU_WEST_2, EU_WEST_1, AWS_ISO_GLOBAL, AP_EAST_1, CA_WEST_1, US_GOV_WEST_1, + US_ISO_EAST_1, AWS_ISO_B_GLOBAL, AWS_ISO_F_GLOBAL, AWS_US_GOV_GLOBAL, US_ISOB_EAST_1, US_ISOF_EAST_1)); private final boolean isGlobalRegion; diff --git a/codegen-lite/src/test/resources/software/amazon/awssdk/codegen/lite/test-partitions.json.resource b/codegen-lite/src/test/resources/software/amazon/awssdk/codegen/lite/test-partitions.json.resource new file mode 100644 index 000000000000..3d7e9530924e --- /dev/null +++ b/codegen-lite/src/test/resources/software/amazon/awssdk/codegen/lite/test-partitions.json.resource @@ -0,0 +1,255 @@ +{ + "partitions" : [ { + "id" : "aws", + "outputs" : { + "dnsSuffix" : "amazonaws.com", + "dualStackDnsSuffix" : "api.aws", + "implicitGlobalRegion" : "us-east-1", + "name" : "aws", + "supportsDualStack" : true, + "supportsFIPS" : true + }, + "regionRegex" : "^(us|eu|ap|sa|ca|me|af|il|mx)\\-\\w+\\-\\d+$", + "regions" : { + "af-south-1" : { + "description" : "Africa (Cape Town)" + }, + "ap-east-1" : { + "description" : "Asia Pacific (Hong Kong)" + }, + "ap-northeast-1" : { + "description" : "Asia Pacific (Tokyo)" + }, + "ap-northeast-2" : { + "description" : "Asia Pacific (Seoul)" + }, + "ap-northeast-3" : { + "description" : "Asia Pacific (Osaka)" + }, + "ap-south-1" : { + "description" : "Asia Pacific (Mumbai)" + }, + "ap-south-2" : { + "description" : "Asia Pacific (Hyderabad)" + }, + "ap-southeast-1" : { + "description" : "Asia Pacific (Singapore)" + }, + "ap-southeast-2" : { + "description" : "Asia Pacific (Sydney)" + }, + "ap-southeast-3" : { + "description" : "Asia Pacific (Jakarta)" + }, + "ap-southeast-4" : { + "description" : "Asia Pacific (Melbourne)" + }, + "ap-southeast-5" : { + "description" : "Asia Pacific (Malaysia)" + }, + "ap-southeast-7" : { + "description" : "Asia Pacific (Thailand)" + }, + "aws-global" : { + "description" : "AWS Standard global region" + }, + "ca-central-1" : { + "description" : "Canada (Central)" + }, + "ca-west-1" : { + "description" : "Canada West (Calgary)" + }, + "eu-central-1" : { + "description" : "Europe (Frankfurt)" + }, + "eu-central-2" : { + "description" : "Europe (Zurich)" + }, + "eu-north-1" : { + "description" : "Europe (Stockholm)" + }, + "eu-south-1" : { + "description" : "Europe (Milan)" + }, + "eu-south-2" : { + "description" : "Europe (Spain)" + }, + "eu-west-1" : { + "description" : "Europe (Ireland)" + }, + "eu-west-2" : { + "description" : "Europe (London)" + }, + "eu-west-3" : { + "description" : "Europe (Paris)" + }, + "il-central-1" : { + "description" : "Israel (Tel Aviv)" + }, + "me-central-1" : { + "description" : "Middle East (UAE)" + }, + "me-south-1" : { + "description" : "Middle East (Bahrain)" + }, + "mx-central-1" : { + "description" : "Mexico (Central)" + }, + "sa-east-1" : { + "description" : "South America (Sao Paulo)" + }, + "us-east-1" : { + "description" : "US East (N. Virginia)" + }, + "us-east-2" : { + "description" : "US East (Ohio)" + }, + "us-west-1" : { + "description" : "US West (N. California)" + }, + "us-west-2" : { + "description" : "US West (Oregon)" + } + } + }, { + "id" : "aws-cn", + "outputs" : { + "dnsSuffix" : "amazonaws.com.cn", + "dualStackDnsSuffix" : "api.amazonwebservices.com.cn", + "implicitGlobalRegion" : "cn-northwest-1", + "name" : "aws-cn", + "supportsDualStack" : true, + "supportsFIPS" : true + }, + "regionRegex" : "^cn\\-\\w+\\-\\d+$", + "regions" : { + "aws-cn-global" : { + "description" : "AWS China global region" + }, + "cn-north-1" : { + "description" : "China (Beijing)" + }, + "cn-northwest-1" : { + "description" : "China (Ningxia)" + } + } + }, { + "id" : "aws-us-gov", + "outputs" : { + "dnsSuffix" : "amazonaws.com", + "dualStackDnsSuffix" : "api.aws", + "implicitGlobalRegion" : "us-gov-west-1", + "name" : "aws-us-gov", + "supportsDualStack" : true, + "supportsFIPS" : true + }, + "regionRegex" : "^us\\-gov\\-\\w+\\-\\d+$", + "regions" : { + "aws-us-gov-global" : { + "description" : "AWS GovCloud (US) global region" + }, + "us-gov-east-1" : { + "description" : "AWS GovCloud (US-East)" + }, + "us-gov-west-1" : { + "description" : "AWS GovCloud (US-West)" + } + } + }, { + "id" : "aws-iso", + "outputs" : { + "dnsSuffix" : "c2s.ic.gov", + "dualStackDnsSuffix" : "c2s.ic.gov", + "implicitGlobalRegion" : "us-iso-east-1", + "name" : "aws-iso", + "supportsDualStack" : false, + "supportsFIPS" : true + }, + "regionRegex" : "^us\\-iso\\-\\w+\\-\\d+$", + "regions" : { + "aws-iso-global" : { + "description" : "AWS ISO (US) global region" + }, + "us-iso-east-1" : { + "description" : "US ISO East" + }, + "us-iso-west-1" : { + "description" : "US ISO WEST" + } + } + }, { + "id" : "aws-iso-b", + "outputs" : { + "dnsSuffix" : "sc2s.sgov.gov", + "dualStackDnsSuffix" : "sc2s.sgov.gov", + "implicitGlobalRegion" : "us-isob-east-1", + "name" : "aws-iso-b", + "supportsDualStack" : false, + "supportsFIPS" : true + }, + "regionRegex" : "^us\\-isob\\-\\w+\\-\\d+$", + "regions" : { + "aws-iso-b-global" : { + "description" : "AWS ISOB (US) global region" + }, + "us-isob-east-1" : { + "description" : "US ISOB East (Ohio)" + } + } + }, { + "id" : "aws-iso-e", + "outputs" : { + "dnsSuffix" : "cloud.adc-e.uk", + "dualStackDnsSuffix" : "cloud.adc-e.uk", + "implicitGlobalRegion" : "eu-isoe-west-1", + "name" : "aws-iso-e", + "supportsDualStack" : false, + "supportsFIPS" : true + }, + "regionRegex" : "^eu\\-isoe\\-\\w+\\-\\d+$", + "regions" : { + "eu-isoe-west-1" : { + "description" : "EU ISOE West" + } + } + }, { + "id" : "aws-iso-f", + "outputs" : { + "dnsSuffix" : "csp.hci.ic.gov", + "dualStackDnsSuffix" : "csp.hci.ic.gov", + "implicitGlobalRegion" : "us-isof-south-1", + "name" : "aws-iso-f", + "supportsDualStack" : false, + "supportsFIPS" : true + }, + "regionRegex" : "^us\\-isof\\-\\w+\\-\\d+$", + "regions" : { + "aws-iso-f-global" : { + "description" : "AWS ISOF global region" + }, + "us-isof-east-1" : { + "description" : "US ISOF EAST" + }, + "us-isof-south-1" : { + "description" : "US ISOF SOUTH" + } + } + }, { + "id" : "aws-eusc", + "outputs" : { + "dnsSuffix" : "amazonaws.eu", + "dualStackDnsSuffix" : "amazonaws.eu", + "implicitGlobalRegion" : "eusc-de-east-1", + "name" : "aws-eusc", + "supportsDualStack" : false, + "supportsFIPS" : true + }, + "regionRegex" : "^eusc\\-(de)\\-\\w+\\-\\d+$", + "regions" : { + "eusc-de-east-1" : { + "description" : "EU (Germany)" + } + } + } ], + "version" : "1.1" +} \ No newline at end of file From d6a6fe4bb0469df8c4804c02f785a6b03480d74e Mon Sep 17 00:00:00 2001 From: Saranya Somepalli Date: Tue, 20 May 2025 16:06:00 -0700 Subject: [PATCH 03/12] Fixing errors --- .../amazon/awssdk/codegen/lite/regions/RegionGenerator.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/RegionGenerator.java b/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/RegionGenerator.java index 9ec7f874abf7..63ebd9d8fe4c 100644 --- a/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/RegionGenerator.java +++ b/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/RegionGenerator.java @@ -100,7 +100,7 @@ private void regions(TypeSpec.Builder builder) { .add("$T.unmodifiableList($T.asList(", Collections.class, Arrays.class); String regionsCodeBlock = regions.stream().map(r -> { - boolean isGlobal = r.toLowerCase().contains("global"); + boolean isGlobal = r.contains("global"); builder.addField(FieldSpec.builder(className(), regionName(r)) .addModifiers(PUBLIC, STATIC, FINAL) .initializer(isGlobal ? "$T.of($S, true)" : "$T.of($S)", className(), r) From 6f689ad4a8aabd534e22aebd5780621985bf457e Mon Sep 17 00:00:00 2001 From: Saranya Somepalli Date: Wed, 21 May 2025 08:20:18 -0700 Subject: [PATCH 04/12] Fixing test failures --- .../awssdk/codegen/lite/regions/RegionMetadataGenerator.java | 4 ++-- .../awssdk/codegen/lite/regions/RegionGenerationTest.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/RegionMetadataGenerator.java b/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/RegionMetadataGenerator.java index 92011139d2c6..b5fa142963b0 100644 --- a/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/RegionMetadataGenerator.java +++ b/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/RegionMetadataGenerator.java @@ -65,9 +65,9 @@ public TypeSpec poetClass() { .addModifiers(FINAL) .addSuperinterface(ClassName.get(regionBasePackage, "RegionMetadata")) .addField(staticFinalField("ID", region)) - .addField(staticFinalField("DOMAIN", partition.getDnsSuffix())) + .addField(staticFinalField("DOMAIN", partition.getOutputs().getDnsSuffix())) .addField(staticFinalField("DESCRIPTION", regionDescription)) - .addField(staticFinalField("PARTITION_ID", partition.getPartition())) + .addField(staticFinalField("PARTITION_ID", partition.getId())) .addMethod(getter("id", "ID")) .addMethod(getter("domain", "DOMAIN")) .addMethod(getter("description", "DESCRIPTION")) diff --git a/codegen-lite/src/test/java/software/amazon/awssdk/codegen/lite/regions/RegionGenerationTest.java b/codegen-lite/src/test/java/software/amazon/awssdk/codegen/lite/regions/RegionGenerationTest.java index d00565f6372f..bfcf382701a1 100644 --- a/codegen-lite/src/test/java/software/amazon/awssdk/codegen/lite/regions/RegionGenerationTest.java +++ b/codegen-lite/src/test/java/software/amazon/awssdk/codegen/lite/regions/RegionGenerationTest.java @@ -55,7 +55,7 @@ public void regionClass() { @Test public void regionMetadataClass() { - Partition partition = partitions.getPartitions().get(0); + Partition partition = partitionsRegions.getPartitions().get(0); RegionMetadataGenerator metadataGenerator = new RegionMetadataGenerator(partition, "us-east-1", "US East (N. Virginia)", From 3b5d0c7c9b6871cbb1c4a3411638557c31992a9d Mon Sep 17 00:00:00 2001 From: Saranya Somepalli Date: Thu, 5 Jun 2025 15:22:41 -0700 Subject: [PATCH 05/12] Additional changes - Creating a new PartitionsMetadata for partisions.json --- .../maven/plugin/RegionGenerationMojo.java | 22 +- .../regions/PartitionsMetadataLoader.java | 47 ++++ .../codegen/lite/regions/RegionGenerator.java | 6 +- .../lite/regions/RegionMetadataGenerator.java | 6 +- .../RegionMetadataProviderGenerator.java | 8 +- .../codegen/lite/regions/model/Partition.java | 126 +-------- .../lite/regions/model/PartitionMetadata.java | 177 ++++++++++++ .../regions/model/PartitionsMetadata.java | 55 ++++ .../lite/regions/RegionGenerationTest.java | 11 +- .../regions/region-metadata-provider.java | 48 +++- .../internal/region/partitions.json.resource | 255 ------------------ 11 files changed, 350 insertions(+), 411 deletions(-) create mode 100644 codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/PartitionsMetadataLoader.java create mode 100644 codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/model/PartitionMetadata.java create mode 100644 codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/model/PartitionsMetadata.java delete mode 100644 core/regions/src/main/resources/software/amazon/awssdk/regions/internal/region/partitions.json.resource diff --git a/codegen-lite-maven-plugin/src/main/java/software/amazon/awssdk/codegen/lite/maven/plugin/RegionGenerationMojo.java b/codegen-lite-maven-plugin/src/main/java/software/amazon/awssdk/codegen/lite/maven/plugin/RegionGenerationMojo.java index 743e9bd33864..056966102b79 100644 --- a/codegen-lite-maven-plugin/src/main/java/software/amazon/awssdk/codegen/lite/maven/plugin/RegionGenerationMojo.java +++ b/codegen-lite-maven-plugin/src/main/java/software/amazon/awssdk/codegen/lite/maven/plugin/RegionGenerationMojo.java @@ -36,6 +36,8 @@ import software.amazon.awssdk.codegen.lite.regions.ServiceMetadataGenerator; import software.amazon.awssdk.codegen.lite.regions.ServiceMetadataProviderGenerator; import software.amazon.awssdk.codegen.lite.regions.model.Partitions; +import software.amazon.awssdk.codegen.lite.regions.model.PartitionsMetadata; +import software.amazon.awssdk.codegen.lite.regions.PartitionsMetadataLoader; import software.amazon.awssdk.utils.StringUtils; /** @@ -59,9 +61,9 @@ public class RegionGenerationMojo extends AbstractMojo { "${basedir}/src/main/resources/software/amazon/awssdk/regions/internal/region/endpoints.json") private File endpoints; - @Parameter(property = "partitionsjson", defaultValue = - "${basedir}/src/main/resources/software/amazon/awssdk/regions/internal/region/partitions.json.resource") - private File partitionsjson; + @Parameter(property = "partitionsJson", defaultValue = + "${basedir}/../../codegen/src/main/resources/software/amazon/awssdk/codegen/rules/partitions.json.resource") + private File partitionsJson; @Override public void execute() throws MojoExecutionException { @@ -69,14 +71,14 @@ public void execute() throws MojoExecutionException { Path testsDirectory = Paths.get(outputDirectory).resolve("generated-test-sources").resolve("sdk-tests"); Partitions partitions = RegionMetadataLoader.build(endpoints); - Partitions regionpartitions = RegionMetadataLoader.build(partitionsjson); + PartitionsMetadata regionPartitions = PartitionsMetadataLoader.build(partitionsJson); generatePartitionMetadataClass(baseSourcesDirectory, partitions); - generateRegionClass(baseSourcesDirectory, regionpartitions); + generateRegionClass(baseSourcesDirectory, regionPartitions); generateServiceMetadata(baseSourcesDirectory, partitions); - generateRegions(baseSourcesDirectory, regionpartitions); + generateRegions(baseSourcesDirectory, regionPartitions); generatePartitionProvider(baseSourcesDirectory, partitions); - generateRegionProvider(baseSourcesDirectory, regionpartitions); + generateRegionProvider(baseSourcesDirectory, regionPartitions); generateServiceProvider(baseSourcesDirectory, partitions); generateEndpointTags(baseSourcesDirectory, partitions); @@ -93,7 +95,7 @@ public void generatePartitionMetadataClass(Path baseSourcesDirectory, Partitions REGION_BASE)).generate()); } - public void generateRegionClass(Path baseSourcesDirectory, Partitions partitions) { + public void generateRegionClass(Path baseSourcesDirectory, PartitionsMetadata partitions) { Path sourcesDirectory = baseSourcesDirectory.resolve(StringUtils.replace(REGION_BASE, ".", "/")); new CodeGenerator(sourcesDirectory.toString(), new RegionGenerator(partitions, REGION_BASE)).generate(); } @@ -110,7 +112,7 @@ public void generateServiceMetadata(Path baseSourcesDirectory, Partitions partit .generate()); } - public void generateRegions(Path baseSourcesDirectory, Partitions partitions) { + public void generateRegions(Path baseSourcesDirectory, PartitionsMetadata partitions) { Path sourcesDirectory = baseSourcesDirectory.resolve(StringUtils.replace(REGION_METADATA_BASE, ".", "/")); partitions.getPartitions() .forEach(p -> p.getRegions().forEach((k, v) -> @@ -131,7 +133,7 @@ public void generatePartitionProvider(Path baseSourcesDirectory, Partitions part .generate(); } - public void generateRegionProvider(Path baseSourcesDirectory, Partitions partitions) { + public void generateRegionProvider(Path baseSourcesDirectory, PartitionsMetadata partitions) { Path sourcesDirectory = baseSourcesDirectory.resolve(StringUtils.replace(REGION_BASE, ".", "/")); new CodeGenerator(sourcesDirectory.toString(), new RegionMetadataProviderGenerator(partitions, REGION_METADATA_BASE, diff --git a/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/PartitionsMetadataLoader.java b/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/PartitionsMetadataLoader.java new file mode 100644 index 000000000000..4e1c07a47e35 --- /dev/null +++ b/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/PartitionsMetadataLoader.java @@ -0,0 +1,47 @@ +/* + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0 + * + * or in the "license" file accompanying this file. This file is distributed + * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing + * permissions and limitations under the License. + */ + +package software.amazon.awssdk.codegen.lite.regions; + +import com.fasterxml.jackson.jr.ob.JSON; +import java.io.File; +import java.io.IOException; +import software.amazon.awssdk.annotations.SdkInternalApi; +import software.amazon.awssdk.codegen.lite.regions.model.PartitionsMetadata; + +/** + * Loads and parses the partitions.json file into {@link PartitionsMetadata}. + */ +@SdkInternalApi +public final class PartitionsMetadataLoader { + + private PartitionsMetadataLoader() { + } + + public static PartitionsMetadata build(File path) { + return loadPartitionFromStream(path, path.toString()); + } + + private static PartitionsMetadata loadPartitionFromStream(File stream, String location) { + + try { + return JSON.std.with(JSON.Feature.USE_IS_GETTERS) + .beanFrom(PartitionsMetadata.class, stream); + + } catch (IOException | RuntimeException e) { + throw new RuntimeException("Error while loading partitions file from " + location, e); + } + } +} diff --git a/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/RegionGenerator.java b/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/RegionGenerator.java index 63ebd9d8fe4c..3dc7f545fbef 100644 --- a/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/RegionGenerator.java +++ b/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/RegionGenerator.java @@ -38,16 +38,16 @@ import software.amazon.awssdk.annotations.Generated; import software.amazon.awssdk.annotations.SdkPublicApi; import software.amazon.awssdk.codegen.lite.PoetClass; -import software.amazon.awssdk.codegen.lite.regions.model.Partitions; +import software.amazon.awssdk.codegen.lite.regions.model.PartitionsMetadata; import software.amazon.awssdk.utils.Validate; import software.amazon.awssdk.utils.http.SdkHttpUtils; public class RegionGenerator implements PoetClass { - private final Partitions partitions; + private final PartitionsMetadata partitions; private final String basePackage; - public RegionGenerator(Partitions partitions, + public RegionGenerator(PartitionsMetadata partitions, String basePackage) { this.partitions = partitions; this.basePackage = basePackage; diff --git a/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/RegionMetadataGenerator.java b/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/RegionMetadataGenerator.java index b5fa142963b0..5eb006044ea4 100644 --- a/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/RegionMetadataGenerator.java +++ b/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/RegionMetadataGenerator.java @@ -32,17 +32,17 @@ import software.amazon.awssdk.annotations.SdkPublicApi; import software.amazon.awssdk.codegen.lite.PoetClass; import software.amazon.awssdk.codegen.lite.Utils; -import software.amazon.awssdk.codegen.lite.regions.model.Partition; +import software.amazon.awssdk.codegen.lite.regions.model.PartitionMetadata; public class RegionMetadataGenerator implements PoetClass { - private final Partition partition; + private final PartitionMetadata partition; private final String region; private final String regionDescription; private final String basePackage; private final String regionBasePackage; - public RegionMetadataGenerator(Partition partition, + public RegionMetadataGenerator(PartitionMetadata partition, String region, String regionDescription, String basePackage, diff --git a/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/RegionMetadataProviderGenerator.java b/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/RegionMetadataProviderGenerator.java index 0203bbbfb649..b252dec62d9e 100644 --- a/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/RegionMetadataProviderGenerator.java +++ b/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/RegionMetadataProviderGenerator.java @@ -36,16 +36,16 @@ import software.amazon.awssdk.annotations.SdkPublicApi; import software.amazon.awssdk.codegen.lite.PoetClass; import software.amazon.awssdk.codegen.lite.Utils; -import software.amazon.awssdk.codegen.lite.regions.model.Partitions; +import software.amazon.awssdk.codegen.lite.regions.model.PartitionsMetadata; import software.amazon.awssdk.utils.ImmutableMap; public class RegionMetadataProviderGenerator implements PoetClass { - private final Partitions partitions; + private final PartitionsMetadata partitions; private final String basePackage; private final String regionBasePackage; - public RegionMetadataProviderGenerator(Partitions partitions, + public RegionMetadataProviderGenerator(PartitionsMetadata partitions, String basePackage, String regionBasePackage) { this.partitions = partitions; @@ -79,7 +79,7 @@ public ClassName className() { return ClassName.get(regionBasePackage, "GeneratedRegionMetadataProvider"); } - private CodeBlock regions(Partitions partitions) { + private CodeBlock regions(PartitionsMetadata partitions) { CodeBlock.Builder builder = CodeBlock.builder().add("$T.builder()", ImmutableMap.class); partitions.getPartitions() diff --git a/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/model/Partition.java b/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/model/Partition.java index 3f6cd8a288c4..f8b030f64edb 100644 --- a/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/model/Partition.java +++ b/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/model/Partition.java @@ -62,61 +62,17 @@ public final class Partition { */ private Endpoint defaults; - /** - * The partition id. - */ - private String id; - - /** - * Configuration outputs for the partition. - */ - private PartitionOutputs outputs; - public Partition() { } public Partition(@JsonProperty(value = "partition") String partition, @JsonProperty(value = "regions") Map - regions, + regions, @JsonProperty(value = "services") Map services, - @JsonProperty(value = "id") String id, - @JsonProperty(value = "outputs") PartitionOutputs outputs, - @JsonProperty(value = "regionRegex") String regionRegex) { + Service> services) { this.partition = Validate.paramNotNull(partition, "Partition"); this.regions = regions; this.services = services; - this.id = id; - this.outputs = outputs; - this.regionRegex = regionRegex; - } - - /** - * Returns the partition ID. - */ - public String getId() { - return id; - } - - /** - * Sets the partition id. - */ - public void setId(String id) { - this.id = id; - } - - /** - * Returns the configuration outputs for the partition. - */ - public PartitionOutputs getOutputs() { - return outputs; - } - - /** - * Sets the configuration outputs for the partition. - */ - public void setOutputs(PartitionOutputs outputs) { - this.outputs = outputs; } /** @@ -221,82 +177,6 @@ private boolean matchesRegionRegex(String region) { return p.matcher(region).matches(); } - public static class PartitionOutputs { - private String dnsSuffix; - private String dualStackDnsSuffix; - private String implicitGlobalRegion; - private String name; - private boolean supportsDualStack; - private boolean supportsFIPS; - - @JsonProperty("dnsSuffix") - public String getDnsSuffix() { - return dnsSuffix; - } - - public void setDnsSuffix(String dnsSuffix) { - this.dnsSuffix = dnsSuffix; - } - - @JsonProperty("dualStackDnsSuffix") - public String getDualStackDnsSuffix() { - return dualStackDnsSuffix; - } - - public void setDualStackDnsSuffix(String dualStackDnsSuffix) { - this.dualStackDnsSuffix = dualStackDnsSuffix; - } - - @JsonProperty("implicitGlobalRegion") - public String getImplicitGlobalRegion() { - return implicitGlobalRegion; - } - - public void setImplicitGlobalRegion(String implicitGlobalRegion) { - this.implicitGlobalRegion = implicitGlobalRegion; - } - - @JsonProperty("name") - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - @JsonProperty("supportsDualStack") - public boolean getSupportsDualStack() { - return supportsDualStack; - } - - public void setSupportsDualStack(boolean supportsDualStack) { - this.supportsDualStack = supportsDualStack; - } - - @JsonProperty("supportsFIPS") - public boolean getSupportsFIPS() { - return supportsFIPS; - } - - public void setSupportsFIPS(boolean supportsFIPS) { - this.supportsFIPS = supportsFIPS; - } - } - - public static class Region { - private String description; - - @JsonProperty("description") - public String getDescription() { - return description; - } - - public void setDescription(String description) { - this.description = description; - } - } - @Deprecated private boolean hasServiceEndpoint(String endpoint) { for (Service s : services.values()) { @@ -306,4 +186,4 @@ private boolean hasServiceEndpoint(String endpoint) { } return false; } -} +} \ No newline at end of file diff --git a/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/model/PartitionMetadata.java b/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/model/PartitionMetadata.java new file mode 100644 index 000000000000..247ab72fb250 --- /dev/null +++ b/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/model/PartitionMetadata.java @@ -0,0 +1,177 @@ +/* + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0 + * + * or in the "license" file accompanying this file. This file is distributed + * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing + * permissions and limitations under the License. + */ + +package software.amazon.awssdk.codegen.lite.regions.model; + +import com.fasterxml.jackson.annotation.JsonProperty; +import software.amazon.awssdk.annotations.SdkInternalApi; +import java.util.Map; + +/** + * This class models a single partition from partitions.json. + */ +@SdkInternalApi +public final class PartitionMetadata { + private String id; + private PartitionOutputs outputs; + private String regionRegex; + private Map regions; + + public PartitionMetadata() { + } + + public PartitionMetadata(@JsonProperty(value = "id") String id, + @JsonProperty(value = "outputs") PartitionOutputs outputs, + @JsonProperty(value = "regionRegex") String regionRegex, + @JsonProperty(value = "regions") Map regions) { + this.id = id; + this.outputs = outputs; + this.regionRegex = regionRegex; + this.regions = regions; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public PartitionOutputs getOutputs() { + return outputs; + } + + public void setOutputs(PartitionOutputs outputs) { + this.outputs = outputs; + } + + public String getRegionRegex() { + return regionRegex; + } + + public void setRegionRegex(String regionRegex) { + this.regionRegex = regionRegex; + } + + public Map getRegions() { + return regions; + } + + public void setRegions(Map regions) { + this.regions = regions; + } + + /** + * This class models the outputs field of a partition in partitions.json. + */ + @SdkInternalApi + public static final class PartitionOutputs { + private String dnsSuffix; + private String dualStackDnsSuffix; + private String implicitGlobalRegion; + private String name; + private boolean supportsDualStack; + private boolean supportsFIPS; + + public PartitionOutputs() { + } + + public PartitionOutputs(@JsonProperty(value = "dnsSuffix") String dnsSuffix, + @JsonProperty(value = "dualStackDnsSuffix") String dualStackDnsSuffix, + @JsonProperty(value = "implicitGlobalRegion") String implicitGlobalRegion, + @JsonProperty(value = "name") String name, + @JsonProperty(value = "supportsDualStack") boolean supportsDualStack, + @JsonProperty(value = "supportsFIPS") boolean supportsFIPS) { + this.dnsSuffix = dnsSuffix; + this.dualStackDnsSuffix = dualStackDnsSuffix; + this.implicitGlobalRegion = implicitGlobalRegion; + this.name = name; + this.supportsDualStack = supportsDualStack; + this.supportsFIPS = supportsFIPS; + } + + public String getDnsSuffix() { + return dnsSuffix; + } + + public void setDnsSuffix(String dnsSuffix) { + this.dnsSuffix = dnsSuffix; + } + + public String getDualStackDnsSuffix() { + return dualStackDnsSuffix; + } + + public void setDualStackDnsSuffix(String dualStackDnsSuffix) { + this.dualStackDnsSuffix = dualStackDnsSuffix; + } + + public String getImplicitGlobalRegion() { + return implicitGlobalRegion; + } + + public void setImplicitGlobalRegion(String implicitGlobalRegion) { + this.implicitGlobalRegion = implicitGlobalRegion; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public boolean isSupportsDualStack() { + return supportsDualStack; + } + + public void setSupportsDualStack(boolean supportsDualStack) { + this.supportsDualStack = supportsDualStack; + } + + public boolean isSupportsFIPS() { + return supportsFIPS; + } + + public void setSupportsFIPS(boolean supportsFIPS) { + this.supportsFIPS = supportsFIPS; + } + } + + /** + * This class models a region in partitions.json. + */ + @SdkInternalApi + public static final class RegionMetadata { + private String description; + + public RegionMetadata() { + } + + public RegionMetadata(@JsonProperty(value = "description") String description) { + this.description = description; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + } +} diff --git a/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/model/PartitionsMetadata.java b/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/model/PartitionsMetadata.java new file mode 100644 index 000000000000..7cab1a2f55e0 --- /dev/null +++ b/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/model/PartitionsMetadata.java @@ -0,0 +1,55 @@ +/* + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0 + * + * or in the "license" file accompanying this file. This file is distributed + * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing + * permissions and limitations under the License. + */ + +package software.amazon.awssdk.codegen.lite.regions.model; + +import com.fasterxml.jackson.annotation.JsonProperty; +import software.amazon.awssdk.annotations.SdkInternalApi; +import java.util.List; +import software.amazon.awssdk.utils.Validate; + +/** + * This class models the AWS partitions metadata from partitions.json. + */ +@SdkInternalApi +public final class PartitionsMetadata { + private List partitions; + private String version; + + public PartitionsMetadata() { + } + + public PartitionsMetadata(@JsonProperty(value = "partitions") List partitions, + @JsonProperty(value = "version") String version) { + this.partitions = Validate.paramNotNull(partitions, "partitions"); + this.version = Validate.paramNotNull(version, "version"); + } + + public List getPartitions() { + return partitions; + } + + public void setPartitions(List partitions) { + this.partitions = partitions; + } + + public String getVersion() { + return version; + } + + public void setVersion(String version) { + this.version = version; + } +} diff --git a/codegen-lite/src/test/java/software/amazon/awssdk/codegen/lite/regions/RegionGenerationTest.java b/codegen-lite/src/test/java/software/amazon/awssdk/codegen/lite/regions/RegionGenerationTest.java index bfcf382701a1..7713616a4fd8 100644 --- a/codegen-lite/src/test/java/software/amazon/awssdk/codegen/lite/regions/RegionGenerationTest.java +++ b/codegen-lite/src/test/java/software/amazon/awssdk/codegen/lite/regions/RegionGenerationTest.java @@ -21,8 +21,9 @@ import java.nio.file.Paths; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import software.amazon.awssdk.codegen.lite.regions.model.Partition; import software.amazon.awssdk.codegen.lite.regions.model.Partitions; +import software.amazon.awssdk.codegen.lite.regions.model.PartitionsMetadata; +import software.amazon.awssdk.codegen.lite.regions.model.PartitionMetadata; public class RegionGenerationTest { @@ -36,7 +37,7 @@ public class RegionGenerationTest { private File endpoints; private File partitionsFile; private Partitions partitions; - private Partitions partitionsRegions; + private PartitionsMetadata partitionsRegions; @BeforeEach @@ -44,7 +45,7 @@ public void before() throws Exception { this.endpoints = Paths.get(getClass().getResource(ENDPOINTS).toURI()).toFile(); this.partitionsFile = Paths.get(getClass().getResource(PARTITIONS).toURI()).toFile(); this.partitions = RegionMetadataLoader.build(endpoints); - this.partitionsRegions = RegionMetadataLoader.build(partitionsFile); + this.partitionsRegions = PartitionsMetadataLoader.build(partitionsFile); } @Test @@ -55,7 +56,7 @@ public void regionClass() { @Test public void regionMetadataClass() { - Partition partition = partitionsRegions.getPartitions().get(0); + PartitionMetadata partition = partitionsRegions.getPartitions().get(0); RegionMetadataGenerator metadataGenerator = new RegionMetadataGenerator(partition, "us-east-1", "US East (N. Virginia)", @@ -67,7 +68,7 @@ public void regionMetadataClass() { @Test public void regionMetadataProviderClass() { - RegionMetadataProviderGenerator providerGenerator = new RegionMetadataProviderGenerator(partitions, + RegionMetadataProviderGenerator providerGenerator = new RegionMetadataProviderGenerator(partitionsRegions, REGION_METADATA_BASE, REGION_BASE); assertThat(providerGenerator, generatesTo("region-metadata-provider.java")); diff --git a/codegen-lite/src/test/resources/software/amazon/awssdk/codegen/lite/regions/region-metadata-provider.java b/codegen-lite/src/test/resources/software/amazon/awssdk/codegen/lite/regions/region-metadata-provider.java index 9380df896357..798644de1fef 100644 --- a/codegen-lite/src/test/resources/software/amazon/awssdk/codegen/lite/regions/region-metadata-provider.java +++ b/codegen-lite/src/test/resources/software/amazon/awssdk/codegen/lite/regions/region-metadata-provider.java @@ -9,18 +9,37 @@ import software.amazon.awssdk.regions.regionmetadata.ApNortheast2; import software.amazon.awssdk.regions.regionmetadata.ApNortheast3; import software.amazon.awssdk.regions.regionmetadata.ApSouth1; +import software.amazon.awssdk.regions.regionmetadata.ApSouth2; import software.amazon.awssdk.regions.regionmetadata.ApSoutheast1; import software.amazon.awssdk.regions.regionmetadata.ApSoutheast2; +import software.amazon.awssdk.regions.regionmetadata.ApSoutheast3; +import software.amazon.awssdk.regions.regionmetadata.ApSoutheast4; +import software.amazon.awssdk.regions.regionmetadata.ApSoutheast5; +import software.amazon.awssdk.regions.regionmetadata.ApSoutheast7; +import software.amazon.awssdk.regions.regionmetadata.AwsCnGlobal; +import software.amazon.awssdk.regions.regionmetadata.AwsGlobal; +import software.amazon.awssdk.regions.regionmetadata.AwsIsoBGlobal; +import software.amazon.awssdk.regions.regionmetadata.AwsIsoFGlobal; +import software.amazon.awssdk.regions.regionmetadata.AwsIsoGlobal; +import software.amazon.awssdk.regions.regionmetadata.AwsUsGovGlobal; import software.amazon.awssdk.regions.regionmetadata.CaCentral1; +import software.amazon.awssdk.regions.regionmetadata.CaWest1; import software.amazon.awssdk.regions.regionmetadata.CnNorth1; import software.amazon.awssdk.regions.regionmetadata.CnNorthwest1; import software.amazon.awssdk.regions.regionmetadata.EuCentral1; +import software.amazon.awssdk.regions.regionmetadata.EuCentral2; +import software.amazon.awssdk.regions.regionmetadata.EuIsoeWest1; import software.amazon.awssdk.regions.regionmetadata.EuNorth1; import software.amazon.awssdk.regions.regionmetadata.EuSouth1; +import software.amazon.awssdk.regions.regionmetadata.EuSouth2; import software.amazon.awssdk.regions.regionmetadata.EuWest1; import software.amazon.awssdk.regions.regionmetadata.EuWest2; import software.amazon.awssdk.regions.regionmetadata.EuWest3; +import software.amazon.awssdk.regions.regionmetadata.EuscDeEast1; +import software.amazon.awssdk.regions.regionmetadata.IlCentral1; +import software.amazon.awssdk.regions.regionmetadata.MeCentral1; import software.amazon.awssdk.regions.regionmetadata.MeSouth1; +import software.amazon.awssdk.regions.regionmetadata.MxCentral1; import software.amazon.awssdk.regions.regionmetadata.SaEast1; import software.amazon.awssdk.regions.regionmetadata.UsEast1; import software.amazon.awssdk.regions.regionmetadata.UsEast2; @@ -29,6 +48,8 @@ import software.amazon.awssdk.regions.regionmetadata.UsIsoEast1; import software.amazon.awssdk.regions.regionmetadata.UsIsoWest1; import software.amazon.awssdk.regions.regionmetadata.UsIsobEast1; +import software.amazon.awssdk.regions.regionmetadata.UsIsofEast1; +import software.amazon.awssdk.regions.regionmetadata.UsIsofSouth1; import software.amazon.awssdk.regions.regionmetadata.UsWest1; import software.amazon.awssdk.regions.regionmetadata.UsWest2; import software.amazon.awssdk.utils.ImmutableMap; @@ -40,15 +61,26 @@ public final class GeneratedRegionMetadataProvider implements RegionMetadataProv .put(Region.AF_SOUTH_1, new AfSouth1()).put(Region.AP_EAST_1, new ApEast1()) .put(Region.AP_NORTHEAST_1, new ApNortheast1()).put(Region.AP_NORTHEAST_2, new ApNortheast2()) .put(Region.AP_NORTHEAST_3, new ApNortheast3()).put(Region.AP_SOUTH_1, new ApSouth1()) - .put(Region.AP_SOUTHEAST_1, new ApSoutheast1()).put(Region.AP_SOUTHEAST_2, new ApSoutheast2()) - .put(Region.CA_CENTRAL_1, new CaCentral1()).put(Region.EU_CENTRAL_1, new EuCentral1()) - .put(Region.EU_NORTH_1, new EuNorth1()).put(Region.EU_SOUTH_1, new EuSouth1()).put(Region.EU_WEST_1, new EuWest1()) - .put(Region.EU_WEST_2, new EuWest2()).put(Region.EU_WEST_3, new EuWest3()).put(Region.ME_SOUTH_1, new MeSouth1()) + .put(Region.AP_SOUTH_2, new ApSouth2()).put(Region.AP_SOUTHEAST_1, new ApSoutheast1()) + .put(Region.AP_SOUTHEAST_2, new ApSoutheast2()).put(Region.AP_SOUTHEAST_3, new ApSoutheast3()) + .put(Region.AP_SOUTHEAST_4, new ApSoutheast4()).put(Region.AP_SOUTHEAST_5, new ApSoutheast5()) + .put(Region.AP_SOUTHEAST_7, new ApSoutheast7()).put(Region.AWS_GLOBAL, new AwsGlobal()) + .put(Region.CA_CENTRAL_1, new CaCentral1()).put(Region.CA_WEST_1, new CaWest1()) + .put(Region.EU_CENTRAL_1, new EuCentral1()).put(Region.EU_CENTRAL_2, new EuCentral2()) + .put(Region.EU_NORTH_1, new EuNorth1()).put(Region.EU_SOUTH_1, new EuSouth1()).put(Region.EU_SOUTH_2, new EuSouth2()) + .put(Region.EU_WEST_1, new EuWest1()).put(Region.EU_WEST_2, new EuWest2()).put(Region.EU_WEST_3, new EuWest3()) + .put(Region.IL_CENTRAL_1, new IlCentral1()).put(Region.ME_CENTRAL_1, new MeCentral1()) + .put(Region.ME_SOUTH_1, new MeSouth1()).put(Region.MX_CENTRAL_1, new MxCentral1()) .put(Region.SA_EAST_1, new SaEast1()).put(Region.US_EAST_1, new UsEast1()).put(Region.US_EAST_2, new UsEast2()) - .put(Region.US_WEST_1, new UsWest1()).put(Region.US_WEST_2, new UsWest2()).put(Region.CN_NORTH_1, new CnNorth1()) - .put(Region.CN_NORTHWEST_1, new CnNorthwest1()).put(Region.US_GOV_EAST_1, new UsGovEast1()) - .put(Region.US_GOV_WEST_1, new UsGovWest1()).put(Region.US_ISO_EAST_1, new UsIsoEast1()) - .put(Region.US_ISO_WEST_1, new UsIsoWest1()).put(Region.US_ISOB_EAST_1, new UsIsobEast1()).build(); + .put(Region.US_WEST_1, new UsWest1()).put(Region.US_WEST_2, new UsWest2()) + .put(Region.AWS_CN_GLOBAL, new AwsCnGlobal()).put(Region.CN_NORTH_1, new CnNorth1()) + .put(Region.CN_NORTHWEST_1, new CnNorthwest1()).put(Region.AWS_US_GOV_GLOBAL, new AwsUsGovGlobal()) + .put(Region.US_GOV_EAST_1, new UsGovEast1()).put(Region.US_GOV_WEST_1, new UsGovWest1()) + .put(Region.AWS_ISO_GLOBAL, new AwsIsoGlobal()).put(Region.US_ISO_EAST_1, new UsIsoEast1()) + .put(Region.US_ISO_WEST_1, new UsIsoWest1()).put(Region.AWS_ISO_B_GLOBAL, new AwsIsoBGlobal()) + .put(Region.US_ISOB_EAST_1, new UsIsobEast1()).put(Region.EU_ISOE_WEST_1, new EuIsoeWest1()) + .put(Region.AWS_ISO_F_GLOBAL, new AwsIsoFGlobal()).put(Region.US_ISOF_EAST_1, new UsIsofEast1()) + .put(Region.US_ISOF_SOUTH_1, new UsIsofSouth1()).put(Region.EUSC_DE_EAST_1, new EuscDeEast1()).build(); public RegionMetadata regionMetadata(Region region) { return REGION_METADATA.get(region); diff --git a/core/regions/src/main/resources/software/amazon/awssdk/regions/internal/region/partitions.json.resource b/core/regions/src/main/resources/software/amazon/awssdk/regions/internal/region/partitions.json.resource deleted file mode 100644 index 3d7e9530924e..000000000000 --- a/core/regions/src/main/resources/software/amazon/awssdk/regions/internal/region/partitions.json.resource +++ /dev/null @@ -1,255 +0,0 @@ -{ - "partitions" : [ { - "id" : "aws", - "outputs" : { - "dnsSuffix" : "amazonaws.com", - "dualStackDnsSuffix" : "api.aws", - "implicitGlobalRegion" : "us-east-1", - "name" : "aws", - "supportsDualStack" : true, - "supportsFIPS" : true - }, - "regionRegex" : "^(us|eu|ap|sa|ca|me|af|il|mx)\\-\\w+\\-\\d+$", - "regions" : { - "af-south-1" : { - "description" : "Africa (Cape Town)" - }, - "ap-east-1" : { - "description" : "Asia Pacific (Hong Kong)" - }, - "ap-northeast-1" : { - "description" : "Asia Pacific (Tokyo)" - }, - "ap-northeast-2" : { - "description" : "Asia Pacific (Seoul)" - }, - "ap-northeast-3" : { - "description" : "Asia Pacific (Osaka)" - }, - "ap-south-1" : { - "description" : "Asia Pacific (Mumbai)" - }, - "ap-south-2" : { - "description" : "Asia Pacific (Hyderabad)" - }, - "ap-southeast-1" : { - "description" : "Asia Pacific (Singapore)" - }, - "ap-southeast-2" : { - "description" : "Asia Pacific (Sydney)" - }, - "ap-southeast-3" : { - "description" : "Asia Pacific (Jakarta)" - }, - "ap-southeast-4" : { - "description" : "Asia Pacific (Melbourne)" - }, - "ap-southeast-5" : { - "description" : "Asia Pacific (Malaysia)" - }, - "ap-southeast-7" : { - "description" : "Asia Pacific (Thailand)" - }, - "aws-global" : { - "description" : "AWS Standard global region" - }, - "ca-central-1" : { - "description" : "Canada (Central)" - }, - "ca-west-1" : { - "description" : "Canada West (Calgary)" - }, - "eu-central-1" : { - "description" : "Europe (Frankfurt)" - }, - "eu-central-2" : { - "description" : "Europe (Zurich)" - }, - "eu-north-1" : { - "description" : "Europe (Stockholm)" - }, - "eu-south-1" : { - "description" : "Europe (Milan)" - }, - "eu-south-2" : { - "description" : "Europe (Spain)" - }, - "eu-west-1" : { - "description" : "Europe (Ireland)" - }, - "eu-west-2" : { - "description" : "Europe (London)" - }, - "eu-west-3" : { - "description" : "Europe (Paris)" - }, - "il-central-1" : { - "description" : "Israel (Tel Aviv)" - }, - "me-central-1" : { - "description" : "Middle East (UAE)" - }, - "me-south-1" : { - "description" : "Middle East (Bahrain)" - }, - "mx-central-1" : { - "description" : "Mexico (Central)" - }, - "sa-east-1" : { - "description" : "South America (Sao Paulo)" - }, - "us-east-1" : { - "description" : "US East (N. Virginia)" - }, - "us-east-2" : { - "description" : "US East (Ohio)" - }, - "us-west-1" : { - "description" : "US West (N. California)" - }, - "us-west-2" : { - "description" : "US West (Oregon)" - } - } - }, { - "id" : "aws-cn", - "outputs" : { - "dnsSuffix" : "amazonaws.com.cn", - "dualStackDnsSuffix" : "api.amazonwebservices.com.cn", - "implicitGlobalRegion" : "cn-northwest-1", - "name" : "aws-cn", - "supportsDualStack" : true, - "supportsFIPS" : true - }, - "regionRegex" : "^cn\\-\\w+\\-\\d+$", - "regions" : { - "aws-cn-global" : { - "description" : "AWS China global region" - }, - "cn-north-1" : { - "description" : "China (Beijing)" - }, - "cn-northwest-1" : { - "description" : "China (Ningxia)" - } - } - }, { - "id" : "aws-us-gov", - "outputs" : { - "dnsSuffix" : "amazonaws.com", - "dualStackDnsSuffix" : "api.aws", - "implicitGlobalRegion" : "us-gov-west-1", - "name" : "aws-us-gov", - "supportsDualStack" : true, - "supportsFIPS" : true - }, - "regionRegex" : "^us\\-gov\\-\\w+\\-\\d+$", - "regions" : { - "aws-us-gov-global" : { - "description" : "AWS GovCloud (US) global region" - }, - "us-gov-east-1" : { - "description" : "AWS GovCloud (US-East)" - }, - "us-gov-west-1" : { - "description" : "AWS GovCloud (US-West)" - } - } - }, { - "id" : "aws-iso", - "outputs" : { - "dnsSuffix" : "c2s.ic.gov", - "dualStackDnsSuffix" : "c2s.ic.gov", - "implicitGlobalRegion" : "us-iso-east-1", - "name" : "aws-iso", - "supportsDualStack" : false, - "supportsFIPS" : true - }, - "regionRegex" : "^us\\-iso\\-\\w+\\-\\d+$", - "regions" : { - "aws-iso-global" : { - "description" : "AWS ISO (US) global region" - }, - "us-iso-east-1" : { - "description" : "US ISO East" - }, - "us-iso-west-1" : { - "description" : "US ISO WEST" - } - } - }, { - "id" : "aws-iso-b", - "outputs" : { - "dnsSuffix" : "sc2s.sgov.gov", - "dualStackDnsSuffix" : "sc2s.sgov.gov", - "implicitGlobalRegion" : "us-isob-east-1", - "name" : "aws-iso-b", - "supportsDualStack" : false, - "supportsFIPS" : true - }, - "regionRegex" : "^us\\-isob\\-\\w+\\-\\d+$", - "regions" : { - "aws-iso-b-global" : { - "description" : "AWS ISOB (US) global region" - }, - "us-isob-east-1" : { - "description" : "US ISOB East (Ohio)" - } - } - }, { - "id" : "aws-iso-e", - "outputs" : { - "dnsSuffix" : "cloud.adc-e.uk", - "dualStackDnsSuffix" : "cloud.adc-e.uk", - "implicitGlobalRegion" : "eu-isoe-west-1", - "name" : "aws-iso-e", - "supportsDualStack" : false, - "supportsFIPS" : true - }, - "regionRegex" : "^eu\\-isoe\\-\\w+\\-\\d+$", - "regions" : { - "eu-isoe-west-1" : { - "description" : "EU ISOE West" - } - } - }, { - "id" : "aws-iso-f", - "outputs" : { - "dnsSuffix" : "csp.hci.ic.gov", - "dualStackDnsSuffix" : "csp.hci.ic.gov", - "implicitGlobalRegion" : "us-isof-south-1", - "name" : "aws-iso-f", - "supportsDualStack" : false, - "supportsFIPS" : true - }, - "regionRegex" : "^us\\-isof\\-\\w+\\-\\d+$", - "regions" : { - "aws-iso-f-global" : { - "description" : "AWS ISOF global region" - }, - "us-isof-east-1" : { - "description" : "US ISOF EAST" - }, - "us-isof-south-1" : { - "description" : "US ISOF SOUTH" - } - } - }, { - "id" : "aws-eusc", - "outputs" : { - "dnsSuffix" : "amazonaws.eu", - "dualStackDnsSuffix" : "amazonaws.eu", - "implicitGlobalRegion" : "eusc-de-east-1", - "name" : "aws-eusc", - "supportsDualStack" : false, - "supportsFIPS" : true - }, - "regionRegex" : "^eusc\\-(de)\\-\\w+\\-\\d+$", - "regions" : { - "eusc-de-east-1" : { - "description" : "EU (Germany)" - } - } - } ], - "version" : "1.1" -} \ No newline at end of file From c6dd61398ddd7eb56b3e6789d69b3993211cb65a Mon Sep 17 00:00:00 2001 From: Saranya Somepalli Date: Thu, 5 Jun 2025 15:52:47 -0700 Subject: [PATCH 06/12] Fixing Checkstyle issues --- .../awssdk/codegen/lite/regions/model/PartitionsMetadata.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/model/PartitionsMetadata.java b/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/model/PartitionsMetadata.java index 7cab1a2f55e0..962da1d8235c 100644 --- a/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/model/PartitionsMetadata.java +++ b/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/model/PartitionsMetadata.java @@ -16,8 +16,8 @@ package software.amazon.awssdk.codegen.lite.regions.model; import com.fasterxml.jackson.annotation.JsonProperty; -import software.amazon.awssdk.annotations.SdkInternalApi; import java.util.List; +import software.amazon.awssdk.annotations.SdkInternalApi; import software.amazon.awssdk.utils.Validate; /** From 48a7ffcf4ee9c2f5e8c4a9772f6b79ea8a9f3a84 Mon Sep 17 00:00:00 2001 From: Saranya Somepalli Date: Fri, 6 Jun 2025 09:53:00 -0700 Subject: [PATCH 07/12] Fixing Checkstyle issues --- .../codegen/lite/regions/model/PartitionMetadata.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/model/PartitionMetadata.java b/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/model/PartitionMetadata.java index 247ab72fb250..3ece63b078de 100644 --- a/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/model/PartitionMetadata.java +++ b/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/model/PartitionMetadata.java @@ -16,8 +16,8 @@ package software.amazon.awssdk.codegen.lite.regions.model; import com.fasterxml.jackson.annotation.JsonProperty; -import software.amazon.awssdk.annotations.SdkInternalApi; import java.util.Map; +import software.amazon.awssdk.annotations.SdkInternalApi; /** * This class models a single partition from partitions.json. @@ -33,9 +33,9 @@ public PartitionMetadata() { } public PartitionMetadata(@JsonProperty(value = "id") String id, - @JsonProperty(value = "outputs") PartitionOutputs outputs, - @JsonProperty(value = "regionRegex") String regionRegex, - @JsonProperty(value = "regions") Map regions) { + @JsonProperty(value = "outputs") PartitionOutputs outputs, + @JsonProperty(value = "regionRegex") String regionRegex, + @JsonProperty(value = "regions") Map regions) { this.id = id; this.outputs = outputs; this.regionRegex = regionRegex; From 9b4d8c228a3912ba2be898645e74c4d157256673 Mon Sep 17 00:00:00 2001 From: Saranya Somepalli Date: Fri, 6 Jun 2025 10:06:40 -0700 Subject: [PATCH 08/12] Fixing Checkstyle issues --- .../awssdk/codegen/lite/maven/plugin/RegionGenerationMojo.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/codegen-lite-maven-plugin/src/main/java/software/amazon/awssdk/codegen/lite/maven/plugin/RegionGenerationMojo.java b/codegen-lite-maven-plugin/src/main/java/software/amazon/awssdk/codegen/lite/maven/plugin/RegionGenerationMojo.java index 056966102b79..094981ac22ad 100644 --- a/codegen-lite-maven-plugin/src/main/java/software/amazon/awssdk/codegen/lite/maven/plugin/RegionGenerationMojo.java +++ b/codegen-lite-maven-plugin/src/main/java/software/amazon/awssdk/codegen/lite/maven/plugin/RegionGenerationMojo.java @@ -29,6 +29,7 @@ import software.amazon.awssdk.codegen.lite.regions.EndpointTagGenerator; import software.amazon.awssdk.codegen.lite.regions.PartitionMetadataGenerator; import software.amazon.awssdk.codegen.lite.regions.PartitionMetadataProviderGenerator; +import software.amazon.awssdk.codegen.lite.regions.PartitionsMetadataLoader; import software.amazon.awssdk.codegen.lite.regions.RegionGenerator; import software.amazon.awssdk.codegen.lite.regions.RegionMetadataGenerator; import software.amazon.awssdk.codegen.lite.regions.RegionMetadataLoader; @@ -37,7 +38,6 @@ import software.amazon.awssdk.codegen.lite.regions.ServiceMetadataProviderGenerator; import software.amazon.awssdk.codegen.lite.regions.model.Partitions; import software.amazon.awssdk.codegen.lite.regions.model.PartitionsMetadata; -import software.amazon.awssdk.codegen.lite.regions.PartitionsMetadataLoader; import software.amazon.awssdk.utils.StringUtils; /** From 8f08a22f024c7a8f7ae2bee30e71ed8dea830981 Mon Sep 17 00:00:00 2001 From: Saranya Somepalli Date: Fri, 6 Jun 2025 15:42:37 -0700 Subject: [PATCH 09/12] Updating file names to resolve conflicts --- .../maven/plugin/RegionGenerationMojo.java | 12 +- .../codegen/lite/regions/RegionGenerator.java | 6 +- .../lite/regions/RegionMetadataGenerator.java | 6 +- .../RegionMetadataProviderGenerator.java | 8 +- ...va => RegionPartitionsMetadataLoader.java} | 14 +- ...data.java => RegionPartitionMetadata.java} | 12 +- ...ata.java => RegionPartitionsMetadata.java} | 14 +- .../lite/regions/RegionGenerationTest.java | 10 +- test/region-testing/pom.xml | 1 - .../variants-test-partitions.json.resource | 255 ------------------ 10 files changed, 41 insertions(+), 297 deletions(-) rename codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/{PartitionsMetadataLoader.java => RegionPartitionsMetadataLoader.java} (69%) rename codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/model/{PartitionMetadata.java => RegionPartitionMetadata.java} (91%) rename codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/model/{PartitionsMetadata.java => RegionPartitionsMetadata.java} (73%) delete mode 100644 test/region-testing/src/test/resources/variants-test-partitions.json.resource diff --git a/codegen-lite-maven-plugin/src/main/java/software/amazon/awssdk/codegen/lite/maven/plugin/RegionGenerationMojo.java b/codegen-lite-maven-plugin/src/main/java/software/amazon/awssdk/codegen/lite/maven/plugin/RegionGenerationMojo.java index 094981ac22ad..5655d71f9a80 100644 --- a/codegen-lite-maven-plugin/src/main/java/software/amazon/awssdk/codegen/lite/maven/plugin/RegionGenerationMojo.java +++ b/codegen-lite-maven-plugin/src/main/java/software/amazon/awssdk/codegen/lite/maven/plugin/RegionGenerationMojo.java @@ -29,7 +29,7 @@ import software.amazon.awssdk.codegen.lite.regions.EndpointTagGenerator; import software.amazon.awssdk.codegen.lite.regions.PartitionMetadataGenerator; import software.amazon.awssdk.codegen.lite.regions.PartitionMetadataProviderGenerator; -import software.amazon.awssdk.codegen.lite.regions.PartitionsMetadataLoader; +import software.amazon.awssdk.codegen.lite.regions.RegionPartitionsMetadataLoader; import software.amazon.awssdk.codegen.lite.regions.RegionGenerator; import software.amazon.awssdk.codegen.lite.regions.RegionMetadataGenerator; import software.amazon.awssdk.codegen.lite.regions.RegionMetadataLoader; @@ -37,7 +37,7 @@ import software.amazon.awssdk.codegen.lite.regions.ServiceMetadataGenerator; import software.amazon.awssdk.codegen.lite.regions.ServiceMetadataProviderGenerator; import software.amazon.awssdk.codegen.lite.regions.model.Partitions; -import software.amazon.awssdk.codegen.lite.regions.model.PartitionsMetadata; +import software.amazon.awssdk.codegen.lite.regions.model.RegionPartitionsMetadata; import software.amazon.awssdk.utils.StringUtils; /** @@ -71,7 +71,7 @@ public void execute() throws MojoExecutionException { Path testsDirectory = Paths.get(outputDirectory).resolve("generated-test-sources").resolve("sdk-tests"); Partitions partitions = RegionMetadataLoader.build(endpoints); - PartitionsMetadata regionPartitions = PartitionsMetadataLoader.build(partitionsJson); + RegionPartitionsMetadata regionPartitions = RegionPartitionsMetadataLoader.build(partitionsJson); generatePartitionMetadataClass(baseSourcesDirectory, partitions); generateRegionClass(baseSourcesDirectory, regionPartitions); @@ -95,7 +95,7 @@ public void generatePartitionMetadataClass(Path baseSourcesDirectory, Partitions REGION_BASE)).generate()); } - public void generateRegionClass(Path baseSourcesDirectory, PartitionsMetadata partitions) { + public void generateRegionClass(Path baseSourcesDirectory, RegionPartitionsMetadata partitions) { Path sourcesDirectory = baseSourcesDirectory.resolve(StringUtils.replace(REGION_BASE, ".", "/")); new CodeGenerator(sourcesDirectory.toString(), new RegionGenerator(partitions, REGION_BASE)).generate(); } @@ -112,7 +112,7 @@ public void generateServiceMetadata(Path baseSourcesDirectory, Partitions partit .generate()); } - public void generateRegions(Path baseSourcesDirectory, PartitionsMetadata partitions) { + public void generateRegions(Path baseSourcesDirectory, RegionPartitionsMetadata partitions) { Path sourcesDirectory = baseSourcesDirectory.resolve(StringUtils.replace(REGION_METADATA_BASE, ".", "/")); partitions.getPartitions() .forEach(p -> p.getRegions().forEach((k, v) -> @@ -133,7 +133,7 @@ public void generatePartitionProvider(Path baseSourcesDirectory, Partitions part .generate(); } - public void generateRegionProvider(Path baseSourcesDirectory, PartitionsMetadata partitions) { + public void generateRegionProvider(Path baseSourcesDirectory, RegionPartitionsMetadata partitions) { Path sourcesDirectory = baseSourcesDirectory.resolve(StringUtils.replace(REGION_BASE, ".", "/")); new CodeGenerator(sourcesDirectory.toString(), new RegionMetadataProviderGenerator(partitions, REGION_METADATA_BASE, diff --git a/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/RegionGenerator.java b/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/RegionGenerator.java index 3dc7f545fbef..bdb077e58733 100644 --- a/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/RegionGenerator.java +++ b/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/RegionGenerator.java @@ -38,16 +38,16 @@ import software.amazon.awssdk.annotations.Generated; import software.amazon.awssdk.annotations.SdkPublicApi; import software.amazon.awssdk.codegen.lite.PoetClass; -import software.amazon.awssdk.codegen.lite.regions.model.PartitionsMetadata; +import software.amazon.awssdk.codegen.lite.regions.model.RegionPartitionsMetadata; import software.amazon.awssdk.utils.Validate; import software.amazon.awssdk.utils.http.SdkHttpUtils; public class RegionGenerator implements PoetClass { - private final PartitionsMetadata partitions; + private final RegionPartitionsMetadata partitions; private final String basePackage; - public RegionGenerator(PartitionsMetadata partitions, + public RegionGenerator(RegionPartitionsMetadata partitions, String basePackage) { this.partitions = partitions; this.basePackage = basePackage; diff --git a/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/RegionMetadataGenerator.java b/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/RegionMetadataGenerator.java index 5eb006044ea4..0f1a4781a39f 100644 --- a/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/RegionMetadataGenerator.java +++ b/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/RegionMetadataGenerator.java @@ -32,17 +32,17 @@ import software.amazon.awssdk.annotations.SdkPublicApi; import software.amazon.awssdk.codegen.lite.PoetClass; import software.amazon.awssdk.codegen.lite.Utils; -import software.amazon.awssdk.codegen.lite.regions.model.PartitionMetadata; +import software.amazon.awssdk.codegen.lite.regions.model.RegionPartitionMetadata; public class RegionMetadataGenerator implements PoetClass { - private final PartitionMetadata partition; + private final RegionPartitionMetadata partition; private final String region; private final String regionDescription; private final String basePackage; private final String regionBasePackage; - public RegionMetadataGenerator(PartitionMetadata partition, + public RegionMetadataGenerator(RegionPartitionMetadata partition, String region, String regionDescription, String basePackage, diff --git a/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/RegionMetadataProviderGenerator.java b/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/RegionMetadataProviderGenerator.java index b252dec62d9e..ba5eb8a3f3c4 100644 --- a/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/RegionMetadataProviderGenerator.java +++ b/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/RegionMetadataProviderGenerator.java @@ -36,16 +36,16 @@ import software.amazon.awssdk.annotations.SdkPublicApi; import software.amazon.awssdk.codegen.lite.PoetClass; import software.amazon.awssdk.codegen.lite.Utils; -import software.amazon.awssdk.codegen.lite.regions.model.PartitionsMetadata; +import software.amazon.awssdk.codegen.lite.regions.model.RegionPartitionsMetadata; import software.amazon.awssdk.utils.ImmutableMap; public class RegionMetadataProviderGenerator implements PoetClass { - private final PartitionsMetadata partitions; + private final RegionPartitionsMetadata partitions; private final String basePackage; private final String regionBasePackage; - public RegionMetadataProviderGenerator(PartitionsMetadata partitions, + public RegionMetadataProviderGenerator(RegionPartitionsMetadata partitions, String basePackage, String regionBasePackage) { this.partitions = partitions; @@ -79,7 +79,7 @@ public ClassName className() { return ClassName.get(regionBasePackage, "GeneratedRegionMetadataProvider"); } - private CodeBlock regions(PartitionsMetadata partitions) { + private CodeBlock regions(RegionPartitionsMetadata partitions) { CodeBlock.Builder builder = CodeBlock.builder().add("$T.builder()", ImmutableMap.class); partitions.getPartitions() diff --git a/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/PartitionsMetadataLoader.java b/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/RegionPartitionsMetadataLoader.java similarity index 69% rename from codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/PartitionsMetadataLoader.java rename to codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/RegionPartitionsMetadataLoader.java index 4e1c07a47e35..e93d74a14786 100644 --- a/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/PartitionsMetadataLoader.java +++ b/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/RegionPartitionsMetadataLoader.java @@ -19,26 +19,26 @@ import java.io.File; import java.io.IOException; import software.amazon.awssdk.annotations.SdkInternalApi; -import software.amazon.awssdk.codegen.lite.regions.model.PartitionsMetadata; +import software.amazon.awssdk.codegen.lite.regions.model.RegionPartitionsMetadata; /** - * Loads and parses the partitions.json file into {@link PartitionsMetadata}. + * Loads and parses the partitions.json file into {@link RegionPartitionsMetadata}. */ @SdkInternalApi -public final class PartitionsMetadataLoader { +public final class RegionPartitionsMetadataLoader { - private PartitionsMetadataLoader() { + private RegionPartitionsMetadataLoader() { } - public static PartitionsMetadata build(File path) { + public static RegionPartitionsMetadata build(File path) { return loadPartitionFromStream(path, path.toString()); } - private static PartitionsMetadata loadPartitionFromStream(File stream, String location) { + private static RegionPartitionsMetadata loadPartitionFromStream(File stream, String location) { try { return JSON.std.with(JSON.Feature.USE_IS_GETTERS) - .beanFrom(PartitionsMetadata.class, stream); + .beanFrom(RegionPartitionsMetadata.class, stream); } catch (IOException | RuntimeException e) { throw new RuntimeException("Error while loading partitions file from " + location, e); diff --git a/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/model/PartitionMetadata.java b/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/model/RegionPartitionMetadata.java similarity index 91% rename from codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/model/PartitionMetadata.java rename to codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/model/RegionPartitionMetadata.java index 3ece63b078de..e82c5660a2e2 100644 --- a/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/model/PartitionMetadata.java +++ b/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/model/RegionPartitionMetadata.java @@ -23,19 +23,19 @@ * This class models a single partition from partitions.json. */ @SdkInternalApi -public final class PartitionMetadata { +public final class RegionPartitionMetadata { private String id; private PartitionOutputs outputs; private String regionRegex; private Map regions; - public PartitionMetadata() { + public RegionPartitionMetadata() { } - public PartitionMetadata(@JsonProperty(value = "id") String id, - @JsonProperty(value = "outputs") PartitionOutputs outputs, - @JsonProperty(value = "regionRegex") String regionRegex, - @JsonProperty(value = "regions") Map regions) { + public RegionPartitionMetadata(@JsonProperty(value = "id") String id, + @JsonProperty(value = "outputs") PartitionOutputs outputs, + @JsonProperty(value = "regionRegex") String regionRegex, + @JsonProperty(value = "regions") Map regions) { this.id = id; this.outputs = outputs; this.regionRegex = regionRegex; diff --git a/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/model/PartitionsMetadata.java b/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/model/RegionPartitionsMetadata.java similarity index 73% rename from codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/model/PartitionsMetadata.java rename to codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/model/RegionPartitionsMetadata.java index 962da1d8235c..e764b1c294b2 100644 --- a/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/model/PartitionsMetadata.java +++ b/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/model/RegionPartitionsMetadata.java @@ -24,24 +24,24 @@ * This class models the AWS partitions metadata from partitions.json. */ @SdkInternalApi -public final class PartitionsMetadata { - private List partitions; +public final class RegionPartitionsMetadata { + private List partitions; private String version; - public PartitionsMetadata() { + public RegionPartitionsMetadata() { } - public PartitionsMetadata(@JsonProperty(value = "partitions") List partitions, - @JsonProperty(value = "version") String version) { + public RegionPartitionsMetadata(@JsonProperty(value = "partitions") List partitions, + @JsonProperty(value = "version") String version) { this.partitions = Validate.paramNotNull(partitions, "partitions"); this.version = Validate.paramNotNull(version, "version"); } - public List getPartitions() { + public List getPartitions() { return partitions; } - public void setPartitions(List partitions) { + public void setPartitions(List partitions) { this.partitions = partitions; } diff --git a/codegen-lite/src/test/java/software/amazon/awssdk/codegen/lite/regions/RegionGenerationTest.java b/codegen-lite/src/test/java/software/amazon/awssdk/codegen/lite/regions/RegionGenerationTest.java index 7713616a4fd8..348ed11a985c 100644 --- a/codegen-lite/src/test/java/software/amazon/awssdk/codegen/lite/regions/RegionGenerationTest.java +++ b/codegen-lite/src/test/java/software/amazon/awssdk/codegen/lite/regions/RegionGenerationTest.java @@ -22,8 +22,8 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import software.amazon.awssdk.codegen.lite.regions.model.Partitions; -import software.amazon.awssdk.codegen.lite.regions.model.PartitionsMetadata; -import software.amazon.awssdk.codegen.lite.regions.model.PartitionMetadata; +import software.amazon.awssdk.codegen.lite.regions.model.RegionPartitionsMetadata; +import software.amazon.awssdk.codegen.lite.regions.model.RegionPartitionMetadata; public class RegionGenerationTest { @@ -37,7 +37,7 @@ public class RegionGenerationTest { private File endpoints; private File partitionsFile; private Partitions partitions; - private PartitionsMetadata partitionsRegions; + private RegionPartitionsMetadata partitionsRegions; @BeforeEach @@ -45,7 +45,7 @@ public void before() throws Exception { this.endpoints = Paths.get(getClass().getResource(ENDPOINTS).toURI()).toFile(); this.partitionsFile = Paths.get(getClass().getResource(PARTITIONS).toURI()).toFile(); this.partitions = RegionMetadataLoader.build(endpoints); - this.partitionsRegions = PartitionsMetadataLoader.build(partitionsFile); + this.partitionsRegions = RegionPartitionsMetadataLoader.build(partitionsFile); } @Test @@ -56,7 +56,7 @@ public void regionClass() { @Test public void regionMetadataClass() { - PartitionMetadata partition = partitionsRegions.getPartitions().get(0); + RegionPartitionMetadata partition = partitionsRegions.getPartitions().get(0); RegionMetadataGenerator metadataGenerator = new RegionMetadataGenerator(partition, "us-east-1", "US East (N. Virginia)", diff --git a/test/region-testing/pom.xml b/test/region-testing/pom.xml index 2f924b4d3bb4..1938f51ca2ed 100644 --- a/test/region-testing/pom.xml +++ b/test/region-testing/pom.xml @@ -102,7 +102,6 @@ ${basedir}/src/test/resources/variants-test-endpoints.json - ${basedir}/src/test/resources/variants-test-partitions.json.resource diff --git a/test/region-testing/src/test/resources/variants-test-partitions.json.resource b/test/region-testing/src/test/resources/variants-test-partitions.json.resource deleted file mode 100644 index 3d7e9530924e..000000000000 --- a/test/region-testing/src/test/resources/variants-test-partitions.json.resource +++ /dev/null @@ -1,255 +0,0 @@ -{ - "partitions" : [ { - "id" : "aws", - "outputs" : { - "dnsSuffix" : "amazonaws.com", - "dualStackDnsSuffix" : "api.aws", - "implicitGlobalRegion" : "us-east-1", - "name" : "aws", - "supportsDualStack" : true, - "supportsFIPS" : true - }, - "regionRegex" : "^(us|eu|ap|sa|ca|me|af|il|mx)\\-\\w+\\-\\d+$", - "regions" : { - "af-south-1" : { - "description" : "Africa (Cape Town)" - }, - "ap-east-1" : { - "description" : "Asia Pacific (Hong Kong)" - }, - "ap-northeast-1" : { - "description" : "Asia Pacific (Tokyo)" - }, - "ap-northeast-2" : { - "description" : "Asia Pacific (Seoul)" - }, - "ap-northeast-3" : { - "description" : "Asia Pacific (Osaka)" - }, - "ap-south-1" : { - "description" : "Asia Pacific (Mumbai)" - }, - "ap-south-2" : { - "description" : "Asia Pacific (Hyderabad)" - }, - "ap-southeast-1" : { - "description" : "Asia Pacific (Singapore)" - }, - "ap-southeast-2" : { - "description" : "Asia Pacific (Sydney)" - }, - "ap-southeast-3" : { - "description" : "Asia Pacific (Jakarta)" - }, - "ap-southeast-4" : { - "description" : "Asia Pacific (Melbourne)" - }, - "ap-southeast-5" : { - "description" : "Asia Pacific (Malaysia)" - }, - "ap-southeast-7" : { - "description" : "Asia Pacific (Thailand)" - }, - "aws-global" : { - "description" : "AWS Standard global region" - }, - "ca-central-1" : { - "description" : "Canada (Central)" - }, - "ca-west-1" : { - "description" : "Canada West (Calgary)" - }, - "eu-central-1" : { - "description" : "Europe (Frankfurt)" - }, - "eu-central-2" : { - "description" : "Europe (Zurich)" - }, - "eu-north-1" : { - "description" : "Europe (Stockholm)" - }, - "eu-south-1" : { - "description" : "Europe (Milan)" - }, - "eu-south-2" : { - "description" : "Europe (Spain)" - }, - "eu-west-1" : { - "description" : "Europe (Ireland)" - }, - "eu-west-2" : { - "description" : "Europe (London)" - }, - "eu-west-3" : { - "description" : "Europe (Paris)" - }, - "il-central-1" : { - "description" : "Israel (Tel Aviv)" - }, - "me-central-1" : { - "description" : "Middle East (UAE)" - }, - "me-south-1" : { - "description" : "Middle East (Bahrain)" - }, - "mx-central-1" : { - "description" : "Mexico (Central)" - }, - "sa-east-1" : { - "description" : "South America (Sao Paulo)" - }, - "us-east-1" : { - "description" : "US East (N. Virginia)" - }, - "us-east-2" : { - "description" : "US East (Ohio)" - }, - "us-west-1" : { - "description" : "US West (N. California)" - }, - "us-west-2" : { - "description" : "US West (Oregon)" - } - } - }, { - "id" : "aws-cn", - "outputs" : { - "dnsSuffix" : "amazonaws.com.cn", - "dualStackDnsSuffix" : "api.amazonwebservices.com.cn", - "implicitGlobalRegion" : "cn-northwest-1", - "name" : "aws-cn", - "supportsDualStack" : true, - "supportsFIPS" : true - }, - "regionRegex" : "^cn\\-\\w+\\-\\d+$", - "regions" : { - "aws-cn-global" : { - "description" : "AWS China global region" - }, - "cn-north-1" : { - "description" : "China (Beijing)" - }, - "cn-northwest-1" : { - "description" : "China (Ningxia)" - } - } - }, { - "id" : "aws-us-gov", - "outputs" : { - "dnsSuffix" : "amazonaws.com", - "dualStackDnsSuffix" : "api.aws", - "implicitGlobalRegion" : "us-gov-west-1", - "name" : "aws-us-gov", - "supportsDualStack" : true, - "supportsFIPS" : true - }, - "regionRegex" : "^us\\-gov\\-\\w+\\-\\d+$", - "regions" : { - "aws-us-gov-global" : { - "description" : "AWS GovCloud (US) global region" - }, - "us-gov-east-1" : { - "description" : "AWS GovCloud (US-East)" - }, - "us-gov-west-1" : { - "description" : "AWS GovCloud (US-West)" - } - } - }, { - "id" : "aws-iso", - "outputs" : { - "dnsSuffix" : "c2s.ic.gov", - "dualStackDnsSuffix" : "c2s.ic.gov", - "implicitGlobalRegion" : "us-iso-east-1", - "name" : "aws-iso", - "supportsDualStack" : false, - "supportsFIPS" : true - }, - "regionRegex" : "^us\\-iso\\-\\w+\\-\\d+$", - "regions" : { - "aws-iso-global" : { - "description" : "AWS ISO (US) global region" - }, - "us-iso-east-1" : { - "description" : "US ISO East" - }, - "us-iso-west-1" : { - "description" : "US ISO WEST" - } - } - }, { - "id" : "aws-iso-b", - "outputs" : { - "dnsSuffix" : "sc2s.sgov.gov", - "dualStackDnsSuffix" : "sc2s.sgov.gov", - "implicitGlobalRegion" : "us-isob-east-1", - "name" : "aws-iso-b", - "supportsDualStack" : false, - "supportsFIPS" : true - }, - "regionRegex" : "^us\\-isob\\-\\w+\\-\\d+$", - "regions" : { - "aws-iso-b-global" : { - "description" : "AWS ISOB (US) global region" - }, - "us-isob-east-1" : { - "description" : "US ISOB East (Ohio)" - } - } - }, { - "id" : "aws-iso-e", - "outputs" : { - "dnsSuffix" : "cloud.adc-e.uk", - "dualStackDnsSuffix" : "cloud.adc-e.uk", - "implicitGlobalRegion" : "eu-isoe-west-1", - "name" : "aws-iso-e", - "supportsDualStack" : false, - "supportsFIPS" : true - }, - "regionRegex" : "^eu\\-isoe\\-\\w+\\-\\d+$", - "regions" : { - "eu-isoe-west-1" : { - "description" : "EU ISOE West" - } - } - }, { - "id" : "aws-iso-f", - "outputs" : { - "dnsSuffix" : "csp.hci.ic.gov", - "dualStackDnsSuffix" : "csp.hci.ic.gov", - "implicitGlobalRegion" : "us-isof-south-1", - "name" : "aws-iso-f", - "supportsDualStack" : false, - "supportsFIPS" : true - }, - "regionRegex" : "^us\\-isof\\-\\w+\\-\\d+$", - "regions" : { - "aws-iso-f-global" : { - "description" : "AWS ISOF global region" - }, - "us-isof-east-1" : { - "description" : "US ISOF EAST" - }, - "us-isof-south-1" : { - "description" : "US ISOF SOUTH" - } - } - }, { - "id" : "aws-eusc", - "outputs" : { - "dnsSuffix" : "amazonaws.eu", - "dualStackDnsSuffix" : "amazonaws.eu", - "implicitGlobalRegion" : "eusc-de-east-1", - "name" : "aws-eusc", - "supportsDualStack" : false, - "supportsFIPS" : true - }, - "regionRegex" : "^eusc\\-(de)\\-\\w+\\-\\d+$", - "regions" : { - "eusc-de-east-1" : { - "description" : "EU (Germany)" - } - } - } ], - "version" : "1.1" -} \ No newline at end of file From 3b01c01dd0e3df3381e21f1e7f5e6142f18904bc Mon Sep 17 00:00:00 2001 From: Saranya Somepalli Date: Fri, 6 Jun 2025 15:46:26 -0700 Subject: [PATCH 10/12] Fixing Checkstyle issues --- .../awssdk/codegen/lite/maven/plugin/RegionGenerationMojo.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/codegen-lite-maven-plugin/src/main/java/software/amazon/awssdk/codegen/lite/maven/plugin/RegionGenerationMojo.java b/codegen-lite-maven-plugin/src/main/java/software/amazon/awssdk/codegen/lite/maven/plugin/RegionGenerationMojo.java index 5655d71f9a80..2fd42a616a86 100644 --- a/codegen-lite-maven-plugin/src/main/java/software/amazon/awssdk/codegen/lite/maven/plugin/RegionGenerationMojo.java +++ b/codegen-lite-maven-plugin/src/main/java/software/amazon/awssdk/codegen/lite/maven/plugin/RegionGenerationMojo.java @@ -29,11 +29,11 @@ import software.amazon.awssdk.codegen.lite.regions.EndpointTagGenerator; import software.amazon.awssdk.codegen.lite.regions.PartitionMetadataGenerator; import software.amazon.awssdk.codegen.lite.regions.PartitionMetadataProviderGenerator; -import software.amazon.awssdk.codegen.lite.regions.RegionPartitionsMetadataLoader; import software.amazon.awssdk.codegen.lite.regions.RegionGenerator; import software.amazon.awssdk.codegen.lite.regions.RegionMetadataGenerator; import software.amazon.awssdk.codegen.lite.regions.RegionMetadataLoader; import software.amazon.awssdk.codegen.lite.regions.RegionMetadataProviderGenerator; +import software.amazon.awssdk.codegen.lite.regions.RegionPartitionsMetadataLoader; import software.amazon.awssdk.codegen.lite.regions.ServiceMetadataGenerator; import software.amazon.awssdk.codegen.lite.regions.ServiceMetadataProviderGenerator; import software.amazon.awssdk.codegen.lite.regions.model.Partitions; From 9795ae47f076310e29f20d9b57a8d27e72d9ea2d Mon Sep 17 00:00:00 2001 From: Saranya Somepalli Date: Fri, 6 Jun 2025 16:44:57 -0700 Subject: [PATCH 11/12] Updating file names --- ...r.java => PartitionsRegionsMetadataLoader.java} | 14 +++++++------- .../codegen/lite/regions/RegionGenerator.java | 6 +++--- .../lite/regions/RegionMetadataGenerator.java | 6 +++--- .../regions/RegionMetadataProviderGenerator.java | 8 ++++---- ...Metadata.java => PartitionRegionsMetadata.java} | 12 ++++++------ ...etadata.java => PartitionsRegionsMetadata.java} | 14 +++++++------- .../codegen/lite/regions/RegionGenerationTest.java | 10 +++++----- 7 files changed, 35 insertions(+), 35 deletions(-) rename codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/{RegionPartitionsMetadataLoader.java => PartitionsRegionsMetadataLoader.java} (68%) rename codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/model/{RegionPartitionMetadata.java => PartitionRegionsMetadata.java} (91%) rename codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/model/{RegionPartitionsMetadata.java => PartitionsRegionsMetadata.java} (73%) diff --git a/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/RegionPartitionsMetadataLoader.java b/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/PartitionsRegionsMetadataLoader.java similarity index 68% rename from codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/RegionPartitionsMetadataLoader.java rename to codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/PartitionsRegionsMetadataLoader.java index e93d74a14786..692ee7758081 100644 --- a/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/RegionPartitionsMetadataLoader.java +++ b/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/PartitionsRegionsMetadataLoader.java @@ -19,26 +19,26 @@ import java.io.File; import java.io.IOException; import software.amazon.awssdk.annotations.SdkInternalApi; -import software.amazon.awssdk.codegen.lite.regions.model.RegionPartitionsMetadata; +import software.amazon.awssdk.codegen.lite.regions.model.PartitionsRegionsMetadata; /** - * Loads and parses the partitions.json file into {@link RegionPartitionsMetadata}. + * Loads and parses the partitions.json file into {@link PartitionsRegionsMetadata}. */ @SdkInternalApi -public final class RegionPartitionsMetadataLoader { +public final class PartitionsRegionsMetadataLoader { - private RegionPartitionsMetadataLoader() { + private PartitionsRegionsMetadataLoader() { } - public static RegionPartitionsMetadata build(File path) { + public static PartitionsRegionsMetadata build(File path) { return loadPartitionFromStream(path, path.toString()); } - private static RegionPartitionsMetadata loadPartitionFromStream(File stream, String location) { + private static PartitionsRegionsMetadata loadPartitionFromStream(File stream, String location) { try { return JSON.std.with(JSON.Feature.USE_IS_GETTERS) - .beanFrom(RegionPartitionsMetadata.class, stream); + .beanFrom(PartitionsRegionsMetadata.class, stream); } catch (IOException | RuntimeException e) { throw new RuntimeException("Error while loading partitions file from " + location, e); diff --git a/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/RegionGenerator.java b/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/RegionGenerator.java index bdb077e58733..27421f2b6b16 100644 --- a/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/RegionGenerator.java +++ b/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/RegionGenerator.java @@ -38,16 +38,16 @@ import software.amazon.awssdk.annotations.Generated; import software.amazon.awssdk.annotations.SdkPublicApi; import software.amazon.awssdk.codegen.lite.PoetClass; -import software.amazon.awssdk.codegen.lite.regions.model.RegionPartitionsMetadata; +import software.amazon.awssdk.codegen.lite.regions.model.PartitionsRegionsMetadata; import software.amazon.awssdk.utils.Validate; import software.amazon.awssdk.utils.http.SdkHttpUtils; public class RegionGenerator implements PoetClass { - private final RegionPartitionsMetadata partitions; + private final PartitionsRegionsMetadata partitions; private final String basePackage; - public RegionGenerator(RegionPartitionsMetadata partitions, + public RegionGenerator(PartitionsRegionsMetadata partitions, String basePackage) { this.partitions = partitions; this.basePackage = basePackage; diff --git a/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/RegionMetadataGenerator.java b/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/RegionMetadataGenerator.java index 0f1a4781a39f..b71e7c2bb671 100644 --- a/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/RegionMetadataGenerator.java +++ b/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/RegionMetadataGenerator.java @@ -32,17 +32,17 @@ import software.amazon.awssdk.annotations.SdkPublicApi; import software.amazon.awssdk.codegen.lite.PoetClass; import software.amazon.awssdk.codegen.lite.Utils; -import software.amazon.awssdk.codegen.lite.regions.model.RegionPartitionMetadata; +import software.amazon.awssdk.codegen.lite.regions.model.PartitionRegionsMetadata; public class RegionMetadataGenerator implements PoetClass { - private final RegionPartitionMetadata partition; + private final PartitionRegionsMetadata partition; private final String region; private final String regionDescription; private final String basePackage; private final String regionBasePackage; - public RegionMetadataGenerator(RegionPartitionMetadata partition, + public RegionMetadataGenerator(PartitionRegionsMetadata partition, String region, String regionDescription, String basePackage, diff --git a/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/RegionMetadataProviderGenerator.java b/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/RegionMetadataProviderGenerator.java index ba5eb8a3f3c4..fdd16ab73eec 100644 --- a/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/RegionMetadataProviderGenerator.java +++ b/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/RegionMetadataProviderGenerator.java @@ -36,16 +36,16 @@ import software.amazon.awssdk.annotations.SdkPublicApi; import software.amazon.awssdk.codegen.lite.PoetClass; import software.amazon.awssdk.codegen.lite.Utils; -import software.amazon.awssdk.codegen.lite.regions.model.RegionPartitionsMetadata; +import software.amazon.awssdk.codegen.lite.regions.model.PartitionsRegionsMetadata; import software.amazon.awssdk.utils.ImmutableMap; public class RegionMetadataProviderGenerator implements PoetClass { - private final RegionPartitionsMetadata partitions; + private final PartitionsRegionsMetadata partitions; private final String basePackage; private final String regionBasePackage; - public RegionMetadataProviderGenerator(RegionPartitionsMetadata partitions, + public RegionMetadataProviderGenerator(PartitionsRegionsMetadata partitions, String basePackage, String regionBasePackage) { this.partitions = partitions; @@ -79,7 +79,7 @@ public ClassName className() { return ClassName.get(regionBasePackage, "GeneratedRegionMetadataProvider"); } - private CodeBlock regions(RegionPartitionsMetadata partitions) { + private CodeBlock regions(PartitionsRegionsMetadata partitions) { CodeBlock.Builder builder = CodeBlock.builder().add("$T.builder()", ImmutableMap.class); partitions.getPartitions() diff --git a/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/model/RegionPartitionMetadata.java b/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/model/PartitionRegionsMetadata.java similarity index 91% rename from codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/model/RegionPartitionMetadata.java rename to codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/model/PartitionRegionsMetadata.java index e82c5660a2e2..f780e766f71e 100644 --- a/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/model/RegionPartitionMetadata.java +++ b/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/model/PartitionRegionsMetadata.java @@ -23,19 +23,19 @@ * This class models a single partition from partitions.json. */ @SdkInternalApi -public final class RegionPartitionMetadata { +public final class PartitionRegionsMetadata { private String id; private PartitionOutputs outputs; private String regionRegex; private Map regions; - public RegionPartitionMetadata() { + public PartitionRegionsMetadata() { } - public RegionPartitionMetadata(@JsonProperty(value = "id") String id, - @JsonProperty(value = "outputs") PartitionOutputs outputs, - @JsonProperty(value = "regionRegex") String regionRegex, - @JsonProperty(value = "regions") Map regions) { + public PartitionRegionsMetadata(@JsonProperty(value = "id") String id, + @JsonProperty(value = "outputs") PartitionOutputs outputs, + @JsonProperty(value = "regionRegex") String regionRegex, + @JsonProperty(value = "regions") Map regions) { this.id = id; this.outputs = outputs; this.regionRegex = regionRegex; diff --git a/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/model/RegionPartitionsMetadata.java b/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/model/PartitionsRegionsMetadata.java similarity index 73% rename from codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/model/RegionPartitionsMetadata.java rename to codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/model/PartitionsRegionsMetadata.java index e764b1c294b2..7c5092e41c66 100644 --- a/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/model/RegionPartitionsMetadata.java +++ b/codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/model/PartitionsRegionsMetadata.java @@ -24,24 +24,24 @@ * This class models the AWS partitions metadata from partitions.json. */ @SdkInternalApi -public final class RegionPartitionsMetadata { - private List partitions; +public final class PartitionsRegionsMetadata { + private List partitions; private String version; - public RegionPartitionsMetadata() { + public PartitionsRegionsMetadata() { } - public RegionPartitionsMetadata(@JsonProperty(value = "partitions") List partitions, - @JsonProperty(value = "version") String version) { + public PartitionsRegionsMetadata(@JsonProperty(value = "partitions") List partitions, + @JsonProperty(value = "version") String version) { this.partitions = Validate.paramNotNull(partitions, "partitions"); this.version = Validate.paramNotNull(version, "version"); } - public List getPartitions() { + public List getPartitions() { return partitions; } - public void setPartitions(List partitions) { + public void setPartitions(List partitions) { this.partitions = partitions; } diff --git a/codegen-lite/src/test/java/software/amazon/awssdk/codegen/lite/regions/RegionGenerationTest.java b/codegen-lite/src/test/java/software/amazon/awssdk/codegen/lite/regions/RegionGenerationTest.java index 348ed11a985c..2ace744a0392 100644 --- a/codegen-lite/src/test/java/software/amazon/awssdk/codegen/lite/regions/RegionGenerationTest.java +++ b/codegen-lite/src/test/java/software/amazon/awssdk/codegen/lite/regions/RegionGenerationTest.java @@ -22,8 +22,8 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import software.amazon.awssdk.codegen.lite.regions.model.Partitions; -import software.amazon.awssdk.codegen.lite.regions.model.RegionPartitionsMetadata; -import software.amazon.awssdk.codegen.lite.regions.model.RegionPartitionMetadata; +import software.amazon.awssdk.codegen.lite.regions.model.PartitionsRegionsMetadata; +import software.amazon.awssdk.codegen.lite.regions.model.PartitionRegionsMetadata; public class RegionGenerationTest { @@ -37,7 +37,7 @@ public class RegionGenerationTest { private File endpoints; private File partitionsFile; private Partitions partitions; - private RegionPartitionsMetadata partitionsRegions; + private PartitionsRegionsMetadata partitionsRegions; @BeforeEach @@ -45,7 +45,7 @@ public void before() throws Exception { this.endpoints = Paths.get(getClass().getResource(ENDPOINTS).toURI()).toFile(); this.partitionsFile = Paths.get(getClass().getResource(PARTITIONS).toURI()).toFile(); this.partitions = RegionMetadataLoader.build(endpoints); - this.partitionsRegions = RegionPartitionsMetadataLoader.build(partitionsFile); + this.partitionsRegions = PartitionsRegionsMetadataLoader.build(partitionsFile); } @Test @@ -56,7 +56,7 @@ public void regionClass() { @Test public void regionMetadataClass() { - RegionPartitionMetadata partition = partitionsRegions.getPartitions().get(0); + PartitionRegionsMetadata partition = partitionsRegions.getPartitions().get(0); RegionMetadataGenerator metadataGenerator = new RegionMetadataGenerator(partition, "us-east-1", "US East (N. Virginia)", From 14cc1badda07dfb54b88790c1048c2791d27fde5 Mon Sep 17 00:00:00 2001 From: Saranya Somepalli Date: Fri, 6 Jun 2025 16:51:57 -0700 Subject: [PATCH 12/12] Updating file names --- .../lite/maven/plugin/RegionGenerationMojo.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/codegen-lite-maven-plugin/src/main/java/software/amazon/awssdk/codegen/lite/maven/plugin/RegionGenerationMojo.java b/codegen-lite-maven-plugin/src/main/java/software/amazon/awssdk/codegen/lite/maven/plugin/RegionGenerationMojo.java index 2fd42a616a86..10422e931450 100644 --- a/codegen-lite-maven-plugin/src/main/java/software/amazon/awssdk/codegen/lite/maven/plugin/RegionGenerationMojo.java +++ b/codegen-lite-maven-plugin/src/main/java/software/amazon/awssdk/codegen/lite/maven/plugin/RegionGenerationMojo.java @@ -29,15 +29,15 @@ import software.amazon.awssdk.codegen.lite.regions.EndpointTagGenerator; import software.amazon.awssdk.codegen.lite.regions.PartitionMetadataGenerator; import software.amazon.awssdk.codegen.lite.regions.PartitionMetadataProviderGenerator; +import software.amazon.awssdk.codegen.lite.regions.PartitionsRegionsMetadataLoader; import software.amazon.awssdk.codegen.lite.regions.RegionGenerator; import software.amazon.awssdk.codegen.lite.regions.RegionMetadataGenerator; import software.amazon.awssdk.codegen.lite.regions.RegionMetadataLoader; import software.amazon.awssdk.codegen.lite.regions.RegionMetadataProviderGenerator; -import software.amazon.awssdk.codegen.lite.regions.RegionPartitionsMetadataLoader; import software.amazon.awssdk.codegen.lite.regions.ServiceMetadataGenerator; import software.amazon.awssdk.codegen.lite.regions.ServiceMetadataProviderGenerator; import software.amazon.awssdk.codegen.lite.regions.model.Partitions; -import software.amazon.awssdk.codegen.lite.regions.model.RegionPartitionsMetadata; +import software.amazon.awssdk.codegen.lite.regions.model.PartitionsRegionsMetadata; import software.amazon.awssdk.utils.StringUtils; /** @@ -71,7 +71,7 @@ public void execute() throws MojoExecutionException { Path testsDirectory = Paths.get(outputDirectory).resolve("generated-test-sources").resolve("sdk-tests"); Partitions partitions = RegionMetadataLoader.build(endpoints); - RegionPartitionsMetadata regionPartitions = RegionPartitionsMetadataLoader.build(partitionsJson); + PartitionsRegionsMetadata regionPartitions = PartitionsRegionsMetadataLoader.build(partitionsJson); generatePartitionMetadataClass(baseSourcesDirectory, partitions); generateRegionClass(baseSourcesDirectory, regionPartitions); @@ -95,7 +95,7 @@ public void generatePartitionMetadataClass(Path baseSourcesDirectory, Partitions REGION_BASE)).generate()); } - public void generateRegionClass(Path baseSourcesDirectory, RegionPartitionsMetadata partitions) { + public void generateRegionClass(Path baseSourcesDirectory, PartitionsRegionsMetadata partitions) { Path sourcesDirectory = baseSourcesDirectory.resolve(StringUtils.replace(REGION_BASE, ".", "/")); new CodeGenerator(sourcesDirectory.toString(), new RegionGenerator(partitions, REGION_BASE)).generate(); } @@ -112,7 +112,7 @@ public void generateServiceMetadata(Path baseSourcesDirectory, Partitions partit .generate()); } - public void generateRegions(Path baseSourcesDirectory, RegionPartitionsMetadata partitions) { + public void generateRegions(Path baseSourcesDirectory, PartitionsRegionsMetadata partitions) { Path sourcesDirectory = baseSourcesDirectory.resolve(StringUtils.replace(REGION_METADATA_BASE, ".", "/")); partitions.getPartitions() .forEach(p -> p.getRegions().forEach((k, v) -> @@ -133,7 +133,7 @@ public void generatePartitionProvider(Path baseSourcesDirectory, Partitions part .generate(); } - public void generateRegionProvider(Path baseSourcesDirectory, RegionPartitionsMetadata partitions) { + public void generateRegionProvider(Path baseSourcesDirectory, PartitionsRegionsMetadata partitions) { Path sourcesDirectory = baseSourcesDirectory.resolve(StringUtils.replace(REGION_BASE, ".", "/")); new CodeGenerator(sourcesDirectory.toString(), new RegionMetadataProviderGenerator(partitions, REGION_METADATA_BASE,