@@ -117,7 +117,7 @@ private void addMessageSignal(final Message msg, final Signal signal)
117117 tokenList .add (token );
118118 }
119119
120- private void addFieldSignal (final Field field , final Signal signal )
120+ private void addFieldSignal (final Field field , final Signal signal , final int typeSinceVersion )
121121 {
122122 final Encoding .Builder encodingBuilder = new Encoding .Builder ()
123123 .epoch (field .epoch ())
@@ -142,7 +142,7 @@ private void addFieldSignal(final Field field, final Signal signal)
142142 .description (field .description ())
143143 .id (field .id ())
144144 .offset (field .computedOffset ())
145- .version (field .sinceVersion ())
145+ .version (Math . max ( field .sinceVersion (), typeSinceVersion ))
146146 .deprecated (field .deprecated ())
147147 .encoding (encodingBuilder .build ())
148148 .build ();
@@ -158,20 +158,22 @@ private void addAllFields(final List<Field> fieldList)
158158
159159 if (null == type )
160160 {
161- addFieldSignal (field , Signal .BEGIN_GROUP );
161+ addFieldSignal (field , Signal .BEGIN_GROUP , 0 );
162162 add (field .dimensionType (), 0 , field );
163163 addAllFields (field .groupFields ());
164- addFieldSignal (field , Signal .END_GROUP );
164+ addFieldSignal (field , Signal .END_GROUP , 0 );
165165 }
166166 else if (type instanceof CompositeType && field .isVariableLength ())
167167 {
168- addFieldSignal (field , Signal .BEGIN_VAR_DATA );
168+ addFieldSignal (field , Signal .BEGIN_VAR_DATA , 0 );
169169 add ((CompositeType )type , field .computedOffset (), field );
170- addFieldSignal (field , Signal .END_VAR_DATA );
170+ addFieldSignal (field , Signal .END_VAR_DATA , 0 );
171171 }
172172 else
173173 {
174- addFieldSignal (field , Signal .BEGIN_FIELD );
174+ final int typeSinceVersion = type .sinceVersion ();
175+
176+ addFieldSignal (field , Signal .BEGIN_FIELD , typeSinceVersion );
175177
176178 if (type instanceof EncodedDataType )
177179 {
@@ -194,7 +196,7 @@ else if (type instanceof SetType)
194196 throw new IllegalStateException ("Unknown type: " + type );
195197 }
196198
197- addFieldSignal (field , Signal .END_FIELD );
199+ addFieldSignal (field , Signal .END_FIELD , typeSinceVersion );
198200 }
199201 }
200202 }
0 commit comments