/** * Returns {@literal true} if {@code type} is a reactive wrapper type that contains no value. * * @param type must not be {@literal null}. * @return {@literal true} if {@code type} is a reactive wrapper type that contains no value. */ public static boolean isNoValueType(Class<?> type) { Assert.notNull(type, "Candidate type must not be null!"); return findDescriptor(type).map(ReactiveTypeDescriptor::isNoValue).orElse(false); }
/** * Returns {@literal true} if {@code type} is a reactive wrapper type supporting multiple values ({@code 0..N} * elements). * * @param type must not be {@literal null}. * @return {@literal true} if {@code type} is a reactive wrapper type supporting multiple values ({@code 0..N} * elements). */ public static boolean isMultiValueType(Class<?> type) { Assert.notNull(type, "Candidate type must not be null!"); // Prevent single-types with a multi-hierarchy supertype to be reported as multi type // See Mono implements Publisher return isSingleValueType(type) ? false : findDescriptor(type).map(ReactiveTypeDescriptor::isMultiValue).orElse(false); }
/** * Returns {@literal true} if {@code type} is a reactive wrapper type for a single value. * * @param type must not be {@literal null}. * @return {@literal true} if {@code type} is a reactive wrapper type for a single value. */ public static boolean isSingleValueType(Class<?> type) { Assert.notNull(type, "Candidate type must not be null!"); return findDescriptor(type).map(it -> !it.isMultiValue() && !it.isNoValue()).orElse(false); }