You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "nicolas de loof (JIRA)" <ji...@codehaus.org> on 2007/02/07 16:13:44 UTC

[jira] Reopened: (MRM-153) when used as a maven1 proxy, Archiva should handle relocation from maven2 poms

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

nicolas de loof reopened MRM-153:
---------------------------------


This feature is broken by the use of DAV repository in place of the original "/proxy" path.

in ProxiedDavServer :
if ( WebdavMethodUtil.isReadMethod( request.getRequest().getMethod() ) )
        {
            if ( !hasResource( request.getLogicalResource() ) )
            {
                fetchContentFromProxies( request );
            }
        }
        davServer.process( request, response );

> The relocation is handled in fetchContentFromProxies( request ); but the relocated path is not reported in the request

The request can be updated, but this requires to convert the File object into a path in the managed repository. I solved this by using :

            File file = proxyRequestHandler.get( request.getLogicalResource(), this.proxiedRepositories, this.managedRepository,
                                     this.wagonProxy );
            File baseDir = new File( this.managedRepository.getBasedir() );
            String path = file.getAbsolutePath().substring( baseDir.getAbsolutePath().length() );
            request.getRequest().setPathInfo( path );

... but those absolutePath.substring don't look very clean. Is there any other way to compute this Path from the File object and the managedRepository ? An alternative would be to return a "RepositoryEntry" in place of a File, that would contain both File and path.

> when used as a maven1 proxy, Archiva should handle relocation from maven2 poms
> ------------------------------------------------------------------------------
>
>                 Key: MRM-153
>                 URL: http://jira.codehaus.org/browse/MRM-153
>             Project: Archiva
>          Issue Type: Improvement
>         Environment: Archiva as a repository proxy for maven1
>            Reporter: nicolas de loof
>         Assigned To: Brett Porter
>            Priority: Minor
>             Fix For: 1.0
>
>         Attachments: DefaultProxyManager.java.patch, DefaultProxyManager.java.patch, MRM-153-test.patch, MRM-153.patch, MRM-155.patch, patch.patch
>
>
> When a maven1 client asks for /servletapi/jars/servletapi-2.4.jar, Archiva converts path to the maven2 location of this artifact. As maven1 has no relocation support, the jar is required in the repo. 
> Archiva can be more that a proxy : download the artifact POM, read relocation infos, and return the relocated jar.
> attached Patch add a new "applyRelocation" to DefaultProxyManager.
> I've tried this code with the servletapi example, but it may be bad designed as I just discovered maven / archiva APIs.

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