You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Benjamin Bentmann (JIRA)" <ji...@codehaus.org> on 2008/06/01 11:13:53 UTC

[jira] Commented: (WAGON-209) Extend Wagon API to support the Stage Plugin

    [ 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