Skip to content

Add hasSerialVersionUIDField() #11

@sdavids

Description

@sdavids

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;
    }
}

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions