Skip to content

Commit 4fd9154

Browse files
committed
Use partitions.json to generate Region class
1 parent 3ce1c9d commit 4fd9154

File tree

8 files changed

+676
-35
lines changed

8 files changed

+676
-35
lines changed
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"type": "feature",
3+
"category": "AWS SDK for Java v2",
4+
"contributor": "",
5+
"description": "Updated Region class generation to use Partitions.json instead of the Endpoints.json and removed the hardcoded global regions."
6+
}

codegen-lite-maven-plugin/src/main/java/software/amazon/awssdk/codegen/lite/maven/plugin/RegionGenerationMojo.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,19 +59,24 @@ public class RegionGenerationMojo extends AbstractMojo {
5959
"${basedir}/src/main/resources/software/amazon/awssdk/regions/internal/region/endpoints.json")
6060
private File endpoints;
6161

62+
@Parameter(property = "partitionsjson", defaultValue =
63+
"${basedir}/src/main/resources/software/amazon/awssdk/regions/internal/region/partitions.json.resource")
64+
private File partitionsjson;
65+
6266
@Override
6367
public void execute() throws MojoExecutionException {
6468
Path baseSourcesDirectory = Paths.get(outputDirectory).resolve("generated-sources").resolve("sdk");
6569
Path testsDirectory = Paths.get(outputDirectory).resolve("generated-test-sources").resolve("sdk-tests");
6670

6771
Partitions partitions = RegionMetadataLoader.build(endpoints);
72+
Partitions regionpartitions = RegionMetadataLoader.build(partitionsjson);
6873

6974
generatePartitionMetadataClass(baseSourcesDirectory, partitions);
70-
generateRegionClass(baseSourcesDirectory, partitions);
75+
generateRegionClass(baseSourcesDirectory, regionpartitions);
7176
generateServiceMetadata(baseSourcesDirectory, partitions);
72-
generateRegions(baseSourcesDirectory, partitions);
77+
generateRegions(baseSourcesDirectory, regionpartitions);
7378
generatePartitionProvider(baseSourcesDirectory, partitions);
74-
generateRegionProvider(baseSourcesDirectory, partitions);
79+
generateRegionProvider(baseSourcesDirectory, regionpartitions);
7580
generateServiceProvider(baseSourcesDirectory, partitions);
7681
generateEndpointTags(baseSourcesDirectory, partitions);
7782

codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/RegionGenerator.java

Lines changed: 1 addition & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -107,14 +107,7 @@ private void regions(TypeSpec.Builder builder) {
107107
return regionName(r);
108108
}).collect(Collectors.joining(", "));
109109

110-
addGlobalRegions(builder);
111-
112-
regionsArray.add(regionsCodeBlock + ", ")
113-
.add("AWS_GLOBAL, ")
114-
.add("AWS_CN_GLOBAL, ")
115-
.add("AWS_US_GOV_GLOBAL, ")
116-
.add("AWS_ISO_GLOBAL, ")
117-
.add("AWS_ISO_B_GLOBAL");
110+
regionsArray.add(regionsCodeBlock);
118111
regionsArray.add("))");
119112

120113
TypeName listOfRegions = ParameterizedTypeName.get(ClassName.get(List.class), className());
@@ -123,29 +116,6 @@ private void regions(TypeSpec.Builder builder) {
123116
.initializer(regionsArray.build()).build());
124117
}
125118

126-
private void addGlobalRegions(TypeSpec.Builder builder) {
127-
builder.addField(FieldSpec.builder(className(), "AWS_GLOBAL")
128-
.addModifiers(PUBLIC, STATIC, FINAL)
129-
.initializer("$T.of($S, true)", className(), "aws-global")
130-
.build())
131-
.addField(FieldSpec.builder(className(), "AWS_CN_GLOBAL")
132-
.addModifiers(PUBLIC, STATIC, FINAL)
133-
.initializer("$T.of($S, true)", className(), "aws-cn-global")
134-
.build())
135-
.addField(FieldSpec.builder(className(), "AWS_US_GOV_GLOBAL")
136-
.addModifiers(PUBLIC, STATIC, FINAL)
137-
.initializer("$T.of($S, true)", className(), "aws-us-gov-global")
138-
.build())
139-
.addField(FieldSpec.builder(className(), "AWS_ISO_GLOBAL")
140-
.addModifiers(PUBLIC, STATIC, FINAL)
141-
.initializer("$T.of($S, true)", className(), "aws-iso-global")
142-
.build())
143-
.addField(FieldSpec.builder(className(), "AWS_ISO_B_GLOBAL")
144-
.addModifiers(PUBLIC, STATIC, FINAL)
145-
.initializer("$T.of($S, true)", className(), "aws-iso-b-global")
146-
.build());
147-
}
148-
149119
private String regionName(String region) {
150120
return region.replace("-", "_").toUpperCase(Locale.US);
151121
}

codegen-lite/src/main/java/software/amazon/awssdk/codegen/lite/regions/model/Partition.java

Lines changed: 121 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,17 +62,61 @@ public final class Partition {
6262
*/
6363
private Endpoint defaults;
6464

65+
/**
66+
* The partition id.
67+
*/
68+
private String id;
69+
70+
/**
71+
* Configuration outputs for the partition.
72+
*/
73+
private PartitionOutputs outputs;
74+
6575
public Partition() {
6676
}
6777

6878
public Partition(@JsonProperty(value = "partition") String partition,
6979
@JsonProperty(value = "regions") Map<String, PartitionRegion>
7080
regions,
7181
@JsonProperty(value = "services") Map<String,
72-
Service> services) {
82+
Service> services,
83+
@JsonProperty(value = "id") String id,
84+
@JsonProperty(value = "outputs") PartitionOutputs outputs,
85+
@JsonProperty(value = "regionRegex") String regionRegex) {
7386
this.partition = Validate.paramNotNull(partition, "Partition");
7487
this.regions = regions;
7588
this.services = services;
89+
this.id = id;
90+
this.outputs = outputs;
91+
this.regionRegex = regionRegex;
92+
}
93+
94+
/**
95+
* Returns the partition ID.
96+
*/
97+
public String getId() {
98+
return id;
99+
}
100+
101+
/**
102+
* Sets the partition id.
103+
*/
104+
public void setId(String id) {
105+
this.id = id;
106+
}
107+
108+
/**
109+
* Returns the configuration outputs for the partition.
110+
*/
111+
public PartitionOutputs getOutputs() {
112+
return outputs;
113+
}
114+
115+
/**
116+
* Sets the configuration outputs for the partition.
117+
*/
118+
public void setOutputs(PartitionOutputs outputs) {
119+
this.outputs = outputs;
76120
}
77121

78122
/**
@@ -177,6 +221,82 @@ private boolean matchesRegionRegex(String region) {
177221
return p.matcher(region).matches();
178222
}
179223

224+
public static class PartitionOutputs {
225+
private String dnsSuffix;
226+
private String dualStackDnsSuffix;
227+
private String implicitGlobalRegion;
228+
private String name;
229+
private boolean supportsDualStack;
230+
private boolean supportsFIPS;
231+
232+
@JsonProperty("dnsSuffix")
233+
public String getDnsSuffix() {
234+
return dnsSuffix;
235+
}
236+
237+
public void setDnsSuffix(String dnsSuffix) {
238+
this.dnsSuffix = dnsSuffix;
239+
}
240+
241+
@JsonProperty("dualStackDnsSuffix")
242+
public String getDualStackDnsSuffix() {
243+
return dualStackDnsSuffix;
244+
}
245+
246+
public void setDualStackDnsSuffix(String dualStackDnsSuffix) {
247+
this.dualStackDnsSuffix = dualStackDnsSuffix;
248+
}
249+
250+
@JsonProperty("implicitGlobalRegion")
251+
public String getImplicitGlobalRegion() {
252+
return implicitGlobalRegion;
253+
}
254+
255+
public void setImplicitGlobalRegion(String implicitGlobalRegion) {
256+
this.implicitGlobalRegion = implicitGlobalRegion;
257+
}
258+
259+
@JsonProperty("name")
260+
public String getName() {
261+
return name;
262+
}
263+
264+
public void setName(String name) {
265+
this.name = name;
266+
}
267+
268+
@JsonProperty("supportsDualStack")
269+
public boolean getSupportsDualStack() {
270+
return supportsDualStack;
271+
}
272+
273+
public void setSupportsDualStack(boolean supportsDualStack) {
274+
this.supportsDualStack = supportsDualStack;
275+
}
276+
277+
@JsonProperty("supportsFIPS")
278+
public boolean getSupportsFIPS() {
279+
return supportsFIPS;
280+
}
281+
282+
public void setSupportsFIPS(boolean supportsFIPS) {
283+
this.supportsFIPS = supportsFIPS;
284+
}
285+
}
286+
287+
public static class Region {
288+
private String description;
289+
290+
@JsonProperty("description")
291+
public String getDescription() {
292+
return description;
293+
}
294+
295+
public void setDescription(String description) {
296+
this.description = description;
297+
}
298+
}
299+
180300
@Deprecated
181301
private boolean hasServiceEndpoint(String endpoint) {
182302
for (Service s : services.values()) {

0 commit comments

Comments
 (0)