[ https://issues.apache.org/jira/browse/FOP-3084?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17569391#comment-17569391 ]
Markus Karg commented on FOP-3084: ---------------------------------- I would rather call that a bad hack but not a sophisticated solution, actually. Hence it might be a possible workaround, but I would not say it is a clean solution for a common use case of a production-grade library. Why not simply proving the URI to the FOP creation methods, as the average coder would expect it to be like? > Override baseURI per FOP instance > --------------------------------- > > Key: FOP-3084 > URL: https://issues.apache.org/jira/browse/FOP-3084 > Project: FOP > Issue Type: Improvement > Affects Versions: 2.7 > Reporter: Markus Karg > Priority: Major > > There is a best practice to reuse FOP Factory instances for optimal > performance. But doing so effectively applies the same baseURI (the one used > at factory creation) to all FOP instances, hence to all rendered XSL > templates. > > Given the case one needs to render XSL template `/a/A.xfo` referring to a > picture file `./A.png` (hence effectively located at `/a/A.png`), and then > needs to render XSL template `/b/B.xfo`, referring to a picture file > `./B.png` (hence effectively found at `/b/B.png`), then there is no other > solution but to create a new FOP Instance per template: On instance for > `baseURI=.../a/` and a second instance for `baseURI=.../b/`. This effectively > results in rather bad performance! > > To support this use case while keeping optimal performance (hence: use a > single FOP factory), there should be a way to pass the baseURI of the > rendered XSL template to the FOP Factory, so creating a new FOP instances > effectively use different baseURIs to resolve images. In the past, there had > been a `FOP.setBaseURI(baseURI)` method for this. Clearly that method was a > very bad idea, as concurrent callers ended up in a race condition. So > reintroducing `FOP.setBaseURI(baseURI)` is *definitively not* a viable > solution! > > Proposed solutions could be to either add an optional parameter baseURI to > `FOPFactory.newFOP(..., baseURI)`, _or_ to add a new method > `FOP.setBaseURI(baseURI)` to FOP, _or_ to add a new method > `FOUserAgent.setBaseURI(baseURI)`. -- This message was sent by Atlassian Jira (v8.20.10#820010)