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
IOException
public 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
MarshalledInstance
IOException
- 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
MarshalledInstance
context
- the collection of context information objectsIOException
- if the object cannot be serializedNullPointerException
- if context
is null
public 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 null
public 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 MarshalledInstance
public 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 true
context
- the collection of context information objects or
null
IOException
- 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
MarshalledInstance
true
if the argument contains an object
with an equivalent serialized form and codebase;
otherwise returns false
public 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.