Package weka.core

# Class SerializationHelper

java.lang.Object
weka.core.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: 14293 $
Author:
  fracpete (fracpete at waikato dot ac dot nz)

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final String`
  `SERIAL_VERSION_UID`
  the field name of serialVersionUID.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `SerializationHelper()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `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.
  `static ObjectInputStream`
  `getObjectInputStream(InputStream stream)`
  Get a (Weka package classloader aware) `ObjectInputStream` instance for reading objects from the supplied input stream
  `String`
  `getRevision()`
  Returns the revision string.
  `static long`
  `getUID(Class<?> c)`
  reads or creates the serialVersionUID for the given class.
  `static long`
  `getUID(String classname)`
  reads or creates the serialVersionUID for the given class.
  `static boolean`
  `hasUID(Class<?> c)`
  checks whether the given class contains a serialVersionUID.
  `static boolean`
  `hasUID(String classname)`
  checks whether the given class contains a serialVersionUID.
  `static boolean`
  `isSerializable(Class<?> c)`
  checks whether a class is serializable.
  `static boolean`
  `isSerializable(String classname)`
  checks whether a class is serializable.
  `static void`
  `main(String[] args)`
  Outputs information about a class on the commandline, takes class name as arguments.
  `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.
  `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.
  `static Object`
  `read(InputStream stream)`
  deserializes from the given stream and returns the object from it.
  `static Object`
  `read(String filename)`
  deserializes the given file and returns the object from it.
  `static Object[]`
  `readAll(InputStream stream)`
  deserializes from the given stream and returns the object from it.
  `static Object[]`
  `readAll(String filename)`
  deserializes the given file and returns the objects from it.
  `static void`
  `write(OutputStream stream, Object o)`
  serializes the given object to the specified stream.
  `static void`
  `write(String filename, Object o)`
  serializes the given object to the specified file.
  `static void`
  `writeAll(OutputStream stream, Object[] o)`
  serializes the given objects to the specified stream.
  `static void`
  `writeAll(String filename, Object[] o)`
  serializes the given objects to the specified file.

  ### Methods inherited from class java.lang.Object

  `equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Field Details

  - ### SERIAL_VERSION_UID

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

- ## Constructor Details

  - ### SerializationHelper

    public SerializationHelper()

- ## Method Details

  - ### 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

  - ### getRevision

    public String getRevision()
    Returns the revision string.
    Specified by:
      `getRevision` in interface `RevisionHandler`
    Returns:
      the revision

  - ### 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