Stefano Mazzocchi wrote:
Paul Duffin wrote:
A problem that I ran into was that Serializers do not have access to the environment (Request / Response). This means that it is very hard to write sophisticated Serializers.
For example? (I think FOP and batik are both pretty sofisticated serializers)
Well... not that much actually: they are both ~200 lines of Java code and all they do is delegate to the underlying framework the XML events grabbing an OutputStream to write to. Agreed, SLOC are a sloppy metric but then again...
The real keyword, however, is not "sophisticated" in an algotithmic sense but "context aware": if a Serializer is not a SitemapModelComponent than there is no way it can decide based on context, be it a Request or any other information. We've been through this many times, and I wander from one side to the other so I have no clear decision in mind...
You are correct I meant context aware.
We worked around this by using it in conjunction with a Transformer that was given the environment and simply passed it on to the Serializer.
The problem with having an environment-dependent serializer is that the cache needs access to it because it might change its behavior depending on environment parameters.
Can't parse this. Care to explain?
I guess the caching mechanism needs to decide whether the output from this request will be the same as the output from a previous request. If the output is context sensitive then the caching mechanism needs to use those parts of the request that affect the output as part of its key.
However this problem applies to any site map components that are context sensitive, not just serializers. I presume (I have not used the cache) that this problem has been solved already.
So while this possibly impacts the cost of making the changes it is not really an argument against allowing serializers to be context aware.