Author: oching
Date: Tue Aug 12 00:50:27 2008
New Revision: 685076

URL: http://svn.apache.org/viewvc?rev=685076&view=rev
Log:
[MRM-893]
submitted by Dan Tran

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

Modified:
    
archiva/trunk/archiva-modules/archiva-web/archiva-webdav/src/main/java/org/apache/maven/archiva/webdav/ArchivaDavResourceFactory.java
    
archiva/trunk/archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/maven/archiva/webdav/RepositoryServletBrowseTest.java

Modified: 
archiva/trunk/archiva-modules/archiva-web/archiva-webdav/src/main/java/org/apache/maven/archiva/webdav/ArchivaDavResourceFactory.java
URL: 
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webdav/src/main/java/org/apache/maven/archiva/webdav/ArchivaDavResourceFactory.java?rev=685076&r1=685075&r2=685076&view=diff
==============================================================================
--- 
archiva/trunk/archiva-modules/archiva-web/archiva-webdav/src/main/java/org/apache/maven/archiva/webdav/ArchivaDavResourceFactory.java
 (original)
+++ 
archiva/trunk/archiva-modules/archiva-web/archiva-webdav/src/main/java/org/apache/maven/archiva/webdav/ArchivaDavResourceFactory.java
 Tue Aug 12 00:50:27 2008
@@ -409,6 +409,17 @@
         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(),

Modified: 
archiva/trunk/archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/maven/archiva/webdav/RepositoryServletBrowseTest.java
URL: 
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/maven/archiva/webdav/RepositoryServletBrowseTest.java?rev=685076&r1=685075&r2=685076&view=diff
==============================================================================
--- 
archiva/trunk/archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/maven/archiva/webdav/RepositoryServletBrowseTest.java
 (original)
+++ 
archiva/trunk/archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/maven/archiva/webdav/RepositoryServletBrowseTest.java
 Tue Aug 12 00:50:27 2008
@@ -72,6 +72,30 @@
         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[])
     {


Reply via email to