[ 
http://jira.codehaus.org/browse/WAGON-209?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=136938#action_136938
 ] 

Benjamin Bentmann commented on WAGON-209:
-----------------------------------------

Brett, you noticed the link to the issue MSTAGE-5, did you? The point of this 
feature request was to enable the Stage Plugin to work with an ordinary Wagon 
object and to completely avoid any casting. While {{CommandExecutor}} is part 
of the wagon-provider-api, it looks like a design flaw (aka quick fix) that 
wagons are supposed to offer execution services. As far as I understand, Wagon 
is meant as an abstraction layer for transport protocols, this has not much to 
do with command executions (interestingly, only the SSH-based wagons seem to 
support {{CommandExecutor}}).

With this issue I wanted to trigger an investigation of what operations the 
Stage Plugin (and maybe others) require from a wagon in terms of transport 
operations such that the plugin doesn't need to hack its way by executing 
remote commands. Ideally, {{CommandExecutor}} would disappear some day from the 
API, i.e. commands become an implementation detail of the wagon, not a public 
interface.

> Extend Wagon API to support the Stage Plugin
> --------------------------------------------
>
>                 Key: WAGON-209
>                 URL: http://jira.codehaus.org/browse/WAGON-209
>             Project: Maven Wagon
>          Issue Type: New Feature
>          Components: wagon-provider-api
>    Affects Versions: 1.0-beta-2
>            Reporter: Benjamin Bentmann
>            Assignee: Brett Porter
>
> From the source of the [Maven Stage 
> Plugin|http://maven.apache.org/plugins/maven-stage-plugin/]:
> {code:java}
> ( (ScpWagon) targetWagon ).executeCommand( command );
> {code}
> This smells: The plugin is downcasting to an implementation class, happily 
> breaking the interface design and making the target wagon non-interchangeable.
> The atomic Wagon operations required by the plugin should be identified and 
> added to the Wagon API. Wagons that can't support these new operations could 
> simply implement the methods by throwing an {{UnsupportedOperationException}} 
> exception.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to