static PrecomputedParameters precompute( boolean immutableTargetType, TypeSerializer<Object>[] fieldSerializers) { Preconditions.checkNotNull(fieldSerializers); int totalLength = 0; boolean fieldsImmutable = true; boolean stateful = false; for (TypeSerializer<Object> fieldSerializer : fieldSerializers) { Preconditions.checkNotNull(fieldSerializer); if (fieldSerializer != fieldSerializer.duplicate()) { stateful = true; } if (!fieldSerializer.isImmutableType()) { fieldsImmutable = false; } if (fieldSerializer.getLength() < 0) { totalLength = -1; } totalLength = totalLength >= 0 ? totalLength + fieldSerializer.getLength() : totalLength; } return new PrecomputedParameters(immutableTargetType, fieldsImmutable, totalLength, stateful); } }
private CompatibilityResult<T> createMigrationCompatResult(TypeSerializer<Object>[] convertSerializers) { PrecomputedParameters precomputed = PrecomputedParameters.precompute(this.precomputed.immutableTargetType, convertSerializers); return CompatibilityResult.requiresMigration(createSerializerInstance(precomputed, convertSerializers)); }
/** Can be used for user facing constructor. */ @SuppressWarnings("unchecked") protected CompositeSerializer(boolean immutableTargetType, TypeSerializer<?> ... fieldSerializers) { this( PrecomputedParameters.precompute(immutableTargetType, (TypeSerializer<Object>[]) fieldSerializers), fieldSerializers); }
static PrecomputedParameters precompute( boolean immutableTargetType, TypeSerializer<Object>[] fieldSerializers) { Preconditions.checkNotNull(fieldSerializers); int totalLength = 0; boolean fieldsImmutable = true; boolean stateful = false; for (TypeSerializer<Object> fieldSerializer : fieldSerializers) { Preconditions.checkNotNull(fieldSerializer); if (fieldSerializer != fieldSerializer.duplicate()) { stateful = true; } if (!fieldSerializer.isImmutableType()) { fieldsImmutable = false; } if (fieldSerializer.getLength() < 0) { totalLength = -1; } totalLength = totalLength >= 0 ? totalLength + fieldSerializer.getLength() : totalLength; } return new PrecomputedParameters(immutableTargetType, fieldsImmutable, totalLength, stateful); } }
private CompatibilityResult<T> createMigrationCompatResult(TypeSerializer<Object>[] convertSerializers) { PrecomputedParameters precomputed = PrecomputedParameters.precompute(this.precomputed.immutableTargetType, convertSerializers); return CompatibilityResult.requiresMigration(createSerializerInstance(precomputed, convertSerializers)); }
/** Can be used for user facing constructor. */ @SuppressWarnings("unchecked") protected CompositeSerializer(boolean immutableTargetType, TypeSerializer<?> ... fieldSerializers) { this( PrecomputedParameters.precompute(immutableTargetType, (TypeSerializer<Object>[]) fieldSerializers), fieldSerializers); }