Browse Source

[MRM-893]

submitted by Dan Tran

-return a 404 when the request is a resource file appended with a '/' 


git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@685076 13f79535-47bb-0310-9956-ffa450edef68
tags/archiva-1.2-M1
Maria Odea B. Ching 16 years ago
parent
commit
ab7e59db21

+ 11
- 0
archiva-modules/archiva-web/archiva-webdav/src/main/java/org/apache/maven/archiva/webdav/ArchivaDavResourceFactory.java View File

@@ -409,6 +409,17 @@ public class ArchivaDavResourceFactory
throws DavException
{
File resourceFile = new File( managedRepository.getRepoRoot(), logicalResource.getPath() );
//MRM-893, dont send back a file when user intentionally wants a directory
if ( locator.getHref( false ).endsWith( "/" ) )
{
if ( ! resourceFile.isDirectory() )
{
//force a resource not found
return null;
}
}

ArchivaDavResource resource =
new ArchivaDavResource( resourceFile.getAbsolutePath(), logicalResource.getPath(),
managedRepository.getRepository(), request.getRemoteAddr(),

+ 24
- 0
archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/maven/archiva/webdav/RepositoryServletBrowseTest.java View File

@@ -72,6 +72,30 @@ public class RepositoryServletBrowseTest
String expectedLinks[] = new String[] { "../", "apache/", "codehaus/" };
assertLinks(expectedLinks, response.getLinks());
}

public void testGetDirectoryWhichHasMatchingFile() //MRM-893
throws Exception
{
new File( repoRootInternal, "org/apache/archiva/artifactId/1.0" ).mkdirs();
new File( repoRootInternal, "org/apache/archiva/artifactId/1.0/artifactId-1.0.jar" ).createNewFile();

WebRequest request = new GetMethodWebRequest( "http://machine.com/repository/internal/org/apache/archiva/artifactId" );
WebResponse response = sc.getResponse( request );
assertEquals( "Response", HttpServletResponse.SC_OK, response.getResponseCode() );

request = new GetMethodWebRequest( "http://machine.com/repository/internal/org/apache/archiva/artifactId/" );
response = sc.getResponse( request );
assertEquals( "Response", HttpServletResponse.SC_OK, response.getResponseCode() );
request = new GetMethodWebRequest( "http://machine.com/repository/internal/org/apache/archiva/artifactId/1.0/artifactId-1.0.jar" );
response = sc.getResponse( request );
assertEquals( "Response", HttpServletResponse.SC_OK, response.getResponseCode() );
request = new GetMethodWebRequest( "http://machine.com/repository/internal/org/apache/archiva/artifactId/1.0/artifactId-1.0.jar/" );
response = sc.getResponse( request );
assertEquals( "Response", HttpServletResponse.SC_NOT_FOUND, response.getResponseCode() );
}
private void assertLinks(String expectedLinks[], WebLink actualLinks[])
{

Loading…
Cancel
Save