org.mozilla.javascript.serialize
Class ScriptableOutputStream

java.lang.Object
  |
  +--java.io.OutputStream
        |
        +--java.io.ObjectOutputStream
              |
              +--org.mozilla.javascript.serialize.ScriptableOutputStream
All Implemented Interfaces:
java.io.DataOutput, java.io.ObjectOutput, java.io.ObjectStreamConstants

public class ScriptableOutputStream
extends java.io.ObjectOutputStream

Class ScriptableOutputStream is an ObjectOutputStream used to serialize JavaScript objects and functions. Note that compiled functions currently cannot be serialized, only interpreted functions. The top-level scope containing the object is not written out, but is instead replaced with another top-level object when the ScriptableInputStream reads in this object. Also, object corresponding to names added to the exclude list are not written out but instead are looked up during deserialization. This approach avoids the creation of duplicate copies of standard objects during deserialization.

Author:
Norris Boyd

Inner classes inherited from class java.io.ObjectOutputStream
java.io.ObjectOutputStream.PutField
 
Fields inherited from interface java.io.ObjectStreamConstants
baseWireHandle, PROTOCOL_VERSION_1, PROTOCOL_VERSION_2, SC_BLOCK_DATA, SC_EXTERNALIZABLE, SC_SERIALIZABLE, SC_WRITE_METHOD, STREAM_MAGIC, STREAM_VERSION, SUBCLASS_IMPLEMENTATION_PERMISSION, SUBSTITUTION_PERMISSION, TC_ARRAY, TC_BASE, TC_BLOCKDATA, TC_BLOCKDATALONG, TC_CLASS, TC_CLASSDESC, TC_ENDBLOCKDATA, TC_EXCEPTION, TC_LONGSTRING, TC_MAX, TC_NULL, TC_OBJECT, TC_PROXYCLASSDESC, TC_REFERENCE, TC_RESET, TC_STRING
 
Constructor Summary
ScriptableOutputStream(java.io.OutputStream out, Scriptable scope)
          ScriptableOutputStream constructor.
 
Method Summary
 void addExcludedName(java.lang.String name)
          Adds a qualified name to the list of object to be excluded from serialization.
 void excludeStandardObjectNames()
          Adds the names of the standard objects and their prototypes to the list of excluded names.
 boolean hasExcludedName(java.lang.String name)
          Returns true if the name is excluded from serialization.
 void removeExcludedName(java.lang.String name)
          Removes a name from the list of names to exclude.
 
Methods inherited from class java.io.ObjectOutputStream
close, defaultWriteObject, flush, putFields, reset, useProtocolVersion, write, write, write, writeBoolean, writeByte, writeBytes, writeChar, writeChars, writeDouble, writeFields, writeFloat, writeInt, writeLong, writeObject, writeShort, writeUTF
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ScriptableOutputStream

public ScriptableOutputStream(java.io.OutputStream out,
                              Scriptable scope)
                       throws java.io.IOException
ScriptableOutputStream constructor. Creates a ScriptableOutputStream for use in serializing JavaScript objects. Calls excludeStandardObjectNames.
Parameters:
out - the OutputStream to write to.
scope - the scope containing the object.
Method Detail

addExcludedName

public void addExcludedName(java.lang.String name)
Adds a qualified name to the list of object to be excluded from serialization. Names excluded from serialization are looked up in the new scope and replaced upon deserialization.
Parameters:
name - a fully qualified name (of the form "a.b.c", where "a" must be a property of the top-level object)

hasExcludedName

public boolean hasExcludedName(java.lang.String name)
Returns true if the name is excluded from serialization.

removeExcludedName

public void removeExcludedName(java.lang.String name)
Removes a name from the list of names to exclude.

excludeStandardObjectNames

public void excludeStandardObjectNames()
Adds the names of the standard objects and their prototypes to the list of excluded names.