Schema: Refactor lambda in buildFields to a separate function
Change-Id: I70110e998d2b69a414df5bee0d97fe5732558af4
This commit is contained in:
@@ -176,6 +176,27 @@ public class Schema<T> {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Values<T> fieldValues(T obj, FieldDef<T, ?> f, ImmutableSet<String> skipFields) {
|
||||||
|
if (skipFields.contains(f.getName())) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
Object v;
|
||||||
|
try {
|
||||||
|
v = f.get(obj);
|
||||||
|
} catch (RuntimeException e) {
|
||||||
|
logger.atSevere().withCause(e).log("error getting field %s of %s", f.getName(), obj);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
if (v == null) {
|
||||||
|
return null;
|
||||||
|
} else if (f.isRepeatable()) {
|
||||||
|
return new Values<>(f, (Iterable<?>) v);
|
||||||
|
} else {
|
||||||
|
return new Values<>(f, Collections.singleton(v));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Build all fields in the schema from an input object.
|
* Build all fields in the schema from an input object.
|
||||||
*
|
*
|
||||||
@@ -187,28 +208,7 @@ public class Schema<T> {
|
|||||||
*/
|
*/
|
||||||
public final Iterable<Values<T>> buildFields(T obj, ImmutableSet<String> skipFields) {
|
public final Iterable<Values<T>> buildFields(T obj, ImmutableSet<String> skipFields) {
|
||||||
return fields.values().stream()
|
return fields.values().stream()
|
||||||
.map(
|
.map(f -> fieldValues(obj, f, skipFields))
|
||||||
f -> {
|
|
||||||
if (skipFields.contains(f.getName())) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
Object v;
|
|
||||||
try {
|
|
||||||
v = f.get(obj);
|
|
||||||
} catch (RuntimeException e) {
|
|
||||||
logger.atSevere().withCause(e).log(
|
|
||||||
"error getting field %s of %s", f.getName(), obj);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
if (v == null) {
|
|
||||||
return null;
|
|
||||||
} else if (f.isRepeatable()) {
|
|
||||||
return new Values<>(f, (Iterable<?>) v);
|
|
||||||
} else {
|
|
||||||
return new Values<>(f, Collections.singleton(v));
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.filter(Objects::nonNull)
|
.filter(Objects::nonNull)
|
||||||
.collect(toImmutableList());
|
.collect(toImmutableList());
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user