Skip to content

Commit 7f417c5

Browse files
committed
chore(codegen): rendered field and type comments
1 parent 8fe9b27 commit 7f417c5

593 files changed

Lines changed: 2354 additions & 18 deletions

File tree

Some content is hidden

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

code-generation/language/go/src/main/resources/templates/go/complex-type-template.go.ftlh

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ const ${type.name}_${field.name?upper_case} ${helper.getLanguageTypeNameForField
8484
</#if>
8585

8686
// ${type.name} is the corresponding interface of ${type.name?cap_first}
87-
type ${type.name} interface {
87+
<#if type.comment.isPresent()>${type.comment.get()+"\n"}</#if>type ${type.name} interface {
8888
<#if type.isDiscriminatedParentTypeDefinition()>
8989
${type.name}Contract
9090
${type.name}Requirements
@@ -103,17 +103,17 @@ type ${type.name} interface {
103103
<#list type.propertyFields as field>
104104
<#assign typeRef=field.asTypedField().orElseThrow().type>
105105
// Get${field.name?cap_first} returns ${field.name?cap_first} (property field)
106-
Get${field.name?cap_first}() <#if helper.needsPointerAccess(field)>*</#if>${helper.getLanguageTypeNameForTypeReference(typeRef)}
106+
<#if field.comment.isPresent()>${field.comment.get()+"\n"}</#if>Get${field.name?cap_first}() <#if helper.needsPointerAccess(field)>*</#if>${helper.getLanguageTypeNameForTypeReference(typeRef)}
107107
</#list>
108108
<#list type.virtualFields as field>
109109
<#assign typeRef=field.asTypedField().orElseThrow().type>
110110
// Get${field.name?cap_first} returns ${field.name?cap_first} (virtual field)
111-
Get${field.name?cap_first}() <#if helper.needsPointerAccess(field)>*</#if>${helper.getLanguageTypeNameForTypeReference(typeRef)}
111+
<#if field.comment.isPresent()>${field.comment.get()+"\n"}</#if>Get${field.name?cap_first}() <#if helper.needsPointerAccess(field)>*</#if>${helper.getLanguageTypeNameForTypeReference(typeRef)}
112112
</#list>
113113
<#list type.abstractFields as field>
114114
<#assign namedField=field.asNamedField().orElseThrow()>
115115
// Get${namedField.name?cap_first} returns ${namedField.name?cap_first} (abstract field)
116-
Get${namedField.name?cap_first}() ${helper.getLanguageTypeNameForField(field)}
116+
<#if field.comment.isPresent()>${field.comment.get()+"\n"}</#if>Get${namedField.name?cap_first}() ${helper.getLanguageTypeNameForField(field)}
117117
</#list>
118118
</#if>
119119
// Is${type.name} is a marker method to prevent unintentional type checks (interfaces of same signature)
@@ -131,17 +131,17 @@ type ${type.name}Contract interface {
131131
<#list type.propertyFields as field>
132132
<#assign typeRef=field.asTypedField().orElseThrow().type>
133133
// Get${field.name?cap_first} returns ${field.name?cap_first} (property field)
134-
Get${field.name?cap_first}() <#if helper.needsPointerAccess(field)>*</#if>${helper.getLanguageTypeNameForTypeReference(typeRef)}
134+
<#if field.comment.isPresent()>${field.comment.get()+"\n"}</#if>Get${field.name?cap_first}() <#if helper.needsPointerAccess(field)>*</#if>${helper.getLanguageTypeNameForTypeReference(typeRef)}
135135
</#list>
136136
<#list type.virtualFields as field>
137137
<#assign typeRef=field.asTypedField().orElseThrow().type>
138138
// Get${field.name?cap_first} returns ${field.name?cap_first} (virtual field)
139-
Get${field.name?cap_first}() <#if helper.needsPointerAccess(field)>*</#if>${helper.getLanguageTypeNameForTypeReference(typeRef)}
139+
<#if field.comment.isPresent()>${field.comment.get()+"\n"}</#if>Get${field.name?cap_first}() <#if helper.needsPointerAccess(field)>*</#if>${helper.getLanguageTypeNameForTypeReference(typeRef)}
140140
</#list>
141141
<#list type.abstractFields as field>
142142
<#assign namedField=field.asNamedField().orElseThrow()>
143143
// Get${namedField.name?cap_first} returns ${namedField.name?cap_first} (abstract field)
144-
Get${namedField.name?cap_first}() ${helper.getLanguageTypeNameForField(field)}
144+
<#if field.comment.isPresent()>${field.comment.get()+"\n"}</#if>Get${namedField.name?cap_first}() ${helper.getLanguageTypeNameForField(field)}
145145
</#list>
146146
<#if type.isDiscriminatedChildTypeDefinition()>
147147
<#assign discriminatedChildType = type.asDiscriminatedComplexTypeDefinition().orElseThrow()>
@@ -177,7 +177,7 @@ type ${type.name}Requirements interface {
177177
<#list type.abstractFields as field>
178178
<#assign namedField=field.asNamedField().orElseThrow()>
179179
// Get${namedField.name?cap_first} returns ${namedField.name?cap_first} (abstract field)
180-
Get${namedField.name?cap_first}() ${helper.getLanguageTypeNameForField(field)}
180+
<#if field.comment.isPresent()>${field.comment.get()+"\n"}</#if>Get${namedField.name?cap_first}() ${helper.getLanguageTypeNameForField(field)}
181181
</#list>
182182
}
183183
</#if>

code-generation/language/java/src/main/java/org/apache/plc4x/language/java/JavaLanguageTemplateHelper.java

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1394,13 +1394,13 @@ public boolean isGeneratePropertiesForReservedFields() {
13941394

13951395
public String getExternalTypeImports() {
13961396
StringBuilder imports = new StringBuilder();
1397-
if(options.containsKey("externalTypes")) {
1397+
if (options.containsKey("externalTypes")) {
13981398
Object externalTypes = options.get("externalTypes");
1399-
if(externalTypes instanceof Map) {
1399+
if (externalTypes instanceof Map) {
14001400
Map<String, Object> externalTypesMap = (Map<String, Object>) externalTypes;
14011401
for (String mspecTypeName : externalTypesMap.keySet()) {
14021402
Object obj = externalTypesMap.get(mspecTypeName);
1403-
if(obj instanceof String) {
1403+
if (obj instanceof String) {
14041404
imports.append("import ").append(obj).append(";\n");
14051405
} else {
14061406
throw new IllegalArgumentException("Type definition for " + mspecTypeName + " is invalid");
@@ -1429,4 +1429,25 @@ public boolean isVardintField(Field field) {
14291429
return false;
14301430
}
14311431

1432+
public String toJDoc(String comment) {
1433+
StringBuilder sb = new StringBuilder();
1434+
sb.append("/**\n");
1435+
for (String line : StringUtils.split(comment, "\n")) {
1436+
switch (line) {
1437+
case "/**":
1438+
case "/*":
1439+
case "*/":
1440+
continue;
1441+
}
1442+
line = StringUtils.removeStart(line, "*");
1443+
line = StringUtils.removeStart(line, " *");
1444+
line = StringUtils.removeStart(line, "//");
1445+
line = StringUtils.removeStart(line, "/*");
1446+
line = StringUtils.removeEnd(line, "*/");
1447+
sb.append(" * ").append(line).append("\n");
1448+
}
1449+
sb.append(" */\n");
1450+
return sb.toString();
1451+
}
1452+
14321453
}

code-generation/language/java/src/main/resources/templates/java/complex-type-template.java.ftlh

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ ${helper.getExternalTypeImports()}
6969

7070
<#-- TODO: the code below implies that parserArguments will be null if not present... not pretty -->
7171
<#if type.parserArguments.isPresent()><#assign parserArguments=type.allParserArguments.orElseThrow()></#if>
72-
public<#if type.isDiscriminatedParentTypeDefinition()> abstract</#if> class ${type.name}<#if type.isDiscriminatedParentTypeDefinition()></#if><#if type.parentType.isPresent()> extends ${type.parentType.orElseThrow().name}</#if> implements Message {
72+
<#if type.comment.isPresent()>${helper.toJDoc(type.comment.get())+"\n"}</#if>public<#if type.isDiscriminatedParentTypeDefinition()> abstract</#if> class ${type.name}<#if type.isDiscriminatedParentTypeDefinition()></#if><#if type.parentType.isPresent()> extends ${type.parentType.orElseThrow().name}</#if> implements Message {
7373

7474
<#--
7575
If this is a discriminated child type, we need to generate methods for accessing it's discriminator
@@ -116,15 +116,15 @@ public<#if type.isDiscriminatedParentTypeDefinition()> abstract</#if> class ${ty
116116

117117
// Constant values.
118118
<#list type.constFields as field>
119-
public static final ${helper.getLanguageTypeNameForTypeReference(field.type)} ${field.name?upper_case} = ${helper.toParseExpression(field, field.type, field.referenceValue, parserArguments)};
119+
<#if field.comment.isPresent()>${helper.toJDoc(field.comment.get())+"\n"}</#if>public static final ${helper.getLanguageTypeNameForTypeReference(field.type)} ${field.name?upper_case} = ${helper.toParseExpression(field, field.type, field.referenceValue, parserArguments)};
120120
</#list>
121121
</#if>
122122
<#-- Property fields are fields that require a property in the pojo -->
123123
<#if type.propertyFields?has_content>
124124

125125
// Properties.
126126
<#list type.propertyFields as field>
127-
protected final ${helper.getLanguageTypeNameForTypeReference(field.type, !field.isOptionalField())} ${field.name};
127+
<#if field.comment.isPresent()>${helper.toJDoc(field.comment.get())+"\n"}</#if>protected final ${helper.getLanguageTypeNameForTypeReference(field.type, !field.isOptionalField())} ${field.name};
128128
</#list>
129129
</#if>
130130
<#-- This list contains a list of parser arguments, that are not being used as variables for discriminator expressions in typeSwitches -->
@@ -207,17 +207,17 @@ public<#if type.isDiscriminatedParentTypeDefinition()> abstract</#if> class ${ty
207207
}
208208

209209
<#list type.abstractFields as field>
210-
public abstract ${helper.getLanguageTypeNameForField(field)} get${field.asNamedField().orElseThrow().name?cap_first}();
210+
<#if field.comment.isPresent()>${helper.toJDoc(field.comment.get())+"\n"}</#if>public abstract ${helper.getLanguageTypeNameForField(field)} get${field.asNamedField().orElseThrow().name?cap_first}();
211211

212212
</#list>
213213
<#list type.propertyFields as field>
214-
public ${helper.getLanguageTypeNameForField(field)} get${field.name?cap_first}() {
214+
<#if field.comment.isPresent()>${helper.toJDoc(field.comment.get())+"\n"}</#if>public ${helper.getLanguageTypeNameForField(field)} get${field.name?cap_first}() {
215215
return ${field.name};
216216
}
217217

218218
</#list>
219219
<#list type.virtualFields as field>
220-
public ${helper.getLanguageTypeNameForField(field)} get${field.name?cap_first}() {
220+
<#if field.comment.isPresent()>${helper.toJDoc(field.comment.get())+"\n"}</#if>public ${helper.getLanguageTypeNameForField(field)} get${field.name?cap_first}() {
221221
<#if helper.getLanguageTypeNameForField(field) = 'String'>
222222
return ${helper.getLanguageTypeNameForField(field)}.valueOf(${helper.toSerializationExpression(field, field.type, field.valueExpression, parserArguments)});
223223
<#--elseif helper.getLanguageTypeNameForField(field) = 'BigInteger' && !helper.isBigIntegerSource(field.valueExpression)-->
@@ -233,7 +233,7 @@ public<#if type.isDiscriminatedParentTypeDefinition()> abstract</#if> class ${ty
233233

234234
</#list>
235235
<#list type.constFields as field>
236-
public ${helper.getLanguageTypeNameForField(field)} get${field.name?cap_first}() {
236+
<#if field.comment.isPresent()>${helper.toJDoc(field.comment.get())+"\n"}</#if>public ${helper.getLanguageTypeNameForField(field)} get${field.name?cap_first}() {
237237
return ${field.name?upper_case};
238238
}
239239

plc4go/protocols/ads/readwrite/model/AdsAddDeviceNotificationRequest.go

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

plc4go/protocols/ads/readwrite/model/AdsAddDeviceNotificationResponse.go

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

plc4go/protocols/ads/readwrite/model/AdsDataTypeTableChildEntry.go

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

plc4go/protocols/ads/readwrite/model/AdsDataTypeTableEntry.go

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

plc4go/protocols/ads/readwrite/model/AdsDeleteDeviceNotificationRequest.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

plc4go/protocols/ads/readwrite/model/AdsDeleteDeviceNotificationResponse.go

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

plc4go/protocols/ads/readwrite/model/AdsDeviceNotificationRequest.go

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)