Greetings.

I have been using Batik for a few years and I love its extensibility. I even use the CSS Engine directly for a non SVG dialect document without needing to add another library.

My problem right now is that I need to run/paint the SVG file inside some kind of virtual filesystem. The linked files inside the SVG (xml-stylesheet processing instructions, images...) are not on a real filesystem, they are on RAM isolated from any other SVG loaded. I tried using ParsedURL to define a new protocol but despite the advantages of it over the standard URL class, It still has the problem that protocol handlers are global, I haven't found a way to isolate a protocol for only a SVG document (I set the ParsedURL on the document directly because there is no real URL for it). I tried using ThreadLocal to create a ParsedURL protocol handler context aware, but I found many problems with this approach, Batik is not single threaded, some external to the svg resources are loaded with parsing, some of them are loaded on threads created by Batik out of my control (script on the document that add elements linking to external resources), so there is no easy way to use a ThreadLocal for that.

It would be nice if Batik could be extended with a VFS layer in order to be able work with svg files that resides on things not directly mapped to a virtual protocol, but that is something that I could hack a little later, in the short them I need to solve this problem with something less intrusive in the Batik codebase. Any help is really appreciated.

Note: I thought about registering those virtual files on some kind of global registry and then create a protocol handler accessing that registry but I am trying to avoid anything with globals because I need very good isolation between docs.

Thanks in advance

---------------------------------------------------------------------
To unsubscribe, e-mail: batik-users-unsubscr...@xmlgraphics.apache.org
For additional commands, e-mail: batik-users-h...@xmlgraphics.apache.org

Reply via email to