I apologize for dragging this out.
I looked at AbstractWagon and do see that it implements resourceExists
by throwing the UnsupportedOperationException. For clarity this really
should be declared in the Wagon interface even though it is a
RuntimeException. I also looked at all the existing Wagon providers and
noticed that they all seem to implement the method - meaning the method
provided by AbstractWagon was previously never used by anything.
I then looked at Google and Krugle to see what might be calling
resourceExists. I can see that if your Wagon implementation is used by
the maven-project-info-reports-plugin that when it calls the
dependencyExistsInRepo method of the RepositoryUtils class the
UnsupportedOperationException will not be handled.
I also notice that Spring seems to have implemented at least one Wagon
of its own - to access the Amazon S3 service. I wonder how this gets
used? I wonder why they don't just use Maven's implementation?
It might also be useful to look at
http://jira.codehaus.org/browse/WAGON-58 which documents why the
resourceExists method was added. From what I can tell resourceExists
was added to support the maven-project-info-reports-plugin. You wanted a
case where HEAD is not followed by GET? Here it is.
Ralph
Oleg Gusakov wrote:
Man, I did not want to talk about this any more .. but cannot help it,
as this is about a second half of the issue.
Ralph Goers wrote:
Perhaps. Except that resourceExists is still NOT an optional method.
If developer follows a stable dev. pattern, in this case: create a new
wagon provider by extending AbstractWagon - and is not mandated by the
language to implement a method, this to me constitutes an optional
method. If I would not try to pass ITs, I'd never suspect that method
even exists!
We are out of the woods, we use a language that allows us to express
what we want. And I dare say that knowledge and experience of any
single individual on this list goes far beyond a simple task of
mandating something deemed not optional - in this case declare an
abstract method in abstract class.
And let's stop this thread, too much about nothing :)
Thanks,
Oleg
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]