We should just put it into the abstract class and make it required. If the goal 
of the mercury wagon is to replace the http one, then it should implement the 
same methods and be completely drop-in capable (sounds like you did implement 
it already). And since it's so confusing by having this sort-of optional 
method, let's just make it clear and make it required.

-----Original Message-----
From: Ralph Goers [mailto:[EMAIL PROTECTED] 
Sent: Tuesday, September 30, 2008 3:33 AM
To: Maven Developers List
Subject: Re: wagon's resourceExists() call efficiency ?

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