Hi
I've tried to use FOP for this scenario :
+ I have a docbook DOM tree
+ I send it through a transformer using docbook-xsl to generate fo
+ The output of that transformation 'is piped' into the result
new SAXResult(new FOTreeBuilder)
so no files are generated - the FOTreeBuilder is fed directly
from an in-memory DOM tree.
Now the subtypes inheriting from FONode contain an identity
check in:
protected void validateChildNode(Locator loc, String nsURI, String
localName) throws ValidationException {
if (nsURI == FO_URI ...
This fails because FO_URI != nsURI *but* FO_URI.equals(nsURI). This
is so because the generated FO document was dynamically created in
my setup - apparently without String.intern() for the namespace URI.
I'd propose to replace all those identity checks with .equals() to make
this safe without relying on intern()-Strings - example:
public class Root extends FObj {
...
protected void validateChildNode(Locator loc, String nsURI, String
localName) throws ValidationException {
if (FO_URI.equals(nsURI)) {
...
Does that sound reasonable? Affects around 30 types in
org.apache.fop.fo.*
Thanks
Nils