Use java-8 functionals in FormFields

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=193407158
This commit is contained in:
guyben 2018-04-18 13:29:00 -07:00 committed by jianglai
parent 0f2a1bfccd
commit b885d01c0c

View file

@ -266,9 +266,7 @@ public final class FormField<I, O> {
/** Ensure value is not {@code null}. */ /** Ensure value is not {@code null}. */
public Builder<I, O> required() { public Builder<I, O> required() {
@SuppressWarnings("unchecked") return transform(Builder::checkNotNullTransform);
Function<O, O> requiredFunction = (Function<O, O>) REQUIRED_FUNCTION;
return transform(requiredFunction);
} }
/** /**
@ -280,17 +278,12 @@ public final class FormField<I, O> {
public Builder<I, O> emptyToNull() { public Builder<I, O> emptyToNull() {
checkState(CharSequence.class.isAssignableFrom(typeOut) checkState(CharSequence.class.isAssignableFrom(typeOut)
|| Collection.class.isAssignableFrom(typeOut)); || Collection.class.isAssignableFrom(typeOut));
@SuppressWarnings("unchecked") return transform(
Function<O, O> emptyToNullFunction =
(Function<O, O>)
((Function<Object, Object>)
input -> input ->
((input instanceof CharSequence) && (((CharSequence) input).length() == 0)) ((input instanceof CharSequence) && (((CharSequence) input).length() == 0))
|| ((input instanceof Collection) || ((input instanceof Collection) && ((Collection<?>) input).isEmpty())
&& ((Collection<?>) input).isEmpty())
? null ? null
: input); : input);
return transform(emptyToNullFunction);
} }
/** /**
@ -560,13 +553,12 @@ public final class FormField<I, O> {
return new FormField<>(name, typeIn, typeOut, converter); return new FormField<>(name, typeIn, typeOut, converter);
} }
private static final Function<Object, Object> REQUIRED_FUNCTION = private static <O> O checkNotNullTransform(@Nullable O input) {
input -> {
if (input == null) { if (input == null) {
throw new FormFieldException("This field is required."); throw new FormFieldException("This field is required.");
} }
return input; return input;
}; }
private static final class DefaultFunction<O> implements Function<O, O> { private static final class DefaultFunction<O> implements Function<O, O> {
private final O defaultValue; private final O defaultValue;