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