Skip to content

Commit

Permalink
Checking out authoritative idl-2.0 state of file.
Browse files Browse the repository at this point in the history
  • Loading branch information
DavidOgunsAWS committed Jul 5, 2022
1 parent 2db1a97 commit ac44fff
Showing 1 changed file with 0 additions and 61 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,6 @@
import software.amazon.smithy.model.node.ObjectNode;
import software.amazon.smithy.model.node.StringNode;
import software.amazon.smithy.model.node.ToNode;
import software.amazon.smithy.model.shapes.MemberShape;
import software.amazon.smithy.model.shapes.ShapeId;
import software.amazon.smithy.model.shapes.ShapeIdSyntaxException;
import software.amazon.smithy.utils.SmithyBuilder;
import software.amazon.smithy.utils.Tagged;
import software.amazon.smithy.utils.ToSmithyBuilder;
Expand Down Expand Up @@ -111,64 +108,6 @@ public static EnumDefinition fromNode(Node node) {
return builder.build();
}

/**
* Converts an enum definition to the equivalent enum member shape.
*
* This is only possible if the enum definition has a name.
*
* @param parentId The {@link ShapeId} of the enum shape.
* @return An optional member shape representing the enum definition,
* or empty if conversion is impossible.
*/
public Optional<MemberShape> asMember(ShapeId parentId) {
if (!getName().isPresent()) {
return Optional.empty();
}

try {
MemberShape.Builder builder = MemberShape.builder()
.id(parentId.withMember(name))
.target(UnitTypeTrait.UNIT)
.addTrait(EnumValueTrait.builder().stringValue(value).build());

getDocumentation().ifPresent(docs -> builder.addTrait(new DocumentationTrait(docs)));
if (!tags.isEmpty()) {
builder.addTrait(TagsTrait.builder().values(tags).build());
}
if (deprecated) {
builder.addTrait(DeprecatedTrait.builder().build());
}

return Optional.of(builder.build());
} catch (ShapeIdSyntaxException e) {
return Optional.empty();
}
}

/**
* Converts an enum member into an equivalent enum definition object.
*
* @param member The enum member to convert.
* @return An {@link EnumDefinition} representing the given member.
*/
public static EnumDefinition fromMember(MemberShape member) {
EnumDefinition.Builder builder = EnumDefinition.builder().name(member.getMemberName());

Optional<String> traitValue = member.getTrait(EnumValueTrait.class).flatMap(EnumValueTrait::getStringValue);
if (member.hasTrait(EnumDefaultTrait.class)) {
builder.value("");
} else if (traitValue.isPresent()) {
builder.value(traitValue.get());
} else {
throw new IllegalStateException("Enum definitions can only be made for string enums.");
}

member.getTrait(DocumentationTrait.class).ifPresent(docTrait -> builder.documentation(docTrait.getValue()));
member.getTrait(TagsTrait.class).ifPresent(tagsTrait -> builder.tags(tagsTrait.getValues()));
member.getTrait(DeprecatedTrait.class).ifPresent(deprecatedTrait -> builder.deprecated(true));
return builder.build();
}

@Override
public List<String> getTags() {
return tags;
Expand Down

0 comments on commit ac44fff

Please sign in to comment.