Interface IValueDescriptorFactory
-
- All Known Implementing Classes:
ValueDescriptorFactory
public interface IValueDescriptorFactory
Factory for creatingIValueDescriptor
s. This includes methods that createIValueDescriptorBuilder
s that let you configure the descriptor, as well as some convenience methods that return preconfigured descriptors. A value descriptor indicates the type a value must have and may impose additional restrictions on the allowed values.You may create descriptors once during startup and store them statically. Also, please note that these builder methods perform checks and will throw an error if an invalid configuration is detected.
- Since:
- 7.0.0
- Author:
- XIMA MEDIA GmbH
-
-
Method Summary
-
-
-
Method Detail
-
accessAtPath
List<?> accessAtPath(Object base, String path)
Access a nested property in an object at a given JSON path.- Parameters:
base
- Base object with data to access.path
- JSON path to the data to access.- Returns:
- The data at the given path in the base object.
-
any
default IAnyValueDescriptor any(Object defaultValue)
- Parameters:
defaultValue
- The default value for the any property, used when no other value is supplied.- Returns:
- A descriptor for an any value that defaults to the given value. The description uses the default i18n key determined from the root class and the path to this property.
-
anyBuilder
IAnyValueDescriptorBuilder anyBuilder()
- Returns:
- A descriptor builder for an any value.
-
bool
default IBooleanValueDescriptor bool()
- Returns:
- A descriptor for a boolean value that defaults to
false
. The description uses the default i18n key determined from the root class and the path to this property.
-
bool
default IBooleanValueDescriptor bool(boolean defaultValue)
- Parameters:
defaultValue
- The default value for the boolean property, used when no other value is supplied.- Returns:
- A descriptor for a boolean value that defaults to the given value. The description uses the default i18n key determined from the root class and the path to this property.
-
bool
default IBooleanValueDescriptor bool(boolean defaultValue, String descriptionI18n)
- Parameters:
defaultValue
- The default value for the boolean property, used when no other value is supplied.descriptionI18n
- The i18n key to use for the description of the boolean property.- Returns:
- A descriptor for a boolean value that defaults to the given value and uses the given description.
-
boolBuilder
IBooleanValueDescriptorBuilder boolBuilder()
- Returns:
- A descriptor builder for a boolean value.
-
constant
default IConstValueDescriptor<Boolean> constant(boolean value)
- Parameters:
value
- The constant value that the descriptor should allow.- Returns:
- A descriptor for a value that only admits the given constant boolean value.
-
constant
default IConstValueDescriptor<Double> constant(double value)
- Parameters:
value
- The constant value that the descriptor should allow.- Returns:
- A descriptor for a value that only admits the given constant floating point value.
-
constant
default IConstValueDescriptor<LargeString> constant(LargeString value)
- Parameters:
value
- The constant value that the descriptor should allow.- Returns:
- A descriptor for a value that only admits the given constant large string value.
-
constant
default IConstValueDescriptor<Long> constant(long value)
- Parameters:
value
- The constant value that the descriptor should allow.- Returns:
- A descriptor for a value that only admits the given constant integer value.
-
constant
default IConstValueDescriptor<String> constant(String value)
- Parameters:
value
- The constant value that the descriptor should allow.- Returns:
- A descriptor for a value that only admits the given constant string value.
-
constantBuilder
IConstValueDescriptorBuilder<Boolean> constantBuilder(boolean value)
- Parameters:
value
- The constant value that the descriptor should allow.- Returns:
- A descriptor builder for a boolean value that only admits a constant instance.
-
constantBuilder
IConstValueDescriptorBuilder<Double> constantBuilder(double value)
- Parameters:
value
- The constant value that the descriptor should allow.- Returns:
- A descriptor builder for a floating point value that only admits a constant instance.
-
constantBuilder
IConstValueDescriptorBuilder<LargeString> constantBuilder(LargeString value)
- Parameters:
value
- The constant value that the descriptor should allow.- Returns:
- A descriptor builder for a large string value that only admits a constant instance.
-
constantBuilder
IConstValueDescriptorBuilder<Long> constantBuilder(long value)
- Parameters:
value
- The constant value that the descriptor should allow.- Returns:
- A descriptor builder for an integer value that only admits a constant instance.
-
constantBuilder
IConstValueDescriptorBuilder<String> constantBuilder(String value)
- Parameters:
value
- The constant value that the descriptor should allow.- Returns:
- A descriptor builder for a string value that only admits a constant instance.
-
floating
default IFloatValueDescriptor floating()
- Returns:
- A descriptor for a floating point value that defaults to
0
. The description uses the default i18n key determined from the root class and the path to this property.
-
floating
default IFloatValueDescriptor floating(double defaultValue)
- Parameters:
defaultValue
- The default value for the floating point property, used when no other value is supplied.- Returns:
- A descriptor for a floating point value that defaults to the given value. The description uses the default i18n key determined from the root class and the path to this property.
-
floating
default IFloatValueDescriptor floating(double defaultValue, String descriptionI18n)
- Parameters:
defaultValue
- The default value for the floating point property, used when no other value is supplied.descriptionI18n
- The i18n key to use for the description of the floating point property.- Returns:
- A descriptor for a floating point value that defaults to the given value and uses the given description.
-
floatingBuilder
IFloatValueDescriptorBuilder floatingBuilder()
- Returns:
- A descriptor builder for a floating point value.
-
integer
default IIntegerValueDescriptor integer()
- Returns:
- A descriptor for an integer value that defaults to
0
. The description uses the default i18n key determined from the root class and the path to this property.
-
integer
default IIntegerValueDescriptor integer(long defaultValue)
- Parameters:
defaultValue
- The default value for the integer property, used when no other value is supplied.- Returns:
- A descriptor for an integer value that defaults to the given value. The description uses the default i18n key determined from the root class and the path to this property.
-
integer
default IIntegerValueDescriptor integer(long defaultValue, String descriptionI18n)
- Parameters:
defaultValue
- The default value for the integer property, used when no other value is supplied.descriptionI18n
- The i18n key to use for the description of the integer property.- Returns:
- A descriptor for an integer value that defaults to the given value and uses the given description.
-
integerBuilder
IIntegerValueDescriptorBuilder integerBuilder()
- Returns:
- A descriptor builder for an integer value.
-
intersect
IValueDescriptor<?,?> intersect(IValueDescriptor<?,?> first, IValueDescriptor<?,?> second)
Intersects two value descriptors with each other. The intersection is the value descriptor that is compatible with both given descriptors, i.e. letc
beintersect(first, second)
, then for all valuesv
:c.
If the descriptors are incompatible with each other,acceptsValue
(v) <=> first.acceptsValue
(v) & second.acceptsValue
(v)IVoidValueDescriptor
is returned, which does not accept any values.When there are conflicts, the
default value
and thedescription
of the second descriptor are used. Disregarding the default value and the description, this is a symmetric operation, i.e.intersect(a,b) = intersect(b,a)
For example:intersect(null, void) = void intersect(string, string) = string intersect(string, boolean) = void intersect(string, null) = void intersect(string, void) = void intersect(string, "foo") = "foo" intersect(string, "foo" | "bar") = "foo" intersect(float, float) = float intersect(float, integer) = integer intersect(float[1,6], float[3,8]) = float[3,6] intersect(float[1,6), float(3,8]) = float(3,6) intersect(integer[1,6], integer[3,8]) = integer[3,6] // A union with a single string, as the
discriminator
needs to be preserved. intersect(string, string | boolean) = string intersect(float | string | boolean, boolean | string) = string intersect(List[string], List[number]) = void intersect(List[string], List[string | number]) = List[string] intersect([string, string], List[string]) = [string, string] intersect([string, number], List[string]) = void intersect(Map[string], Map[number]) = void intersect(Map[string], Map[string]) = Map[string] intersect(Map[string|number], Map[string|number]) = Map[string] intersect({a=string|boolean,b=number}, Map[string|number]) = {a=string,b=number} intersect({a:string,b:number}, Map[string]) = void intersect({a:string}, {b:string}) = void intersect({a:string, b?:string}, {b:string}) = void intersect({a:string, b?:string}, {a?:string, b:string}) = {a:string, b:string} intersect({a:string, b:number}, {a:string, b:string}) = void intersect({type:"foo" | "bar"}, {type:"foo"}) = {type:"foo"} intersect( {type:"number", value:number} | {type:"string", value:string, optional?:boolean}, {type:"string", value:string} ) = {type:"string", value:string}- Parameters:
first
- A descriptor to intersect with the other.second
- A descriptor to intersect with the other.- Returns:
- The intersection of the two given value descriptors. If either is
null
, the other is returned. If both arenull
,voidish()
is returned. - Since:
- 8.1.0
-
largeString
default ILargeStringValueDescriptor largeString()
- Returns:
- A descriptor for a large string value that defaults to the empty string. The description uses the default i18n key determined from the root class and the path to this property.
-
largeString
default ILargeStringValueDescriptor largeString(LargeString defaultValue)
- Parameters:
defaultValue
- The default value for the string property, used when no other value is supplied.- Returns:
- A descriptor for a large string value that defaults to the given value. The description uses the default i18n key determined from the root class and the path to this property.
-
largeString
default ILargeStringValueDescriptor largeString(LargeString defaultValue, String descriptionI18n)
- Parameters:
defaultValue
- The default value for the string property, used when no other value is supplied.descriptionI18n
- The i18n key to use for the description of the string property.- Returns:
- A descriptor for a large string value that defaults to the given value and uses the given description.
-
largeStringBuilder
ILargeStringValueDescriptorBuilder largeStringBuilder()
- Returns:
- A descriptor builder for a large string value.
-
list
default <V> IListValueDescriptor<V> list(IValueDescriptor<V,? extends IValueBuilder<V>> descriptor)
- Type Parameters:
V
- Type of the elements contained in the list.- Parameters:
descriptor
- Descriptor for the elements contained in the list.- Returns:
- A descriptor for a list value (
List<V>
) that defaults to an empty list and may contain any number of elements.
-
list
default IListValueDescriptor<?> list(IValueDescriptorCreator elementType)
- Parameters:
elementType
- Creates the descriptor for the type of the list elements.- Returns:
- A descriptor for a list value (
List<V>
) that defaults to an empty list and may contain any number of elements.
-
listBuilder
<V> IListValueDescriptorBuilder<V> listBuilder(IValueDescriptor<V,? extends IValueBuilder<V>> descriptor)
- Type Parameters:
V
- Type of the elements contained in the list.- Parameters:
descriptor
- Descriptor for the elements contained in the list.- Returns:
- A descriptor builder for a list value (
List<V>
).
-
listBuilder
IListValueDescriptorBuilder<?> listBuilder(IValueDescriptorCreator elementType)
- Parameters:
elementType
- Creates the descriptor for the type of the list elements.- Returns:
- A descriptor builder for a list value (
List<V>
).
-
listOfLargeStrings
default IListValueDescriptor<LargeString> listOfLargeStrings()
- Returns:
- A descriptor builder for a value of type
List<LargeString>
. The description uses the default i18n key determined from the root class and the path to this property.
-
listOfLargeStrings
default IListValueDescriptor<LargeString> listOfLargeStrings(String descriptionI18n)
- Parameters:
descriptionI18n
- The i18n key to use for the description of the list-valued property.- Returns:
- A descriptor builder for a value of type
List<LargeString>
.
-
listOfStrings
default IListValueDescriptor<String> listOfStrings()
- Returns:
- A descriptor builder for a value of type
List<String>
. The description uses the default i18n key determined from the root class and the path to this property.
-
listOfStrings
default IListValueDescriptor<String> listOfStrings(String descriptionI18n)
- Parameters:
descriptionI18n
- The i18n key to use for the description of the list-valued property.- Returns:
- A descriptor builder for a value of type
List<String>
.
-
map
default <V> IMapValueDescriptor<V> map(IValueDescriptor<V,? extends IValueBuilder<V>> descriptor)
- Type Parameters:
V
- Type of the mapped values.- Parameters:
descriptor
- Descriptor for the type of the mapped values.- Returns:
- A descriptor for a map value (
Map<String, V>
) that defaults to an empty map.
-
map
default IMapValueDescriptor<?> map(IValueDescriptorCreator elementType)
- Parameters:
elementType
- Creates the descriptor for the type of the mapped values.- Returns:
- A descriptor for a map value (
Map<String, V>
) that defaults to an empty map.
-
mapBuilder
<V> IMapValueDescriptorBuilder<V> mapBuilder(IValueDescriptor<V,? extends IValueBuilder<V>> descriptor)
- Type Parameters:
V
- Type of the mapped values.- Parameters:
descriptor
- Descriptor for the type of the mapped values.- Returns:
- A descriptor builder for a map value (
Map<String, V>
).
-
mapBuilder
IMapValueDescriptorBuilder<?> mapBuilder(IValueDescriptorCreator elementType)
- Parameters:
elementType
- Creates the descriptor for the type of the mapped values.- Returns:
- A descriptor builder for a map value (
Map<String, V>
).
-
mapToLargeStrings
default IMapValueDescriptor<LargeString> mapToLargeStrings()
- Returns:
- A descriptor builder for a value of type
Map<String, LargeString>
. The description uses the default i18n key determined from the root class and the path to this property.
-
mapToLargeStrings
default IMapValueDescriptor<LargeString> mapToLargeStrings(String descriptionI18n)
- Parameters:
descriptionI18n
- The i18n key to use for the description of the map-valued property.- Returns:
- A descriptor builder for a value of type
Map<String, LargeString>
.
-
mapToStrings
default IMapValueDescriptor<String> mapToStrings()
- Returns:
- A descriptor builder for a value of type
Map<String, String>
. The description uses the default i18n key determined from the root class and the path to this property.
-
mapToStrings
default IMapValueDescriptor<String> mapToStrings(String descriptionI18n)
- Parameters:
descriptionI18n
- The i18n key to use for the description of the map-valued property.- Returns:
- A descriptor builder for a value of type
Map<String, String>
.
-
nullish
default INullValueDescriptor nullish()
- Returns:
- A descriptor for a value that can only be
null
.
-
nullish
default INullValueDescriptor nullish(String descriptionI18n)
- Parameters:
descriptionI18n
- The i18n key to use for the description of the map-valued property.- Returns:
- A descriptor for a value that can only be
null
.
-
nullishBuilder
INullValueDescriptorBuilder nullishBuilder()
- Returns:
- A descriptor builder for a value that can only be
null
.
-
record
default IRecordValueDescriptor record()
- Returns:
- A descriptor for an empty record value.
-
recordBuilder
IRecordValueDescriptorBuilder recordBuilder()
- Returns:
- A descriptor builder for a record value.
-
string
default IStringValueDescriptor string()
- Returns:
- A descriptor for a string value that defaults to the empty string. The description uses the default i18n key determined from the root class and the path to this property.
-
string
default IStringValueDescriptor string(String defaultValue)
- Parameters:
defaultValue
- The default value for the string property, used when no other value is supplied.- Returns:
- A descriptor for a string value that defaults to the given value. The description uses the default i18n key determined from the root class and the path to this property.
-
string
default IStringValueDescriptor string(String defaultValue, String descriptionI18n)
- Parameters:
defaultValue
- The default value for the string property, used when no other value is supplied.descriptionI18n
- The i18n key to use for the description of the string property.- Returns:
- A descriptor for a string value that defaults to the given value and uses the given description.
-
stringBuilder
IStringValueDescriptorBuilder stringBuilder()
- Returns:
- A descriptor builder for a string value.
-
tuple
default ITupleValueDescriptor tuple()
Creates an empty tuple descriptor.- Returns:
- A descriptor for a tuple value that has a fixed length and where each element may have a different type. Each tuple element defaults to the default value of the given descriptor.
-
tuple
default ITupleValueDescriptor tuple(IValueDescriptor<?,? extends IValueBuilder<?>>... types)
- Parameters:
types
- Descriptor for each element in the tuple.- Returns:
- A descriptor for a tuple value that has a fixed length and where each element may have a different type. Each tuple element defaults to the default value of the given descriptor.
-
tuple
default ITupleValueDescriptor tuple(IValueDescriptorCreator... types)
- Parameters:
types
- Creates the descriptor for each element in the tuple.- Returns:
- A descriptor for a tuple value that has a fixed length and where each element may have a different type. Each tuple element defaults to the default value of the given descriptor.
-
tupleBuilder
ITupleValueDescriptorBuilder tupleBuilder()
- Returns:
- A descriptor builder for a tuple value with a fixed length and where each element has the same type. Each tuple element defaults to the default value of the given descriptor.
-
tupleOfSame
default <V> ITupleValueDescriptor tupleOfSame(int count, IValueDescriptor<V,? extends IValueBuilder<V>> type)
- Type Parameters:
V
- Common type of the tuple elements.- Parameters:
count
- Number of elements in the tuple.type
- Descriptor for each element in the tuple.- Returns:
- A descriptor for a tuple value of the given length and where each element has the same type. Each tuple element defaults to the default value of the given descriptor.
-
tupleOfSame
default ITupleValueDescriptor tupleOfSame(int count, IValueDescriptorCreator creator)
- Parameters:
count
- Number of elements in the tuple.creator
- Creates the descriptor for each element in the tuple.- Returns:
- A descriptor for a tuple value of the given length and where each element has the same type. Each tuple element defaults to the default value of the given descriptor.
-
unionBuilder
<D> IUnionValueDescriptorBuilder<D> unionBuilder(Class<D> discriminatorClass)
- Type Parameters:
D
- Type of the objects used to discriminate between the union members.- Parameters:
discriminatorClass
- Class of the objects used to discriminate between the union members.- Returns:
- A descriptor builder for a union value that uses instances of the given type as discriminators.
-
unionEmpty
default <D> IUnionValueDescriptor<D> unionEmpty()
- Returns:
- An empty union type, the same as
nullish()
.
-
unionEnumBuilder
default <E extends Enum<E>> IUnionValueDescriptorBuilder<E> unionEnumBuilder(Class<E> discriminatorClass)
- Type Parameters:
E
- Type of the enum constant used to discriminate between the union members.- Parameters:
discriminatorClass
- Class of the enum constant used to discriminate between the union members.- Returns:
- A descriptor builder for a union value that uses enum constants of the given type as discriminators.
-
unionOfEnumConst
default <E extends Enum<E>> IUnionValueDescriptor<E> unionOfEnumConst(Class<E> enumClass)
- Type Parameters:
E
- Type of the enum constants that are put in a union.- Parameters:
enumClass
- Class of the enum constants that are put in a union.- Returns:
- A descriptor for a union value that consists of all enum constants. Uses the enum constants as the discriminator.
-
unionOfEnumConst
default <E extends Enum<E>> IUnionValueDescriptor<E> unionOfEnumConst(Class<E> enumClass, E defaultValue)
- Type Parameters:
E
- Type of the enum constants that are put in a union.- Parameters:
enumClass
- Class of the enum constants that are put in a union.defaultValue
- Default value of the union.- Returns:
- A descriptor for a union value that consists of all enum constants. Uses the enum constants as the discriminator.
-
unionOfEnumConstBuilder
default <E extends Enum<E>> IUnionValueDescriptorBuilder<E> unionOfEnumConstBuilder(Class<E> enumClass)
- Type Parameters:
E
- Type of the enum constants that are put in a union.- Parameters:
enumClass
- Class of the enum constants that are put in a union.- Returns:
- A descriptor builder for a union value that consists of all enum constants. Uses the enum constants as the discriminator.
-
unionOfEnumConstBuilder
default <E extends Enum<E>> IUnionValueDescriptorBuilder<E> unionOfEnumConstBuilder(Class<E> enumClass, E defaultValue)
- Type Parameters:
E
- Type of the enum constants that are put in a union.- Parameters:
enumClass
- Class of the enum constants that are put in a union.defaultValue
- Default value of the union.- Returns:
- A descriptor builder for a union value that consists of all enum constants. Uses the enum constants as the discriminator.
-
unionOfStringConst
default <E extends Enum<E>> IUnionValueDescriptor<String> unionOfStringConst(Class<E> enumClass)
- Type Parameters:
E
- Type of the enum constants that are put in a union.- Parameters:
enumClass
- Class of the enum constants that are put in a union.- Returns:
- A descriptor for a union value that consists of all enum constants names. Uses the enum constants names as the discriminator.
-
unionOfStringConst
default <E extends Enum<E>> IUnionValueDescriptor<String> unionOfStringConst(Class<E> enumClass, E defaultValue)
- Type Parameters:
E
- Type of the enum constants that are put in a union.- Parameters:
enumClass
- Class of the enum constants that are put in a union.defaultValue
- Default value of the union.- Returns:
- A descriptor for a union value that consists of all enum constants names. Uses the enum constants names as the discriminator.
-
unionOfStringConst
default IUnionValueDescriptor<String> unionOfStringConst(String first, String... moreStrings)
- Parameters:
first
- First string in the union. This is also the default value.moreStrings
- More strings in the union.- Returns:
- A value descriptor that represents the algebraic sum type
"string1" | "string2" | "string3" | ...
.
-
unionOfStringConstBuilder
default <E extends Enum<E>> IUnionValueDescriptorBuilder<String> unionOfStringConstBuilder(Class<E> enumClass)
- Type Parameters:
E
- Type of the enum constants that are put in a union.- Parameters:
enumClass
- Class of the enum constants that are put in a union.- Returns:
- A descriptor builder for a union value that consists of all enum constants names. Uses the enum constants names as the discriminator.
-
unionOfStringConstBuilder
default <E extends Enum<E>> IUnionValueDescriptorBuilder<String> unionOfStringConstBuilder(Class<E> enumClass, E defaultValue)
- Type Parameters:
E
- Type of the enum constants that are put in a union.- Parameters:
enumClass
- Class of the enum constants that are put in a union.defaultValue
- Default value of the union.- Returns:
- A descriptor builder for a union value that consists of all enum constants names. Uses the enum constants names as the discriminator.
-
unionOfStringConstBuilder
default IUnionValueDescriptorBuilder<String> unionOfStringConstBuilder(String first, String... moreStrings)
- Parameters:
first
- First string in the union. This is also the default value.moreStrings
- More strings in the union.- Returns:
- A value descriptor builder that represents the algebraic sum type
"string1" | "string2" | "string3" | ...
.
-
unionStringBuilder
default IUnionValueDescriptorBuilder<String> unionStringBuilder()
- Returns:
- A descriptor builder for a union value that uses string constants as discriminators.
-
voidish
IVoidValueDescriptor voidish()
- Returns:
- A value descriptor for a void result. This is valid only as a root value for the return value of a method.
-
-