All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.marketcetera.util.test.SerializableAssert Maven / Gradle / Ivy

The newest version!
package org.marketcetera.util.test;

import java.io.Serializable;
import org.apache.commons.lang.ObjectUtils;
import org.apache.commons.lang.SerializationException;
import org.apache.commons.lang.SerializationUtils;

/**
 * Assertions for serialization.
 * 
 * @author [email protected]
 * @since 1.0.0
 * @version $Id$
 */

/* $License$ */

public final class SerializableAssert
{

    // CLASS METHODS.

    /**
     * Asserts that the given object serializes correctly, i.e. the
     * deserialized version of the object is equal to the original
     * object. If the assertion does not hold, the {@link
     * AssertionError} thrown starts with the given message, which may
     * be null if no such custom message prefix is desired.
     *
     * @param message The message.
     * @param o The object.
     */

    public static void assertSerializable
        (String message,
         Serializable o)
    {
        String content=null;
        SerializationException cause=null;
        try {
            Object oNew=SerializationUtils.deserialize
                (SerializationUtils.serialize(o));
            if (ObjectUtils.equals(o,oNew)) {
                return;
            }
            content="expected object is '"+o+ //$NON-NLS-1$
                "' actual is '"+oNew+"'"; //$NON-NLS-1$ //$NON-NLS-2$
        } catch (SerializationException ex) {
            content="de/serialization failed"; //$NON-NLS-1$
            cause=ex;
        }
        if (message!=null) {
            content=message+" "+content; //$NON-NLS-1$
        }
        AssertionError error=new AssertionError(content);
        if (cause!=null) {
            error.initCause(cause);
        }
        throw error;
    }

    /**
     * Asserts that the given object serializes correctly, i.e. the
     * deserialized version of the object is equal to the original
     * object.
     *
     * @param o The object.
     */

    public static void assertSerializable
        (Serializable o)
    {
        assertSerializable(null,o);
    }


    // CONSTRUCTOR.

    /**
     * Constructor. It is private so that no instances can be created.
     */

    private SerializableAssert() {}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy