maven-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Benjamin Bentmann (JIRA)" <j...@codehaus.org>
Subject [jira] Commented: (WAGON-209) Extend Wagon API to support the Stage Plugin
Date Sun, 01 Jun 2008 09:13:53 GMT

    [ 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

        

Mime
View raw message