You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@archiva.apache.org by "Marc Lustig (JIRA)" <ji...@codehaus.org> on 2009/09/23 16:20:07 UTC

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

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

Posted by "Maria Odea Ching (JIRA)" <ji...@codehaus.org>.
     [ http://jira.codehaus.org/browse/MRM-1256?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Maria Odea Ching updated MRM-1256:
----------------------------------

    Fix Version/s:     (was: 1.3)
                   1.3.1

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

Posted by "Brett Porter (JIRA)" <ji...@codehaus.org>.
     [ 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

Posted by "Marc Lustig (JIRA)" <ji...@codehaus.org>.
    [ 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

        

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

Posted by "Marc Lustig (JIRA)" <ji...@codehaus.org>.
    [ 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] Commented: (MRM-1256) providing extension-points for deploy-events

Posted by "Brett Porter (JIRA)" <ji...@codehaus.org>.
    [ 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] Issue Comment Edited: (MRM-1256) providing extension-points for deploy-events

Posted by "Marc Lustig (JIRA)" <ji...@codehaus.org>.
    [ 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] Commented: (MRM-1256) providing extension-points for deploy-events

Posted by "Brett Porter (JIRA)" <ji...@codehaus.org>.
    [ http://jira.codehaus.org/browse/MRM-1256?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=211148#action_211148 ] 

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

the branch code is now merged in and might start making this easier, or at least give us a framework to add it into and we can adjust legacy code. Marc, have you made any progress?

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

Posted by "Maria Odea Ching (JIRA)" <ji...@codehaus.org>.
    [ 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

Posted by "Marc Lustig (JIRA)" <ji...@codehaus.org>.
    [ 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] Commented: (MRM-1256) providing extension-points for deploy-events

Posted by "Marc Lustig (JIRA)" <ji...@codehaus.org>.
    [ http://jira.codehaus.org/browse/MRM-1256?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=211613#action_211613 ] 

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

Sorry, no :-(   We had trouble with our Archiva instance regarding artifact integrity and I had no time to spend in new featiures...

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

Posted by "Marc Lustig (JIRA)" <ji...@codehaus.org>.
    [ 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