protected override bool PrepareImpl(StreamSerializer stream)
{
//now do the real loading
if (stream.ReadChunkBegin(CHUNK_ID, CHUNK_VERSION, "Page") == null)
return false;
// pageID check (we should know the ID we're expecting)
int storedID = -1;
stream.Read(out storedID);
if (mID.Value != storedID)
{
LogManager.Instance.Write("Error: Tried to populate Page ID " +
mID.Value + " with data corresponding to page ID " + storedID);
stream.UndoReadChunk(CHUNK_ID);
return false;
}
PageManager mgr = Manager;
while (stream.NextChunkId == PageContentCollection.CHUNK_ID)
{
Chunk collChunk = stream.ReadChunkBegin();
string factoryName = string.Empty;
stream.Read(out factoryName);
//Supported type?
IPageContentCollectionFactory collFact = mgr.GetContentCollectionFactory(factoryName);
if (collFact != null)
{
PageContentCollection collInst = collFact.CreateInstance();
if (collInst.Prepare(stream))
{
AttachContentCollection(collInst);
}
else
{
LogManager.Instance.Write("Error preparing PageContentCollection type: " +
factoryName + " in + " + this.ToString());
collFact.DestroyInstance(ref collInst);
}
}
else
{
LogManager.Instance.Write("Unsupported PageContentCollection type: " +
factoryName + " in + " + this.ToString());
//skip
//stream.ReadChunkEnd(ref collChunk.ID);
stream.ReadChunkEnd(collChunk.id);
}
}
return true;
}
/// <summary>