interface SqmFunctionTemplateRegistry {
void register(String name, SqmFunctionTemplate functionTemplate);
SqmFunctionTemplateBuilder patternTemplateBuilder(String name, String pattern);
...
}
interface SqmFunctionTemplateBuilder {
default SqmFunctionTemplateBuilder minArgumentCount(int minCount) {
return argumentValidator( ArgumentsValidator.min( minCount ) );
}
default SqmFunctionTemplateBuilder maxArgumentCount(int maxCount) {
return argumentValidator( ArgumentsValidator.max( minCount ) );
}
default SqmFunctionTemplateBuilder ofTypes(Class<?>... types) {
return argumentValidator( ArgumentsValidator.types( types ) );
}
default SqmFunctionTemplateBuilder ofType(Class<?> type) {
return argumentValidator( ArgumentsValidator.type( type ) );
}
SqmFunctionTemplateBuilder argumentValidator(ArgumentValidator validator);
SqmFunctionTemplateBuilder functionReturn(Class<?> javaType);
...
void register();
}