Support @Name meta-annotations with Kotlin binding
Update `ValueObjectBinder` Kotlin support to meta-annotations of `@Named`. See gh-24379
This commit is contained in:
parent
32e1289bbc
commit
14816a6b6c
|
@ -190,6 +190,8 @@ class ValueObjectBinder implements DataObjectBinder {
|
|||
*/
|
||||
private static final class KotlinValueObject<T> extends ValueObject<T> {
|
||||
|
||||
private static final Annotation[] ANNOTATION_ARRAY = new Annotation[0];
|
||||
|
||||
private final List<ConstructorParameter> constructorParameters;
|
||||
|
||||
private KotlinValueObject(Constructor<T> primaryConstructor, KFunction<T> kotlinConstructor,
|
||||
|
@ -206,15 +208,15 @@ class ValueObjectBinder implements DataObjectBinder {
|
|||
String name = getParameterName(parameter);
|
||||
ResolvableType parameterType = ResolvableType
|
||||
.forType(ReflectJvmMapping.getJavaType(parameter.getType()), type);
|
||||
Annotation[] annotations = parameter.getAnnotations().toArray(new Annotation[0]);
|
||||
Annotation[] annotations = parameter.getAnnotations().toArray(ANNOTATION_ARRAY);
|
||||
result.add(new ConstructorParameter(name, parameterType, annotations));
|
||||
}
|
||||
return Collections.unmodifiableList(result);
|
||||
}
|
||||
|
||||
private String getParameterName(KParameter parameter) {
|
||||
return parameter.getAnnotations().stream().filter(Name.class::isInstance).findFirst().map(Name.class::cast)
|
||||
.map(Name::value).orElse(parameter.getName());
|
||||
return MergedAnnotations.from(parameter, parameter.getAnnotations().toArray(ANNOTATION_ARRAY))
|
||||
.get(Name.class).getValue(MergedAnnotation.VALUE, String.class).orElseGet(parameter::getName);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
Loading…
Reference in New Issue