Skip to content

Commit f295785

Browse files
committed
Add and use expect* methods more + some cleanup
This commit uses the expectTrait methods and hasTrait methods more instead of using .get(). This will give much more clear error messages in the event of a logical error in code. This also adds expect* methods that expect a shape to be of a specific type. This cleans up a lot of call sites that were using an unsafe .get() after calling .asBlob, asString, etc.
1 parent 83514ec commit f295785

File tree

74 files changed

+636
-180
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

74 files changed

+636
-180
lines changed

smithy-aws-traits/src/main/java/software/amazon/smithy/aws/traits/apigateway/AuthorizersTraitValidator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ private Optional<ValidationEvent> validateService(Model model, ServiceShape serv
5858
return Optional.empty();
5959
}
6060

61-
AuthorizersTrait authorizersTrait = service.getTrait(AuthorizersTrait.class).get();
61+
AuthorizersTrait authorizersTrait = service.expectTrait(AuthorizersTrait.class);
6262
return Optional.of(error(service, authorizersTrait, String.format(
6363
"Each `scheme` of the `%s` trait must target one of the auth schemes applied to the service "
6464
+ "(i.e., [%s]). The following mappings of authorizer names to schemes are invalid: %s",

smithy-aws-traits/src/test/java/software/amazon/smithy/aws/traits/ArnIndexTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,15 +43,15 @@ public static void beforeClass() {
4343
public void loadsFromModel() {
4444
ArnIndex arnIndex = new ArnIndex(model);
4545
ShapeId id = ShapeId.from("ns.foo#SomeService");
46-
Shape someResource = model.getShape(ShapeId.from("ns.foo#SomeResource")).get();
46+
Shape someResource = model.expectShape(ShapeId.from("ns.foo#SomeResource"));
4747
ArnTrait template1 = ArnTrait.builder()
4848
.template("someresource/{someId}")
4949
.build();
50-
Shape childResource = model.getShape(ShapeId.from("ns.foo#ChildResource")).get();
50+
Shape childResource = model.expectShape(ShapeId.from("ns.foo#ChildResource"));
5151
ArnTrait template2 = ArnTrait.builder()
5252
.template("someresource/{someId}/{childId}")
5353
.build();
54-
Shape rootArnResource = model.getShape(ShapeId.from("ns.foo#RootArnResource")).get();
54+
Shape rootArnResource = model.expectShape(ShapeId.from("ns.foo#RootArnResource"));
5555
ArnTrait template3 = ArnTrait.builder()
5656
.template("rootArnResource")
5757
.noAccount(true)

smithy-aws-traits/src/test/java/software/amazon/smithy/aws/traits/ServiceTraitTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,8 +88,8 @@ public void loadsFromModel() {
8888
.unwrap();
8989
ServiceShape service = result
9090
.expectShape(ShapeId.from("ns.foo#SomeService"))
91-
.asServiceShape().get();
92-
ServiceTrait trait = service.getTrait(ServiceTrait.class).get();
91+
.expectServiceShape();
92+
ServiceTrait trait = service.expectTrait(ServiceTrait.class);
9393

9494
assertThat(trait.getSdkId(), equalTo("Some Value"));
9595
assertThat(trait.getCloudFormationName(), equalTo("SomeService"));

smithy-aws-traits/src/test/java/software/amazon/smithy/aws/traits/clientendpointdiscovery/ClientDiscoveredEndpointTraitTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@ public void loadsFromModel() {
3333
.unwrap();
3434
OperationShape operation = result
3535
.expectShape(ShapeId.from("ns.foo#GetObject"))
36-
.asOperationShape().get();
37-
ClientDiscoveredEndpointTrait trait = operation.getTrait(ClientDiscoveredEndpointTrait.class).get();
36+
.expectOperationShape();
37+
ClientDiscoveredEndpointTrait trait = operation.expectTrait(ClientDiscoveredEndpointTrait.class);
3838

3939
assertTrue(trait.isRequired());
4040
}

smithy-aws-traits/src/test/java/software/amazon/smithy/aws/traits/clientendpointdiscovery/ClientEndpointDiscoveryIdTraitTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,10 @@ public void loadsFromModel() {
4242
.unwrap();
4343
OperationShape operation = result
4444
.expectShape(ShapeId.from("ns.foo#GetObject"))
45-
.asOperationShape().get();
45+
.expectOperationShape();
4646
MemberShape member = result
4747
.getShape(operation.getInput().get()).get()
48-
.asStructureShape().get()
48+
.expectStructureShape()
4949
.getMember("Id").get();
5050

5151
assertTrue(member.getTrait(ClientEndpointDiscoveryIdTrait.class).isPresent());

smithy-aws-traits/src/test/java/software/amazon/smithy/aws/traits/clientendpointdiscovery/ClientEndpointDiscoveryTraitTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@ public void loadsFromModel() {
3333
.unwrap();
3434
ServiceShape service = result
3535
.expectShape(ShapeId.from("ns.foo#FooService"))
36-
.asServiceShape().get();
37-
ClientEndpointDiscoveryTrait trait = service.getTrait(ClientEndpointDiscoveryTrait.class).get();
36+
.expectServiceShape();
37+
ClientEndpointDiscoveryTrait trait = service.expectTrait(ClientEndpointDiscoveryTrait.class);
3838

3939
assertEquals(trait.getOperation(), ShapeId.from("ns.foo#DescribeEndpoints"));
4040
assertEquals(trait.getError(), ShapeId.from("ns.foo#InvalidEndpointError"));

smithy-aws-traits/src/test/java/software/amazon/smithy/aws/traits/iam/RequiredActionsTraitTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public void loadsFromModel() {
3333
.assemble()
3434
.unwrap();
3535

36-
Shape myOperation = result.getShape(ShapeId.from("smithy.example#MyOperation")).get();
36+
Shape myOperation = result.expectShape(ShapeId.from("smithy.example#MyOperation"));
3737

3838
assertTrue(myOperation.hasTrait(RequiredActionsTrait.class));
3939
assertThat(myOperation.getTrait(RequiredActionsTrait.class).get().getValues(), containsInAnyOrder(

smithy-build/src/test/java/software/amazon/smithy/build/SmithyBuildTest.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -206,23 +206,23 @@ public void loadsImports() throws Exception {
206206
Model resultB = results.getProjectionResult("b").get().getModel();
207207
Model resultC = results.getProjectionResult("c").get().getModel();
208208

209-
assertTrue(resultA.getShape(ShapeId.from("com.foo#String")).get()
209+
assertTrue(resultA.expectShape(ShapeId.from("com.foo#String"))
210210
.getTrait(SensitiveTrait.class).isPresent());
211-
assertFalse(resultA.getShape(ShapeId.from("com.foo#String")).get()
211+
assertFalse(resultA.expectShape(ShapeId.from("com.foo#String"))
212212
.getTrait(DocumentationTrait.class).isPresent());
213213

214-
assertTrue(resultB.getShape(ShapeId.from("com.foo#String")).get()
214+
assertTrue(resultB.expectShape(ShapeId.from("com.foo#String"))
215215
.getTrait(SensitiveTrait.class).isPresent());
216-
assertTrue(resultB.getShape(ShapeId.from("com.foo#String")).get()
216+
assertTrue(resultB.expectShape(ShapeId.from("com.foo#String"))
217217
.getTrait(DocumentationTrait.class).isPresent());
218-
assertThat(resultB.getShape(ShapeId.from("com.foo#String")).get()
218+
assertThat(resultB.expectShape(ShapeId.from("com.foo#String"))
219219
.getTrait(DocumentationTrait.class).get().getValue(), equalTo("b.json"));
220220

221-
assertTrue(resultC.getShape(ShapeId.from("com.foo#String")).get()
221+
assertTrue(resultC.expectShape(ShapeId.from("com.foo#String"))
222222
.getTrait(SensitiveTrait.class).isPresent());
223-
assertTrue(resultC.getShape(ShapeId.from("com.foo#String")).get()
223+
assertTrue(resultC.expectShape(ShapeId.from("com.foo#String"))
224224
.getTrait(DocumentationTrait.class).isPresent());
225-
assertThat(resultC.getShape(ShapeId.from("com.foo#String")).get()
225+
assertThat(resultC.expectShape(ShapeId.from("com.foo#String"))
226226
.getTrait(DocumentationTrait.class).get().getValue(), equalTo("c.json"));
227227
}
228228

smithy-jsonschema/src/main/java/software/amazon/smithy/jsonschema/DefaultRefStrategy.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -121,8 +121,8 @@ private String createMemberPointer(MemberShape member) {
121121
public boolean isInlined(Shape shape) {
122122
// We could add more logic here in the future if needed to account for
123123
// member shapes that absolutely must generate a synthesized schema.
124-
if (shape.asMemberShape().isPresent()) {
125-
MemberShape member = shape.asMemberShape().get();
124+
if (shape.isMemberShape()) {
125+
MemberShape member = shape.expectMemberShape();
126126
Shape target = model.expectShape(member.getTarget());
127127
return isInlined(target);
128128
}

smithy-model/src/main/java/software/amazon/smithy/model/knowledge/EventStreamIndex.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ private Optional<EventStreamInfo> createEventStreamInfo(
106106
StructureShape structure,
107107
MemberShape member
108108
) {
109-
EventStreamTrait trait = member.getTrait(EventStreamTrait.class).get();
109+
EventStreamTrait trait = member.expectTrait(EventStreamTrait.class);
110110

111111
Shape eventStreamTarget = model.getShape(member.getTarget()).orElse(null);
112112
if (eventStreamTarget == null) {
@@ -118,14 +118,14 @@ private Optional<EventStreamInfo> createEventStreamInfo(
118118

119119
// Compute the events of the event stream.
120120
Map<String, StructureShape> events = new HashMap<>();
121-
if (eventStreamTarget.asUnionShape().isPresent()) {
122-
for (MemberShape unionMember : eventStreamTarget.asUnionShape().get().getAllMembers().values()) {
121+
if (eventStreamTarget.isUnionShape()) {
122+
for (MemberShape unionMember : eventStreamTarget.expectUnionShape().getAllMembers().values()) {
123123
model.getShape(unionMember.getTarget()).flatMap(Shape::asStructureShape).ifPresent(struct -> {
124124
events.put(unionMember.getMemberName(), struct);
125125
});
126126
}
127-
} else if (eventStreamTarget.asStructureShape().isPresent()) {
128-
events.put(member.getMemberName(), eventStreamTarget.asStructureShape().get());
127+
} else if (eventStreamTarget.isStructureShape()) {
128+
events.put(member.getMemberName(), eventStreamTarget.expectStructureShape());
129129
} else {
130130
// If the event target is an invalid type, then we can't create the indexed result.
131131
LOGGER.severe(() -> String.format(

0 commit comments

Comments
 (0)