|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectcom.aliasi.util.AbstractExternalizable
public abstract class AbstractExternalizable
The AbstractExternalizer is an adapter for read
resolved externalizables. This provides a general mechanism to
write objects to an object output and read them back in. Instances
of this class may be written and read from object streams in the
usual way (see Serializable, Externalizable, ObjectInput and ObjectOutput for details.
Concrete subclasses of this class will define a writeExternal(ObjectOutput) method which writes an object, a read(ObjectInput) method which returns an object. Subclasses must
also implement a public nullary constructor. None of the
methods in this class should be called directly. The Java
interface specification requires the reads and writes to be public
and the resolver to be accessible to the subclass.
When an instance of this class is written to an object output by
serialization, the method writeExternal(ObjectOutput) is
called. When an instance is read back in by deserialization, first
an instance is created using the nullary constructor. Then readExternal(ObjectInput) is called, which is implemented by this
class to call read(ObjectInput) and store the result in a
member variable. Finally, serialization calls readResolve() to get the object read.
This class is employed throughout LingPipe to carry out
compilation of classes for two reasons. First, it allows the
compiled objects to have final variables set, which supports
LingPipe's extensive use of immutables. Second, it avaoids the
messiness of exposing the I/O methods required for externalization
and deserialization, most notably the no-argument constructor.
This class is used as the superclass of a private
private internal class that does the actual compilation. This
private internal class implements the required no-arg constructor
and stores the object required for readResolve().
| Constructor Summary | |
|---|---|
protected |
AbstractExternalizable()
Construct an abstract externalizable. |
| Method Summary | |
|---|---|
static Object |
compile(Compilable c)
Return the compiled form of the specified compilable. |
static void |
compileOrSerialize(Object obj,
ObjectOutput out)
Compile the object to the output if it is compilable, else serialize it to the output if it is serializable but not compilable. |
static void |
compileTo(Compilable compilable,
File file)
Compiles the specified compilable object to the specified file. |
protected abstract Object |
read(ObjectInput in)
Read an object from the specified input stream and return it. |
void |
readExternal(ObjectInput objIn)
Read an object from the specified input using and store it for later resolution. |
static Object |
readObject(File file)
Returns the result of reading a serialized object stored in the specified file. |
protected Object |
readResolve()
Returns the object read. |
static Object |
serializeDeserialize(Serializable s)
Returns the result of serializing the specified object and then reading the result as an object. |
static void |
serializeOrCompile(Object obj,
ObjectOutput out)
Serialize the object to the output if it is serializable, else compile it to the output if it is compilable but not serializable. |
static void |
serializeTo(Serializable serializable,
File file)
Serializes the specified serializable object to the specified file. |
abstract void |
writeExternal(ObjectOutput out)
Writes an object to the specified object output. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
protected AbstractExternalizable()
InvalidClassException when it attempts
to invoke the no-argument constructor through reflection.
Like the other methods, this method should not be called directly. See the class documentation above for details.
| Method Detail |
|---|
protected abstract Object read(ObjectInput in)
throws ClassNotFoundException,
IOException
Like the other methods, this method should not be called directly. See the class documentation above for details.
in - Object input from which to read an object.
IOException - If there is an I/O exception reading.
ClassNotFoundException - If a class required for
deserialization is not loadable.
public abstract void writeExternal(ObjectOutput out)
throws IOException
read(ObjectInput).
Like the other methods, this method should not be called directly. See the class documentation above for details.
writeExternal in interface Externalizableout - Object output to which an object is written.
IOException - If there is an I/O exception writing.
public final void readExternal(ObjectInput objIn)
throws ClassNotFoundException,
IOException
Like the other methods, this method should not be called directly. See the class documentation above for details.
readExternal in interface ExternalizableobjIn - Object input from which to read an object.
IOException - If there is an I/O exception reading.
ClassNotFoundExceptionprotected Object readResolve()
Like the other methods, this method should not be called directly. See the class documentation above for details.
public static void compileTo(Compilable compilable,
File file)
throws IOException
compilable - Object to compile.file - File to which object is written.
IOException - If there is an underlying I/O error.
public static void serializeTo(Serializable serializable,
File file)
throws IOException
serializable - Object to serialize.file - File to which the object is serialized.
IOException - If there is an underlying I/O error duruing
serialization.
public static void serializeOrCompile(Object obj,
ObjectOutput out)
throws IOException
obj - Object to serialize or compile.out - Output stream to which to write the object.
IllegalArgumentException - If the specified object is
neither serializable nor compilable.
IOException
public static void compileOrSerialize(Object obj,
ObjectOutput out)
throws IOException
obj - Object to compile or serializable.out - Output stream to which to write the object.
IllegalArgumentException - If the specified object is
neither serializable nor compilable.
IOException
public static Object readObject(File file)
throws IOException,
ClassNotFoundException
Implementation Note: This is just a convenience method that creates a file input stream, buffers it, wraps it in an object input stream and reads an object from the input. It always makes sure to close all of the stream, even if exceptions are raised.
file - File from which to read the object.
IOException - If there is an underlying I/O error while
reading.
ClassNotFoundException - If the classloader could not load
the class for the serialized object.
public static Object compile(Compilable c)
throws ClassNotFoundException,
IOException
See serializeDeserialize(Serializable) for
a similar method that operates through the Serializable
interface rather than the compilable interface.
Implementation Note: The model is written to a byte
array using compileTo and then read back in using
ObjectInput's readObject method.
This means that both the object being compiled and the result
will typically be held in memory at one time. After compiling
to a file, the object being compiled may be garbage collected
before the compiled object is read in from the file.
c - Object to compile.
ClassNotFoundException - If the class of the compiled object
cannot be found.
IOException - If there is an I/O exception compiling or
deserializing the compilable, or if there is a class not found
exception thrown while deserializing.
public static Object serializeDeserialize(Serializable s)
throws IOException
See compile(Compilable) for
a similar method that operates through the compilable
interface rather than the serializable interface.
Implementation Note: See the note for compile(Compilable).
s - A serializable object.
IOException - If there is an I/O exception serializing or
deserializing the object, or if there is a class not found exception
thrown while deserializing.
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||