* @param in The stream to read the object contents from
* @throws IOException
* @throws ClassNotFoundException
*/
public void readExternal(ObjectInput inObject) throws IOException, ClassNotFoundException {
SafeObjectInputStream in = SafeObjectInputStream.install(inObject);
// set the flag to indicate that the message context is being
// reconstituted and will need to have certain object references
// to be reconciled with the current engine setup
needsToBeReconciled = true;
// trace point
log.trace(myClassName + ":readExternal(): BEGIN bytes available in stream [" +
in.available() + "] ");
//---------------------------------------------------------
// object level identifiers
//---------------------------------------------------------
// serialization version ID
long suid = in.readLong();
// revision ID
int revID = in.readInt();
// make sure the object data is in a version we can handle
if (suid != serialVersionUID) {
throw new ClassNotFoundException(ExternalizeConstants.UNSUPPORTED_SUID);
}
// make sure the object data is in a revision level we can handle
if (revID != REVISION_2) {
throw new ClassNotFoundException(ExternalizeConstants.UNSUPPORTED_REVID);
}
//---------------------------------------------------------
// various simple fields
//---------------------------------------------------------
long time = in.readLong();
setLastTouchedTime(time);
isComplete = in.readBoolean();
key = (String) in.readObject();
logCorrelationIDString = (String) in.readObject();
// trace point
if (log.isTraceEnabled()) {
log.trace(myClassName + ":readExternal(): reading input stream for [" +
getLogCorrelationIDString() + "] ");
}
//---------------------------------------------------------
// properties
//---------------------------------------------------------
in.readUTF(); // read marker
properties = in.readMap(new HashMap());
//---------------------------------------------------------
// axis operation meta data
//---------------------------------------------------------
// axisOperation is not usable until the meta data has been reconciled
axisOperation = null;
in.readUTF(); // read marker
metaAxisOperation = (MetaDataEntry) in.readObject();
//---------------------------------------------------------
// axis service meta data
//---------------------------------------------------------
// axisService is not usable until the meta data has been reconciled
in.readUTF(); // read marker
metaAxisService = (MetaDataEntry) in.readObject();
//---------------------------------------------------------
// parent
//---------------------------------------------------------
// ServiceContext is not usable until it has been activated
in.readUTF(); // read marker
metaParent = (ServiceContext) in.readObject();
//---------------------------------------------------------
// HashMap messageContexts table
//---------------------------------------------------------
// set to empty until this can be activiated
messageContexts = new HashMap();
in.readUTF(); // read marker
workingSet = in.readHashMap();
in.readUTF(); // read marker
metaMessageContextMap = in.readHashMap();
//---------------------------------------------------------
// done
//---------------------------------------------------------
}