Thanks for the input, Stefan. I took your suggestion and exposed a API to get the Project on that custom interface. It doesn't/can't directly use the IntrospectionHelper support available to project components, since unlike nested elements of a task, this custom class can be plugged in something like:

<listener classname="some.custom.class.implementing.an.task.specific.interface"/>

plus the fact that this custom class can reside in a classloader defined by nested <classpath> elements of this task.

-Jaikiran


On 13/03/18 3:36 PM, Stefan Bodewig wrote:
On 2018-03-13, Jaikiran Pai wrote:

I'm looking for some suggestion on whether it's a good/bad idea to
expose a method to custom user defined classes which takes a "Task"
object. This is in context of the JUnitLauncher task that I recently
added. It allows custom report formatters/listeners to be implemented
and the expectation is that such classes will implement the
TestResultFormatter interface that is (newly) part of Ant. This
interface exposes:
void setTask(Task currentExecutingTask)
so the implementations of this class have access to the current task
that's running. Right now, the only reason I exposed that Task
instance was to allow such implementation to issue log messages from
within the implementation like:
In that case I'd prefer the formatter implementation to extend
ProjectConponent or just provide a setProject(Project) method.

When your formatter is created by Ant - for example as a nested element
- something like

     public void addConfiguredFormatter(TestFormatter f)

then IntrospectionHelper will see the setProject method and invoke it
with a reference to the current project.

Stefan

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@ant.apache.org
For additional commands, e-mail: dev-h...@ant.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@ant.apache.org
For additional commands, e-mail: dev-h...@ant.apache.org

Reply via email to