[jira] Created: (MRM-1256) providing extension-points for deploy-events

View: New views
9 Messages — Rating Filter:   Alert me  

[jira] Created: (MRM-1256) providing extension-points for deploy-events

by JIRA jira@codehaus.org :: Rate this Message:

Reply (Restricted by the Administrator) | Reply to Author | View Threaded | Show Only this Message

providing extension-points for deploy-events
--------------------------------------------

                 Key: MRM-1256
                 URL: http://jira.codehaus.org/browse/MRM-1256
             Project: Archiva
          Issue Type: New Feature
          Components: repository interface, WebDAV interface
    Affects Versions: 1.2.2
            Reporter: Marc Lustig
            Priority: Critical


Archiva provides extension-points named consumers that offer flexibility for customizing the repo-scanning-process.

Similarly, there is also a need to extend functionality for the deploy-artifact events (release and snapshot) - both using webdav and web-UI.

Specifically, we have the need to purge
- all snapshots, when a release is deployed (the existing checkbox " Delete Released Snapshots" doesn't operate reliable)
- all previous snapshots of the same version (in case the client has not configured the maven-deploy-plugin properly)

I propose that a (Java) interface is provided that can be used to implement the class that provides the functionality.
This class could be specified in one of the (numerous) Archiva config-files.

There could be a single interface that provides 2 methods
- onReleaseDeployment(ReleaseRuntime obj)
- onSnapshotDeployment(SnapshotRuntime obj)

The SomeRuntime class should provide methods to retrieve all kinds of information concerning the artifact to be deployed, like
- getGroupId
- getArtifactId
- getVersion
- get RepoName
...

as well as operation-methods like
ReleaseRuntime .deleteSnapshots()
SnapshotRuntime.deletePreviousSnapshots()



--
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

       

[jira] Commented: (MRM-1256) providing extension-points for deploy-events

by JIRA jira@codehaus.org :: Rate this Message:

Reply (Restricted by the Administrator) | Reply to Author | View Threaded | Show Only this Message


    [ http://jira.codehaus.org/browse/MRM-1256?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=191962#action_191962 ]

Marc Lustig commented on MRM-1256:
----------------------------------

I have a few typos in the issue descriptions, but I have no rights to edit it.

First, it would be better to have two methods for each repo-type, like
- beforeReleaseDeployment
- afterReleaseDeployment
- beforeSnapshotDeployment
- afterSnapshotDeployment

I digged a bit into the Archiva-code.
The right starting-point to implement this cross-cutting logic would be org.apache.maven.archiva.webdav.RepositoryServlet.
It seems that the actual operation is really a plain dav-operation performed by jackrabbit.

So, at line #124 the following steps need to be performed:
- identify the target repo (name, type)
- build the runtime-object based on info from the request as well as from some static archiva-source
- create the implementation class
- call before___Deployment(runtime)

After calling AbstractWebdavServlet.execute(),
- the runtime-object should be fed with the result of the request and
- the after___Deployment(runtime) called.

thoughts?

> providing extension-points for deploy-events
> --------------------------------------------
>
>                 Key: MRM-1256
>                 URL: http://jira.codehaus.org/browse/MRM-1256
>             Project: Archiva
>          Issue Type: New Feature
>          Components: repository interface, WebDAV interface
>    Affects Versions: 1.2.2
>            Reporter: Marc Lustig
>            Priority: Critical
>
> Archiva provides extension-points named consumers that offer flexibility for customizing the repo-scanning-process.
> Similarly, there is also a need to extend functionality for the deploy-artifact events (release and snapshot) - both using webdav and web-UI.
> Specifically, we have the need to purge
> - all snapshots, when a release is deployed (the existing checkbox " Delete Released Snapshots" doesn't operate reliable)
> - all previous snapshots of the same version (in case the client has not configured the maven-deploy-plugin properly)
> I propose that a (Java) interface is provided that can be used to implement the class that provides the functionality.
> This class could be specified in one of the (numerous) Archiva config-files.
> There could be a single interface that provides 2 methods
> - onReleaseDeployment(ReleaseRuntime obj)
> - onSnapshotDeployment(SnapshotRuntime obj)
> The SomeRuntime class should provide methods to retrieve all kinds of information concerning the artifact to be deployed, like
> - getGroupId
> - getArtifactId
> - getVersion
> - get RepoName
> ...
> as well as operation-methods like
> ReleaseRuntime .deleteSnapshots()
> SnapshotRuntime.deletePreviousSnapshots()

--
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

       

[jira] Issue Comment Edited: (MRM-1256) providing extension-points for deploy-events

by JIRA jira@codehaus.org :: Rate this Message:

Reply (Restricted by the Administrator) | Reply to Author | View Threaded | Show Only this Message


    [ http://jira.codehaus.org/browse/MRM-1256?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=191962#action_191962 ]

Marc Lustig edited comment on MRM-1256 at 9/23/09 10:10 AM:
------------------------------------------------------------

I have a few typos in the issue descriptions, but I have no rights to edit it.

First, it would be better to have two methods for each repo-type, like
- beforeReleaseDeployment
- afterReleaseDeployment
- beforeSnapshotDeployment
- afterSnapshotDeployment

I digged a bit into the Archiva-code.
The right starting-point to implement this cross-cutting logic would be org.apache.maven.archiva.webdav.RepositoryServlet.
It seems that the actual operation is really a plain dav-operation performed by jackrabbit.

So, at line #124 the following steps need to be performed:
- identify the target repo (name, type) from the dav-request
- build the runtime-object based on info from the request as well as from some static archiva-source
- create the implementation class
- call before___Deployment(runtime)

After calling AbstractWebdavServlet.execute(),
- the runtime-object should be fed with the result of the request and
- the after___Deployment(runtime) called.

thoughts?

      was (Author: axismundi):
    I have a few typos in the issue descriptions, but I have no rights to edit it.

First, it would be better to have two methods for each repo-type, like
- beforeReleaseDeployment
- afterReleaseDeployment
- beforeSnapshotDeployment
- afterSnapshotDeployment

I digged a bit into the Archiva-code.
The right starting-point to implement this cross-cutting logic would be org.apache.maven.archiva.webdav.RepositoryServlet.
It seems that the actual operation is really a plain dav-operation performed by jackrabbit.

So, at line #124 the following steps need to be performed:
- identify the target repo (name, type)
- build the runtime-object based on info from the request as well as from some static archiva-source
- create the implementation class
- call before___Deployment(runtime)

After calling AbstractWebdavServlet.execute(),
- the runtime-object should be fed with the result of the request and
- the after___Deployment(runtime) called.

thoughts?
 

> providing extension-points for deploy-events
> --------------------------------------------
>
>                 Key: MRM-1256
>                 URL: http://jira.codehaus.org/browse/MRM-1256
>             Project: Archiva
>          Issue Type: New Feature
>          Components: repository interface, WebDAV interface
>    Affects Versions: 1.2.2
>            Reporter: Marc Lustig
>            Priority: Critical
>
> Archiva provides extension-points named consumers that offer flexibility for customizing the repo-scanning-process.
> Similarly, there is also a need to extend functionality for the deploy-artifact events (release and snapshot) - both using webdav and web-UI.
> Specifically, we have the need to purge
> - all snapshots, when a release is deployed (the existing checkbox " Delete Released Snapshots" doesn't operate reliable)
> - all previous snapshots of the same version (in case the client has not configured the maven-deploy-plugin properly)
> I propose that a (Java) interface is provided that can be used to implement the class that provides the functionality.
> This class could be specified in one of the (numerous) Archiva config-files.
> There could be a single interface that provides 2 methods
> - onReleaseDeployment(ReleaseRuntime obj)
> - onSnapshotDeployment(SnapshotRuntime obj)
> The SomeRuntime class should provide methods to retrieve all kinds of information concerning the artifact to be deployed, like
> - getGroupId
> - getArtifactId
> - getVersion
> - get RepoName
> ...
> as well as operation-methods like
> ReleaseRuntime .deleteSnapshots()
> SnapshotRuntime.deletePreviousSnapshots()

--
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

       

[jira] Commented: (MRM-1256) providing extension-points for deploy-events

by JIRA jira@codehaus.org :: Rate this Message:

Reply (Restricted by the Administrator) | Reply to Author | View Threaded | Show Only this Message


    [ http://jira.codehaus.org/browse/MRM-1256?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=192026#action_192026 ]

Brett Porter commented on MRM-1256:
-----------------------------------

I think this is best worked together with the event ideas for 1.3. If you did want to start working on a patch we could use that as a starting point.

In 1.2 you can already achieve some of the after* functionality by using a consumer which will be called on completion of all deployments (you can inspect the artifact to decide if it is snapshot or release). Would that help?

> providing extension-points for deploy-events
> --------------------------------------------
>
>                 Key: MRM-1256
>                 URL: http://jira.codehaus.org/browse/MRM-1256
>             Project: Archiva
>          Issue Type: New Feature
>          Components: repository interface, WebDAV interface
>    Affects Versions: 1.2.2
>            Reporter: Marc Lustig
>            Priority: Critical
>
> Archiva provides extension-points named consumers that offer flexibility for customizing the repo-scanning-process.
> Similarly, there is also a need to extend functionality for the deploy-artifact events (release and snapshot) - both using webdav and web-UI.
> Specifically, we have the need to purge
> - all snapshots, when a release is deployed (the existing checkbox " Delete Released Snapshots" doesn't operate reliable)
> - all previous snapshots of the same version (in case the client has not configured the maven-deploy-plugin properly)
> I propose that a (Java) interface is provided that can be used to implement the class that provides the functionality.
> This class could be specified in one of the (numerous) Archiva config-files.
> There could be a single interface that provides 2 methods
> - onReleaseDeployment(ReleaseRuntime obj)
> - onSnapshotDeployment(SnapshotRuntime obj)
> The SomeRuntime class should provide methods to retrieve all kinds of information concerning the artifact to be deployed, like
> - getGroupId
> - getArtifactId
> - getVersion
> - get RepoName
> ...
> as well as operation-methods like
> ReleaseRuntime .deleteSnapshots()
> SnapshotRuntime.deletePreviousSnapshots()

--
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

       

[jira] Commented: (MRM-1256) providing extension-points for deploy-events

by JIRA jira@codehaus.org :: Rate this Message:

Reply (Restricted by the Administrator) | Reply to Author | View Threaded | Show Only this Message


    [ http://jira.codehaus.org/browse/MRM-1256?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=192041#action_192041 ]

Maria Odea Ching commented on MRM-1256:
---------------------------------------

The consumer Brett mentioned in the previous comment is the RepositoryContentConsumer. You might also want to take a look at ArchivaDavResource#addMember(..) as that's where the task for executing the consumer after a deployment is queued..

> providing extension-points for deploy-events
> --------------------------------------------
>
>                 Key: MRM-1256
>                 URL: http://jira.codehaus.org/browse/MRM-1256
>             Project: Archiva
>          Issue Type: New Feature
>          Components: repository interface, WebDAV interface
>    Affects Versions: 1.2.2
>            Reporter: Marc Lustig
>            Priority: Critical
>
> Archiva provides extension-points named consumers that offer flexibility for customizing the repo-scanning-process.
> Similarly, there is also a need to extend functionality for the deploy-artifact events (release and snapshot) - both using webdav and web-UI.
> Specifically, we have the need to purge
> - all snapshots, when a release is deployed (the existing checkbox " Delete Released Snapshots" doesn't operate reliable)
> - all previous snapshots of the same version (in case the client has not configured the maven-deploy-plugin properly)
> I propose that a (Java) interface is provided that can be used to implement the class that provides the functionality.
> This class could be specified in one of the (numerous) Archiva config-files.
> There could be a single interface that provides 2 methods
> - onReleaseDeployment(ReleaseRuntime obj)
> - onSnapshotDeployment(SnapshotRuntime obj)
> The SomeRuntime class should provide methods to retrieve all kinds of information concerning the artifact to be deployed, like
> - getGroupId
> - getArtifactId
> - getVersion
> - get RepoName
> ...
> as well as operation-methods like
> ReleaseRuntime .deleteSnapshots()
> SnapshotRuntime.deletePreviousSnapshots()

--
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

       

[jira] Commented: (MRM-1256) providing extension-points for deploy-events

by JIRA jira@codehaus.org :: Rate this Message:

Reply (Restricted by the Administrator) | Reply to Author | View Threaded | Show Only this Message


    [ http://jira.codehaus.org/browse/MRM-1256?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=194404#action_194404 ]

Marc Lustig commented on MRM-1256:
----------------------------------

I would prefer a generic solution to implement extension-point, in the way I proposed it.
This would make Archiva more customizable - and more competetive.

> providing extension-points for deploy-events
> --------------------------------------------
>
>                 Key: MRM-1256
>                 URL: http://jira.codehaus.org/browse/MRM-1256
>             Project: Archiva
>          Issue Type: New Feature
>          Components: repository interface, WebDAV interface
>    Affects Versions: 1.2.2
>            Reporter: Marc Lustig
>            Priority: Critical
>
> Archiva provides extension-points named consumers that offer flexibility for customizing the repo-scanning-process.
> Similarly, there is also a need to extend functionality for the deploy-artifact events (release and snapshot) - both using webdav and web-UI.
> Specifically, we have the need to purge
> - all snapshots, when a release is deployed (the existing checkbox " Delete Released Snapshots" doesn't operate reliable)
> - all previous snapshots of the same version (in case the client has not configured the maven-deploy-plugin properly)
> I propose that a (Java) interface is provided that can be used to implement the class that provides the functionality.
> This class could be specified in one of the (numerous) Archiva config-files.
> There could be a single interface that provides 2 methods
> - onReleaseDeployment(ReleaseRuntime obj)
> - onSnapshotDeployment(SnapshotRuntime obj)
> The SomeRuntime class should provide methods to retrieve all kinds of information concerning the artifact to be deployed, like
> - getGroupId
> - getArtifactId
> - getVersion
> - get RepoName
> ...
> as well as operation-methods like
> ReleaseRuntime .deleteSnapshots()
> SnapshotRuntime.deletePreviousSnapshots()

--
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

       

[jira] Issue Comment Edited: (MRM-1256) providing extension-points for deploy-events

by JIRA jira@codehaus.org :: Rate this Message:

Reply (Restricted by the Administrator) | Reply to Author | View Threaded | Show Only this Message


    [ http://jira.codehaus.org/browse/MRM-1256?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=194404#action_194404 ]

Marc Lustig edited comment on MRM-1256 at 10/12/09 8:34 AM:
------------------------------------------------------------

I would prefer a generic solution to implement extension-points, in the way I proposed it.
This would make Archiva more customizable - and more competetive.

      was (Author: axismundi):
    I would prefer a generic solution to implement extension-point, in the way I proposed it.
This would make Archiva more customizable - and more competetive.
 

> providing extension-points for deploy-events
> --------------------------------------------
>
>                 Key: MRM-1256
>                 URL: http://jira.codehaus.org/browse/MRM-1256
>             Project: Archiva
>          Issue Type: New Feature
>          Components: repository interface, WebDAV interface
>    Affects Versions: 1.2.2
>            Reporter: Marc Lustig
>            Priority: Critical
>
> Archiva provides extension-points named consumers that offer flexibility for customizing the repo-scanning-process.
> Similarly, there is also a need to extend functionality for the deploy-artifact events (release and snapshot) - both using webdav and web-UI.
> Specifically, we have the need to purge
> - all snapshots, when a release is deployed (the existing checkbox " Delete Released Snapshots" doesn't operate reliable)
> - all previous snapshots of the same version (in case the client has not configured the maven-deploy-plugin properly)
> I propose that a (Java) interface is provided that can be used to implement the class that provides the functionality.
> This class could be specified in one of the (numerous) Archiva config-files.
> There could be a single interface that provides 2 methods
> - onReleaseDeployment(ReleaseRuntime obj)
> - onSnapshotDeployment(SnapshotRuntime obj)
> The SomeRuntime class should provide methods to retrieve all kinds of information concerning the artifact to be deployed, like
> - getGroupId
> - getArtifactId
> - getVersion
> - get RepoName
> ...
> as well as operation-methods like
> ReleaseRuntime .deleteSnapshots()
> SnapshotRuntime.deletePreviousSnapshots()

--
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

       

[jira] Updated: (MRM-1256) providing extension-points for deploy-events

by JIRA jira@codehaus.org :: Rate this Message:

Reply (Restricted by the Administrator) | Reply to Author | View Threaded | Show Only this Message


     [ http://jira.codehaus.org/browse/MRM-1256?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Brett Porter updated MRM-1256:
------------------------------

    Fix Version/s: 1.3

> providing extension-points for deploy-events
> --------------------------------------------
>
>                 Key: MRM-1256
>                 URL: http://jira.codehaus.org/browse/MRM-1256
>             Project: Archiva
>          Issue Type: New Feature
>          Components: repository interface, WebDAV interface
>    Affects Versions: 1.2.2
>            Reporter: Marc Lustig
>            Priority: Critical
>             Fix For: 1.3
>
>
> Archiva provides extension-points named consumers that offer flexibility for customizing the repo-scanning-process.
> Similarly, there is also a need to extend functionality for the deploy-artifact events (release and snapshot) - both using webdav and web-UI.
> Specifically, we have the need to purge
> - all snapshots, when a release is deployed (the existing checkbox " Delete Released Snapshots" doesn't operate reliable)
> - all previous snapshots of the same version (in case the client has not configured the maven-deploy-plugin properly)
> I propose that a (Java) interface is provided that can be used to implement the class that provides the functionality.
> This class could be specified in one of the (numerous) Archiva config-files.
> There could be a single interface that provides 2 methods
> - onReleaseDeployment(ReleaseRuntime obj)
> - onSnapshotDeployment(SnapshotRuntime obj)
> The SomeRuntime class should provide methods to retrieve all kinds of information concerning the artifact to be deployed, like
> - getGroupId
> - getArtifactId
> - getVersion
> - get RepoName
> ...
> as well as operation-methods like
> ReleaseRuntime .deleteSnapshots()
> SnapshotRuntime.deletePreviousSnapshots()

--
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

       

[jira] Commented: (MRM-1256) providing extension-points for deploy-events

by JIRA jira@codehaus.org :: Rate this Message:

Reply (Restricted by the Administrator) | Reply to Author | View Threaded | Show Only this Message


    [ http://jira.codehaus.org/browse/MRM-1256?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=194977#action_194977 ]

Marc Lustig commented on MRM-1256:
----------------------------------

I plan to analyze this weekend a possible implementation based on this discussion.

http://www.nabble.com/helping-to-implement-MRM-1256-td25855756.html

> providing extension-points for deploy-events
> --------------------------------------------
>
>                 Key: MRM-1256
>                 URL: http://jira.codehaus.org/browse/MRM-1256
>             Project: Archiva
>          Issue Type: New Feature
>          Components: repository interface, WebDAV interface
>    Affects Versions: 1.2.2
>            Reporter: Marc Lustig
>            Priority: Critical
>             Fix For: 1.3
>
>
> Archiva provides extension-points named consumers that offer flexibility for customizing the repo-scanning-process.
> Similarly, there is also a need to extend functionality for the deploy-artifact events (release and snapshot) - both using webdav and web-UI.
> Specifically, we have the need to purge
> - all snapshots, when a release is deployed (the existing checkbox " Delete Released Snapshots" doesn't operate reliable)
> - all previous snapshots of the same version (in case the client has not configured the maven-deploy-plugin properly)
> I propose that a (Java) interface is provided that can be used to implement the class that provides the functionality.
> This class could be specified in one of the (numerous) Archiva config-files.
> There could be a single interface that provides 2 methods
> - onReleaseDeployment(ReleaseRuntime obj)
> - onSnapshotDeployment(SnapshotRuntime obj)
> The SomeRuntime class should provide methods to retrieve all kinds of information concerning the artifact to be deployed, like
> - getGroupId
> - getArtifactId
> - getVersion
> - get RepoName
> ...
> as well as operation-methods like
> ReleaseRuntime .deleteSnapshots()
> SnapshotRuntime.deletePreviousSnapshots()

--
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