9fe7b39acdf5c71a43a32c4787f1cb95637a5458 ArchivePutHandler.onEncode: container.activate(BaseManifestPutter.this, 2);
This is risky! If maps get activated to depth 1 then really bad things happen in my experience, they need to be activated to depth 2. Activating to depth 1 then depth 2 does not solve the problem. Also, the map has a list inside it, i'd expect more activation issues. PutHandler constructor: container.store(runningMap) - should probably specify depth, likewise with two below. ContainerPutHandler.onEncode(): on the root container handler, we should store BaseMetadataPutter.this, not this, no? In the other branch, you haven't activated putHandlersTransformMap, etc. ContainerPutHandler.onSuccess(): activated contaienrPutHandlers?? And you don't store it when you remove from it. ExtPutHandler.onMetadata : activate putHandlersWaitingForMetadata. In container mode, explicitly store (this), the depth limited store of the maps won't save the metadata. MetaPutHandler.onEncode() : metadata.resolve() : should store it? But also does it allow to complete upstream resolutions? I guess deferring that to onSuccess is okay, and may even be safer; in the rest of the code that is determined by the earlyEncode flag though... and if you want to support that properly, we might not be finished by the time of onSuccess chaining to super.onSuccess. PutHandler?.onBlockSetFinished : store(collection) with no depth again, probably bad containerMode vs freeformMode - these are mutually exclusive and the only options? how about a single boolean, or an enum? Hmmm, apparently not, it changes in getRootContainer(). would be nice to document putHandlersTransformMap start() : why activate putHandlerWaitingForBlockSets? makeMetadata() : you are sure this works? I had horrible problems with individually activating maps inside maps, and imho it follows directly from the fact that if you activate a map to depth 1 it works but is empty, and will not fill up when you activate it to depth 2; you must deactivate it before activating to depth 2 (which loads the elements). blockSetFinished() : purpose of the deactivate()? difference between ArchivePutHandler and ContainerPutHandler should be documented. ContainerBuilder constructor : do the EMPTY_CHK_URI need cloning or are they cloned in ArchivePutHandler/ContainerPutHandler constructor anyway? *** 36694fd123278b00235d1769fd085763fdba0a8e getCompressorsArray : trim codec -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 835 bytes Desc: This is a digitally signed message part. URL: <https://emu.freenetproject.org/pipermail/devl/attachments/20090820/2d993d2a/attachment.pgp>
