Jeffrey E Care wrote:
I know I'm a little late to this party - I've been tied up in my new assignment. Anyway, FWIW here's my opinion:

I've been thinking about how we could improve our diagnostics, by moving

more of the diags into tasks themselves. Every task could have a diagnostics(PrintStream) method that would be called to do the diags.

Sounds like a good idea to me; might I suggest that we add a similar capability for an entire antlib (more on this below)?
1. we could introspect for a public static void diagnostics(PrintStream)

throws BuildException method. This would let us diagnose even if you cannot instantiate the task enough for new() to work.

I'm a little rusty on static method overrides...if A extends B, can both A and B have a static method with identical signatures? This should be easy to test, but I'm feeling lazy at the moment :)

Yes, because static stuff gets set up at compile time (they are inherently non virtual). JUnit3 uses statics to set up test suites.


2. or we'd use an interface Diagnostics that things could implement

Intuitively this feels like a cleaner approach to me. Admittedly you need an instance to work with, but we'd just need to document the fact that if the constructor fails you can't get any diags; it shouldn't be too hard for tasks implementing this interface to put volatile init code somewhere other than the constructor.

Well that's it, you see, the diags could be more helpful



3. the -diagnostics command and <diagnostics> tasks could be made to diagnose a single task

  ant -diagnostics -task junit

and maybe even a single antlib namespace

  ant -diagnostics -xmlns antlib:org.example.something

Okay, so I see that you've considered the antlib case to a certain extent. This has me thinking about antlib auto-discovery again. Instead of requiring users to specify the task or antlib they want diags on, I think it would be easier for users to add a "-fullDiagnostics" option that would dump the normal "-diagnostics" info _plus_ whatever task/antlib diags it could find. For that to work we would need some sort of auto-discovery mechanism (which has been discussed before).

1. yes, you could do diags on a specific library. We could do it for all XML namespaces in scope in the doc, since that implicitly triggers some antlib loading.

2. we could extend every <antlib> declaration with a homepage attribute, and a diagnostics attr that takes a classname. These would be for specific things,.



I also think we could add something similar for version information; a "-fullVersion" flag could dump the normal "-version" info _plus_ version info about discovered antlibs.

Yes, I'd like to know about known antlibs. Incidentally, Ant1.7.1 lists all known tasks in a namespace if it doesnt find the one you asked for.

-steve

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to