[Yanel-dev] Many fixes for the Split Path Topic: Final Patch !

Balz Schreier balz.schreier at gmail.com
Thu Nov 25 17:11:15 CET 2010


Hi Michael,
I will create the patch again. I thought that I created it AFTER the
introduction of the new SplitPathConfig (see my mail where I describe what
that class is all about).
Cheers
Balz

On Thu, Nov 25, 2010 at 5:00 PM, Michael Wechner
<michael.wechner at wyona.com>wrote:

>  Hi Balz
>
> I tried to compile your patch but failed, because SplitPathConfig.java
> seems to be missing.
> Also the class
> src/impl/java/org/wyona/yarep/impl/repo/treefs/map/TreeFileSystemMap.java
> needs
> to be patched because it seems that ignorePath has slightly changed.
>
> HTH
>
> Michael
>
>
> On 10/29/10 11:55 PM, Balz Schreier wrote:
>
> Hi Michael,
>
>  I spent the whole day on this topic, but at least it fully works now as
> expected (except for the reindexing part).
>
>  *What the patch includes:*
> - As the split / unsplit logic is required at many places (repository,
> node, maps, storage classes), I refactored it into a new class where all =
the
> splitting and unsplitting complexity is implemented:
> org/wyona/yarep/core/impl/vfs/*SplitPathConfig.java*
> - The following classes have been modified in order to use the new
> SplitPathConfig class:
>
>  org/wyona/yarep/core/impl/vfs/VFileSystemStorage.java
> org/wyona/yarep/impl/VFileSystemMapImpl.java
> org/wyona/yarep/impl/repo/vfs/VirtualFileSystemNode.java
> org/wyona/yarep/impl/repo/vfs/VirtualFileSystemRepository.java
>
>  - As written earlier, the original splitting algorithms had errors! The
> algorithm used an escape character to replace the "/" in the original URL
> but it did not escape itself (means if the escape char occurred in the
> original string you don't know anymore whether that was an + or a "/").
>
>  So the new *splitting* algorithm does this (highlevel):
> - replace all "+" by "++"
> - replace all "/" by "+-"
> - add now the real "/" which are used to create directories
> - I also simplified the original code which inserts the "/". I found the
> original code too complex, Java offers much simpler ways of doing that...
> and it's easily readable: instead of cryptic 15 lines it is now 5 lines
> long.
>
>  *Unsplitting*:
> - remove all "/", because all "/" are artificial
> - go through the string from start to the end and replace the tokens: ++
> into + and +- into /
>
>  *Hopefully correct?*
> One area where I am unsure is the following:
> 1) the data repository uses the class VirtualFileSystemRepository (and
> ...Node). But also internally it uses the VFileSystemMapImpl
> 2) other yarep repositories use two classes: the VFileSystemMapImpl and
> the VFileSystemStorage
>
>  I tested scenario 2) in all combinations: Map with split, Storage
> without, and vice-versa. But it only worked fine if both were configured
> with the split path logic. So there was no other choice besides letting b=
oth
> classes know about the split stuff.
>
>  In scenario 1) you told me that the repository class and the node class
> both must be aware of the split stuff. That is ok. But I was then a bit
> confused because the repository instantiates also the MAP (from scenario =
1)
> internally. Initially I thought, well when the MAP anyway has the split
> logic implemented why not tell it to consider it. But then I realized that
> the splitting gets done twice. So the current implementation does the
> following:
> Repository and Node both are aware of the splitting, but the map impl is
> NOT aware of it.
>
>  I tested quite a lot and it really seems to be fine now.
>
>  Even the Reindexer works now!
>
>  Cheers
> Balz
>
>
>
> --
> Yanel-development mailing list Yanel-development at wyona.com
> http://lists.wyona.org/cgi-bin/mailman/listinfo/yanel-development
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.wyona.org/pipermail/yanel-development/attachments/2010112=
5/c3948f02/attachment.htm


More information about the Yanel-development mailing list