@@ -354,6 +354,7 @@ private CharSequence generateVarData(final List<Token> tokens)
354354
355355 final  String  characterEncoding  = tokens .get (i  + 3 ).encoding ().characterEncoding ();
356356 generateCharacterEncodingMethod (sb , token .name (), characterEncoding );
357+  generateFieldMetaAttributeMethod (sb , token , BASE_INDENT );
357358
358359 final  String  propertyName  = toUpperFirstChar (token .name ());
359360 final  Token  lengthToken  = tokens .get (i  + 2 );
@@ -365,6 +366,7 @@ private CharSequence generateVarData(final List<Token> tokens)
365366 final  String  byteOrderStr  = lengthEncoding .primitiveType ().size () == 1  ? ""  : ", java.nio.ByteOrder."  + byteOrder ;
366367
367368 sb .append (String .format (
369+  "\n "  +
368370 " public int get%s(final byte[] dst, final int dstOffset, final int length)\n "  +
369371 " {\n "  +
370372 "%s"  +
@@ -376,7 +378,7 @@ private CharSequence generateVarData(final List<Token> tokens)
376378 " position(position + sizeOfLengthField + dataLength);\n "  +
377379 " CodecUtil.int8sGet(buffer, position + sizeOfLengthField, dst, dstOffset, bytesCopied);\n \n "  +
378380 " return bytesCopied;\n "  +
379-  " }\n \n " ,
381+  " }\n " ,
380382 propertyName ,
381383 generateArrayFieldNotPresentCondition (token .version (), BASE_INDENT ),
382384 sizeOfLengthField ,
@@ -385,6 +387,7 @@ private CharSequence generateVarData(final List<Token> tokens)
385387 ));
386388
387389 sb .append (String .format (
390+  "\n "  +
388391 " public int put%s(final byte[] src, final int srcOffset, final int length)\n "  +
389392 " {\n "  +
390393 " final int sizeOfLengthField = %d;\n "  +
@@ -607,7 +610,13 @@ private CharSequence generateClassDeclaration(final String className)
607610 {
608611 return  String .format (
609612 "public class %s\n "  +
610-  "{\n " ,
613+  "{\n "  +
614+  " public enum MetaAttribute\n "  +
615+  " {\n "  +
616+  " EPOCH,\n "  +
617+  " TIME_UNIT,\n "  +
618+  " SEMANTIC_TYPE\n "  +
619+  " }\n \n " ,
611620 className 
612621 );
613622 }
@@ -925,7 +934,7 @@ private void generateCharacterEncodingMethod(final StringBuilder sb, final Strin
925934 " public static String %sCharacterEncoding()\n "  +
926935 " {\n "  +
927936 " return \" %s\" ;\n "  +
928-  " }\n \n " ,
937+  " }\n " ,
929938 formatPropertyName (propertyName ),
930939 encoding 
931940 ));
@@ -1124,6 +1133,7 @@ private CharSequence generateFields(final String containingClassName, final List
11241133 final  String  propertyName  = formatPropertyName (signalToken .name ());
11251134
11261135 generateFieldIdMethod (sb , signalToken , indent );
1136+  generateFieldMetaAttributeMethod (sb , signalToken , indent );
11271137
11281138 switch  (encodingToken .signal ())
11291139 {
@@ -1162,6 +1172,32 @@ private void generateFieldIdMethod(final StringBuilder sb, final Token token, fi
11621172 ));
11631173 }
11641174
1175+  private  void  generateFieldMetaAttributeMethod (final  StringBuilder  sb , final  Token  token , final  String  indent )
1176+  {
1177+  final  Encoding  encoding  = token .encoding ();
1178+  final  String  epoch  = encoding .epoch () == null  ? ""  : encoding .epoch ();
1179+  final  String  timeUnit  = encoding .timeUnit () == null  ? ""  : encoding .timeUnit ();
1180+  final  String  semanticType  = encoding .semanticType () == null  ? ""  : encoding .semanticType ();
1181+ 
1182+  sb .append (String .format (
1183+  "\n "  +
1184+  indent  + " public static String %sMetaAttribute(final MetaAttribute metaAttribute)\n "  +
1185+  indent  + " {\n "  +
1186+  indent  + " switch (metaAttribute)\n "  +
1187+  indent  + " {\n "  +
1188+  indent  + " case EPOCH: return \" %s\" ;\n "  +
1189+  indent  + " case TIME_UNIT: return \" %s\" ;\n "  +
1190+  indent  + " case SEMANTIC_TYPE: return \" %s\" ;\n "  +
1191+  indent  + " }\n \n "  +
1192+  indent  + " return \" \" ;\n "  +
1193+  indent  + " }\n " ,
1194+  token .name (),
1195+  epoch ,
1196+  timeUnit ,
1197+  semanticType 
1198+  ));
1199+  }
1200+ 
11651201 private  CharSequence  generateEnumProperty (final  String  containingClassName ,
11661202 final  String  propertyName ,
11671203 final  Token  token ,
0 commit comments