[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:

`