@@ -3207,9 +3207,7 @@ private void appendDecoderDisplay(
3207
3207
if (fieldToken .signal () == Signal .BEGIN_FIELD )
3208
3208
{
3209
3209
final Token encodingToken = fields .get (i + 1 );
3210
-
3211
3210
final String fieldName = formatPropertyName (fieldToken .name ());
3212
- append (sb , indent , "//" + fieldToken );
3213
3211
lengthBeforeLastGeneratedSeparator = writeTokenDisplay (fieldName , encodingToken , sb , indent );
3214
3212
3215
3213
i += fieldToken .componentTokenCount ();
@@ -3228,8 +3226,6 @@ private void appendDecoderDisplay(
3228
3226
throw new IllegalStateException ("tokens must begin with BEGIN_GROUP: token=" + groupToken );
3229
3227
}
3230
3228
3231
- append (sb , indent , "//" + groupToken );
3232
-
3233
3229
final String groupName = formatPropertyName (groupToken .name ());
3234
3230
final String groupDecoderName = decoderName (formatClassName (groupToken .name ()));
3235
3231
@@ -3261,8 +3257,6 @@ private void appendDecoderDisplay(
3261
3257
throw new IllegalStateException ("tokens must begin with BEGIN_VAR_DATA: token=" + varDataToken );
3262
3258
}
3263
3259
3264
- append (sb , indent , "//" + varDataToken );
3265
-
3266
3260
final String characterEncoding = varData .get (i + 3 ).encoding ().characterEncoding ();
3267
3261
final String varDataName = formatPropertyName (varDataToken .name ());
3268
3262
append (sb , indent , "builder.append(\" " + varDataName + Separators .KEY_VALUE + "\" );" );
@@ -3293,8 +3287,6 @@ private void appendDecoderDisplay(
3293
3287
private int writeTokenDisplay (
3294
3288
final String fieldName , final Token typeToken , final StringBuilder sb , final String indent )
3295
3289
{
3296
- append (sb , indent , "//" + typeToken );
3297
-
3298
3290
if (typeToken .encodedLength () <= 0 || typeToken .isConstantEncoding ())
3299
3291
{
3300
3292
return -1 ;
@@ -3343,8 +3335,19 @@ private int writeTokenDisplay(
3343
3335
break ;
3344
3336
3345
3337
case BEGIN_COMPOSITE :
3346
- append (sb , indent , fieldName + "().appendTo(builder);" );
3338
+ {
3339
+ final String typeName = formatClassName (decoderName (typeToken .applicableTypeName ()));
3340
+ append (sb , indent , "final " + typeName + " " + fieldName + " = " + fieldName + "();" );
3341
+ append (sb , indent , "if (" + fieldName + " != null)" );
3342
+ append (sb , indent , "{" );
3343
+ append (sb , indent , " " + fieldName + ".appendTo(builder);" );
3344
+ append (sb , indent , "}" );
3345
+ append (sb , indent , "else" );
3346
+ append (sb , indent , "{" );
3347
+ append (sb , indent , " builder.append(\" null\" );" );
3348
+ append (sb , indent , "}" );
3347
3349
break ;
3350
+ }
3348
3351
}
3349
3352
3350
3353
final int lengthBeforeFieldSeparator = sb .length ();
0 commit comments