-
Notifications
You must be signed in to change notification settings - Fork 13
Open
Labels
Description
A lot of beans are also Serializable.
Please consider a matcher for checking whether an explicit serialVersionUID has been set.
@Factory
public static Matcher<Class<?>> hasSerialVersionUIDField() {
return new HasSerialVersionUIDFieldMatcher();
}
public final class HasSerialVersionUIDFieldMatcher extends TypeSafeDiagnosingMatcher<Class<?>> {
@Override
protected boolean matchesSafely(Class<?> item, Description mismatchDescription) {
boolean hasExplicitSerialVersionUIDField = hasExplicitSerialVersionUIDField(item);
if (!hasExplicitSerialVersionUIDField) {
mismatchDescription
.appendText("bean of type ")
.appendValue(item.getName())
.appendText(" does not have a serialVersionUID field");
}
return hasExplicitSerialVersionUIDField;
}
@Override
public void describeTo(Description description) {
description.appendText("bean class has a serialVersionUID field");
}
private boolean hasExplicitSerialVersionUIDField(Class<?> item) {
try {
item.getDeclaredField("serialVersionUID");
} catch (NoSuchFieldException ignored) {
return false;
}
return true;
}
}
Reactions are currently unavailable