Skip to content

Commit 08d55a4

Browse files
committed
Allow getting to metadata from a region object. Small method renames for consistency.
1 parent fee061b commit 08d55a4

File tree

10 files changed

+63
-46
lines changed

10 files changed

+63
-46
lines changed

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ public void execute() throws MojoExecutionException {
7777

7878
public void generatePartitionMetadataClass(Path baseSourcesDirectory, Partitions partitions) {
7979
Path sourcesDirectory = baseSourcesDirectory.resolve(PARTITION_METADATA_BASE.replace(".", "/"));
80-
partitions.getPartitions().stream()
80+
partitions.getPartitions()
8181
.forEach(p -> new CodeGenerator(sourcesDirectory.toString(),
8282
new PartitionMetadataGenerator(p,
8383
PARTITION_METADATA_BASE,
@@ -104,7 +104,6 @@ public void generateServiceMetadata(Path baseSourcesDirectory, Partitions partit
104104
public void generateRegions(Path baseSourcesDirectory, Partitions partitions) {
105105
Path sourcesDirectory = baseSourcesDirectory.resolve(REGION_METADATA_BASE.replace(".", "/"));
106106
partitions.getPartitions()
107-
.stream()
108107
.forEach(p -> p.getRegions().forEach((k, v) ->
109108
new CodeGenerator(sourcesDirectory.toString(),
110109
new RegionMetadataGenerator(p,

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ public TypeSpec poetClass() {
7171
.addModifiers(PRIVATE, FINAL, STATIC)
7272
.initializer("$S", partition.getPartition())
7373
.build())
74-
.addField(FieldSpec.builder(String.class, "PARTITION_NAME")
74+
.addField(FieldSpec.builder(String.class, "NAME")
7575
.addModifiers(PRIVATE, FINAL, STATIC)
7676
.initializer("$S", partition.getPartitionName())
7777
.build())
@@ -82,7 +82,7 @@ public TypeSpec poetClass() {
8282
.addMethod(getter("dnsSuffix", "DNS_SUFFIX"))
8383
.addMethod(getter("hostname", "HOSTNAME"))
8484
.addMethod(getter("id", "ID"))
85-
.addMethod(getter("partitionName", "PARTITION_NAME"))
85+
.addMethod(getter("name", "NAME"))
8686
.addMethod(getter("regionRegex", "REGION_REGEX"))
8787
.build();
8888
}

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

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,8 +80,9 @@ public TypeSpec poetClass() {
8080
.build())
8181
.addMethod(regionOf())
8282
.addMethod(regionOfGlobal())
83-
.addMethod(id())
8483
.addMethod(regionsGetter())
84+
.addMethod(id())
85+
.addMethod(metadata())
8586
.addMethod(isGlobalRegion())
8687
.addMethod(regionToString());
8788

@@ -165,6 +166,15 @@ private MethodSpec id() {
165166
.build();
166167
}
167168

169+
private MethodSpec metadata() {
170+
ClassName regionMetadataClass = ClassName.get("software.amazon.awssdk.regions", "RegionMetadata");
171+
return MethodSpec.methodBuilder("metadata")
172+
.addModifiers(PUBLIC)
173+
.returns(regionMetadataClass)
174+
.addStatement("return $T.of(this)", regionMetadataClass)
175+
.build();
176+
}
177+
168178
private MethodSpec regionsGetter() {
169179
return MethodSpec.methodBuilder("regions")
170180
.addModifiers(PUBLIC, STATIC)

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

Lines changed: 28 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -64,40 +64,45 @@ public TypeSpec poetClass() {
6464
.addAnnotation(SdkPublicApi.class)
6565
.addModifiers(FINAL)
6666
.addSuperinterface(ClassName.get(regionBasePackage, "RegionMetadata"))
67-
.addField(FieldSpec.builder(String.class, "NAME")
68-
.addModifiers(PRIVATE, FINAL, STATIC)
69-
.initializer("$S", region)
70-
.build())
71-
.addField(FieldSpec.builder(String.class, "DOMAIN")
72-
.addModifiers(PRIVATE, FINAL, STATIC)
73-
.initializer("$S", partition.getDnsSuffix())
74-
.build())
75-
.addField(FieldSpec.builder(String.class, "DESCRIPTION")
76-
.addModifiers(PRIVATE, FINAL, STATIC)
77-
.initializer("$S", regionDescription)
78-
.build())
79-
.addField(FieldSpec.builder(String.class, "PARTITION")
80-
.addModifiers(PRIVATE, FINAL, STATIC)
81-
.initializer("$S", partition.getPartition())
82-
.build())
83-
.addMethod(getter("name"))
84-
.addMethod(getter("domain"))
85-
.addMethod(getter("description"))
86-
.addMethod(getter("partition"))
67+
.addField(staticFinalField("ID", region))
68+
.addField(staticFinalField("DOMAIN", partition.getDnsSuffix()))
69+
.addField(staticFinalField("DESCRIPTION", regionDescription))
70+
.addField(staticFinalField("PARTITION_ID", partition.getPartition()))
71+
.addMethod(getter("id", "ID"))
72+
.addMethod(getter("domain", "DOMAIN"))
73+
.addMethod(getter("description", "DESCRIPTION"))
74+
.addMethod(partition())
8775
.build();
8876
}
8977

78+
private MethodSpec partition() {
79+
ClassName regionMetadataClass = ClassName.get("software.amazon.awssdk.regions", "PartitionMetadata");
80+
return MethodSpec.methodBuilder("partition")
81+
.addAnnotation(Override.class)
82+
.addModifiers(Modifier.PUBLIC)
83+
.returns(regionMetadataClass)
84+
.addStatement("return $T.of(PARTITION_ID)", regionMetadataClass)
85+
.build();
86+
}
87+
9088
@Override
9189
public ClassName className() {
9290
return ClassName.get(basePackage, Stream.of(region.split("-")).map(Utils::capitalize).collect(Collectors.joining()));
9391
}
9492

95-
private MethodSpec getter(String field) {
96-
return MethodSpec.methodBuilder(field)
93+
private FieldSpec staticFinalField(String fieldName, String fieldValue) {
94+
return FieldSpec.builder(String.class, fieldName)
95+
.addModifiers(PRIVATE, FINAL, STATIC)
96+
.initializer("$S", fieldValue)
97+
.build();
98+
}
99+
100+
private MethodSpec getter(String getterName, String fieldName) {
101+
return MethodSpec.methodBuilder(getterName)
97102
.addAnnotation(Override.class)
98103
.addModifiers(Modifier.PUBLIC)
99104
.returns(String.class)
100-
.addStatement("return $L", field.toUpperCase(Locale.US))
105+
.addStatement("return $L", fieldName.toUpperCase(Locale.US))
101106
.build();
102107
}
103108
}

codegen-lite/src/test/resources/software/amazon/awssdk/codegen/lite/regions/partition-metadata.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ public final class AwsPartitionMetadata implements PartitionMetadata {
1313

1414
private static final String ID = "aws";
1515

16-
private static final String PARTITION_NAME = "AWS Standard";
16+
private static final String NAME = "AWS Standard";
1717

1818
private static final String REGION_REGEX = "^(us|eu|ap|sa|ca)\\-\\w+\\-\\d+$";
1919

@@ -33,8 +33,8 @@ public String id() {
3333
}
3434

3535
@Override
36-
public String partitionName() {
37-
return PARTITION_NAME;
36+
public String name() {
37+
return NAME;
3838
}
3939

4040
@Override

codegen-lite/src/test/resources/software/amazon/awssdk/codegen/lite/regions/regions.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -100,12 +100,16 @@ private static Region of(String value, boolean isGlobalRegion) {
100100
return RegionCache.put(value, isGlobalRegion);
101101
}
102102

103+
public static List<Region> regions() {
104+
return REGIONS;
105+
}
106+
103107
public String id() {
104108
return this.id;
105109
}
106110

107-
public static List<Region> regions() {
108-
return REGIONS;
111+
public RegionMetadata metadata() {
112+
return RegionMetadata.of(this);
109113
}
110114

111115
public boolean isGlobalRegion() {

codegen-lite/src/test/resources/software/amazon/awssdk/codegen/lite/regions/us-east-1.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,23 @@
22

33
import software.amazon.awssdk.annotations.Generated;
44
import software.amazon.awssdk.annotations.SdkPublicApi;
5+
import software.amazon.awssdk.regions.PartitionMetadata;
56
import software.amazon.awssdk.regions.RegionMetadata;
67

78
@Generated("software.amazon.awssdk:codegen")
89
@SdkPublicApi
910
public final class UsEast1 implements RegionMetadata {
10-
private static final String NAME = "us-east-1";
11+
private static final String ID = "us-east-1";
1112

1213
private static final String DOMAIN = "amazonaws.com";
1314

1415
private static final String DESCRIPTION = "US East (N. Virginia)";
1516

16-
private static final String PARTITION = "aws";
17+
private static final String PARTITION_ID = "aws";
1718

1819
@Override
19-
public String name() {
20-
return NAME;
20+
public String id() {
21+
return ID;
2122
}
2223

2324
@Override
@@ -31,7 +32,7 @@ public String description() {
3132
}
3233

3334
@Override
34-
public String partition() {
35-
return PARTITION;
35+
public PartitionMetadata partition() {
36+
return PartitionMetadata.of(PARTITION_ID);
3637
}
3738
}

core/regions/src/main/java/software/amazon/awssdk/regions/PartitionMetadata.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ public interface PartitionMetadata {
5252
*
5353
* @return The name of this partition
5454
*/
55-
String partitionName();
55+
String name();
5656

5757
/**
5858
* Returns the region regex used for pattern matching for this partition.

core/regions/src/main/java/software/amazon/awssdk/regions/RegionMetadata.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public interface RegionMetadata {
2828
*
2929
* @return The unique system ID for this region.
3030
*/
31-
String name();
31+
String id();
3232

3333
/**
3434
* Returns the domain for this region; ex: &quot;amazonaws.com&quot;.
@@ -38,11 +38,9 @@ public interface RegionMetadata {
3838
String domain();
3939

4040
/**
41-
* Returns the partition this region is in. I.E. 'aws' or 'aws-cn'
42-
*
43-
* @return The partition this region is in.
41+
* Returns the metadata for this region's partition.
4442
*/
45-
String partition();
43+
PartitionMetadata partition();
4644

4745
/**
4846
* Returns the description of this region; ex: &quot;US East (N. Virginia)&quot;.

services/s3/src/main/java/software/amazon/awssdk/services/s3/internal/handlers/EndpointAddressInterceptor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ private URI resolveEndpoint(SdkHttpFullRequest request,
9292
}
9393

9494
private static URI dualstackEndpoint(RegionMetadata metadata, String protocol) {
95-
String serviceEndpoint = String.format("%s.%s.%s.%s", "s3", "dualstack", metadata.name(), metadata.domain());
95+
String serviceEndpoint = String.format("%s.%s.%s.%s", "s3", "dualstack", metadata.id(), metadata.domain());
9696
return toUri(protocol, serviceEndpoint);
9797
}
9898

0 commit comments

Comments
 (0)