Skip to content

Commit

Permalink
Use unformatted member names for serde
Browse files Browse the repository at this point in the history
  • Loading branch information
hpmellema committed Feb 22, 2024
1 parent 33bc02f commit d7e51c4
Show file tree
Hide file tree
Showing 4 changed files with 38 additions and 13 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -88,8 +88,8 @@ protected Void getDefault(Shape shape) {

@Override
public Void listShape(ListShape shape) {
writer.writeInline(getMemberPrefix() + "ArrayMember($1S, n -> $2C, builder::$1L)",
symbolProvider.toMemberName(member),
writer.writeInline(getMemberPrefix() + "ArrayMember($1S, n -> $3C, builder::$2L)",
member.getMemberName(), symbolProvider.toMemberName(member),
symbolProvider.toSymbol(shape.getMember()).expectProperty(SymbolProperties.FROM_NODE_MAPPER,
Mapper.class).with("n"));
return null;
Expand All @@ -104,7 +104,7 @@ public Void mapShape(MapShape shape) {
writer.disableNewlines();
writer.openBlock(getMemberPrefix()
+ "ObjectMember($S, o -> o.getMembers().forEach((k, v) -> {\n", "}))",
symbolProvider.toMemberName(member),
member.getMemberName(),
() -> writer.write("builder.put$L($C, $C);\n",
StringUtils.capitalize(symbolProvider.toMemberName(member)),
keyMapper.with("k"), valueMapper.with("v")));
Expand All @@ -115,8 +115,8 @@ public Void mapShape(MapShape shape) {
@Override
public Void stringShape(StringShape shape) {
if (TraitCodegenUtils.isJavaString(symbolProvider.toSymbol(shape))) {
writer.writeInline(getMemberPrefix() + "StringMember($1S, builder::$1L)",
symbolProvider.toMemberName(member));
writer.writeInline(getMemberPrefix() + "StringMember($S, builder::$L)",
member.getMemberName(), symbolProvider.toMemberName(member));
} else {
generateGenericMember(shape);
}
Expand All @@ -130,8 +130,8 @@ public Void structureShape(StructureShape shape) {
}

private void generateGenericMember(Shape shape) {
writer.writeInline(getMemberPrefix() + "Member($1S, n -> $2C, builder::$1L)",
symbolProvider.toMemberName(member),
writer.writeInline(getMemberPrefix() + "Member($1S, n -> $3C, builder::$2L)",
member.getMemberName(), symbolProvider.toMemberName(member),
symbolProvider.toSymbol(shape)
.expectProperty(SymbolProperties.FROM_NODE_MAPPER, Mapper.class).with("n"));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -200,7 +200,8 @@ public Void structureShape(StructureShape shape) {
writer.writeInline(".sourceLocation(getSourceLocation())");
}
for (MemberShape member : shape.members()) {
member.accept(new MemberMapperVisitor(symbolProvider.toMemberName(member),
member.accept(new MemberMapperVisitor(member.getMemberName(),
symbolProvider.toMemberName(member),
symbolProvider, member.isRequired()));
}
writer.writeWithNoFormatting(".build();");
Expand All @@ -216,14 +217,17 @@ private void generateNumberTraitCreator() {
// Writes the per-member mapping from a member to an object node member node.
private final class MemberMapperVisitor extends ShapeVisitor.Default<Void> {
private final String memberName;
private final String formattedMemberName;
private final SymbolProvider symbolProvider;
private final boolean required;

private MemberMapperVisitor(String memberName,
String formattedMemberName,
SymbolProvider symbolProvider,
boolean required
) {
this.memberName = memberName;
this.formattedMemberName = formattedMemberName;
this.symbolProvider = symbolProvider;
this.required = required;
}
Expand All @@ -234,10 +238,10 @@ protected Void getDefault(Shape shape) {
if (required) {
writer.write(".withMember($S, $C)",
memberName,
symbol.expectProperty(SymbolProperties.TO_NODE_MAPPER, Mapper.class).with(memberName));
symbol.expectProperty(SymbolProperties.TO_NODE_MAPPER, Mapper.class).with(formattedMemberName));
} else {
writer.write(".withOptionalMember($S, get$L().map(m -> $C))",
memberName, StringUtils.capitalize(memberName),
memberName, StringUtils.capitalize(formattedMemberName),
symbol.expectProperty(SymbolProperties.TO_NODE_MAPPER, Mapper.class).with("m"));
}
return null;
Expand All @@ -252,7 +256,7 @@ public Void memberShape(MemberShape shape) {
public Void listShape(ListShape shape) {
Symbol listTargetSymbol = symbolProvider.toSymbol(shape.getMember());
writer.write(".withMember($S, get$L().stream().map(s -> $C).collect($T.collect()))",
memberName, StringUtils.capitalize(memberName),
memberName, StringUtils.capitalize(formattedMemberName),
listTargetSymbol.expectProperty(SymbolProperties.TO_NODE_MAPPER, Mapper.class).with("s"),
ArrayNode.class
);
Expand All @@ -263,8 +267,7 @@ public Void listShape(ListShape shape) {
public Void mapShape(MapShape shape) {
Pair<Mapper, Mapper> mappers = getKeyValueMappers(shape);
writer.openBlock(".withMember($S, get$L().entrySet().stream()", ")",
memberName,
StringUtils.capitalize(memberName),
memberName, StringUtils.capitalize(formattedMemberName),
() -> writer.write(".map(entry -> new $T.SimpleImmutableEntry<>(", AbstractMap.class)
.indent()
.write("$C, $C))",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,5 @@ test-traits.smithy
ignored.smithy
nested-namespace.smithy
name-conflicts.smithy
non-java-names.smithy

Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
$version: "2.0"

namespace test.smithy.traitcodegen.names

/// Snake cased
//@trait
//structure snake_case_structure {
// snake_case_member: String
//}
//
///// A camel-snake hybrid chimera
//@trait
//structure snake_camelStructure {
// camel_snakeMember: String
//}
//
///// A camel-snake chimera
//@trait
//structure snake_camelStructure {
// camel_snakeMember: String
//}

0 comments on commit d7e51c4

Please sign in to comment.