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]

Reply via email to