Skip to content

Commit bbe87cf

Browse files
committed
Fix all JavaDoc and code generation escaping issues
Complete fix for CI compilation failures by addressing escaping in: - MapperGenerator: Fix \\n to \n in JavaDoc for all convenience methods - TableNameResolverGenerator: Fix \\n to \n in both JavaDoc and switch code generation This resolves all "illegal character" and "illegal start of expression" compilation errors in the generated code.
1 parent 927dc0b commit bbe87cf

File tree

2 files changed

+46
-46
lines changed

2 files changed

+46
-46
lines changed

src/main/java/com/github/wassertim/dynamodb/toolkit/generation/MapperGenerator.java

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -114,10 +114,10 @@ private MethodSpec buildToAttributeValueMethod(TypeInfo typeInfo) {
114114
.addModifiers(Modifier.PUBLIC)
115115
.returns(attributeValue)
116116
.addParameter(domainClass, paramName)
117-
.addJavadoc("Converts a $L object to DynamoDB AttributeValue format.\\n", className)
118-
.addJavadoc("\\n")
119-
.addJavadoc("@param $L The $L object to convert\\n", paramName, className)
120-
.addJavadoc("@return AttributeValue in Map format, or null if input is null\\n");
117+
.addJavadoc("Converts a $L object to DynamoDB AttributeValue format.\n", className)
118+
.addJavadoc("\n")
119+
.addJavadoc("@param $L The $L object to convert\n", paramName, className)
120+
.addJavadoc("@return AttributeValue in Map format, or null if input is null\n");
121121

122122
// Null check
123123
methodBuilder.beginControlFlow("if ($L == null)", paramName)
@@ -149,10 +149,10 @@ private MethodSpec buildFromAttributeValueMethod(TypeInfo typeInfo) {
149149
.addModifiers(Modifier.PUBLIC)
150150
.returns(domainClass)
151151
.addParameter(attributeValue, "attributeValue")
152-
.addJavadoc("Converts a DynamoDB AttributeValue to a $L object.\\n", className)
153-
.addJavadoc("\\n")
154-
.addJavadoc("@param attributeValue The DynamoDB AttributeValue to convert (must be in Map format)\\n")
155-
.addJavadoc("@return $L object, or null if input is null or invalid\\n", className);
152+
.addJavadoc("Converts a DynamoDB AttributeValue to a $L object.\n", className)
153+
.addJavadoc("\n")
154+
.addJavadoc("@param attributeValue The DynamoDB AttributeValue to convert (must be in Map format)\n")
155+
.addJavadoc("@return $L object, or null if input is null or invalid\n", className);
156156

157157
// Null check
158158
methodBuilder.beginControlFlow("if (attributeValue == null || attributeValue.m() == null)")
@@ -188,11 +188,11 @@ private void addConvenienceMethods(TypeSpec.Builder classBuilder, TypeInfo typeI
188188
ClassName.get(Map.class),
189189
ClassName.get(String.class),
190190
attributeValue), "item")
191-
.addJavadoc("Convenience method to convert a single DynamoDB item to a domain object.\\n")
192-
.addJavadoc("Handles the common pattern of mapping GetItemResponse.item() to domain objects.\\n")
193-
.addJavadoc("\\n")
194-
.addJavadoc("@param item DynamoDB item from GetItemResponse.item()\\n")
195-
.addJavadoc("@return Optional of $L object, empty if item is null or conversion fails\\n", className)
191+
.addJavadoc("Convenience method to convert a single DynamoDB item to a domain object.\n")
192+
.addJavadoc("Handles the common pattern of mapping GetItemResponse.item() to domain objects.\n")
193+
.addJavadoc("\n")
194+
.addJavadoc("@param item DynamoDB item from GetItemResponse.item()\n")
195+
.addJavadoc("@return Optional of $L object, empty if item is null or conversion fails\n", className)
196196
.beginControlFlow("if (item == null || item.isEmpty())")
197197
.addStatement("return $T.empty()", ClassName.get("java.util", "Optional"))
198198
.endControlFlow()
@@ -211,11 +211,11 @@ private void addConvenienceMethods(TypeSpec.Builder classBuilder, TypeInfo typeI
211211
ClassName.get(Map.class),
212212
ClassName.get(String.class),
213213
attributeValue)), "items")
214-
.addJavadoc("Convenience method to convert a list of DynamoDB items to domain objects.\\n")
215-
.addJavadoc("Handles the common pattern of mapping QueryResponse.items() to domain objects.\\n")
216-
.addJavadoc("\\n")
217-
.addJavadoc("@param items List of DynamoDB items from QueryResponse.items() or ScanResponse.items()\\n")
218-
.addJavadoc("@return List of $L objects, filtering out any null results\\n", className)
214+
.addJavadoc("Convenience method to convert a list of DynamoDB items to domain objects.\n")
215+
.addJavadoc("Handles the common pattern of mapping QueryResponse.items() to domain objects.\n")
216+
.addJavadoc("\n")
217+
.addJavadoc("@param items List of DynamoDB items from QueryResponse.items() or ScanResponse.items()\n")
218+
.addJavadoc("@return List of $L objects, filtering out any null results\n", className)
219219
.beginControlFlow("if (items == null || items.isEmpty())")
220220
.addStatement("return new $T<>()", ClassName.get("java.util", "ArrayList"))
221221
.endControlFlow()
@@ -234,11 +234,11 @@ private void addConvenienceMethods(TypeSpec.Builder classBuilder, TypeInfo typeI
234234
ClassName.get(String.class),
235235
attributeValue))
236236
.addParameter(domainClass, "object")
237-
.addJavadoc("Convenience method to convert a single domain object to a DynamoDB item.\\n")
238-
.addJavadoc("Useful for PutItem operations.\\n")
239-
.addJavadoc("\\n")
240-
.addJavadoc("@param object The $L object to convert\\n", className)
241-
.addJavadoc("@return DynamoDB item (Map<String, AttributeValue>), or null if input is null or conversion fails\\n")
237+
.addJavadoc("Convenience method to convert a single domain object to a DynamoDB item.\n")
238+
.addJavadoc("Useful for PutItem operations.\n")
239+
.addJavadoc("\n")
240+
.addJavadoc("@param object The $L object to convert\n", className)
241+
.addJavadoc("@return DynamoDB item (Map<String, AttributeValue>), or null if input is null or conversion fails\n")
242242
.beginControlFlow("if (object == null)")
243243
.addStatement("return null")
244244
.endControlFlow()
@@ -256,11 +256,11 @@ private void addConvenienceMethods(TypeSpec.Builder classBuilder, TypeInfo typeI
256256
ClassName.get(String.class),
257257
attributeValue)))
258258
.addParameter(ParameterizedTypeName.get(ClassName.get(List.class), domainClass), "objects")
259-
.addJavadoc("Convenience method to convert a list of domain objects to DynamoDB items.\\n")
260-
.addJavadoc("Useful for batch operations like batchWriteItem.\\n")
261-
.addJavadoc("\\n")
262-
.addJavadoc("@param objects List of $L objects to convert\\n", className)
263-
.addJavadoc("@return List of DynamoDB items (Map<String, AttributeValue>), filtering out any null results\\n")
259+
.addJavadoc("Convenience method to convert a list of domain objects to DynamoDB items.\n")
260+
.addJavadoc("Useful for batch operations like batchWriteItem.\n")
261+
.addJavadoc("\n")
262+
.addJavadoc("@param objects List of $L objects to convert\n", className)
263+
.addJavadoc("@return List of DynamoDB items (Map<String, AttributeValue>), filtering out any null results\n")
264264
.beginControlFlow("if (objects == null || objects.isEmpty())")
265265
.addStatement("return new $T<>()", ClassName.get("java.util", "ArrayList"))
266266
.endControlFlow()

src/main/java/com/github/wassertim/dynamodb/toolkit/generation/TableNameResolverGenerator.java

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -47,10 +47,10 @@ private TypeSpec buildTableNameResolverClass(List<TypeInfo> allTableTypes) {
4747
TypeSpec.Builder classBuilder = TypeSpec.classBuilder(className)
4848
.addModifiers(Modifier.PUBLIC)
4949
.addJavadoc(createGeneratedJavadoc(
50-
"Generated utility class for resolving base DynamoDB table names from domain entities.\\n" +
51-
"Returns only the base table name without any environment-specific prefixes.\\n" +
52-
"Automatically includes all @Table annotated classes in switch cases.\\n" +
53-
"Covers " + tableCount + " table" + (tableCount == 1 ? "" : "s") + ".\\n" +
50+
"Generated utility class for resolving base DynamoDB table names from domain entities.\n" +
51+
"Returns only the base table name without any environment-specific prefixes.\n" +
52+
"Automatically includes all @Table annotated classes in switch cases.\n" +
53+
"Covers " + tableCount + " table" + (tableCount == 1 ? "" : "s") + ".\n" +
5454
"DO NOT EDIT - This file is generated automatically"
5555
));
5656

@@ -66,35 +66,35 @@ private MethodSpec buildResolveTableNameMethod(List<TypeInfo> allTableTypes) {
6666
.addModifiers(Modifier.PUBLIC, Modifier.STATIC)
6767
.returns(String.class)
6868
.addParameter(ParameterizedTypeName.get(ClassName.get(Class.class), WildcardTypeName.subtypeOf(Object.class)), "entityClass")
69-
.addJavadoc("Resolves the base table name from a @Table annotated domain entity class.\\n")
70-
.addJavadoc("Returns only the base table name without any environment-specific prefixes.\\n")
71-
.addJavadoc("Automatically generated to include all discovered @Table classes.\\n")
72-
.addJavadoc("\\n")
73-
.addJavadoc("@param entityClass the @Table annotated domain entity class\\n")
74-
.addJavadoc("@return the base table name without any prefix\\n")
75-
.addJavadoc("@throws IllegalArgumentException if the class is not a known @Table entity\\n");
69+
.addJavadoc("Resolves the base table name from a @Table annotated domain entity class.\n")
70+
.addJavadoc("Returns only the base table name without any environment-specific prefixes.\n")
71+
.addJavadoc("Automatically generated to include all discovered @Table classes.\n")
72+
.addJavadoc("\n")
73+
.addJavadoc("@param entityClass the @Table annotated domain entity class\n")
74+
.addJavadoc("@return the base table name without any prefix\n")
75+
.addJavadoc("@throws IllegalArgumentException if the class is not a known @Table entity\n");
7676

7777
// Build switch statement
7878
CodeBlock.Builder switchBuilder = CodeBlock.builder()
79-
.add("return switch (entityClass.getName()) {\\n");
79+
.add("return switch (entityClass.getName()) {\n");
8080

8181
// Generate switch cases for all table types
8282
for (TypeInfo typeInfo : allTableTypes) {
8383
String fullyQualifiedClassName = typeInfo.getFullyQualifiedClassName();
8484
String tableName = typeInfo.getTableName();
85-
switchBuilder.add(" case $S -> $S;\\n", fullyQualifiedClassName, tableName);
85+
switchBuilder.add(" case $S -> $S;\n", fullyQualifiedClassName, tableName);
8686
}
8787

8888
// Generate default case
8989
String knownTablesList = allTableTypes.stream()
9090
.map(TypeInfo::getFullyQualifiedClassName)
9191
.collect(Collectors.joining(", "));
9292

93-
switchBuilder.add(" default -> throw new $T(\\n", IllegalArgumentException.class)
94-
.add(" $S +\\n", "Unknown @Table annotated class: ")
95-
.add(" entityClass.getName() +\\n")
96-
.add(" $S);\\n", ". Known tables: " + knownTablesList)
97-
.add("};\\n");
93+
switchBuilder.add(" default -> throw new $T(\n", IllegalArgumentException.class)
94+
.add(" $S +\n", "Unknown @Table annotated class: ")
95+
.add(" entityClass.getName() +\n")
96+
.add(" $S);\n", ". Known tables: " + knownTablesList)
97+
.add("};\n");
9898

9999
methodBuilder.addCode(switchBuilder.build());
100100
return methodBuilder.build();

0 commit comments

Comments
 (0)