ObjectIODataRecordNotFoundException,
ObjectIOClassNotFoundException,
ObjectIOTooBigForSerializationException {
try {
if (object == null) {
throw new ObjectIOException("object can not be null");
}
model.initializeForMarshal();
ObjectAndPersistInfo objectToVisit;
ClassInfo rootObjectClassInfo;
rootObjectClassInfo = classInfoFactory.getNoProxyClassInfo(object
.getClass());
final ObjectAndPersistInfo rootObjectAndItsClassInfo;
rootObjectAndItsClassInfo =
/**/getOrCreateObjectPersistInfoOfObject(object, Boolean.FALSE,
rootObjectClassInfo, true);
toVisitForSaveQueue.clear();
visitedForSave.clear();
toVisitForSaveQueue.add(rootObjectAndItsClassInfo);
markedNotStorableEncountered = false;
markedNotStorableList.clear();
while ((objectToVisit = toVisitForSaveQueue.pollFirst()) != null) {// NOPMD
visitOneObjectForSave(objectToVisit);
}
if (markedNotStorableEncountered) {
final StringBuilder stringBuilder = new StringBuilder();
if (markedNotStorableEncountered) {
stringBuilder.append("not marked storable:\n");
for (final ObjectAndPersistInfo notStorable : markedNotStorableList) {
stringBuilder.append(notStorable.toString());
stringBuilder.append('\n');
}
markedNotStorableList.clear();
}
throw new ObjectIOException(stringBuilder.toString());
}
return model.getData();
} catch (final ClassInfoException exception) {
throw new ObjectIOException(exception);
} finally {
model.clear();
toVisitForSaveQueue.clear();
visitedForSave.clear();
markedNotStorableList.clear();