public class MarshalledInstance extends Object implements Serializable
MarshalledInstance contains an object in serialized
form. The contained object can be deserialized on demand when
explicitly requested. This allows an object to be sent from one VM
to another in a way that allows the receiver to control when and if
the object is deserialized.
The contained object is specified at construction time and can
either be provided in unserialized or serialized form. If provided
in unserialized form it will be serialized during construction
with the serialization semantics defined by
MarshalOutputStream. In particular, classes are annotated
with a codebase URL from which the class can be loaded (if available).
If the MarshalledInstance needs to deserialize the
contained object then the contained object will be deserialized with the
deserialization semantics defined by MarshalInputStream.
In particular, the codebase annotations associated with the contained
object may be used to load classes referenced by the contained object.
MarshalledInstance provides functionality similar to
java.rmi.MarshalledObject, but additionally provides
for the verification of codebase integrity. Unlike
java.rmi.MarshalledObject, it does not perform remote
object-to-stub replacement.
| Constructor and Description |
|---|
MarshalledInstance(AtomicSerial.GetArg arg) |
MarshalledInstance(MarshalledObject mo)
Creates a new
MarshalledInstance from an
existing MarshalledObject. |
MarshalledInstance(Object obj)
Creates a new
MarshalledInstance that contains the
marshalled representation of the current state of the supplied
object. |
MarshalledInstance(Object obj,
Collection context)
Creates a new
MarshalledInstance that contains the
marshalled representation of the current state of the supplied
object. |
| Modifier and Type | Method and Description |
|---|---|
boolean |
atomic()
If true this MarshalledObject can be deserialized with an AtomicInputValidation
constraint.
|
MarshalledObject |
convertToMarshalledObject()
Creates a new
MarshalledObject that will
contain an object equivalent to the object contained
in this MarshalledInstance object. |
boolean |
equals(Object obj)
Compares this
MarshalledInstance to another
object. |
boolean |
fullyEquals(Object obj)
Compares this
MarshalledInstance to another
object. |
Object |
get(boolean verifyCodebaseIntegrity)
Returns a new copy of the contained object.
|
Object |
get(ClassLoader defaultLoader,
boolean verifyCodebaseIntegrity,
ClassLoader verifierLoader,
Collection context)
Returns a new copy of the contained object.
|
int |
hashCode()
Returns the hash code for this
MarshalledInstance. |
public MarshalledInstance(AtomicSerial.GetArg arg) throws IOException
IOExceptionpublic MarshalledInstance(Object obj) throws IOException
MarshalledInstance that contains the
marshalled representation of the current state of the supplied
object. The object is serialized with the semantics defined by
MarshalOutputStream. The output stream used to marshal the
object implements ObjectStreamContext and returns an empty
collection from its getObjectStreamContext method.obj - The Object to be contained in the new
MarshalledInstanceIOException - if the object cannot be serializedpublic MarshalledInstance(Object obj, Collection context) throws IOException
MarshalledInstance that contains the
marshalled representation of the current state of the supplied
object. The object is serialized with the semantics defined by
MarshalOutputStream. The output stream used to marshal the
object implements ObjectStreamContext and returns the given
collection from its getObjectStreamContext method.obj - The Object to be contained in the new
MarshalledInstancecontext - the collection of context information objectsIOException - if the object cannot be serializedNullPointerException - if context is nullpublic MarshalledInstance(MarshalledObject mo)
MarshalledInstance from an
existing MarshalledObject. An object equivalent
to the object contained in the passed MarshalledObject
will be contained in the new MarshalledInstance.
The object contained in the passed MarshalledObject
will not be unmarshalled as part of this call.
mo - The MarshalledObject that contains
the object the new MarshalledInstance should
containNullPointerException - if mo is nullpublic MarshalledObject convertToMarshalledObject()
MarshalledObject that will
contain an object equivalent to the object contained
in this MarshalledInstance object.
The object contained in this MarshalledInstance
object will not be unmarshalled as part of this call.
MarshalledObject which
contains an object equivalent to the object
contained in this MarshalledInstancepublic Object get(boolean verifyCodebaseIntegrity) throws IOException, ClassNotFoundException
MarshalInputStream.
The input stream used to unmarshal the object implements ObjectStreamContext and returns a collection from its getObjectStreamContext
method which contains a single element of type IntegrityEnforcement; the integrityEnforced method of this element returns the specified
verifyCodebaseIntegrity value.
MarshalledInstance implements this method by calling
.get(null, verifyCodebaseIntegrity, null, null)
verifyCodebaseIntegrity - if true then
codebase integrity is verified, otherwise code base
integrity is not verifiedIOException - if an
IOException occurs while deserializing the
object from its internal representationClassNotFoundException - if any classes necessary
for reconstructing the contained object can not
be found or if verifyCodebaseIntegrity
is true and the integrity of the
contained object's codebase cannot be confirmedpublic Object get(ClassLoader defaultLoader, boolean verifyCodebaseIntegrity, ClassLoader verifierLoader, Collection context) throws IOException, ClassNotFoundException
MarshalInputStream.
If context is not null
the input stream used to unmarshal the object implements ObjectStreamContext and returns the given collection from its getObjectStreamContext
method.
If context is null
the input stream used to unmarshal the object implements ObjectStreamContext and returns a collection from its getObjectStreamContext
method which contains a single element of type IntegrityEnforcement; the integrityEnforced method of this element returns the specified
verifyCodebaseIntegrity value.
defaultLoader - the class loader value (possibly
null) to pass as the defaultLoader
argument to RMIClassLoader methodsverifyCodebaseIntegrity - if true then
codebase integrity is verified, otherwise code base
integrity is not verifiedverifierLoader - the class loader value (possibly
null) to pass to Security.verifyCodebaseIntegrity, if
verifyCodebaseIntegrity is truecontext - the collection of context information objects or
nullIOException - if an
IOException occurs while deserializing the
object from its internal representationClassNotFoundException - if any classes necessary
for reconstructing the contained object can not
be found or if verifyCodebaseIntegrity
is true and the integrity of the
contained object's codebase cannot be confirmedpublic boolean fullyEquals(Object obj)
MarshalledInstance to another
object. Returns true if and only if the argument refers to an instance
of MarshalledInstance that contains exactly the same
serialized form for its contained object as this object does and
has the same class codebase annotations.obj - the object to compare with this
MarshalledInstancetrue if the argument contains an object
with an equivalent serialized form and codebase;
otherwise returns falsepublic boolean equals(Object obj)
MarshalledInstance to another
object. Returns true if and only if the argument refers to an instance
of MarshalledInstance that contains exactly the same
serialized form for its contained object as this object does. The
comparison ignores any class codebase annotations, so that
two objects can be equivalent if they have the same serialized
representation, except for the codebase of each class in the
serialized representation.public int hashCode()
MarshalledInstance.
The hash code is calculated only from the serialized form
of the contained object.public boolean atomic()
Copyright 2007-2013, multiple authors.
Licensed under the Apache License, Version 2.0, see the NOTICE file for attributions.