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 17:10:06 UTC

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

    [ 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