Marshalling API version 1.0.0.GA

org.jboss.marshalling
Class AbstractMarshaller

java.lang.Object
  extended by org.jboss.marshalling.AbstractMarshaller
All Implemented Interfaces:
Closeable, DataOutput, Flushable, ObjectOutput, ByteOutput, Marshaller

public abstract class AbstractMarshaller
extends Object
implements Marshaller

An abstract implementation of the Marshaller interface. Most of the write methods delegate directly to the current data output.


Field Summary
protected  ByteOutput byteOutput
          The current byte output.
protected  ClassResolver classResolver
          The configured class resolver.
protected  ClassTable classTable
          The configured class table.
protected  Creator creator
          The configured object creator.
protected  ExternalizerFactory externalizerFactory
          The configured externalizer factory.
protected  ObjectResolver objectResolver
          The configured object resolver.
protected  ObjectTable objectTable
          The configured object table.
protected  StreamHeader streamHeader
          The configured stream header.
 
Constructor Summary
protected AbstractMarshaller(AbstractMarshallerFactory marshallerFactory, MarshallingConfiguration configuration)
          Construct a new marshaller instance.
 
Method Summary
 void close()
          Closes the stream.
protected  void doStart()
          Perform any marshaller-specific start activity.
protected abstract  void doWriteObject(Object obj, boolean unshared)
          Implementation of the actual object-writing method.
 void finish()
          Finish marshalling to a stream.
 void flush()
          Flushes the stream.
 void start(ByteOutput byteOutput)
          Begin marshalling to a stream.
 void write(byte[] bytes)
          Writes an array of bytes.
 void write(byte[] bytes, int off, int len)
          Writes a sub array of bytes.
 void write(int v)
          Writes a byte.
 void writeBoolean(boolean v)
          Writes a boolean value to this output stream.
 void writeByte(int v)
          Writes to the output stream the eight low- order bits of the argument v.
 void writeBytes(String s)
          Writes a string to the output stream.
 void writeChar(int v)
          Writes a char value, which is comprised of two bytes, to the output stream.
 void writeChars(String s)
          Writes every character in the string s, to the output stream, in order, two bytes per character.
 void writeDouble(double v)
          Writes a double value, which is comprised of eight bytes, to the output stream.
 void writeFloat(float v)
          Writes a float value, which is comprised of four bytes, to the output stream.
 void writeInt(int v)
          Writes an int value, which is comprised of four bytes, to the output stream.
 void writeLong(long v)
          Writes a long value, which is comprised of eight bytes, to the output stream.
 void writeObject(Object obj)
          Write an object to the underlying storage or stream.
 void writeObjectUnshared(Object obj)
          Write an object to the underlying storage or stream as a new instance.
 void writeShort(int v)
          Writes two bytes to the output stream to represent the value of the argument.
 void writeUTF(String s)
          Writes two bytes of length information to the output stream, followed by the modified UTF-8 representation of every character in the string s.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.jboss.marshalling.Marshaller
clearClassCache, clearInstanceCache
 

Field Detail

externalizerFactory

protected final ExternalizerFactory externalizerFactory
The configured externalizer factory.


streamHeader

protected final StreamHeader streamHeader
The configured stream header.


classResolver

protected final ClassResolver classResolver
The configured class resolver.


objectResolver

protected final ObjectResolver objectResolver
The configured object resolver.


creator

protected final Creator creator
The configured object creator.


classTable

protected final ClassTable classTable
The configured class table.


objectTable

protected final ObjectTable objectTable
The configured object table.


byteOutput

protected ByteOutput byteOutput
The current byte output.

Constructor Detail

AbstractMarshaller

protected AbstractMarshaller(AbstractMarshallerFactory marshallerFactory,
                             MarshallingConfiguration configuration)
Construct a new marshaller instance.

Parameters:
marshallerFactory - the marshaller factory
configuration -
Method Detail

write

public void write(int v)
           throws IOException
Writes a byte. This method will block until the byte is actually written.

Specified by:
write in interface DataOutput
Specified by:
write in interface ObjectOutput
Specified by:
write in interface ByteOutput
Parameters:
v - the byte
Throws:
IOException - If an I/O error has occurred.

write

public void write(byte[] bytes)
           throws IOException
Writes an array of bytes. This method will block until the bytes are actually written.

Specified by:
write in interface DataOutput
Specified by:
write in interface ObjectOutput
Specified by:
write in interface ByteOutput
Parameters:
bytes - the data to be written
Throws:
IOException - If an I/O error has occurred.

write

public void write(byte[] bytes,
                  int off,
                  int len)
           throws IOException
Writes a sub array of bytes.

Specified by:
write in interface DataOutput
Specified by:
write in interface ObjectOutput
Specified by:
write in interface ByteOutput
Parameters:
bytes - the data to be written
off - the start offset in the data
len - the number of bytes that are written
Throws:
IOException - If an I/O error has occurred.

writeBoolean

public void writeBoolean(boolean v)
                  throws IOException
Writes a boolean value to this output stream. If the argument v is true, the value (byte)1 is written; if v is false, the value (byte)0 is written. The byte written by this method may be read by the readBoolean method of interface DataInput, which will then return a boolean equal to v.

Specified by:
writeBoolean in interface DataOutput
Parameters:
v - the boolean to be written.
Throws:
IOException - if an I/O error occurs.

writeByte

public void writeByte(int v)
               throws IOException
Writes to the output stream the eight low- order bits of the argument v. The 24 high-order bits of v are ignored. (This means that writeByte does exactly the same thing as write for an integer argument.) The byte written by this method may be read by the readByte method of interface DataInput, which will then return a byte equal to (byte)v.

Specified by:
writeByte in interface DataOutput
Parameters:
v - the byte value to be written.
Throws:
IOException - if an I/O error occurs.

writeShort

public void writeShort(int v)
                throws IOException
Writes two bytes to the output stream to represent the value of the argument. The byte values to be written, in the order shown, are:


 (byte)(0xff & (v >> 8))
 (byte)(0xff & v)
  

The bytes written by this method may be read by the readShort method of interface DataInput , which will then return a short equal to (short)v.

Specified by:
writeShort in interface DataOutput
Parameters:
v - the short value to be written.
Throws:
IOException - if an I/O error occurs.

writeChar

public void writeChar(int v)
               throws IOException
Writes a char value, which is comprised of two bytes, to the output stream. The byte values to be written, in the order shown, are:


 (byte)(0xff & (v >> 8))
 (byte)(0xff & v)
 

The bytes written by this method may be read by the readChar method of interface DataInput , which will then return a char equal to (char)v.

Specified by:
writeChar in interface DataOutput
Parameters:
v - the char value to be written.
Throws:
IOException - if an I/O error occurs.

writeInt

public void writeInt(int v)
              throws IOException
Writes an int value, which is comprised of four bytes, to the output stream. The byte values to be written, in the order shown, are:


 (byte)(0xff & (v >> 24))
 (byte)(0xff & (v >> 16))
 (byte)(0xff & (v >>    8))
 (byte)(0xff & v)
 

The bytes written by this method may be read by the readInt method of interface DataInput , which will then return an int equal to v.

Specified by:
writeInt in interface DataOutput
Parameters:
v - the int value to be written.
Throws:
IOException - if an I/O error occurs.

writeLong

public void writeLong(long v)
               throws IOException
Writes a long value, which is comprised of eight bytes, to the output stream. The byte values to be written, in the order shown, are:


 (byte)(0xff & (v >> 56))
 (byte)(0xff & (v >> 48))
 (byte)(0xff & (v >> 40))
 (byte)(0xff & (v >> 32))
 (byte)(0xff & (v >> 24))
 (byte)(0xff & (v >> 16))
 (byte)(0xff & (v >>  8))
 (byte)(0xff & v)
 

The bytes written by this method may be read by the readLong method of interface DataInput , which will then return a long equal to v.

Specified by:
writeLong in interface DataOutput
Parameters:
v - the long value to be written.
Throws:
IOException - if an I/O error occurs.

writeFloat

public void writeFloat(float v)
                throws IOException
Writes a float value, which is comprised of four bytes, to the output stream. It does this as if it first converts this float value to an int in exactly the manner of the Float.floatToIntBits method and then writes the int value in exactly the manner of the writeInt method. The bytes written by this method may be read by the readFloat method of interface DataInput, which will then return a float equal to v.

Specified by:
writeFloat in interface DataOutput
Parameters:
v - the float value to be written.
Throws:
IOException - if an I/O error occurs.

writeDouble

public void writeDouble(double v)
                 throws IOException
Writes a double value, which is comprised of eight bytes, to the output stream. It does this as if it first converts this double value to a long in exactly the manner of the Double.doubleToLongBits method and then writes the long value in exactly the manner of the writeLong method. The bytes written by this method may be read by the readDouble method of interface DataInput, which will then return a double equal to v.

Specified by:
writeDouble in interface DataOutput
Parameters:
v - the double value to be written.
Throws:
IOException - if an I/O error occurs.

writeBytes

public void writeBytes(String s)
                throws IOException
Writes a string to the output stream. For every character in the string s, taken in order, one byte is written to the output stream. If s is null, a NullPointerException is thrown.

If s.length is zero, then no bytes are written. Otherwise, the character s[0] is written first, then s[1], and so on; the last character written is s[s.length-1]. For each character, one byte is written, the low-order byte, in exactly the manner of the writeByte method . The high-order eight bits of each character in the string are ignored.

Specified by:
writeBytes in interface DataOutput
Parameters:
s - the string of bytes to be written.
Throws:
IOException - if an I/O error occurs.

writeChars

public void writeChars(String s)
                throws IOException
Writes every character in the string s, to the output stream, in order, two bytes per character. If s is null, a NullPointerException is thrown. If s.length is zero, then no characters are written. Otherwise, the character s[0] is written first, then s[1], and so on; the last character written is s[s.length-1]. For each character, two bytes are actually written, high-order byte first, in exactly the manner of the writeChar method.

Specified by:
writeChars in interface DataOutput
Parameters:
s - the string value to be written.
Throws:
IOException - if an I/O error occurs.

writeUTF

public void writeUTF(String s)
              throws IOException
Writes two bytes of length information to the output stream, followed by the modified UTF-8 representation of every character in the string s. If s is null, a NullPointerException is thrown. Each character in the string s is converted to a group of one, two, or three bytes, depending on the value of the character.

If a character c is in the range \u0001 through \u007f, it is represented by one byte:

(byte)c 

If a character c is \u0000 or is in the range \u0080 through \u07ff, then it is represented by two bytes, to be written in the order shown:


 (byte)(0xc0 | (0x1f & (c >> 6)))
 (byte)(0x80 | (0x3f & c))
  

If a character c is in the range \u0800 through uffff, then it is represented by three bytes, to be written in the order shown:


 (byte)(0xe0 | (0x0f & (c >> 12)))
 (byte)(0x80 | (0x3f & (c >>  6)))
 (byte)(0x80 | (0x3f & c))
  

First, the total number of bytes needed to represent all the characters of s is calculated. If this number is larger than 65535, then a UTFDataFormatException is thrown. Otherwise, this length is written to the output stream in exactly the manner of the writeShort method; after this, the one-, two-, or three-byte representation of each character in the string s is written.

The bytes written by this method may be read by the readUTF method of interface DataInput , which will then return a String equal to s.

Specified by:
writeUTF in interface DataOutput
Parameters:
s - the string value to be written.
Throws:
IOException - if an I/O error occurs.

flush

public void flush()
           throws IOException
Flushes the stream. This will write any buffered output bytes.

Specified by:
flush in interface Flushable
Specified by:
flush in interface ObjectOutput
Throws:
IOException - If an I/O error has occurred.

close

public void close()
           throws IOException
Closes the stream. This method must be called to release any resources associated with the stream.

Specified by:
close in interface Closeable
Specified by:
close in interface ObjectOutput
Throws:
IOException - If an I/O error has occurred.

start

public void start(ByteOutput byteOutput)
           throws IOException
Begin marshalling to a stream.

Specified by:
start in interface Marshaller
Parameters:
byteOutput - the new stream
Throws:
IOException - if an error occurs during setup, such as an error writing the header

finish

public void finish()
            throws IOException
Finish marshalling to a stream. Any transient class or instance cache is discarded. The stream is released. No further marshalling may be done until the Marshaller.start(ByteOutput) method is again invoked.

Specified by:
finish in interface Marshaller
Throws:
IOException - if an error occurs

doWriteObject

protected abstract void doWriteObject(Object obj,
                                      boolean unshared)
                               throws IOException
Implementation of the actual object-writing method.

Parameters:
obj - the object to write
unshared - true if the instance is unshared, false if it is shared
Throws:
IOException - if an I/O error occurs

writeObjectUnshared

public final void writeObjectUnshared(Object obj)
                               throws IOException
Write an object to the underlying storage or stream as a new instance. The class that implements this interface defines how the object is written.

Specified by:
writeObjectUnshared in interface Marshaller
Parameters:
obj - the object to be written
Throws:
IOException - if an error occurs

writeObject

public final void writeObject(Object obj)
                       throws IOException
Write an object to the underlying storage or stream. The class that implements this interface defines how the object is written.

Specified by:
writeObject in interface ObjectOutput
Parameters:
obj - the object to be written
Throws:
IOException - Any of the usual Input/Output related exceptions.

doStart

protected void doStart()
                throws IOException
Perform any marshaller-specific start activity. This implementation simply writes the stream header.

Throws:
IOException - if I/O exception occurs

Marshalling API version 1.0.0.GA

Copyright © 2008 JBoss, a division of Red Hat, Inc.