You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by hb...@apache.org on 2013/02/09 15:24:20 UTC
git commit: [WAGON-388] retain jsoup HtmlFileListParser implementation
Updated Branches:
refs/heads/master 24a54ebe7 -> 5fcc6315d
[WAGON-388] retain jsoup HtmlFileListParser implementation
Project: http://git-wip-us.apache.org/repos/asf/maven-wagon/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven-wagon/commit/5fcc6315
Tree: http://git-wip-us.apache.org/repos/asf/maven-wagon/tree/5fcc6315
Diff: http://git-wip-us.apache.org/repos/asf/maven-wagon/diff/5fcc6315
Branch: refs/heads/master
Commit: 5fcc6315da6ea3e48bd1da9e03c0ca706d236e16
Parents: 24a54eb
Author: Hervé Boutemy <hb...@apache.org>
Authored: Sat Feb 9 15:24:16 2013 +0100
Committer: Hervé Boutemy <hb...@apache.org>
Committed: Sat Feb 9 15:24:16 2013 +0100
----------------------------------------------------------------------
wagon-providers/pom.xml | 1 -
wagon-providers/wagon-http-lightweight/pom.xml | 2 +-
.../wagon/providers/http/LightweightHttpWagon.java | 2 +-
wagon-providers/wagon-http-shared4/pom.xml | 4 +-
.../wagon/shared/http/HtmlFileListParser.java | 164 ++++
.../wagon/shared/http4/HtmlFileListParser.java | 164 ----
.../wagon/shared/http/HtmlFileListParserTest.java | 729 +++++++++++++++
.../wagon/shared/http4/HtmlFileListParserTest.java | 728 --------------
wagon-providers/wagon-http/pom.xml | 2 +-
.../maven/wagon/providers/http/HttpWagon.java | 2 +-
wagon-providers/wagon-webdav-jackrabbit/pom.xml | 5 -
11 files changed, 899 insertions(+), 904 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/maven-wagon/blob/5fcc6315/wagon-providers/pom.xml
----------------------------------------------------------------------
diff --git a/wagon-providers/pom.xml b/wagon-providers/pom.xml
index 1d38b16..7b25726 100644
--- a/wagon-providers/pom.xml
+++ b/wagon-providers/pom.xml
@@ -34,7 +34,6 @@ under the License.
<modules>
<module>wagon-file</module>
<module>wagon-ftp</module>
- <module>wagon-http-shared4</module>
<module>wagon-http</module>
<module>wagon-http-shared</module>
<module>wagon-http-lightweight</module>
http://git-wip-us.apache.org/repos/asf/maven-wagon/blob/5fcc6315/wagon-providers/wagon-http-lightweight/pom.xml
----------------------------------------------------------------------
diff --git a/wagon-providers/wagon-http-lightweight/pom.xml b/wagon-providers/wagon-http-lightweight/pom.xml
index 9b7c691..5c2df12 100644
--- a/wagon-providers/wagon-http-lightweight/pom.xml
+++ b/wagon-providers/wagon-http-lightweight/pom.xml
@@ -36,7 +36,7 @@ under the License.
<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
- <artifactId>wagon-http-shared4</artifactId>
+ <artifactId>wagon-http-shared</artifactId>
<version>${project.version}</version>
</dependency>
http://git-wip-us.apache.org/repos/asf/maven-wagon/blob/5fcc6315/wagon-providers/wagon-http-lightweight/src/main/java/org/apache/maven/wagon/providers/http/LightweightHttpWagon.java
----------------------------------------------------------------------
diff --git a/wagon-providers/wagon-http-lightweight/src/main/java/org/apache/maven/wagon/providers/http/LightweightHttpWagon.java b/wagon-providers/wagon-http-lightweight/src/main/java/org/apache/maven/wagon/providers/http/LightweightHttpWagon.java
index b15d059..ff1a25d 100644
--- a/wagon-providers/wagon-http-lightweight/src/main/java/org/apache/maven/wagon/providers/http/LightweightHttpWagon.java
+++ b/wagon-providers/wagon-http-lightweight/src/main/java/org/apache/maven/wagon/providers/http/LightweightHttpWagon.java
@@ -31,7 +31,7 @@ import org.apache.maven.wagon.authorization.AuthorizationException;
import org.apache.maven.wagon.events.TransferEvent;
import org.apache.maven.wagon.proxy.ProxyInfo;
import org.apache.maven.wagon.resource.Resource;
-import org.apache.maven.wagon.shared.http4.HtmlFileListParser;
+import org.apache.maven.wagon.shared.http.HtmlFileListParser;
import org.codehaus.plexus.util.Base64;
import java.io.FileNotFoundException;
http://git-wip-us.apache.org/repos/asf/maven-wagon/blob/5fcc6315/wagon-providers/wagon-http-shared4/pom.xml
----------------------------------------------------------------------
diff --git a/wagon-providers/wagon-http-shared4/pom.xml b/wagon-providers/wagon-http-shared4/pom.xml
index dc1009a..d48f5ba 100644
--- a/wagon-providers/wagon-http-shared4/pom.xml
+++ b/wagon-providers/wagon-http-shared4/pom.xml
@@ -27,8 +27,8 @@ under the License.
<relativePath>../pom.xml</relativePath>
</parent>
- <artifactId>wagon-http-shared4</artifactId>
- <name>Apache Maven Wagon :: Providers :: HTTP Shared Library 4</name>
+ <artifactId>wagon-http-shared</artifactId>
+ <name>Apache Maven Wagon :: Providers :: HTTP Shared Library</name>
<description>
Shared Library for wagon providers supporting HTTP.
</description>
http://git-wip-us.apache.org/repos/asf/maven-wagon/blob/5fcc6315/wagon-providers/wagon-http-shared4/src/main/java/org/apache/maven/wagon/shared/http/HtmlFileListParser.java
----------------------------------------------------------------------
diff --git a/wagon-providers/wagon-http-shared4/src/main/java/org/apache/maven/wagon/shared/http/HtmlFileListParser.java b/wagon-providers/wagon-http-shared4/src/main/java/org/apache/maven/wagon/shared/http/HtmlFileListParser.java
new file mode 100644
index 0000000..9f571f9
--- /dev/null
+++ b/wagon-providers/wagon-http-shared4/src/main/java/org/apache/maven/wagon/shared/http/HtmlFileListParser.java
@@ -0,0 +1,164 @@
+package org.apache.maven.wagon.shared.http;
+
+/*
+ * 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 org.apache.commons.io.IOUtils;
+import org.apache.maven.wagon.TransferFailedException;
+import org.codehaus.plexus.util.StringUtils;
+import org.jsoup.Jsoup;
+import org.jsoup.nodes.Document;
+import org.jsoup.nodes.Element;
+import org.jsoup.select.Elements;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.UnsupportedEncodingException;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.net.URLDecoder;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.regex.Pattern;
+
+/**
+ * Html File List Parser.
+ */
+public class HtmlFileListParser
+{
+ // Apache Fancy Index Sort Headers
+ private static final Pattern APACHE_INDEX_SKIP = Pattern.compile( "\\?[CDMNS]=.*" );
+
+ // URLs with excessive paths.
+ private static final Pattern URLS_WITH_PATHS = Pattern.compile( "/[^/]*/" );
+
+ // URLs that to a parent directory.
+ private static final Pattern URLS_TO_PARENT = Pattern.compile( "\\.\\./" );
+
+ // mailto urls
+ private static final Pattern MAILTO_URLS = Pattern.compile( "mailto:.*" );
+
+ private static final Pattern[] SKIPS =
+ new Pattern[]{ APACHE_INDEX_SKIP, URLS_WITH_PATHS, URLS_TO_PARENT, MAILTO_URLS };
+
+ /**
+ * Fetches a raw HTML from a provided InputStream, parses it, and returns the file list.
+ *
+ * @param stream the input stream.
+ * @return the file list.
+ * @throws TransferFailedException if there was a problem fetching the raw html.
+ */
+ public static List<String> parseFileList( String baseurl, InputStream stream )
+ throws TransferFailedException
+ {
+ try
+ {
+ URI baseURI = new URI( baseurl );
+ // to make debugging easier, start with a string. This is assuming UTF-8, which might not be a safe
+ // assumption.
+ String content = IOUtils.toString( stream, "utf-8" );
+ Document doc = Jsoup.parse( content, baseurl );
+ Elements links = doc.select("a[href]");
+ Set<String> results = new HashSet<String>();
+ for ( int lx = 0; lx < links.size(); lx++ )
+ {
+ Element link = links.get( lx );
+ /*
+ * The abs:href loses directories, so we deal with absolute paths ourselves below in cleanLink
+ */
+ String target = link.attr( "href" );
+ if ( target != null )
+ {
+ String clean = cleanLink( baseURI, target );
+ if ( isAcceptableLink( clean ) )
+ {
+ results.add( clean );
+ }
+ }
+
+ }
+
+ return new ArrayList<String>( results );
+ }
+ catch ( URISyntaxException e )
+ {
+ throw new TransferFailedException( "Unable to parse as base URI: " + baseurl, e );
+ }
+ catch ( IOException e )
+ {
+ throw new TransferFailedException( "I/O error reading HTML listing of artifacts: " + e.getMessage(), e );
+ }
+ }
+
+ private static String cleanLink( URI baseURI, String link )
+ {
+ if ( StringUtils.isEmpty( link ) )
+ {
+ return "";
+ }
+
+ String ret = link;
+
+ try
+ {
+ URI linkuri = new URI( ret );
+ if ( link.startsWith( "/" ) )
+ {
+ linkuri = baseURI.resolve( linkuri );
+ }
+ URI relativeURI = baseURI.relativize( linkuri ).normalize();
+ ret = relativeURI.toASCIIString();
+ if ( ret.startsWith( baseURI.getPath() ) )
+ {
+ ret = ret.substring( baseURI.getPath().length() );
+ }
+
+ ret = URLDecoder.decode( ret, "UTF-8" );
+ }
+ catch ( URISyntaxException e )
+ {
+ }
+ catch ( UnsupportedEncodingException e )
+ {
+ }
+
+ return ret;
+ }
+
+ private static boolean isAcceptableLink( String link )
+ {
+ if ( StringUtils.isEmpty( link ) )
+ {
+ return false;
+ }
+
+ for ( int i = 0; i < SKIPS.length; i++ )
+ {
+ if ( SKIPS[i].matcher( link ).find() )
+ {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/maven-wagon/blob/5fcc6315/wagon-providers/wagon-http-shared4/src/main/java/org/apache/maven/wagon/shared/http4/HtmlFileListParser.java
----------------------------------------------------------------------
diff --git a/wagon-providers/wagon-http-shared4/src/main/java/org/apache/maven/wagon/shared/http4/HtmlFileListParser.java b/wagon-providers/wagon-http-shared4/src/main/java/org/apache/maven/wagon/shared/http4/HtmlFileListParser.java
deleted file mode 100644
index 01303f5..0000000
--- a/wagon-providers/wagon-http-shared4/src/main/java/org/apache/maven/wagon/shared/http4/HtmlFileListParser.java
+++ /dev/null
@@ -1,164 +0,0 @@
-package org.apache.maven.wagon.shared.http4;
-
-/*
- * 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 org.apache.commons.io.IOUtils;
-import org.apache.maven.wagon.TransferFailedException;
-import org.codehaus.plexus.util.StringUtils;
-import org.jsoup.Jsoup;
-import org.jsoup.nodes.Document;
-import org.jsoup.nodes.Element;
-import org.jsoup.select.Elements;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.UnsupportedEncodingException;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.net.URLDecoder;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-import java.util.regex.Pattern;
-
-/**
- * Html File List Parser.
- */
-public class HtmlFileListParser
-{
- // Apache Fancy Index Sort Headers
- private static final Pattern APACHE_INDEX_SKIP = Pattern.compile( "\\?[CDMNS]=.*" );
-
- // URLs with excessive paths.
- private static final Pattern URLS_WITH_PATHS = Pattern.compile( "/[^/]*/" );
-
- // URLs that to a parent directory.
- private static final Pattern URLS_TO_PARENT = Pattern.compile( "\\.\\./" );
-
- // mailto urls
- private static final Pattern MAILTO_URLS = Pattern.compile( "mailto:.*" );
-
- private static final Pattern[] SKIPS =
- new Pattern[]{ APACHE_INDEX_SKIP, URLS_WITH_PATHS, URLS_TO_PARENT, MAILTO_URLS };
-
- /**
- * Fetches a raw HTML from a provided InputStream, parses it, and returns the file list.
- *
- * @param stream the input stream.
- * @return the file list.
- * @throws TransferFailedException if there was a problem fetching the raw html.
- */
- public static List<String> parseFileList( String baseurl, InputStream stream )
- throws TransferFailedException
- {
- try
- {
- URI baseURI = new URI( baseurl );
- // to make debugging easier, start with a string. This is assuming UTF-8, which might not be a safe
- // assumption.
- String content = IOUtils.toString( stream, "utf-8" );
- Document doc = Jsoup.parse( content, baseurl );
- Elements links = doc.select("a[href]");
- Set<String> results = new HashSet<String>();
- for ( int lx = 0; lx < links.size(); lx++ )
- {
- Element link = links.get( lx );
- /*
- * The abs:href loses directories, so we deal with absolute paths ourselves below in cleanLink
- */
- String target = link.attr( "href" );
- if ( target != null )
- {
- String clean = cleanLink( baseURI, target );
- if ( isAcceptableLink( clean ) )
- {
- results.add( clean );
- }
- }
-
- }
-
- return new ArrayList<String>( results );
- }
- catch ( URISyntaxException e )
- {
- throw new TransferFailedException( "Unable to parse as base URI: " + baseurl, e );
- }
- catch ( IOException e )
- {
- throw new TransferFailedException( "I/O error reading HTML listing of artifacts: " + e.getMessage(), e );
- }
- }
-
- private static String cleanLink( URI baseURI, String link )
- {
- if ( StringUtils.isEmpty( link ) )
- {
- return "";
- }
-
- String ret = link;
-
- try
- {
- URI linkuri = new URI( ret );
- if ( link.startsWith( "/" ) )
- {
- linkuri = baseURI.resolve( linkuri );
- }
- URI relativeURI = baseURI.relativize( linkuri ).normalize();
- ret = relativeURI.toASCIIString();
- if ( ret.startsWith( baseURI.getPath() ) )
- {
- ret = ret.substring( baseURI.getPath().length() );
- }
-
- ret = URLDecoder.decode( ret, "UTF-8" );
- }
- catch ( URISyntaxException e )
- {
- }
- catch ( UnsupportedEncodingException e )
- {
- }
-
- return ret;
- }
-
- private static boolean isAcceptableLink( String link )
- {
- if ( StringUtils.isEmpty( link ) )
- {
- return false;
- }
-
- for ( int i = 0; i < SKIPS.length; i++ )
- {
- if ( SKIPS[i].matcher( link ).find() )
- {
- return false;
- }
- }
-
- return true;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/maven-wagon/blob/5fcc6315/wagon-providers/wagon-http-shared4/src/test/java/org/apache/maven/wagon/shared/http/HtmlFileListParserTest.java
----------------------------------------------------------------------
diff --git a/wagon-providers/wagon-http-shared4/src/test/java/org/apache/maven/wagon/shared/http/HtmlFileListParserTest.java b/wagon-providers/wagon-http-shared4/src/test/java/org/apache/maven/wagon/shared/http/HtmlFileListParserTest.java
new file mode 100644
index 0000000..3df6d9a
--- /dev/null
+++ b/wagon-providers/wagon-http-shared4/src/test/java/org/apache/maven/wagon/shared/http/HtmlFileListParserTest.java
@@ -0,0 +1,729 @@
+package org.apache.maven.wagon.shared.http;
+
+/*
+ * 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 java.io.InputStream;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+
+import junit.framework.TestCase;
+import org.apache.log4j.Logger;
+import org.apache.maven.wagon.TransferFailedException;
+import org.apache.maven.wagon.shared.http.HtmlFileListParser;
+
+/**
+ * Unit Tests for the HtmlFileListParser
+ */
+public class HtmlFileListParserTest
+ extends TestCase
+{
+ private static Logger logger = Logger.getLogger( HtmlFileListParserTest.class );
+
+ private void assertContainsExpected( List<String>links, String[] expected )
+ {
+ if ( expected.length != links.size() )
+ {
+ Collections.sort( links );
+ for ( Iterator<String> iterator = links.iterator(); iterator.hasNext(); )
+ {
+ String link = iterator.next();
+ logger.info( " \"" + link + "\", " );
+ }
+ assertEquals( "Links to Expected size", expected.length, links.size() );
+ }
+
+ for ( int i = 0; i < expected.length; i++ )
+ {
+ assertTrue( "Should find [" + expected[i] + "] in link list", links.contains( expected[i] ) );
+ }
+ }
+
+ private void assertNotContainingAvoided( List<String> links, String[] avoided )
+ {
+ for ( int i = 0; i < avoided.length; i++ )
+ {
+ assertFalse( "Should not find [" + avoided[i] + "] in link list", links.contains( avoided[i] ) );
+ }
+ }
+
+ private List<String> parseLinks( String url, String filename )
+ throws TransferFailedException
+ {
+ InputStream is = this.getClass().getResourceAsStream( "/filelistings/" + filename );
+ List<String> files = HtmlFileListParser.parseFileList( url, is );
+
+ assertNotNull( "file list should not be null.", files );
+ assertFalse( "file list should not be empty.", files.isEmpty() );
+
+ /* Debug */
+ if ( false )
+ {
+ Iterator it = files.iterator();
+ while ( it.hasNext() )
+ {
+ logger.info( "File: '" + it.next() + "'" );
+ }
+ }
+
+ return files;
+ }
+
+ /**
+ * Example showing jetty directory browsing of commons-lang
+ *
+ * @throws TransferFailedException
+ */
+ public void testParseCommonsLang()
+ throws TransferFailedException
+ {
+ List<String> links = parseLinks( "http://localhost/repository/commons-lang/commons-lang/2.3",
+ "commons-lang.html" );
+
+ String[] expected = new String[] {
+ "commons-lang-2.3-javadoc.jar",
+ "commons-lang-2.3-javadoc.jar.asc",
+ "commons-lang-2.3-javadoc.jar.md5",
+ "commons-lang-2.3-javadoc.jar.sha1",
+ "commons-lang-2.3-sources.jar",
+ "commons-lang-2.3-sources.jar.asc",
+ "commons-lang-2.3-sources.jar.md5",
+ "commons-lang-2.3-sources.jar.sha1",
+ "commons-lang-2.3.jar",
+ "commons-lang-2.3.jar.asc",
+ "commons-lang-2.3.jar.md5",
+ "commons-lang-2.3.jar.sha1",
+ "commons-lang-2.3.pom",
+ "commons-lang-2.3.pom.md5",
+ "commons-lang-2.3.pom.sha1",
+ "maven-metadata.xml",
+ "maven-metadata.xml.md5",
+ "maven-metadata.xml.sha1" };
+
+ assertContainsExpected( links, expected );
+
+ String[] avoided = new String[] { "../" };
+
+ assertNotContainingAvoided( links, avoided );
+ }
+
+ public void testParseIbiblio()
+ throws Exception
+ {
+ List<String> links = parseLinks( "http://www.ibiblio.org/maven2/org/apache/maven/wagon/",
+ "ibiblio-wagon.html" );
+
+ String[] expected = new String[] {
+ "wagon-1.0-alpha-2.pom",
+ "wagon-1.0-alpha-2.pom.asc",
+ "wagon-1.0-alpha-2.pom.md5",
+ "wagon-1.0-alpha-2.pom.sha1",
+ "wagon-1.0-alpha-3-20050413.021234-4.pom",
+ "wagon-1.0-alpha-3-20050413.021234-4.pom.md5",
+ "wagon-1.0-alpha-3-20050413.021234-4.pom.sha1",
+ "wagon-1.0-alpha-3-20050419.043745-5.pom",
+ "wagon-1.0-alpha-3-20050419.043745-5.pom.md5",
+ "wagon-1.0-alpha-3-20050419.043745-5.pom.sha1",
+ "wagon-1.0-alpha-3-20050419.044035-6.pom",
+ "wagon-1.0-alpha-3-20050419.044035-6.pom.md5",
+ "wagon-1.0-alpha-3-20050419.044035-6.pom.sha1",
+ "wagon-1.0-alpha-3-20050421.162738-7.pom",
+ "wagon-1.0-alpha-3-20050421.162738-7.pom.md5",
+ "wagon-1.0-alpha-3-20050421.162738-7.pom.sha1",
+ "wagon-1.0-alpha-3-20050422.075233-8.pom",
+ "wagon-1.0-alpha-3-20050422.075233-8.pom.md5",
+ "wagon-1.0-alpha-3-20050422.075233-8.pom.sha1",
+ "wagon-1.0-alpha-3-20050429.051847-9.pom",
+ "wagon-1.0-alpha-3-20050429.051847-9.pom.md5",
+ "wagon-1.0-alpha-3-20050429.051847-9.pom.sha1",
+ "wagon-file/",
+ "wagon-ftp/",
+ "wagon-http-lightweight/",
+ "wagon-http/",
+ "wagon-lightweight-http/",
+ "wagon-provider-api/",
+ "wagon-provider-test/",
+ "wagon-provider/",
+ "wagon-providers-1.0-alpha-2.pom",
+ "wagon-providers-1.0-alpha-2.pom.asc",
+ "wagon-providers-1.0-alpha-2.pom.md5",
+ "wagon-providers-1.0-alpha-2.pom.sha1",
+ "wagon-providers-1.0-alpha-3-20050407.202848-1.pom",
+ "wagon-providers-1.0-alpha-3-20050407.202848-1.pom.md5",
+ "wagon-providers-1.0-alpha-3-20050407.202848-1.pom.sha1",
+ "wagon-providers-1.0-alpha-3-20050419.044035-2.pom",
+ "wagon-providers-1.0-alpha-3-20050419.044035-2.pom.md5",
+ "wagon-providers-1.0-alpha-3-20050419.044035-2.pom.sha1",
+ "wagon-providers-1.0-alpha-3-20050421.162738-3.pom",
+ "wagon-providers-1.0-alpha-3-20050421.162738-3.pom.md5",
+ "wagon-providers-1.0-alpha-3-20050421.162738-3.pom.sha1",
+ "wagon-providers-1.0-alpha-3-20050422.075233-4.pom",
+ "wagon-providers-1.0-alpha-3-20050422.075233-4.pom.md5",
+ "wagon-providers-1.0-alpha-3-20050422.075233-4.pom.sha1",
+ "wagon-providers-1.0-alpha-3-20050429.051847-5.pom",
+ "wagon-providers-1.0-alpha-3-20050429.051847-5.pom.md5",
+ "wagon-providers-1.0-alpha-3-20050429.051847-5.pom.sha1",
+ "wagon-providers/",
+ "wagon-scm/",
+ "wagon-ssh-external/",
+ "wagon-ssh/",
+ "wagon-webdav/",
+ "wagon/" };
+
+ assertContainsExpected( links, expected );
+
+ String[] avoided = new String[] { "/org/", "?C=S;O=A", "?C=D;O=A", "?C=M;O=A", "?D=A", "?M=A", "?N=D", "?S=A" };
+
+ assertNotContainingAvoided( links, avoided );
+ }
+
+ /**
+ * Test of an html which is improperly formatted, and contains full host-specific paths to the resources.
+ * @throws Exception
+ */
+ public void testParseJetty()
+ throws Exception
+ {
+ List<String> links = parseLinks( "http://www.ibiblio.org/maven2/org/apache/maven/wagon/",
+ "jetty-wagon.html" );
+
+ String[] expected = new String[] {
+ "wagon-1.0-alpha-2.pom",
+ "wagon-1.0-alpha-2.pom.asc",
+ "wagon-1.0-alpha-2.pom.md5",
+ "wagon-1.0-alpha-2.pom.sha1",
+ "wagon-1.0-alpha-3-20050413.021234-4.pom",
+ "wagon-1.0-alpha-3-20050413.021234-4.pom.md5",
+ "wagon-1.0-alpha-3-20050413.021234-4.pom.sha1",
+ "wagon-1.0-alpha-3-20050419.043745-5.pom",
+ "wagon-1.0-alpha-3-20050419.043745-5.pom.md5",
+ "wagon-1.0-alpha-3-20050419.043745-5.pom.sha1",
+ "wagon-1.0-alpha-3-20050419.044035-6.pom",
+ "wagon-1.0-alpha-3-20050419.044035-6.pom.md5",
+ "wagon-1.0-alpha-3-20050419.044035-6.pom.sha1",
+ "wagon-1.0-alpha-3-20050421.162738-7.pom",
+ "wagon-1.0-alpha-3-20050421.162738-7.pom.md5",
+ "wagon-1.0-alpha-3-20050421.162738-7.pom.sha1",
+ "wagon-1.0-alpha-3-20050422.075233-8.pom",
+ "wagon-1.0-alpha-3-20050422.075233-8.pom.md5",
+ "wagon-1.0-alpha-3-20050422.075233-8.pom.sha1",
+ "wagon-1.0-alpha-3-20050429.051847-9.pom",
+ "wagon-1.0-alpha-3-20050429.051847-9.pom.md5",
+ "wagon-1.0-alpha-3-20050429.051847-9.pom.sha1",
+ "wagon-file/",
+ "wagon-ftp/",
+ "wagon-http-lightweight/",
+ "wagon-http/",
+ "wagon-lightweight-http/",
+ "wagon-provider-api/",
+ "wagon-provider-test/",
+ "wagon-provider/",
+ "wagon-providers-1.0-alpha-2.pom",
+ "wagon-providers-1.0-alpha-2.pom.asc",
+ "wagon-providers-1.0-alpha-2.pom.md5",
+ "wagon-providers-1.0-alpha-2.pom.sha1",
+ "wagon-providers-1.0-alpha-3-20050407.202848-1.pom",
+ "wagon-providers-1.0-alpha-3-20050407.202848-1.pom.md5",
+ "wagon-providers-1.0-alpha-3-20050407.202848-1.pom.sha1",
+ "wagon-providers-1.0-alpha-3-20050419.044035-2.pom",
+ "wagon-providers-1.0-alpha-3-20050419.044035-2.pom.md5",
+ "wagon-providers-1.0-alpha-3-20050419.044035-2.pom.sha1",
+ "wagon-providers-1.0-alpha-3-20050421.162738-3.pom",
+ "wagon-providers-1.0-alpha-3-20050421.162738-3.pom.md5",
+ "wagon-providers-1.0-alpha-3-20050421.162738-3.pom.sha1",
+ "wagon-providers-1.0-alpha-3-20050422.075233-4.pom",
+ "wagon-providers-1.0-alpha-3-20050422.075233-4.pom.md5",
+ "wagon-providers-1.0-alpha-3-20050422.075233-4.pom.sha1",
+ "wagon-providers-1.0-alpha-3-20050429.051847-5.pom",
+ "wagon-providers-1.0-alpha-3-20050429.051847-5.pom.md5",
+ "wagon-providers-1.0-alpha-3-20050429.051847-5.pom.sha1",
+ "wagon-providers/",
+ "wagon-scm/",
+ "wagon-ssh-external/",
+ "wagon-ssh/",
+ "wagon-webdav/",
+ "wagon/" };
+
+ assertContainsExpected( links, expected );
+
+ String[] avoided = new String[] { "/org/", "?C=S;O=A", "?C=D;O=A", "?C=M;O=A" };
+
+ assertNotContainingAvoided( links, avoided );
+ }
+
+ /**
+ * Test of an html which is improperly formatted, contains full host-specific paths to the resources and uses non-normalized base URI
+ * @throws Exception
+ */
+ public void testParseJettyWithNonNormalizedBaseURI()
+ throws Exception
+ {
+ List<String> links = parseLinks( "http://www.ibiblio.org/maven2/org/apache/maven/wagon//",
+ "jetty-wagon.html" );
+
+ String[] expected = new String[] {
+ "wagon-1.0-alpha-2.pom",
+ "wagon-1.0-alpha-2.pom.asc",
+ "wagon-1.0-alpha-2.pom.md5",
+ "wagon-1.0-alpha-2.pom.sha1",
+ "wagon-1.0-alpha-3-20050413.021234-4.pom",
+ "wagon-1.0-alpha-3-20050413.021234-4.pom.md5",
+ "wagon-1.0-alpha-3-20050413.021234-4.pom.sha1",
+ "wagon-1.0-alpha-3-20050419.043745-5.pom",
+ "wagon-1.0-alpha-3-20050419.043745-5.pom.md5",
+ "wagon-1.0-alpha-3-20050419.043745-5.pom.sha1",
+ "wagon-1.0-alpha-3-20050419.044035-6.pom",
+ "wagon-1.0-alpha-3-20050419.044035-6.pom.md5",
+ "wagon-1.0-alpha-3-20050419.044035-6.pom.sha1",
+ "wagon-1.0-alpha-3-20050421.162738-7.pom",
+ "wagon-1.0-alpha-3-20050421.162738-7.pom.md5",
+ "wagon-1.0-alpha-3-20050421.162738-7.pom.sha1",
+ "wagon-1.0-alpha-3-20050422.075233-8.pom",
+ "wagon-1.0-alpha-3-20050422.075233-8.pom.md5",
+ "wagon-1.0-alpha-3-20050422.075233-8.pom.sha1",
+ "wagon-1.0-alpha-3-20050429.051847-9.pom",
+ "wagon-1.0-alpha-3-20050429.051847-9.pom.md5",
+ "wagon-1.0-alpha-3-20050429.051847-9.pom.sha1",
+ "wagon-file/",
+ "wagon-ftp/",
+ "wagon-http-lightweight/",
+ "wagon-http/",
+ "wagon-lightweight-http/",
+ "wagon-provider-api/",
+ "wagon-provider-test/",
+ "wagon-provider/",
+ "wagon-providers-1.0-alpha-2.pom",
+ "wagon-providers-1.0-alpha-2.pom.asc",
+ "wagon-providers-1.0-alpha-2.pom.md5",
+ "wagon-providers-1.0-alpha-2.pom.sha1",
+ "wagon-providers-1.0-alpha-3-20050407.202848-1.pom",
+ "wagon-providers-1.0-alpha-3-20050407.202848-1.pom.md5",
+ "wagon-providers-1.0-alpha-3-20050407.202848-1.pom.sha1",
+ "wagon-providers-1.0-alpha-3-20050419.044035-2.pom",
+ "wagon-providers-1.0-alpha-3-20050419.044035-2.pom.md5",
+ "wagon-providers-1.0-alpha-3-20050419.044035-2.pom.sha1",
+ "wagon-providers-1.0-alpha-3-20050421.162738-3.pom",
+ "wagon-providers-1.0-alpha-3-20050421.162738-3.pom.md5",
+ "wagon-providers-1.0-alpha-3-20050421.162738-3.pom.sha1",
+ "wagon-providers-1.0-alpha-3-20050422.075233-4.pom",
+ "wagon-providers-1.0-alpha-3-20050422.075233-4.pom.md5",
+ "wagon-providers-1.0-alpha-3-20050422.075233-4.pom.sha1",
+ "wagon-providers-1.0-alpha-3-20050429.051847-5.pom",
+ "wagon-providers-1.0-alpha-3-20050429.051847-5.pom.md5",
+ "wagon-providers-1.0-alpha-3-20050429.051847-5.pom.sha1",
+ "wagon-providers/",
+ "wagon-scm/",
+ "wagon-ssh-external/",
+ "wagon-ssh/",
+ "wagon-webdav/",
+ "wagon/" };
+
+ assertContainsExpected( links, expected );
+
+ String[] avoided = new String[] { "/org/", "?C=S;O=A", "?C=D;O=A", "?C=M;O=A" };
+
+ assertNotContainingAvoided( links, avoided );
+ }
+
+ /**
+ * Using repository.codehaus.org output as an example.
+ * This is an example of an older RHEL installation of apache httpd with old fancy indexing output
+ * This example tests how to detect directories properly.
+ *
+ * @throws TransferFailedException
+ */
+ public void testParseMevenIde()
+ throws TransferFailedException
+ {
+ List<String> links = parseLinks( "http://repository.codehaus.org/org/codehaus/mevenide/", "mevenide.html" );
+
+ String[] expected = new String[] {
+ "apisupport/",
+ "autoupdate/",
+ "continuum-rpc/",
+ "continuum/",
+ "debugger-bridge/",
+ "deployment-bridge/",
+ "feature/",
+ "grammar/",
+ "ide-mojos/",
+ "indexer/",
+ "j2ee/",
+ "junit/",
+ "maven-metadata.xml",
+ "maven-metadata.xml.md5",
+ "maven-metadata.xml.sha1",
+ "mevenide2-parent/",
+ "nb-mvn-embedder/",
+ "nb-project/",
+ "nb-repo-browser/",
+ "netbeans-debugger-plugin/",
+ "netbeans-deploy-plugin/",
+ "netbeans-libs/",
+ "netbeans-nbmreload-plugin/",
+ "netbeans-repository/",
+ "netbeans-run-plugin/",
+ "netbeans/",
+ "persistence/",
+ "plugin-bridges/",
+ "plugins/",
+ "reload-nbm-bridge/",
+ "run-jar-bridge/" };
+
+ assertContainsExpected( links, expected );
+
+ String[] avoided = new String[] { "/org/codehaus/", "?C=S;O=A", "?C=D;O=A", "?C=M;O=A" };
+
+ assertNotContainingAvoided( links, avoided );
+ }
+
+ public void testParseMirror()
+ throws Exception
+ {
+ List<String> links = parseLinks( "http://www.ibiblio.org/maven2/org/apache/maven/wagon/",
+ "mirror-wagon.html" );
+
+ String[] expected = new String[] {
+ "wagon-1.0-alpha-2.pom",
+ "wagon-1.0-alpha-2.pom.asc",
+ "wagon-1.0-alpha-2.pom.md5",
+ "wagon-1.0-alpha-2.pom.sha1",
+ "wagon-1.0-alpha-3-20050413.021234-4.pom",
+ "wagon-1.0-alpha-3-20050413.021234-4.pom.md5",
+ "wagon-1.0-alpha-3-20050413.021234-4.pom.sha1",
+ "wagon-1.0-alpha-3-20050419.043745-5.pom",
+ "wagon-1.0-alpha-3-20050419.043745-5.pom.md5",
+ "wagon-1.0-alpha-3-20050419.043745-5.pom.sha1",
+ "wagon-1.0-alpha-3-20050419.044035-6.pom",
+ "wagon-1.0-alpha-3-20050419.044035-6.pom.md5",
+ "wagon-1.0-alpha-3-20050419.044035-6.pom.sha1",
+ "wagon-1.0-alpha-3-20050421.162738-7.pom",
+ "wagon-1.0-alpha-3-20050421.162738-7.pom.md5",
+ "wagon-1.0-alpha-3-20050421.162738-7.pom.sha1",
+ "wagon-1.0-alpha-3-20050422.075233-8.pom",
+ "wagon-1.0-alpha-3-20050422.075233-8.pom.md5",
+ "wagon-1.0-alpha-3-20050422.075233-8.pom.sha1",
+ "wagon-1.0-alpha-3-20050429.051847-9.pom",
+ "wagon-1.0-alpha-3-20050429.051847-9.pom.md5",
+ "wagon-1.0-alpha-3-20050429.051847-9.pom.sha1",
+ "wagon-file/",
+ "wagon-ftp/",
+ "wagon-http-lightweight/",
+ "wagon-http/",
+ "wagon-lightweight-http/",
+ "wagon-provider-api/",
+ "wagon-provider-test/",
+ "wagon-provider/",
+ "wagon-providers-1.0-alpha-2.pom",
+ "wagon-providers-1.0-alpha-2.pom.asc",
+ "wagon-providers-1.0-alpha-2.pom.md5",
+ "wagon-providers-1.0-alpha-2.pom.sha1",
+ "wagon-providers-1.0-alpha-3-20050407.202848-1.pom",
+ "wagon-providers-1.0-alpha-3-20050407.202848-1.pom.md5",
+ "wagon-providers-1.0-alpha-3-20050407.202848-1.pom.sha1",
+ "wagon-providers-1.0-alpha-3-20050419.044035-2.pom",
+ "wagon-providers-1.0-alpha-3-20050419.044035-2.pom.md5",
+ "wagon-providers-1.0-alpha-3-20050419.044035-2.pom.sha1",
+ "wagon-providers-1.0-alpha-3-20050421.162738-3.pom",
+ "wagon-providers-1.0-alpha-3-20050421.162738-3.pom.md5",
+ "wagon-providers-1.0-alpha-3-20050421.162738-3.pom.sha1",
+ "wagon-providers-1.0-alpha-3-20050422.075233-4.pom",
+ "wagon-providers-1.0-alpha-3-20050422.075233-4.pom.md5",
+ "wagon-providers-1.0-alpha-3-20050422.075233-4.pom.sha1",
+ "wagon-providers-1.0-alpha-3-20050429.051847-5.pom",
+ "wagon-providers-1.0-alpha-3-20050429.051847-5.pom.md5",
+ "wagon-providers-1.0-alpha-3-20050429.051847-5.pom.sha1",
+ "wagon-providers/",
+ "wagon-scm/",
+ "wagon-ssh-external/",
+ "wagon-ssh/",
+ "wagon-webdav/",
+ "wagon/" };
+
+ assertContainsExpected( links, expected );
+
+ String[] avoided = new String[] {
+ "/org/codehaus/",
+ "?C=S;O=A",
+ "?C=D;O=A",
+ "?C=M;O=A",
+ "mailto:mirror.admin@mirror.com" };
+
+ assertNotContainingAvoided( links, avoided );
+ }
+
+ /**
+ * Example of output from repo1.maven.org
+ * This example is of nekohtml specifically.
+ *
+ * @throws TransferFailedException
+ */
+ public void testParseNekoHtml()
+ throws TransferFailedException
+ {
+ List<String> links = parseLinks( "http://repo1.maven.org//maven2/nekohtml/nekohtml/1.9.6/", "nekohtml.html" );
+
+ String[] expected = new String[] {
+ "nekohtml-1.9.6-javadoc.jar",
+ "nekohtml-1.9.6-javadoc.jar.md5",
+ "nekohtml-1.9.6-javadoc.jar.sha1",
+ "nekohtml-1.9.6-sources.jar",
+ "nekohtml-1.9.6-sources.jar.md5",
+ "nekohtml-1.9.6-sources.jar.sha1",
+ "nekohtml-1.9.6.jar",
+ "nekohtml-1.9.6.jar.md5",
+ "nekohtml-1.9.6.jar.sha1",
+ "nekohtml-1.9.6.pom",
+ "nekohtml-1.9.6.pom.md5",
+ "nekohtml-1.9.6.pom.sha1" };
+
+ assertContainsExpected( links, expected );
+
+ String[] avoided = new String[] { "/maven2/nekohtml/nekohtml/", "?C=S;O=A", "?C=D;O=A", "?C=M;O=A" };
+
+ assertNotContainingAvoided( links, avoided );
+ }
+
+ /**
+ * Example of detecting directories on repo1.maven.org
+ *
+ * @throws TransferFailedException
+ */
+ public void testParseNetSourceforge()
+ throws TransferFailedException
+ {
+ List<String> links = parseLinks( "http://repo1.maven.org/maven2/net/sf/", "net_sf.html" );
+
+ String[] expected = new String[] {
+ "a2j/",
+ "aislib/",
+ "alchim/",
+ "antenna/",
+ "apt-jelly/",
+ "beanlib/",
+ "bluecove/",
+ "buildbox/",
+ "click/",
+ "clirr/",
+ "datavision/",
+ "dozer/",
+ "dtddoc/",
+ "dynpageplus/",
+ "ehcache/",
+ "ezmorph/",
+ "falcon/",
+ "grester/",
+ "gwt-widget/",
+ "hermesftp/",
+ "hibernate/",
+ "jcharts/",
+ "jdatabaseimport/",
+ "jeceira/",
+ "jfcunit/",
+ "jfig/",
+ "jguard/",
+ "jipcam/",
+ "jlynx/",
+ "jour/",
+ "jpf/",
+ "json-lib/",
+ "jsptest/",
+ "jsr107cache/",
+ "jt400/",
+ "jxls/",
+ "kxml/",
+ "ldaptemplate/",
+ "locale4j/",
+ "mapasuta/",
+ "maven-har/",
+ "maven-sar/",
+ "opencsv/",
+ "oval/",
+ "proguard/",
+ "qdwizard/",
+ "resultsetmapper/",
+ "retrotranslator/",
+ "saxon/",
+ "shadesdb/",
+ "smc/",
+ "speculoos/",
+ "springlayout/",
+ "stat-scm/",
+ "statsvn/",
+ "stax/",
+ "struts/",
+ "tacos/",
+ "testextensions/",
+ "webdav-servlet/" };
+
+ assertContainsExpected( links, expected );
+
+ String[] avoided = new String[] { "/maven2/net/", "?C=S;O=A", "?C=D;O=A", "?C=M;O=A" };
+
+ assertNotContainingAvoided( links, avoided );
+ }
+
+ /**
+ * Another larger example of the directory link detection on repository.codehaus.org
+ *
+ * @throws TransferFailedException
+ */
+ public void testParseOrgCodehaus()
+ throws TransferFailedException
+ {
+ List<String> links = parseLinks( "http://repository.codehaus.org/org/codehaus", "org.codehaus.html" );
+
+ String[] expected = new String[] {
+ "agilifier/",
+ "benji/",
+ "bruce/",
+ "btm/",
+ "cargo/",
+ "castor-spring/",
+ "castor/",
+ "cozmos/",
+ "dataforge/",
+ "dimple/",
+ "droolsdotnet/",
+ "enunciate/",
+ "fabric3/",
+ "gant/",
+ "grails-plugins/",
+ "groovy/",
+ "gsoc/",
+ "guessencoding/",
+ "gumtree/",
+ "gwt-openlayers/",
+ "haus/",
+ "izpack/",
+ "javasim/",
+ "jedi/",
+ "jequel/",
+ "jet/",
+ "jettison/",
+ "jfdi/",
+ "jikesrvm/",
+ "jra/",
+ "jremoting/",
+ "jtestme/",
+ "jtestr/",
+ "labs-ng/",
+ "logicabyss/",
+ "marionette/",
+ "mevenide/",
+ "modello/",
+ "mojo/",
+ "mvel/",
+ "mvflex/",
+ "native-mojo/",
+ "openim/",
+ "plexus/",
+ "polymap/",
+ "prometheus/",
+ "prophit/",
+ "quaere/",
+ "redback/",
+ "rulessandpit/",
+ "rvm/",
+ "savana/",
+ "scala-ide/",
+ "senro/",
+ "sonar/",
+ "staxmate/",
+ "stomp/",
+ "svn4j/",
+ "swiby/",
+ "swizzle/",
+ "sxc/",
+ "testdox/",
+ "wadi/",
+ "waffle/",
+ "woodstox/",
+ "xdoclet/",
+ "xfire/",
+ "xharness/",
+ "xsite/",
+ "xstream/",
+ "xwire/" };
+
+ assertContainsExpected( links, expected );
+
+ String[] avoided = new String[] { "/org/", "?C=S;O=A", "?C=D;O=A", "?C=M;O=A" };
+
+ assertNotContainingAvoided( links, avoided );
+ }
+
+ /**
+ * Test the output found from apache httpd with fancy indexing and dav module.
+ * Using people.apache.org output as source material.
+ *
+ * @throws TransferFailedException
+ */
+ public void testParsePeopleApacheOrg()
+ throws TransferFailedException
+ {
+ List<String> links = parseLinks(
+ "http://people.apache.org/repo/m2-ibiblio-rsync-repository/org/apache/maven/archiva/archiva-plexus-runtime/1.0.1/",
+ "org.apache.maven.html" );
+
+ String[] expected = new String[] {
+ "archiva-plexus-runtime-1.0.1-bin.tar.gz",
+ "archiva-plexus-runtime-1.0.1-bin.tar.gz.asc",
+ "archiva-plexus-runtime-1.0.1-bin.tar.gz.asc.md5",
+ "archiva-plexus-runtime-1.0.1-bin.tar.gz.asc.sha1",
+ "archiva-plexus-runtime-1.0.1-bin.tar.gz.md5",
+ "archiva-plexus-runtime-1.0.1-bin.tar.gz.sha1",
+ "archiva-plexus-runtime-1.0.1-bin.zip",
+ "archiva-plexus-runtime-1.0.1-bin.zip.asc",
+ "archiva-plexus-runtime-1.0.1-bin.zip.asc.md5",
+ "archiva-plexus-runtime-1.0.1-bin.zip.asc.sha1",
+ "archiva-plexus-runtime-1.0.1-bin.zip.md5",
+ "archiva-plexus-runtime-1.0.1-bin.zip.sha1",
+ "archiva-plexus-runtime-1.0.1-sources.jar",
+ "archiva-plexus-runtime-1.0.1-sources.jar.asc",
+ "archiva-plexus-runtime-1.0.1-sources.jar.asc.md5",
+ "archiva-plexus-runtime-1.0.1-sources.jar.asc.sha1",
+ "archiva-plexus-runtime-1.0.1-sources.jar.md5",
+ "archiva-plexus-runtime-1.0.1-sources.jar.sha1",
+ "archiva-plexus-runtime-1.0.1.jar",
+ "archiva-plexus-runtime-1.0.1.jar.asc",
+ "archiva-plexus-runtime-1.0.1.jar.asc.md5",
+ "archiva-plexus-runtime-1.0.1.jar.asc.sha1",
+ "archiva-plexus-runtime-1.0.1.jar.md5",
+ "archiva-plexus-runtime-1.0.1.jar.sha1",
+ "archiva-plexus-runtime-1.0.1.pom",
+ "archiva-plexus-runtime-1.0.1.pom.asc",
+ "archiva-plexus-runtime-1.0.1.pom.asc.md5",
+ "archiva-plexus-runtime-1.0.1.pom.asc.sha1",
+ "archiva-plexus-runtime-1.0.1.pom.md5",
+ "archiva-plexus-runtime-1.0.1.pom.sha1",
+ "readme artifacts.txt"};
+
+ assertContainsExpected( links, expected );
+
+ String[] avoided = new String[] {
+ "/repo/m2-ibiblio-rsync-repository/org/apache/maven/archiva/archiva-plexus-runtime/",
+ "?C=S;O=A",
+ "?C=D;O=A",
+ "?C=M;O=A" };
+
+ assertNotContainingAvoided( links, avoided );
+ }
+}
http://git-wip-us.apache.org/repos/asf/maven-wagon/blob/5fcc6315/wagon-providers/wagon-http-shared4/src/test/java/org/apache/maven/wagon/shared/http4/HtmlFileListParserTest.java
----------------------------------------------------------------------
diff --git a/wagon-providers/wagon-http-shared4/src/test/java/org/apache/maven/wagon/shared/http4/HtmlFileListParserTest.java b/wagon-providers/wagon-http-shared4/src/test/java/org/apache/maven/wagon/shared/http4/HtmlFileListParserTest.java
deleted file mode 100644
index 48ff006..0000000
--- a/wagon-providers/wagon-http-shared4/src/test/java/org/apache/maven/wagon/shared/http4/HtmlFileListParserTest.java
+++ /dev/null
@@ -1,728 +0,0 @@
-package org.apache.maven.wagon.shared.http4;
-
-/*
- * 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 java.io.InputStream;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-
-import junit.framework.TestCase;
-import org.apache.log4j.Logger;
-import org.apache.maven.wagon.TransferFailedException;
-
-/**
- * Unit Tests for the HtmlFileListParser
- */
-public class HtmlFileListParserTest
- extends TestCase
-{
- private static Logger logger = Logger.getLogger( HtmlFileListParserTest.class );
-
- private void assertContainsExpected( List<String>links, String[] expected )
- {
- if ( expected.length != links.size() )
- {
- Collections.sort( links );
- for ( Iterator<String> iterator = links.iterator(); iterator.hasNext(); )
- {
- String link = iterator.next();
- logger.info( " \"" + link + "\", " );
- }
- assertEquals( "Links to Expected size", expected.length, links.size() );
- }
-
- for ( int i = 0; i < expected.length; i++ )
- {
- assertTrue( "Should find [" + expected[i] + "] in link list", links.contains( expected[i] ) );
- }
- }
-
- private void assertNotContainingAvoided( List<String> links, String[] avoided )
- {
- for ( int i = 0; i < avoided.length; i++ )
- {
- assertFalse( "Should not find [" + avoided[i] + "] in link list", links.contains( avoided[i] ) );
- }
- }
-
- private List<String> parseLinks( String url, String filename )
- throws TransferFailedException
- {
- InputStream is = this.getClass().getResourceAsStream( "/filelistings/" + filename );
- List<String> files = HtmlFileListParser.parseFileList( url, is );
-
- assertNotNull( "file list should not be null.", files );
- assertFalse( "file list should not be empty.", files.isEmpty() );
-
- /* Debug */
- if ( false )
- {
- Iterator it = files.iterator();
- while ( it.hasNext() )
- {
- logger.info( "File: '" + it.next() + "'" );
- }
- }
-
- return files;
- }
-
- /**
- * Example showing jetty directory browsing of commons-lang
- *
- * @throws TransferFailedException
- */
- public void testParseCommonsLang()
- throws TransferFailedException
- {
- List<String> links = parseLinks( "http://localhost/repository/commons-lang/commons-lang/2.3",
- "commons-lang.html" );
-
- String[] expected = new String[] {
- "commons-lang-2.3-javadoc.jar",
- "commons-lang-2.3-javadoc.jar.asc",
- "commons-lang-2.3-javadoc.jar.md5",
- "commons-lang-2.3-javadoc.jar.sha1",
- "commons-lang-2.3-sources.jar",
- "commons-lang-2.3-sources.jar.asc",
- "commons-lang-2.3-sources.jar.md5",
- "commons-lang-2.3-sources.jar.sha1",
- "commons-lang-2.3.jar",
- "commons-lang-2.3.jar.asc",
- "commons-lang-2.3.jar.md5",
- "commons-lang-2.3.jar.sha1",
- "commons-lang-2.3.pom",
- "commons-lang-2.3.pom.md5",
- "commons-lang-2.3.pom.sha1",
- "maven-metadata.xml",
- "maven-metadata.xml.md5",
- "maven-metadata.xml.sha1" };
-
- assertContainsExpected( links, expected );
-
- String[] avoided = new String[] { "../" };
-
- assertNotContainingAvoided( links, avoided );
- }
-
- public void testParseIbiblio()
- throws Exception
- {
- List<String> links = parseLinks( "http://www.ibiblio.org/maven2/org/apache/maven/wagon/",
- "ibiblio-wagon.html" );
-
- String[] expected = new String[] {
- "wagon-1.0-alpha-2.pom",
- "wagon-1.0-alpha-2.pom.asc",
- "wagon-1.0-alpha-2.pom.md5",
- "wagon-1.0-alpha-2.pom.sha1",
- "wagon-1.0-alpha-3-20050413.021234-4.pom",
- "wagon-1.0-alpha-3-20050413.021234-4.pom.md5",
- "wagon-1.0-alpha-3-20050413.021234-4.pom.sha1",
- "wagon-1.0-alpha-3-20050419.043745-5.pom",
- "wagon-1.0-alpha-3-20050419.043745-5.pom.md5",
- "wagon-1.0-alpha-3-20050419.043745-5.pom.sha1",
- "wagon-1.0-alpha-3-20050419.044035-6.pom",
- "wagon-1.0-alpha-3-20050419.044035-6.pom.md5",
- "wagon-1.0-alpha-3-20050419.044035-6.pom.sha1",
- "wagon-1.0-alpha-3-20050421.162738-7.pom",
- "wagon-1.0-alpha-3-20050421.162738-7.pom.md5",
- "wagon-1.0-alpha-3-20050421.162738-7.pom.sha1",
- "wagon-1.0-alpha-3-20050422.075233-8.pom",
- "wagon-1.0-alpha-3-20050422.075233-8.pom.md5",
- "wagon-1.0-alpha-3-20050422.075233-8.pom.sha1",
- "wagon-1.0-alpha-3-20050429.051847-9.pom",
- "wagon-1.0-alpha-3-20050429.051847-9.pom.md5",
- "wagon-1.0-alpha-3-20050429.051847-9.pom.sha1",
- "wagon-file/",
- "wagon-ftp/",
- "wagon-http-lightweight/",
- "wagon-http/",
- "wagon-lightweight-http/",
- "wagon-provider-api/",
- "wagon-provider-test/",
- "wagon-provider/",
- "wagon-providers-1.0-alpha-2.pom",
- "wagon-providers-1.0-alpha-2.pom.asc",
- "wagon-providers-1.0-alpha-2.pom.md5",
- "wagon-providers-1.0-alpha-2.pom.sha1",
- "wagon-providers-1.0-alpha-3-20050407.202848-1.pom",
- "wagon-providers-1.0-alpha-3-20050407.202848-1.pom.md5",
- "wagon-providers-1.0-alpha-3-20050407.202848-1.pom.sha1",
- "wagon-providers-1.0-alpha-3-20050419.044035-2.pom",
- "wagon-providers-1.0-alpha-3-20050419.044035-2.pom.md5",
- "wagon-providers-1.0-alpha-3-20050419.044035-2.pom.sha1",
- "wagon-providers-1.0-alpha-3-20050421.162738-3.pom",
- "wagon-providers-1.0-alpha-3-20050421.162738-3.pom.md5",
- "wagon-providers-1.0-alpha-3-20050421.162738-3.pom.sha1",
- "wagon-providers-1.0-alpha-3-20050422.075233-4.pom",
- "wagon-providers-1.0-alpha-3-20050422.075233-4.pom.md5",
- "wagon-providers-1.0-alpha-3-20050422.075233-4.pom.sha1",
- "wagon-providers-1.0-alpha-3-20050429.051847-5.pom",
- "wagon-providers-1.0-alpha-3-20050429.051847-5.pom.md5",
- "wagon-providers-1.0-alpha-3-20050429.051847-5.pom.sha1",
- "wagon-providers/",
- "wagon-scm/",
- "wagon-ssh-external/",
- "wagon-ssh/",
- "wagon-webdav/",
- "wagon/" };
-
- assertContainsExpected( links, expected );
-
- String[] avoided = new String[] { "/org/", "?C=S;O=A", "?C=D;O=A", "?C=M;O=A", "?D=A", "?M=A", "?N=D", "?S=A" };
-
- assertNotContainingAvoided( links, avoided );
- }
-
- /**
- * Test of an html which is improperly formatted, and contains full host-specific paths to the resources.
- * @throws Exception
- */
- public void testParseJetty()
- throws Exception
- {
- List<String> links = parseLinks( "http://www.ibiblio.org/maven2/org/apache/maven/wagon/",
- "jetty-wagon.html" );
-
- String[] expected = new String[] {
- "wagon-1.0-alpha-2.pom",
- "wagon-1.0-alpha-2.pom.asc",
- "wagon-1.0-alpha-2.pom.md5",
- "wagon-1.0-alpha-2.pom.sha1",
- "wagon-1.0-alpha-3-20050413.021234-4.pom",
- "wagon-1.0-alpha-3-20050413.021234-4.pom.md5",
- "wagon-1.0-alpha-3-20050413.021234-4.pom.sha1",
- "wagon-1.0-alpha-3-20050419.043745-5.pom",
- "wagon-1.0-alpha-3-20050419.043745-5.pom.md5",
- "wagon-1.0-alpha-3-20050419.043745-5.pom.sha1",
- "wagon-1.0-alpha-3-20050419.044035-6.pom",
- "wagon-1.0-alpha-3-20050419.044035-6.pom.md5",
- "wagon-1.0-alpha-3-20050419.044035-6.pom.sha1",
- "wagon-1.0-alpha-3-20050421.162738-7.pom",
- "wagon-1.0-alpha-3-20050421.162738-7.pom.md5",
- "wagon-1.0-alpha-3-20050421.162738-7.pom.sha1",
- "wagon-1.0-alpha-3-20050422.075233-8.pom",
- "wagon-1.0-alpha-3-20050422.075233-8.pom.md5",
- "wagon-1.0-alpha-3-20050422.075233-8.pom.sha1",
- "wagon-1.0-alpha-3-20050429.051847-9.pom",
- "wagon-1.0-alpha-3-20050429.051847-9.pom.md5",
- "wagon-1.0-alpha-3-20050429.051847-9.pom.sha1",
- "wagon-file/",
- "wagon-ftp/",
- "wagon-http-lightweight/",
- "wagon-http/",
- "wagon-lightweight-http/",
- "wagon-provider-api/",
- "wagon-provider-test/",
- "wagon-provider/",
- "wagon-providers-1.0-alpha-2.pom",
- "wagon-providers-1.0-alpha-2.pom.asc",
- "wagon-providers-1.0-alpha-2.pom.md5",
- "wagon-providers-1.0-alpha-2.pom.sha1",
- "wagon-providers-1.0-alpha-3-20050407.202848-1.pom",
- "wagon-providers-1.0-alpha-3-20050407.202848-1.pom.md5",
- "wagon-providers-1.0-alpha-3-20050407.202848-1.pom.sha1",
- "wagon-providers-1.0-alpha-3-20050419.044035-2.pom",
- "wagon-providers-1.0-alpha-3-20050419.044035-2.pom.md5",
- "wagon-providers-1.0-alpha-3-20050419.044035-2.pom.sha1",
- "wagon-providers-1.0-alpha-3-20050421.162738-3.pom",
- "wagon-providers-1.0-alpha-3-20050421.162738-3.pom.md5",
- "wagon-providers-1.0-alpha-3-20050421.162738-3.pom.sha1",
- "wagon-providers-1.0-alpha-3-20050422.075233-4.pom",
- "wagon-providers-1.0-alpha-3-20050422.075233-4.pom.md5",
- "wagon-providers-1.0-alpha-3-20050422.075233-4.pom.sha1",
- "wagon-providers-1.0-alpha-3-20050429.051847-5.pom",
- "wagon-providers-1.0-alpha-3-20050429.051847-5.pom.md5",
- "wagon-providers-1.0-alpha-3-20050429.051847-5.pom.sha1",
- "wagon-providers/",
- "wagon-scm/",
- "wagon-ssh-external/",
- "wagon-ssh/",
- "wagon-webdav/",
- "wagon/" };
-
- assertContainsExpected( links, expected );
-
- String[] avoided = new String[] { "/org/", "?C=S;O=A", "?C=D;O=A", "?C=M;O=A" };
-
- assertNotContainingAvoided( links, avoided );
- }
-
- /**
- * Test of an html which is improperly formatted, contains full host-specific paths to the resources and uses non-normalized base URI
- * @throws Exception
- */
- public void testParseJettyWithNonNormalizedBaseURI()
- throws Exception
- {
- List<String> links = parseLinks( "http://www.ibiblio.org/maven2/org/apache/maven/wagon//",
- "jetty-wagon.html" );
-
- String[] expected = new String[] {
- "wagon-1.0-alpha-2.pom",
- "wagon-1.0-alpha-2.pom.asc",
- "wagon-1.0-alpha-2.pom.md5",
- "wagon-1.0-alpha-2.pom.sha1",
- "wagon-1.0-alpha-3-20050413.021234-4.pom",
- "wagon-1.0-alpha-3-20050413.021234-4.pom.md5",
- "wagon-1.0-alpha-3-20050413.021234-4.pom.sha1",
- "wagon-1.0-alpha-3-20050419.043745-5.pom",
- "wagon-1.0-alpha-3-20050419.043745-5.pom.md5",
- "wagon-1.0-alpha-3-20050419.043745-5.pom.sha1",
- "wagon-1.0-alpha-3-20050419.044035-6.pom",
- "wagon-1.0-alpha-3-20050419.044035-6.pom.md5",
- "wagon-1.0-alpha-3-20050419.044035-6.pom.sha1",
- "wagon-1.0-alpha-3-20050421.162738-7.pom",
- "wagon-1.0-alpha-3-20050421.162738-7.pom.md5",
- "wagon-1.0-alpha-3-20050421.162738-7.pom.sha1",
- "wagon-1.0-alpha-3-20050422.075233-8.pom",
- "wagon-1.0-alpha-3-20050422.075233-8.pom.md5",
- "wagon-1.0-alpha-3-20050422.075233-8.pom.sha1",
- "wagon-1.0-alpha-3-20050429.051847-9.pom",
- "wagon-1.0-alpha-3-20050429.051847-9.pom.md5",
- "wagon-1.0-alpha-3-20050429.051847-9.pom.sha1",
- "wagon-file/",
- "wagon-ftp/",
- "wagon-http-lightweight/",
- "wagon-http/",
- "wagon-lightweight-http/",
- "wagon-provider-api/",
- "wagon-provider-test/",
- "wagon-provider/",
- "wagon-providers-1.0-alpha-2.pom",
- "wagon-providers-1.0-alpha-2.pom.asc",
- "wagon-providers-1.0-alpha-2.pom.md5",
- "wagon-providers-1.0-alpha-2.pom.sha1",
- "wagon-providers-1.0-alpha-3-20050407.202848-1.pom",
- "wagon-providers-1.0-alpha-3-20050407.202848-1.pom.md5",
- "wagon-providers-1.0-alpha-3-20050407.202848-1.pom.sha1",
- "wagon-providers-1.0-alpha-3-20050419.044035-2.pom",
- "wagon-providers-1.0-alpha-3-20050419.044035-2.pom.md5",
- "wagon-providers-1.0-alpha-3-20050419.044035-2.pom.sha1",
- "wagon-providers-1.0-alpha-3-20050421.162738-3.pom",
- "wagon-providers-1.0-alpha-3-20050421.162738-3.pom.md5",
- "wagon-providers-1.0-alpha-3-20050421.162738-3.pom.sha1",
- "wagon-providers-1.0-alpha-3-20050422.075233-4.pom",
- "wagon-providers-1.0-alpha-3-20050422.075233-4.pom.md5",
- "wagon-providers-1.0-alpha-3-20050422.075233-4.pom.sha1",
- "wagon-providers-1.0-alpha-3-20050429.051847-5.pom",
- "wagon-providers-1.0-alpha-3-20050429.051847-5.pom.md5",
- "wagon-providers-1.0-alpha-3-20050429.051847-5.pom.sha1",
- "wagon-providers/",
- "wagon-scm/",
- "wagon-ssh-external/",
- "wagon-ssh/",
- "wagon-webdav/",
- "wagon/" };
-
- assertContainsExpected( links, expected );
-
- String[] avoided = new String[] { "/org/", "?C=S;O=A", "?C=D;O=A", "?C=M;O=A" };
-
- assertNotContainingAvoided( links, avoided );
- }
-
- /**
- * Using repository.codehaus.org output as an example.
- * This is an example of an older RHEL installation of apache httpd with old fancy indexing output
- * This example tests how to detect directories properly.
- *
- * @throws TransferFailedException
- */
- public void testParseMevenIde()
- throws TransferFailedException
- {
- List<String> links = parseLinks( "http://repository.codehaus.org/org/codehaus/mevenide/", "mevenide.html" );
-
- String[] expected = new String[] {
- "apisupport/",
- "autoupdate/",
- "continuum-rpc/",
- "continuum/",
- "debugger-bridge/",
- "deployment-bridge/",
- "feature/",
- "grammar/",
- "ide-mojos/",
- "indexer/",
- "j2ee/",
- "junit/",
- "maven-metadata.xml",
- "maven-metadata.xml.md5",
- "maven-metadata.xml.sha1",
- "mevenide2-parent/",
- "nb-mvn-embedder/",
- "nb-project/",
- "nb-repo-browser/",
- "netbeans-debugger-plugin/",
- "netbeans-deploy-plugin/",
- "netbeans-libs/",
- "netbeans-nbmreload-plugin/",
- "netbeans-repository/",
- "netbeans-run-plugin/",
- "netbeans/",
- "persistence/",
- "plugin-bridges/",
- "plugins/",
- "reload-nbm-bridge/",
- "run-jar-bridge/" };
-
- assertContainsExpected( links, expected );
-
- String[] avoided = new String[] { "/org/codehaus/", "?C=S;O=A", "?C=D;O=A", "?C=M;O=A" };
-
- assertNotContainingAvoided( links, avoided );
- }
-
- public void testParseMirror()
- throws Exception
- {
- List<String> links = parseLinks( "http://www.ibiblio.org/maven2/org/apache/maven/wagon/",
- "mirror-wagon.html" );
-
- String[] expected = new String[] {
- "wagon-1.0-alpha-2.pom",
- "wagon-1.0-alpha-2.pom.asc",
- "wagon-1.0-alpha-2.pom.md5",
- "wagon-1.0-alpha-2.pom.sha1",
- "wagon-1.0-alpha-3-20050413.021234-4.pom",
- "wagon-1.0-alpha-3-20050413.021234-4.pom.md5",
- "wagon-1.0-alpha-3-20050413.021234-4.pom.sha1",
- "wagon-1.0-alpha-3-20050419.043745-5.pom",
- "wagon-1.0-alpha-3-20050419.043745-5.pom.md5",
- "wagon-1.0-alpha-3-20050419.043745-5.pom.sha1",
- "wagon-1.0-alpha-3-20050419.044035-6.pom",
- "wagon-1.0-alpha-3-20050419.044035-6.pom.md5",
- "wagon-1.0-alpha-3-20050419.044035-6.pom.sha1",
- "wagon-1.0-alpha-3-20050421.162738-7.pom",
- "wagon-1.0-alpha-3-20050421.162738-7.pom.md5",
- "wagon-1.0-alpha-3-20050421.162738-7.pom.sha1",
- "wagon-1.0-alpha-3-20050422.075233-8.pom",
- "wagon-1.0-alpha-3-20050422.075233-8.pom.md5",
- "wagon-1.0-alpha-3-20050422.075233-8.pom.sha1",
- "wagon-1.0-alpha-3-20050429.051847-9.pom",
- "wagon-1.0-alpha-3-20050429.051847-9.pom.md5",
- "wagon-1.0-alpha-3-20050429.051847-9.pom.sha1",
- "wagon-file/",
- "wagon-ftp/",
- "wagon-http-lightweight/",
- "wagon-http/",
- "wagon-lightweight-http/",
- "wagon-provider-api/",
- "wagon-provider-test/",
- "wagon-provider/",
- "wagon-providers-1.0-alpha-2.pom",
- "wagon-providers-1.0-alpha-2.pom.asc",
- "wagon-providers-1.0-alpha-2.pom.md5",
- "wagon-providers-1.0-alpha-2.pom.sha1",
- "wagon-providers-1.0-alpha-3-20050407.202848-1.pom",
- "wagon-providers-1.0-alpha-3-20050407.202848-1.pom.md5",
- "wagon-providers-1.0-alpha-3-20050407.202848-1.pom.sha1",
- "wagon-providers-1.0-alpha-3-20050419.044035-2.pom",
- "wagon-providers-1.0-alpha-3-20050419.044035-2.pom.md5",
- "wagon-providers-1.0-alpha-3-20050419.044035-2.pom.sha1",
- "wagon-providers-1.0-alpha-3-20050421.162738-3.pom",
- "wagon-providers-1.0-alpha-3-20050421.162738-3.pom.md5",
- "wagon-providers-1.0-alpha-3-20050421.162738-3.pom.sha1",
- "wagon-providers-1.0-alpha-3-20050422.075233-4.pom",
- "wagon-providers-1.0-alpha-3-20050422.075233-4.pom.md5",
- "wagon-providers-1.0-alpha-3-20050422.075233-4.pom.sha1",
- "wagon-providers-1.0-alpha-3-20050429.051847-5.pom",
- "wagon-providers-1.0-alpha-3-20050429.051847-5.pom.md5",
- "wagon-providers-1.0-alpha-3-20050429.051847-5.pom.sha1",
- "wagon-providers/",
- "wagon-scm/",
- "wagon-ssh-external/",
- "wagon-ssh/",
- "wagon-webdav/",
- "wagon/" };
-
- assertContainsExpected( links, expected );
-
- String[] avoided = new String[] {
- "/org/codehaus/",
- "?C=S;O=A",
- "?C=D;O=A",
- "?C=M;O=A",
- "mailto:mirror.admin@mirror.com" };
-
- assertNotContainingAvoided( links, avoided );
- }
-
- /**
- * Example of output from repo1.maven.org
- * This example is of nekohtml specifically.
- *
- * @throws TransferFailedException
- */
- public void testParseNekoHtml()
- throws TransferFailedException
- {
- List<String> links = parseLinks( "http://repo1.maven.org//maven2/nekohtml/nekohtml/1.9.6/", "nekohtml.html" );
-
- String[] expected = new String[] {
- "nekohtml-1.9.6-javadoc.jar",
- "nekohtml-1.9.6-javadoc.jar.md5",
- "nekohtml-1.9.6-javadoc.jar.sha1",
- "nekohtml-1.9.6-sources.jar",
- "nekohtml-1.9.6-sources.jar.md5",
- "nekohtml-1.9.6-sources.jar.sha1",
- "nekohtml-1.9.6.jar",
- "nekohtml-1.9.6.jar.md5",
- "nekohtml-1.9.6.jar.sha1",
- "nekohtml-1.9.6.pom",
- "nekohtml-1.9.6.pom.md5",
- "nekohtml-1.9.6.pom.sha1" };
-
- assertContainsExpected( links, expected );
-
- String[] avoided = new String[] { "/maven2/nekohtml/nekohtml/", "?C=S;O=A", "?C=D;O=A", "?C=M;O=A" };
-
- assertNotContainingAvoided( links, avoided );
- }
-
- /**
- * Example of detecting directories on repo1.maven.org
- *
- * @throws TransferFailedException
- */
- public void testParseNetSourceforge()
- throws TransferFailedException
- {
- List<String> links = parseLinks( "http://repo1.maven.org/maven2/net/sf/", "net_sf.html" );
-
- String[] expected = new String[] {
- "a2j/",
- "aislib/",
- "alchim/",
- "antenna/",
- "apt-jelly/",
- "beanlib/",
- "bluecove/",
- "buildbox/",
- "click/",
- "clirr/",
- "datavision/",
- "dozer/",
- "dtddoc/",
- "dynpageplus/",
- "ehcache/",
- "ezmorph/",
- "falcon/",
- "grester/",
- "gwt-widget/",
- "hermesftp/",
- "hibernate/",
- "jcharts/",
- "jdatabaseimport/",
- "jeceira/",
- "jfcunit/",
- "jfig/",
- "jguard/",
- "jipcam/",
- "jlynx/",
- "jour/",
- "jpf/",
- "json-lib/",
- "jsptest/",
- "jsr107cache/",
- "jt400/",
- "jxls/",
- "kxml/",
- "ldaptemplate/",
- "locale4j/",
- "mapasuta/",
- "maven-har/",
- "maven-sar/",
- "opencsv/",
- "oval/",
- "proguard/",
- "qdwizard/",
- "resultsetmapper/",
- "retrotranslator/",
- "saxon/",
- "shadesdb/",
- "smc/",
- "speculoos/",
- "springlayout/",
- "stat-scm/",
- "statsvn/",
- "stax/",
- "struts/",
- "tacos/",
- "testextensions/",
- "webdav-servlet/" };
-
- assertContainsExpected( links, expected );
-
- String[] avoided = new String[] { "/maven2/net/", "?C=S;O=A", "?C=D;O=A", "?C=M;O=A" };
-
- assertNotContainingAvoided( links, avoided );
- }
-
- /**
- * Another larger example of the directory link detection on repository.codehaus.org
- *
- * @throws TransferFailedException
- */
- public void testParseOrgCodehaus()
- throws TransferFailedException
- {
- List<String> links = parseLinks( "http://repository.codehaus.org/org/codehaus", "org.codehaus.html" );
-
- String[] expected = new String[] {
- "agilifier/",
- "benji/",
- "bruce/",
- "btm/",
- "cargo/",
- "castor-spring/",
- "castor/",
- "cozmos/",
- "dataforge/",
- "dimple/",
- "droolsdotnet/",
- "enunciate/",
- "fabric3/",
- "gant/",
- "grails-plugins/",
- "groovy/",
- "gsoc/",
- "guessencoding/",
- "gumtree/",
- "gwt-openlayers/",
- "haus/",
- "izpack/",
- "javasim/",
- "jedi/",
- "jequel/",
- "jet/",
- "jettison/",
- "jfdi/",
- "jikesrvm/",
- "jra/",
- "jremoting/",
- "jtestme/",
- "jtestr/",
- "labs-ng/",
- "logicabyss/",
- "marionette/",
- "mevenide/",
- "modello/",
- "mojo/",
- "mvel/",
- "mvflex/",
- "native-mojo/",
- "openim/",
- "plexus/",
- "polymap/",
- "prometheus/",
- "prophit/",
- "quaere/",
- "redback/",
- "rulessandpit/",
- "rvm/",
- "savana/",
- "scala-ide/",
- "senro/",
- "sonar/",
- "staxmate/",
- "stomp/",
- "svn4j/",
- "swiby/",
- "swizzle/",
- "sxc/",
- "testdox/",
- "wadi/",
- "waffle/",
- "woodstox/",
- "xdoclet/",
- "xfire/",
- "xharness/",
- "xsite/",
- "xstream/",
- "xwire/" };
-
- assertContainsExpected( links, expected );
-
- String[] avoided = new String[] { "/org/", "?C=S;O=A", "?C=D;O=A", "?C=M;O=A" };
-
- assertNotContainingAvoided( links, avoided );
- }
-
- /**
- * Test the output found from apache httpd with fancy indexing and dav module.
- * Using people.apache.org output as source material.
- *
- * @throws TransferFailedException
- */
- public void testParsePeopleApacheOrg()
- throws TransferFailedException
- {
- List<String> links = parseLinks(
- "http://people.apache.org/repo/m2-ibiblio-rsync-repository/org/apache/maven/archiva/archiva-plexus-runtime/1.0.1/",
- "org.apache.maven.html" );
-
- String[] expected = new String[] {
- "archiva-plexus-runtime-1.0.1-bin.tar.gz",
- "archiva-plexus-runtime-1.0.1-bin.tar.gz.asc",
- "archiva-plexus-runtime-1.0.1-bin.tar.gz.asc.md5",
- "archiva-plexus-runtime-1.0.1-bin.tar.gz.asc.sha1",
- "archiva-plexus-runtime-1.0.1-bin.tar.gz.md5",
- "archiva-plexus-runtime-1.0.1-bin.tar.gz.sha1",
- "archiva-plexus-runtime-1.0.1-bin.zip",
- "archiva-plexus-runtime-1.0.1-bin.zip.asc",
- "archiva-plexus-runtime-1.0.1-bin.zip.asc.md5",
- "archiva-plexus-runtime-1.0.1-bin.zip.asc.sha1",
- "archiva-plexus-runtime-1.0.1-bin.zip.md5",
- "archiva-plexus-runtime-1.0.1-bin.zip.sha1",
- "archiva-plexus-runtime-1.0.1-sources.jar",
- "archiva-plexus-runtime-1.0.1-sources.jar.asc",
- "archiva-plexus-runtime-1.0.1-sources.jar.asc.md5",
- "archiva-plexus-runtime-1.0.1-sources.jar.asc.sha1",
- "archiva-plexus-runtime-1.0.1-sources.jar.md5",
- "archiva-plexus-runtime-1.0.1-sources.jar.sha1",
- "archiva-plexus-runtime-1.0.1.jar",
- "archiva-plexus-runtime-1.0.1.jar.asc",
- "archiva-plexus-runtime-1.0.1.jar.asc.md5",
- "archiva-plexus-runtime-1.0.1.jar.asc.sha1",
- "archiva-plexus-runtime-1.0.1.jar.md5",
- "archiva-plexus-runtime-1.0.1.jar.sha1",
- "archiva-plexus-runtime-1.0.1.pom",
- "archiva-plexus-runtime-1.0.1.pom.asc",
- "archiva-plexus-runtime-1.0.1.pom.asc.md5",
- "archiva-plexus-runtime-1.0.1.pom.asc.sha1",
- "archiva-plexus-runtime-1.0.1.pom.md5",
- "archiva-plexus-runtime-1.0.1.pom.sha1",
- "readme artifacts.txt"};
-
- assertContainsExpected( links, expected );
-
- String[] avoided = new String[] {
- "/repo/m2-ibiblio-rsync-repository/org/apache/maven/archiva/archiva-plexus-runtime/",
- "?C=S;O=A",
- "?C=D;O=A",
- "?C=M;O=A" };
-
- assertNotContainingAvoided( links, avoided );
- }
-}
http://git-wip-us.apache.org/repos/asf/maven-wagon/blob/5fcc6315/wagon-providers/wagon-http/pom.xml
----------------------------------------------------------------------
diff --git a/wagon-providers/wagon-http/pom.xml b/wagon-providers/wagon-http/pom.xml
index cea7d9a..4746736 100644
--- a/wagon-providers/wagon-http/pom.xml
+++ b/wagon-providers/wagon-http/pom.xml
@@ -37,7 +37,7 @@ under the License.
<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
- <artifactId>wagon-http-shared4</artifactId>
+ <artifactId>wagon-http-shared</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
http://git-wip-us.apache.org/repos/asf/maven-wagon/blob/5fcc6315/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/HttpWagon.java
----------------------------------------------------------------------
diff --git a/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/HttpWagon.java b/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/HttpWagon.java
index e888de3..acc8533 100644
--- a/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/HttpWagon.java
+++ b/wagon-providers/wagon-http/src/main/java/org/apache/maven/wagon/providers/http/HttpWagon.java
@@ -26,7 +26,7 @@ import org.apache.http.client.methods.HttpGet;
import org.apache.maven.wagon.ResourceDoesNotExistException;
import org.apache.maven.wagon.TransferFailedException;
import org.apache.maven.wagon.authorization.AuthorizationException;
-import org.apache.maven.wagon.shared.http4.HtmlFileListParser;
+import org.apache.maven.wagon.shared.http.HtmlFileListParser;
import java.io.IOException;
import java.io.InputStream;
http://git-wip-us.apache.org/repos/asf/maven-wagon/blob/5fcc6315/wagon-providers/wagon-webdav-jackrabbit/pom.xml
----------------------------------------------------------------------
diff --git a/wagon-providers/wagon-webdav-jackrabbit/pom.xml b/wagon-providers/wagon-webdav-jackrabbit/pom.xml
index fa25db5..4a58b3b 100644
--- a/wagon-providers/wagon-webdav-jackrabbit/pom.xml
+++ b/wagon-providers/wagon-webdav-jackrabbit/pom.xml
@@ -46,11 +46,6 @@ under the License.
<dependencies>
<dependency>
- <groupId>${project.groupId}</groupId>
- <artifactId>wagon-http-shared</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
<groupId>org.apache.jackrabbit</groupId>
<artifactId>jackrabbit-webdav</artifactId>
<version>2.5.2</version>