[Java] Carry down field sinceVersion into composite types to allow fo… · aeron-io/simple-binary-encoding@bca8849 (original) (raw)
`@@ -208,22 +208,19 @@ private void add(final CompositeType type, final int currOffset, final Field fie
`
208
208
` .semanticType(semanticTypeOf(type, field))
`
209
209
` .build();
`
210
210
``
``
211
`+
final int version = null != field ? Math.max(field.sinceVersion(), type.sinceVersion()) : type.sinceVersion();
`
``
212
+
211
213
`final Token.Builder builder = new Token.Builder()
`
212
214
` .signal(Signal.BEGIN_COMPOSITE)
`
213
215
` .name(type.name())
`
214
216
` .referencedName(type.referencedName())
`
215
217
` .offset(currOffset)
`
216
218
` .size(type.encodedLength())
`
217
``
`-
.version(type.sinceVersion())
`
``
219
`+
.version(version)
`
218
220
` .deprecated(type.deprecated())
`
219
221
` .description(type.description())
`
220
222
` .encoding(encoding);
`
221
223
``
222
``
`-
if (null != field)
`
223
``
`-
{
`
224
``
`-
builder.version(Math.max(field.sinceVersion(), type.sinceVersion()));
`
225
``
`-
}
`
226
``
-
227
224
`tokenList.add(builder.build());
`
228
225
``
229
226
`int offset = 0;
`
`@@ -236,19 +233,21 @@ private void add(final CompositeType type, final int currOffset, final Field fie
`
236
233
``
237
234
`if (elementType instanceof EncodedDataType)
`
238
235
` {
`
239
``
`-
add((EncodedDataType)elementType, offset);
`
``
236
`+
add((EncodedDataType)elementType,
`
``
237
`+
offset,
`
``
238
`+
null != field ? Math.max(field.sinceVersion(), type.sinceVersion()) : elementType.sinceVersion());
`
240
239
` }
`
241
240
`else if (elementType instanceof EnumType)
`
242
241
` {
`
243
``
`-
add((EnumType)elementType, offset, null);
`
``
242
`+
add((EnumType)elementType, offset, field);
`
244
243
` }
`
245
244
`else if (elementType instanceof SetType)
`
246
245
` {
`
247
``
`-
add((SetType)elementType, offset, null);
`
``
246
`+
add((SetType)elementType, offset, field);
`
248
247
` }
`
249
248
`else if (elementType instanceof CompositeType)
`
250
249
` {
`
251
``
`-
add((CompositeType)elementType, offset, null);
`
``
250
`+
add((CompositeType)elementType, offset, field);
`
252
251
` }
`
253
252
``
254
253
`offset += elementType.encodedLength();
`
`@@ -266,22 +265,19 @@ private void add(final EnumType type, final int offset, final Field field)
`
266
265
` .nullValue(type.nullValue())
`
267
266
` .byteOrder(schema.byteOrder());
`
268
267
``
``
268
`+
final int version = null != field ? Math.max(field.sinceVersion(), type.sinceVersion()) : type.sinceVersion();
`
``
269
+
269
270
`final Token.Builder builder = new Token.Builder()
`
270
271
` .signal(Signal.BEGIN_ENUM)
`
271
272
` .name(type.name())
`
272
273
` .referencedName(type.referencedName())
`
273
274
` .size(encodingType.size())
`
274
275
` .offset(offset)
`
275
``
`-
.version(type.sinceVersion())
`
``
276
`+
.version(version)
`
276
277
` .deprecated(type.deprecated())
`
277
278
` .description(type.description())
`
278
279
` .encoding(encodingBuilder.build());
`
279
280
``
280
``
`-
if (null != field)
`
281
``
`-
{
`
282
``
`-
builder.version(Math.max(field.sinceVersion(), type.sinceVersion()));
`
283
``
`-
}
`
284
``
-
285
281
`tokenList.add(builder.build());
`
286
282
``
287
283
`for (final EnumType.ValidValue validValue : type.validValues())
`
`@@ -322,22 +318,19 @@ private void add(final SetType type, final int offset, final Field field)
`
322
318
` .primitiveType(encodingType)
`
323
319
` .build();
`
324
320
``
``
321
`+
final int version = null != field ? Math.max(field.sinceVersion(), type.sinceVersion()) : type.sinceVersion();
`
``
322
+
325
323
`final Token.Builder builder = new Token.Builder()
`
326
324
` .signal(Signal.BEGIN_SET)
`
327
325
` .name(type.name())
`
328
326
` .referencedName(type.referencedName())
`
329
327
` .size(encodingType.size())
`
330
328
` .offset(offset)
`
331
``
`-
.version(type.sinceVersion())
`
``
329
`+
.version(version)
`
332
330
` .deprecated(type.deprecated())
`
333
331
` .description(type.description())
`
334
332
` .encoding(encoding);
`
335
333
``
336
``
`-
if (null != field)
`
337
``
`-
{
`
338
``
`-
builder.version(Math.max(field.sinceVersion(), type.sinceVersion()));
`
339
``
`-
}
`
340
``
-
341
334
`tokenList.add(builder.build());
`
342
335
``
343
336
`for (final SetType.Choice choice : type.choices())
`
`@@ -369,7 +362,7 @@ private void add(final SetType.Choice value, final PrimitiveType encodingType)
`
369
362
`tokenList.add(builder.build());
`
370
363
` }
`
371
364
``
372
``
`-
private void add(final EncodedDataType type, final int offset)
`
``
365
`+
private void add(final EncodedDataType type, final int offset, final int sinceVersion)
`
373
366
` {
`
374
367
`final Encoding.Builder encodingBuilder = new Encoding.Builder()
`
375
368
` .primitiveType(type.primitiveType())
`
`@@ -382,7 +375,7 @@ private void add(final EncodedDataType type, final int offset)
`
382
375
` .referencedName(type.referencedName())
`
383
376
` .size(type.encodedLength())
`
384
377
` .description(type.description())
`
385
``
`-
.version(type.sinceVersion())
`
``
378
`+
.version(sinceVersion)
`
386
379
` .deprecated(type.deprecated())
`
387
380
` .offset(offset);
`
388
381
``
`@@ -426,21 +419,18 @@ private void add(final EncodedDataType type, final int offset, final Field field
`
426
419
` .timeUnit(field.timeUnit())
`
427
420
` .epoch(field.epoch());
`
428
421
``
``
422
`+
final int version = Math.max(field.sinceVersion(), type.sinceVersion());
`
``
423
+
429
424
`final Token.Builder tokenBuilder = new Token.Builder()
`
430
425
` .signal(Signal.ENCODING)
`
431
426
` .name(type.name())
`
432
427
` .referencedName(type.referencedName())
`
433
428
` .size(type.encodedLength())
`
434
429
` .description(type.description())
`
435
``
`-
.version(type.sinceVersion())
`
``
430
`+
.version(version)
`
436
431
` .deprecated(type.deprecated())
`
437
432
` .offset(offset);
`
438
433
``
439
``
`-
if (field.type() instanceof CompositeType)
`
440
``
`-
{
`
441
``
`-
tokenBuilder.version(Math.max(field.sinceVersion(), type.sinceVersion()));
`
442
``
`-
}
`
443
``
-
444
434
`switch (field.presence())
`
445
435
` {
`
446
436
`case REQUIRED:
`