]> source.dussan.org Git - archiva.git/commitdiff
MRM-781 - Removal of Archiva-Webdav implementation in favor of Jackrabbit-webdav
authorJames William Dumay <jdumay@apache.org>
Wed, 4 Jun 2008 03:50:03 +0000 (03:50 +0000)
committerJames William Dumay <jdumay@apache.org>
Wed, 4 Jun 2008 03:50:03 +0000 (03:50 +0000)
* Reenabled RepositoryServletBrowseTest
* Added Extra DavResourceLocator tests
* Increased Litmus test score to 87.7%

git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@662968 13f79535-47bb-0310-9956-ffa450edef68

archiva-modules/archiva-web/archiva-webdav/src/main/java/org/apache/maven/archiva/webdav/ArchivaDavResourceFactory.java
archiva-modules/archiva-web/archiva-webdav/src/main/java/org/apache/maven/archiva/webdav/ArchivaDavResourceLocator.java
archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/maven/archiva/webdav/ArchivaDavResourceLocatorTest.java
archiva-modules/archiva-web/archiva-webdav/src/test/java/org/apache/maven/archiva/webdav/RepositoryServletBrowseTest.java

index d73f4f1945be2d1f8bed9a03750b272bc3ab7dad..ba51a894f4a727d4d7de3892bbcead9f41551b6d 100644 (file)
@@ -222,7 +222,7 @@ public class ArchivaDavResourceFactory
                         setHeaders( locator, response );
 
                         // compatibility with MRM-440 to ensure browsing the repository works ok
-                        if ( resource.isCollection() && !resource.getLocator().getResourcePath().endsWith( "/" ) )
+                        if ( resource.isCollection() && !resource.getLocator().getHref(true).endsWith("/" ) )
                         {
                             throw new BrowserRedirectException( resource.getHref() );
                         }
index 32bb76c2b691b8be23a7c7ecf83001e289c9dcae..b936eb6e71d03d003942bfda9b884cf363c9d9dd 100644 (file)
@@ -60,14 +60,14 @@ public class ArchivaDavResourceLocator
         {
             hrefPrefix = hrefPrefix.substring( 0, hrefPrefix.length() - 1 );
         }
+
+        href = hrefPrefix + escapedPath;
         
         //Remove trailing slashes otherwise Text.getRelativeParent fails
         if (resourcePath.endsWith("/") && resourcePath.length() > 1)
         {
             this.resourcePath = resourcePath.substring( 0, resourcePath.length() - 1 );
         }
-
-        href = hrefPrefix + escapedPath;
     }
 
     public String getRepositoryId()
@@ -108,7 +108,7 @@ public class ArchivaDavResourceLocator
     public String getHref( boolean isCollection )
     {
         // avoid doubled trailing '/' for the root item
-        String suffix = ( isCollection && !isRootLocation() ) ? "/" : "";
+        String suffix = ( isCollection && !isRootLocation() && !href.endsWith("/") ) ? "/" : "";
         return href + suffix;
     }
 
index c40ea1d65e7f02d05021c8f116904b69d7b82d13..e81c134e5bc4f3bddad3ccd6c065de55e4bdf6fc 100644 (file)
@@ -35,13 +35,30 @@ public class ArchivaDavResourceLocatorTest extends TestCase
         super.setUp();
         factory = new ArchivaDavLocatorFactory();
     }
+    
+    public void testAvoidDoubleSlashInHref()
+        throws Exception
+    {
+        String prefix = "http://myproxy/";
+        String href = "/repository/internal/";
+        ArchivaDavResourceLocator locator = getLocator(prefix, href);
+
+        assertEquals("internal", locator.getRepositoryId());
+        assertEquals("", locator.getWorkspaceName());
+        assertEquals("", locator.getWorkspacePath());
+        assertEquals("http://myproxy/", locator.getPrefix());
+        assertEquals("http://myproxy/repository/internal/", locator.getHref(false));
+        assertEquals("http://myproxy/repository/internal/", locator.getHref(true));
+        assertEquals("/repository/internal", locator.getResourcePath());
+        assertEquals("/repository/internal", locator.getRepositoryPath());        
+    }
 
     public void testLocatorWithPrefixHref()
         throws Exception
     {
         String prefix = "http://myproxy/";
         String href = "/repository/internal";
-        ArchivaDavResourceLocator locator = (ArchivaDavResourceLocator)factory.createResourceLocator(prefix, href);
+        ArchivaDavResourceLocator locator = getLocator(prefix, href);
 
         assertEquals("internal", locator.getRepositoryId());
         assertEquals("", locator.getWorkspaceName());
@@ -58,7 +75,7 @@ public class ArchivaDavResourceLocatorTest extends TestCase
     {
         String prefix = "http://myproxy/";
         String href = "http://myproxy/repository/internal";
-        ArchivaDavResourceLocator locator = (ArchivaDavResourceLocator)factory.createResourceLocator(prefix, href);
+        ArchivaDavResourceLocator locator = getLocator(prefix, href);
 
         assertEquals("internal", locator.getRepositoryId());
         assertEquals("", locator.getWorkspaceName());
@@ -75,7 +92,7 @@ public class ArchivaDavResourceLocatorTest extends TestCase
     {
         String prefix = "http://myproxy/";
         String href = "/";
-        ArchivaDavResourceLocator locator = (ArchivaDavResourceLocator)factory.createResourceLocator(prefix, href);
+        ArchivaDavResourceLocator locator = getLocator(prefix, href);
 
         assertEquals("", locator.getRepositoryId());
         assertEquals("", locator.getWorkspaceName());
@@ -86,4 +103,9 @@ public class ArchivaDavResourceLocatorTest extends TestCase
         assertEquals("/", locator.getResourcePath());
         assertEquals("/", locator.getRepositoryPath());
     }
+    
+    private ArchivaDavResourceLocator getLocator( String prefix, String href )
+    {
+        return (ArchivaDavResourceLocator)factory.createResourceLocator(prefix, href);
+    }
 }
index 4e50b452af567cd288ae3d17ad76188b424083f2..885b8c1e6ae2eacb87b254c852b3635fe4cec78f 100644 (file)
@@ -1,62 +1,62 @@
-//package org.apache.maven.archiva.webdav;
-//
-///*
-// * Licensed to the Apache Software Foundation (ASF) under one
-// * or more contributor license agreements.  See the NOTICE file
-// * distributed with this work for additional information
-// * regarding copyright ownership.  The ASF licenses this file
-// * to you under the Apache License, Version 2.0 (the
-// * "License"); you may not use this file except in compliance
-// * with the License.  You may obtain a copy of the License at
-// *
-// *  http://www.apache.org/licenses/LICENSE-2.0
-// *
-// * Unless required by applicable law or agreed to in writing,
-// * software distributed under the License is distributed on an
-// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// * KIND, either express or implied.  See the License for the
-// * specific language governing permissions and limitations
-// * under the License.
-// */
-//
-//import com.meterware.httpunit.GetMethodWebRequest;
-//import com.meterware.httpunit.WebLink;
-//import com.meterware.httpunit.WebRequest;
-//import com.meterware.httpunit.WebResponse;
-//
-//import java.io.File;
-//
-//import javax.servlet.http.HttpServletResponse;
-//
-///**
-// * RepositoryServletBrowseTest 
-// *
-// * @author <a href="mailto:joakime@apache.org">Joakim Erdfelt</a>
-// * @version $Id$
-// */
-//public class RepositoryServletBrowseTest
-//    extends AbstractRepositoryServletTestCase
-//{
-//    public void testBrowse()
-//        throws Exception
-//    {
-//        new File( repoRootInternal, "org/apache/archiva" ).mkdirs();
-//        new File( repoRootInternal, "net/sourceforge" ).mkdirs();
-//        new File( repoRootInternal, "commons-lang" ).mkdirs();
-//
-//        WebRequest request = new GetMethodWebRequest( "http://machine.com/repository/internal/" );
-//        WebResponse response = sc.getResponse( request );
-//        assertEquals( "Response", HttpServletResponse.SC_OK, response.getResponseCode() );
-//
-//        // dumpResponse( response );
-//
-//        WebLink links[] = response.getLinks();
-//        String expectedLinks[] = new String[] { "./commons-lang/", "./net/", "./org/" };
-//
-//        assertEquals( "Links.length", expectedLinks.length, links.length );
-//        for ( int i = 0; i < links.length; i++ )
-//        {
-//            assertEquals( "Link[" + i + "]", expectedLinks[i], links[i].getURLString() );
-//        }
-//    }
-//}
+package org.apache.maven.archiva.webdav;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import com.meterware.httpunit.GetMethodWebRequest;
+import com.meterware.httpunit.WebLink;
+import com.meterware.httpunit.WebRequest;
+import com.meterware.httpunit.WebResponse;
+
+import java.io.File;
+
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * RepositoryServletBrowseTest 
+ *
+ * @author <a href="mailto:joakime@apache.org">Joakim Erdfelt</a>
+ * @version $Id$
+ */
+public class RepositoryServletBrowseTest
+    extends AbstractRepositoryServletTestCase
+{
+    public void testBrowse()
+        throws Exception
+    {
+        new File( repoRootInternal, "org/apache/archiva" ).mkdirs();
+        new File( repoRootInternal, "net/sourceforge" ).mkdirs();
+        new File( repoRootInternal, "commons-lang" ).mkdirs();
+
+        WebRequest request = new GetMethodWebRequest( "http://machine.com/repository/internal/" );
+        WebResponse response = sc.getResponse( request );
+        assertEquals( "Response", HttpServletResponse.SC_OK, response.getResponseCode() );
+
+        // dumpResponse( response );
+
+        WebLink links[] = response.getLinks();
+        String expectedLinks[] = new String[] { "./commons-lang/", "./net/", "./org/" };
+
+        assertEquals( "Links.length", expectedLinks.length, links.length );
+        for ( int i = 0; i < links.length; i++ )
+        {
+            assertEquals( "Link[" + i + "]", expectedLinks[i], links[i].getURLString() );
+        }
+    }
+}