apache/ant — pull request #3 by gagern (2014-11-26 12:54:12+00:00)
Title: junitreport: Expose classpath and factory of internal XSLTProcess task.

Trying to revive [bug 47002](https://issues.apache.org/bugzilla/show_bug.cgi?id=47002) by filing a pull request for it.

This patch creates the nested XSLTProcess at creation of the
AggregateTransformer, not upon execution of the transformation. This way it
is much easier to simply wrap parts of the interface I'd like to expose,
like the new and nested elements, but also the
existing elements.

I haven't called XSLTProcess.init(), as the previous code didn't do that
either. I don't fully understand the difference between init() and a
constructor, but it might be a good thing to init the task somewhere.

The approach I chose is something like a whitelist delegation: the
XSLTProcess is a private member, and only selected methods of its interface
are wrapped and thus exposed to be configured. As an alternative, one could
do something like a blacklist delegation by deriving a class from
XSLTProcess and forbidding access to certain settings by ovverriding the
corresponding methods and throwing exceptions therein. In that case, one
might even turn the class derived from XSLTProcess into a nested
element, which would be probably much clearer, as it would be configured in
the same way that a top-level task is. I didn't choose this approach
in my patch for now.