[
https://issues.apache.org/jira/browse/FOP-3084?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17779001#comment-17779001
]
Markus Karg commented on FOP-3084:
----------------------------------
I would like to kindly ask if we could continue this discussion after more than
one year of consideration. As I already wrote, the proposed workaround is
_dysfunctional_ for embedded SVG, so we _do_ need an API change. I would really
be happy if [~ssteiner] could chime in. Thanks a lot! :)
> 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)