45 lines
1.3 KiB
Java
45 lines
1.3 KiB
Java
package it.cavallium.data.generator.plugin;
|
|
|
|
import com.squareup.javapoet.TypeName;
|
|
import it.cavallium.data.generator.plugin.ComputedType.VersionedComputedType;
|
|
import java.util.stream.Stream;
|
|
|
|
public sealed interface ComputedType permits VersionedComputedType, ComputedTypeArray, ComputedTypeCustom,
|
|
ComputedTypeNative, ComputedTypeNullable {
|
|
|
|
String getName();
|
|
|
|
TypeName getJTypeName(String basePackageName);
|
|
|
|
TypeName getJSerializerName(String basePackageName);
|
|
|
|
FieldLocation getJSerializerInstance(String basePackageName);
|
|
|
|
TypeName getJUpgraderName(String basePackageName);
|
|
|
|
FieldLocation getJUpgraderInstance(String basePackageName);
|
|
|
|
sealed interface VersionedComputedType extends ComputedType permits ComputedTypeArrayVersioned, ComputedTypeBase,
|
|
ComputedTypeNullableVersioned, ComputedTypeSuper {
|
|
|
|
ComputedVersion getVersion();
|
|
|
|
default boolean shouldUpgradeAfter(ComputedVersion version) {
|
|
return !version.isCurrent() && version.getVersion() == this.getVersion().getVersion();
|
|
}
|
|
|
|
ComputedType withChangeAtVersion(ComputedVersion version, VersionChangeChecker versionChangeChecker);
|
|
}
|
|
|
|
/**
|
|
* Get all types that are required by this type
|
|
*/
|
|
Stream<ComputedType> getDependencies();
|
|
|
|
/**
|
|
* Get all types that require this type
|
|
*/
|
|
Stream<ComputedType> getDependents();
|
|
|
|
}
|