You are viewing a plain text version of this content. The canonical link for it is here.
Posted to wagon-commits@maven.apache.org by da...@apache.org on 2009/01/03 22:25:34 UTC

svn commit: r731091 - in /maven/wagon/trunk: ./ wagon-providers/wagon-webdav-jackrabbit/ wagon-providers/wagon-webdav-jackrabbit/src/main/java/org/apache/maven/wagon/providers/webdav/ wagon-providers/wagon-webdav-jackrabbit/src/test/java/org/apache/mav...

Author: dantran
Date: Sat Jan  3 13:25:34 2009
New Revision: 731091

URL: http://svn.apache.org/viewvc?rev=731091&view=rev
Log:
WAGON-246, WAGON-255: use jackrabbit-webdav-1.5.0, fix getFileList to retrieve directory entries as well, and add getWagonWebDavTest.

Modified:
    maven/wagon/trunk/   (props changed)
    maven/wagon/trunk/wagon-providers/wagon-webdav-jackrabbit/pom.xml
    maven/wagon/trunk/wagon-providers/wagon-webdav-jackrabbit/src/main/java/org/apache/maven/wagon/providers/webdav/WebDavWagon.java
    maven/wagon/trunk/wagon-providers/wagon-webdav-jackrabbit/src/test/java/org/apache/maven/wagon/providers/webdav/WebDavWagonTest.java

Propchange: maven/wagon/trunk/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Sat Jan  3 13:25:34 2009
@@ -9,3 +9,4 @@
 *.iml
 *.ipr
 *.iws
+.metadata

Modified: maven/wagon/trunk/wagon-providers/wagon-webdav-jackrabbit/pom.xml
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-providers/wagon-webdav-jackrabbit/pom.xml?rev=731091&r1=731090&r2=731091&view=diff
==============================================================================
--- maven/wagon/trunk/wagon-providers/wagon-webdav-jackrabbit/pom.xml (original)
+++ maven/wagon/trunk/wagon-providers/wagon-webdav-jackrabbit/pom.xml Sat Jan  3 13:25:34 2009
@@ -53,22 +53,18 @@
     <dependency>
       <groupId>org.apache.jackrabbit</groupId>
       <artifactId>jackrabbit-webdav</artifactId>
-      <version>1.4</version>
+      <version>1.5.0</version>
       <exclusions>
         <exclusion>
-          <groupId>xerces</groupId>
-          <artifactId>xercesImpl</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>commons-collections</groupId>
-          <artifactId>commons-collections</artifactId>
+          <artifactId>commons-logging</artifactId>
+          <groupId>commons-logging</groupId>
         </exclusion>
       </exclusions>
     </dependency>
     <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-nop</artifactId>
-      <version>1.5.0</version>
+      <version>1.5.3</version>
       <scope>runtime</scope>
     </dependency>
 

Modified: maven/wagon/trunk/wagon-providers/wagon-webdav-jackrabbit/src/main/java/org/apache/maven/wagon/providers/webdav/WebDavWagon.java
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-providers/wagon-webdav-jackrabbit/src/main/java/org/apache/maven/wagon/providers/webdav/WebDavWagon.java?rev=731091&r1=731090&r2=731091&view=diff
==============================================================================
--- maven/wagon/trunk/wagon-providers/wagon-webdav-jackrabbit/src/main/java/org/apache/maven/wagon/providers/webdav/WebDavWagon.java (original)
+++ maven/wagon/trunk/wagon-providers/wagon-webdav-jackrabbit/src/main/java/org/apache/maven/wagon/providers/webdav/WebDavWagon.java Sat Jan  3 13:25:34 2009
@@ -218,11 +218,12 @@
                 method.releaseConnection();
         }
     }
-
+    
     public List getFileList( String destinationDirectory )
         throws TransferFailedException, ResourceDoesNotExistException, AuthorizationException
     {
-        final String url = getRepository().getUrl() + '/' + destinationDirectory;
+        String url = getRepository().getUrl() + '/' + destinationDirectory;
+        
         PropFindMethod method = null;
         try
         {
@@ -240,8 +241,26 @@
 
                     for ( int i = 0; i < multiStatus.getResponses().length; i++ )
                     {
+                        
                         MultiStatusResponse response = multiStatus.getResponses()[i];
-                        String fileName = PathUtils.filename( URLDecoder.decode( response.getHref() ) );
+                        
+                        String entryUrl =  response.getHref();
+                        String fileName = PathUtils.filename( URLDecoder.decode( entryUrl ) );
+                        if ( entryUrl.endsWith( "/" ) )
+                        {
+                            if ( i == 0 )
+                            {
+                                //by design jackrabbit webdav sticks parent directory as the first entry 
+                                // so we need to ignore this entry
+                                // http://www.nabble.com/Extra-entry-in-get-file-list-with-jackrabbit-webdav-td21262786.html
+                                // http://www.webdav.org/specs/rfc4918.html#rfc.section.9.1
+                                continue;
+                            }
+                            
+                            //extract "dir/" part of "path.to.dir/"
+                            fileName = PathUtils.filename( PathUtils.dirname( URLDecoder.decode( entryUrl ) ) ) + "/";
+                        }
+                        
                         if ( !StringUtils.isEmpty( fileName ) )
                         {
                             dirs.add( fileName );

Modified: maven/wagon/trunk/wagon-providers/wagon-webdav-jackrabbit/src/test/java/org/apache/maven/wagon/providers/webdav/WebDavWagonTest.java
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-providers/wagon-webdav-jackrabbit/src/test/java/org/apache/maven/wagon/providers/webdav/WebDavWagonTest.java?rev=731091&r1=731090&r2=731091&view=diff
==============================================================================
--- maven/wagon/trunk/wagon-providers/wagon-webdav-jackrabbit/src/test/java/org/apache/maven/wagon/providers/webdav/WebDavWagonTest.java (original)
+++ maven/wagon/trunk/wagon-providers/wagon-webdav-jackrabbit/src/test/java/org/apache/maven/wagon/providers/webdav/WebDavWagonTest.java Sat Jan  3 13:25:34 2009
@@ -1,43 +1,42 @@
 package org.apache.maven.wagon.providers.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.
+ * 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 it.could.webdav.DAVServlet;
 
 import java.io.File;
 import java.io.IOException;
+import java.util.List;
 import java.util.Properties;
 
+import org.apache.maven.wagon.ResourceDoesNotExistException;
 import org.apache.maven.wagon.StreamingWagon;
+import org.apache.maven.wagon.Wagon;
 import org.apache.maven.wagon.http.HttpWagonTestCase;
 import org.apache.maven.wagon.repository.Repository;
 import org.apache.maven.wagon.resource.Resource;
-import org.codehaus.plexus.util.FileUtils;
 import org.mortbay.jetty.Server;
 import org.mortbay.jetty.servlet.Context;
 import org.mortbay.jetty.servlet.ServletHolder;
 
-/**
+/*
  * WebDAV Wagon Test
  * 
  * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
+ * 
  * @author <a href="mailto:carlos@apache.org">Carlos Sanchez</a>
  */
 public class WebDavWagonTest
@@ -70,6 +69,7 @@
         return ( file.lastModified() / 1000 ) * 1000;
     }
 
+    
     private File getDavRepository()
     {
         return getTestFile( "target/test-output/http-repository/newfolder/folder2" );
@@ -134,4 +134,83 @@
     {
         ( (WebDavWagon) wagon ).setHttpHeaders( properties );
     }
+
+    /**
+     * Make sure wagon webdav can detect remote directory
+     * @throws Exception
+     */
+    public void testWagonWebDavGetFileList()
+        throws Exception
+    {
+        setupRepositories();
+
+        setupWagonTestingFixtures();
+
+        String dirName = "file-list";
+
+        String filenames[] = new String[] {
+            "test-resource.txt",
+            "test-resource.pom",
+            "test-resource b.txt",
+            "more-resources.dat" };
+
+        for ( int i = 0; i < filenames.length; i++ )
+        {
+            putFile( dirName + "/" + filenames[i], dirName + "/" + filenames[i], filenames[i] + "\n" );
+        }
+
+        String dirnames[] = new String[] {
+            "test-dir1",
+            "test-dir2"};
+
+        for ( int i = 0; i < dirnames.length; i++ )
+        {
+            new File( getDavRepository(), dirName + "/" + dirnames[i] ).mkdirs();
+        }
+
+        Wagon wagon = getWagon();
+
+        wagon.connect( testRepository, getAuthInfo() );
+
+        List list = wagon.getFileList( dirName );
+
+        assertNotNull( "file list should not be null.", list );
+        assertEquals( "file list should contain 6 items", 6, list.size() );
+
+        for ( int i = 0; i < filenames.length; i++ )
+        {
+            assertTrue( "Filename '" + filenames[i] + "' should be in list.", list.contains( filenames[i] ) );
+        }
+
+        for ( int i = 0; i < dirnames.length; i++ )
+        {
+            assertTrue( "Directory '" + dirnames[i] + "' should be in list.", list.contains( dirnames[i] + "/" ) );
+        }
+
+        ///////////////////////////////////////////////////////////////////////////
+        list = wagon.getFileList( "" );
+        assertNotNull( "file list should not be null.", list );
+        assertEquals( "file list should contain 1 items", 1, list.size() );
+
+        ///////////////////////////////////////////////////////////////////////////
+        list = wagon.getFileList( dirName + "/test-dir1" );
+        assertNotNull( "file list should not be null.", list );
+        assertEquals( "file list should contain 0 items", 0, list.size() );
+
+        /////////////////////////////////////////////////////////////////////////////
+        try
+        {
+            list = wagon.getFileList( dirName + "/test-dir-bogus" );
+            fail( "Exception expected" );
+        }
+        catch ( ResourceDoesNotExistException e )
+        {
+        
+        }
+        
+        wagon.disconnect();
+        
+
+        tearDownWagonTestingFixtures();
+    }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: wagon-commits-unsubscribe@maven.apache.org
For additional commands, e-mail: wagon-commits-help@maven.apache.org