[Yanel-dev] New XMLDB repository

Josias Thöny josias.thoeny at wyona.com
Mon Feb 12 15:55:19 CET 2007


Andreas Wuest wrote:
> Hi
> 
> I've finished and checked in a basic implementation of the XMLDB 
> repository, based on the XML:DB API.

Cool :)

> 
> Unfortunately, Yarep is documented really bad, so I couldn't find out 
> what the exact contracts for the various methods are. For example, 
> should getSize() or delete() throw a repository exception if the 
> resource does not exist, or return 0 or false, etc.
> 
> I've extensively documented the XMLDBStorage class, so you can see what 
> it does on the first glance.
> 
> The Reader/Writer and InputStream/OutputStream are implemented using 
> aggregation. Don't know if it would be more desireable to e.g. subclass 
> StringReader and override the close() method instead.
> 
> Also, there are some other API related problems: Yanel always seems to 
> call getInputStream to directly read from the repo. Now, this is all 
> fine and dandy on a file based repo, but the XML database stores XML 
> documents as character data, and returns them as strings. With other 
> words, in order for the OutputStream to work, we have to convert the 
> string to bytes, which, of course, involves character encoding. I just 
> use UTF-8 to de- and encode, but of you really want to read an XML 
> resource, the getReader method should be used.
> 
> The same goes for writing, but with some additional complication. You 
> should NEVER use getOutputStream to write an XML document. 
> getOutputStream creates a binary resource in the database. Use getWriter 
> instead to write character data, which creates an XML resource.

Well, I didn't realize that some repository implementations might handle 
binary data differently than text data. But I guess it makes sense.
So probably we should change yanel to use the reader/writer methods for 
text data, and add reader/writer methods to the node-based api, too.
Would that help?

Josias

> 
> I could also do with some testing ;) (I plan on eventually write some 
> tests, but didn't have the time yet, the repo has to be finished by 
> monday for our Annotations project).
> 




More information about the Yanel-development mailing list