Package weka.core

Class SerializationHelper

  • All Implemented Interfaces:
    RevisionHandler

    public class SerializationHelper
    extends Object
    implements RevisionHandler
    A helper class for determining serialVersionUIDs and checking whether classes contain one and/or need one. One can also serialize and deserialize objects to and from files or streams.
    Version:
    $Revision$
    Author:
    fracpete (fracpete at waikato dot ac dot nz)
    • Field Detail

      • SERIAL_VERSION_UID

        public static final String SERIAL_VERSION_UID
        the field name of serialVersionUID.
        See Also:
        Constant Field Values
    • Constructor Detail

      • SerializationHelper

        public SerializationHelper()
    • Method Detail

      • isSerializable

        public static boolean isSerializable​(String classname)
        checks whether a class is serializable.
        Parameters:
        classname - the class to check
        Returns:
        true if the class or one of its ancestors implements the Serializable interface, otherwise false (also if the class cannot be loaded)
      • isSerializable

        public static boolean isSerializable​(Class<?> c)
        checks whether a class is serializable.
        Parameters:
        c - the class to check
        Returns:
        true if the class or one of its ancestors implements the Serializable interface, otherwise false
      • hasUID

        public static boolean hasUID​(String classname)
        checks whether the given class contains a serialVersionUID.
        Parameters:
        classname - the class to check
        Returns:
        true if the class contains a serialVersionUID, otherwise false (also if the class is not implementing serializable or cannot be loaded)
      • hasUID

        public static boolean hasUID​(Class<?> c)
        checks whether the given class contains a serialVersionUID.
        Parameters:
        c - the class to check
        Returns:
        true if the class contains a serialVersionUID, otherwise false (also if the class is not implementing serializable)
      • needsUID

        public static boolean needsUID​(String classname)
        checks whether a class needs to declare a serialVersionUID, i.e., it implements the java.io.Serializable interface but doesn't declare a serialVersionUID.
        Parameters:
        classname - the class to check
        Returns:
        true if the class needs to declare one, false otherwise (also if the class cannot be loaded!)
      • needsUID

        public static boolean needsUID​(Class<?> c)
        checks whether a class needs to declare a serialVersionUID, i.e., it implements the java.io.Serializable interface but doesn't declare a serialVersionUID.
        Parameters:
        c - the class to check
        Returns:
        true if the class needs to declare one, false otherwise
      • getUID

        public static long getUID​(String classname)
        reads or creates the serialVersionUID for the given class.
        Parameters:
        classname - the class to get the serialVersionUID for
        Returns:
        the UID, 0L for non-serializable classes (or if the class cannot be loaded)
      • getUID

        public static long getUID​(Class<?> c)
        reads or creates the serialVersionUID for the given class.
        Parameters:
        c - the class to get the serialVersionUID for
        Returns:
        the UID, 0L for non-serializable classes
      • write

        public static void write​(String filename,
                                 Object o)
                          throws Exception
        serializes the given object to the specified file.
        Parameters:
        filename - the file to write the object to
        o - the object to serialize
        Throws:
        Exception - if serialization fails
      • write

        public static void write​(OutputStream stream,
                                 Object o)
                          throws Exception
        serializes the given object to the specified stream.
        Parameters:
        stream - the stream to write the object to
        o - the object to serialize
        Throws:
        Exception - if serialization fails
      • writeAll

        public static void writeAll​(String filename,
                                    Object[] o)
                             throws Exception
        serializes the given objects to the specified file.
        Parameters:
        filename - the file to write the object to
        o - the objects to serialize
        Throws:
        Exception - if serialization fails
      • writeAll

        public static void writeAll​(OutputStream stream,
                                    Object[] o)
                             throws Exception
        serializes the given objects to the specified stream.
        Parameters:
        stream - the stream to write the object to
        o - the objects to serialize
        Throws:
        Exception - if serialization fails
      • read

        public static Object read​(String filename)
                           throws Exception
        deserializes the given file and returns the object from it.
        Parameters:
        filename - the file to deserialize from
        Returns:
        the deserialized object
        Throws:
        Exception - if deserialization fails
      • read

        public static Object read​(InputStream stream)
                           throws Exception
        deserializes from the given stream and returns the object from it.
        Parameters:
        stream - the stream to deserialize from
        Returns:
        the deserialized object
        Throws:
        Exception - if deserialization fails
      • checkForThirdPartyClass

        public static ClassLoader checkForThirdPartyClass​(String className,
                                                          WekaPackageLibIsolatingClassLoader l)
        Checks to see if the supplied package class loader (or any of its dependent package class loaders) has the given third party class.
        Parameters:
        className - the name of the third-party class to check for
        l - the third party class loader
        Returns:
        the class loader that owns the named third-party class, or null if not found.
      • getObjectInputStream

        public static ObjectInputStream getObjectInputStream​(InputStream stream)
                                                      throws IOException
        Get a (Weka package classloader aware) ObjectInputStream instance for reading objects from the supplied input stream
        Parameters:
        stream - the stream to wrap
        Returns:
        an ObjectInputStream instance that is aware of of Weka package classloaders
        Throws:
        IOException - if a problem occurs
      • readAll

        public static Object[] readAll​(String filename)
                                throws Exception
        deserializes the given file and returns the objects from it.
        Parameters:
        filename - the file to deserialize from
        Returns:
        the deserialized objects
        Throws:
        Exception - if deserialization fails
      • readAll

        public static Object[] readAll​(InputStream stream)
                                throws Exception
        deserializes from the given stream and returns the object from it.
        Parameters:
        stream - the stream to deserialize from
        Returns:
        the deserialized object
        Throws:
        Exception - if deserialization fails
      • main

        public static void main​(String[] args)
                         throws Exception
        Outputs information about a class on the commandline, takes class name as arguments.
        Parameters:
        args - the classnames to check
        Throws:
        Exception - if something goes wrong