Package org.mozilla.javascript.serialize
Class ScriptableOutputStream
java.lang.Object
java.io.OutputStream
java.io.ObjectOutputStream
org.mozilla.javascript.serialize.ScriptableOutputStream
- All Implemented Interfaces:
Closeable
,DataOutput
,Flushable
,ObjectOutput
,ObjectStreamConstants
,AutoCloseable
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
-
Nested Class Summary
Nested classes/interfaces inherited from class java.io.ObjectOutputStream
ObjectOutputStream.PutField
-
Field Summary
Fields inherited from interface java.io.ObjectStreamConstants
baseWireHandle, PROTOCOL_VERSION_1, PROTOCOL_VERSION_2, SC_BLOCK_DATA, SC_ENUM, SC_EXTERNALIZABLE, SC_SERIALIZABLE, SC_WRITE_METHOD, SERIAL_FILTER_PERMISSION, STREAM_MAGIC, STREAM_VERSION, SUBCLASS_IMPLEMENTATION_PERMISSION, SUBSTITUTION_PERMISSION, TC_ARRAY, TC_BASE, TC_BLOCKDATA, TC_BLOCKDATALONG, TC_CLASS, TC_CLASSDESC, TC_ENDBLOCKDATA, TC_ENUM, TC_EXCEPTION, TC_LONGSTRING, TC_MAX, TC_NULL, TC_OBJECT, TC_PROXYCLASSDESC, TC_REFERENCE, TC_RESET, TC_STRING
-
Constructor Summary
ConstructorDescriptionScriptableOutputStream
(OutputStream out, Scriptable scope) ScriptableOutputStream constructor. -
Method Summary
Modifier and TypeMethodDescriptionvoid
addExcludedName
(String name) Adds a qualified name to the list of objects to be excluded from serialization.void
Adds a qualified name to the list of object to be excluded from serialization.void
excludeAllIds
(Object[] ids) void
Adds the names of the standard objects and their prototypes to the list of excluded names.boolean
hasExcludedName
(String name) Returns true if the name is excluded from serialization.void
removeExcludedName
(String name) Removes a name from the list of names to exclude.protected Object
replaceObject
(Object obj) Methods inherited from class java.io.ObjectOutputStream
annotateClass, annotateProxyClass, close, defaultWriteObject, drain, enableReplaceObject, flush, putFields, reset, useProtocolVersion, write, write, write, writeBoolean, writeByte, writeBytes, writeChar, writeChars, writeClassDescriptor, writeDouble, writeFields, writeFloat, writeInt, writeLong, writeObject, writeObjectOverride, writeShort, writeStreamHeader, writeUnshared, writeUTF
Methods inherited from class java.io.OutputStream
nullOutputStream
-
Constructor Details
-
ScriptableOutputStream
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.- Throws:
IOException
-
-
Method Details
-
excludeAllIds
-
addOptionalExcludedName
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). The object need not exist, in which case the name is ignored.- Throws:
IllegalArgumentException
- if the object is not aScriptable
.
-
addExcludedName
Adds a qualified name to the list of objects 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)- Throws:
IllegalArgumentException
- if the object is not found or is not aScriptable
.
-
hasExcludedName
Returns true if the name is excluded from serialization. -
removeExcludedName
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. -
replaceObject
- Overrides:
replaceObject
in classObjectOutputStream
- Throws:
IOException
-