You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ant.apache.org by xa...@apache.org on 2008/01/09 08:40:40 UTC

svn commit: r610291 - in /ant/ivy/core/trunk: ./ doc/resolver/ src/java/org/apache/ivy/plugins/resolver/ src/java/org/apache/ivy/util/url/ test/java/org/apache/ivy/plugins/resolver/ test/java/org/apache/ivy/util/url/ test/repositories/m2/org/apache/tes...

Author: xavier
Date: Tue Jan  8 23:40:34 2008
New Revision: 610291

URL: http://svn.apache.org/viewvc?rev=610291&view=rev
Log:
IMPROVEMENT: Make IBiblio resolver compatible with maven proxy (IVY-466)

Added:
    ant/ivy/core/trunk/src/java/org/apache/ivy/util/url/ContextualSAXHandler.java   (with props)
    ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/resolver/Maven2LocalTest.java   (with props)
    ant/ivy/core/trunk/test/java/org/apache/ivy/util/url/archiva-listing.html   (with props)
    ant/ivy/core/trunk/test/java/org/apache/ivy/util/url/fixed-archiva-listing.html   (with props)
    ant/ivy/core/trunk/test/java/org/apache/ivy/util/url/maven-proxy-listing.html   (with props)
    ant/ivy/core/trunk/test/repositories/m2/org/apache/test-metadata/
    ant/ivy/core/trunk/test/repositories/m2/org/apache/test-metadata/1.0/
    ant/ivy/core/trunk/test/repositories/m2/org/apache/test-metadata/1.0/test-metadata-1.0.jar   (with props)
    ant/ivy/core/trunk/test/repositories/m2/org/apache/test-metadata/1.0/test-metadata-1.0.pom   (with props)
    ant/ivy/core/trunk/test/repositories/m2/org/apache/test-metadata/1.1/
    ant/ivy/core/trunk/test/repositories/m2/org/apache/test-metadata/1.1/test-metadata-1.1.jar   (with props)
    ant/ivy/core/trunk/test/repositories/m2/org/apache/test-metadata/1.1/test-metadata-1.1.pom   (with props)
    ant/ivy/core/trunk/test/repositories/m2/org/apache/test-metadata/1.2/
    ant/ivy/core/trunk/test/repositories/m2/org/apache/test-metadata/1.2/test-metadata-1.2.jar   (with props)
    ant/ivy/core/trunk/test/repositories/m2/org/apache/test-metadata/1.2/test-metadata-1.2.pom   (with props)
    ant/ivy/core/trunk/test/repositories/m2/org/apache/test-metadata/maven-metadata.xml   (with props)
Modified:
    ant/ivy/core/trunk/CHANGES.txt
    ant/ivy/core/trunk/doc/resolver/ibiblio.html
    ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/IBiblioResolver.java
    ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/RepositoryResolver.java
    ant/ivy/core/trunk/src/java/org/apache/ivy/util/url/ApacheURLLister.java
    ant/ivy/core/trunk/test/java/org/apache/ivy/util/url/ApacheURLListerTest.java

Modified: ant/ivy/core/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/CHANGES.txt?rev=610291&r1=610290&r2=610291&view=diff
==============================================================================
--- ant/ivy/core/trunk/CHANGES.txt (original)
+++ ant/ivy/core/trunk/CHANGES.txt Tue Jan  8 23:40:34 2008
@@ -60,6 +60,7 @@
 =====================================
 - NEW: Introduce RepositoryManagementEngine (IVY-665 - not completed yet)
 
+- IMPROVEMENT: Make IBiblio resolver compatible with maven proxy (IVY-466)
 - IMPROVEMENT: Use namespace aware validation (IVY-553)
 - IMPROVEMENT: use ModuleRevisionId instead of ModuleId in IvySettings#getResolver (IVY-691)
 - IMPROVEMENT: Flexible cache management (IVY-399 - not completed yet)

Modified: ant/ivy/core/trunk/doc/resolver/ibiblio.html
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/doc/resolver/ibiblio.html?rev=610291&r1=610290&r2=610291&view=diff
==============================================================================
--- ant/ivy/core/trunk/doc/resolver/ibiblio.html (original)
+++ ant/ivy/core/trunk/doc/resolver/ibiblio.html Tue Jan  8 23:40:34 2008
@@ -42,6 +42,8 @@
 </url>
 </code>
 
+<span class="since">since 2.0</span> When used in m2compatible mode with the default pattern, this resolver uses maven-metadata.xml files if present to list the revisions available on the repository. This is especially useful when using a maven specific proxy, which does not serve directory listing. This can be disable by using the useMavenMetadata flag.
+
 <h1>Attributes</h1>
 This resolver shares the <a href="../configuration/resolvers.html#common">common attributes</a> of standard resolvers.
 <table class="ivy-attributes">
@@ -56,6 +58,8 @@
     <tr><td>m2compatible</td><td>True if this resolver should be maven2 compatible, false otherwise <span class="since">since 1.3</span></td>
         <td>No, defaults to false</td></tr>
     <tr><td>usepoms</td><td>True if this resolver should use maven poms when it is already in m2compatible mode, false otherwise <span class="since">since 1.4</span></td>
+        <td>No, defaults to true</td></tr>
+    <tr><td>useMavenMetadata</td><td>True if this resolver should use maven-metadata.xml files to list available revisions, false to use directory listing <span class="since">since 2.0</span></td>
         <td>No, defaults to true</td></tr>
 </tbody>
 </table>

Modified: ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/IBiblioResolver.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/IBiblioResolver.java?rev=610291&r1=610290&r2=610291&view=diff
==============================================================================
--- ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/IBiblioResolver.java (original)
+++ ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/IBiblioResolver.java Tue Jan  8 23:40:34 2008
@@ -18,12 +18,18 @@
 package org.apache.ivy.plugins.resolver;
 
 import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
 import java.text.ParseException;
+import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Date;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 
+import javax.xml.parsers.ParserConfigurationException;
+
 import org.apache.ivy.core.IvyPatternHelper;
 import org.apache.ivy.core.module.descriptor.Artifact;
 import org.apache.ivy.core.module.descriptor.DefaultArtifact;
@@ -36,8 +42,13 @@
 import org.apache.ivy.core.search.ModuleEntry;
 import org.apache.ivy.core.search.OrganisationEntry;
 import org.apache.ivy.core.search.RevisionEntry;
+import org.apache.ivy.plugins.repository.Repository;
+import org.apache.ivy.plugins.repository.Resource;
 import org.apache.ivy.plugins.resolver.util.ResolvedResource;
 import org.apache.ivy.util.Message;
+import org.apache.ivy.util.XMLHelper;
+import org.apache.ivy.util.url.ContextualSAXHandler;
+import org.xml.sax.SAXException;
 
 /**
  * IBiblioResolver is a resolver which can be used to resolve dependencies found in the ibiblio
@@ -47,6 +58,9 @@
  * {@link org.apache.ivy.plugins.resolver.URLResolver}.
  */
 public class IBiblioResolver extends URLResolver {
+    private static final String M2_PATTERN 
+        = "[organisation]/[module]/[revision]/[artifact]-[revision](-[classifier]).[ext]";
+
     public static final String DEFAULT_PATTERN = "[module]/[type]s/[artifact]-[revision].[ext]";
 
     public static final String DEFAULT_ROOT = "http://www.ibiblio.org/maven/";
@@ -57,6 +71,9 @@
 
     // use poms if m2 compatible is true
     private boolean usepoms = true;
+    
+    // use maven-metadata.xml is exists to list revisions
+    private boolean useMavenMetadata = true;
 
     public IBiblioResolver() {
     }
@@ -81,8 +98,7 @@
                 root = "http://repo1.maven.org/maven2/";
             }
             if (pattern == null) {
-                pattern = 
-                    "[organisation]/[module]/[revision]/[artifact]-[revision](-[classifier]).[ext]";
+                pattern = M2_PATTERN;
             }
             updateWholePattern();
         }
@@ -194,6 +210,75 @@
         ensureConfigured(getSettings());
         return super.listRevisions(mod);
     }
+    
+    protected ResolvedResource[] listResources(
+            Repository repository, ModuleRevisionId mrid, String pattern, Artifact artifact) {
+        if (isUseMavenMetadata() && isM2compatible() && pattern.endsWith(M2_PATTERN)) {
+            // use maven-metadata.xml if it exists
+            InputStream metadataStream = null;
+            try {
+                String metadataLocation = IvyPatternHelper.substitute(
+                    root + "[organisation]/[module]/maven-metadata.xml", mrid);
+                Resource metadata = repository.getResource(metadataLocation);
+                if (metadata.exists()) {
+                    Message.verbose("\tlisting revisions from maven-metadata: " + metadata);
+                    final List revs = new ArrayList();
+                    metadataStream = metadata.openStream();
+                    XMLHelper.parse(metadataStream, null, new ContextualSAXHandler() {
+                        public void endElement(String uri, String localName, String qName) 
+                                throws SAXException {
+                            if ("metadata/versioning/versions/version".equals(getContext())) {
+                                revs.add(getText().trim());
+                            }
+                            super.endElement(uri, localName, qName);
+                        }
+                    }, null);
+                    Message.debug("\tfound revs: " + revs);
+                    List rres = new ArrayList();
+                    for (Iterator iter = revs.iterator(); iter.hasNext();) {
+                        String rev = (String) iter.next();
+                        String resolvedPattern = IvyPatternHelper.substitute(
+                            pattern, ModuleRevisionId.newInstance(mrid, rev), artifact);
+                        try {
+                            Resource res = repository.getResource(resolvedPattern);
+                            if ((res != null) && res.exists()) {
+                                rres.add(new ResolvedResource(res, rev));
+                            }
+                        } catch (IOException e) {
+                            Message.warn(
+                                "impossible to get resource from name listed by maven-metadata.xml:"
+                                    + rres + ": " + e.getMessage());
+                        }
+                    }
+                    return (ResolvedResource[]) rres.toArray(new ResolvedResource[rres.size()]);
+                } else {
+                    Message.verbose("\tmaven-metadata not available: " + metadata);
+                }
+            } catch (IOException e) {
+                Message.verbose(
+                    "impossible to access maven metadata file, ignored: " + e.getMessage());
+            } catch (SAXException e) {
+                Message.verbose(
+                    "impossible to parse maven metadata file, ignored: " + e.getMessage());
+            } catch (ParserConfigurationException e) {
+                Message.verbose(
+                    "impossible to parse maven metadata file, ignored: " + e.getMessage());
+            } finally {
+                if (metadataStream != null) {
+                    try {
+                        metadataStream.close();
+                    } catch (IOException e) {
+                        // ignored
+                    }
+                }
+            }
+            // maven metadata not available or something went wrong, use default listing capability
+            return super.listResources(repository, mrid, pattern, artifact);
+        } else {
+            return super.listResources(repository, mrid, pattern, artifact);
+        }
+    }
+
 
     public String getTypeName() {
         return "ibiblio";
@@ -235,11 +320,20 @@
         updateWholePattern();
     }
 
+    public boolean isUseMavenMetadata() {
+        return useMavenMetadata;
+    }
+
+    public void setUseMavenMetadata(boolean useMavenMetadata) {
+        this.useMavenMetadata = useMavenMetadata;
+    }
+
     public void dumpSettings() {
         ensureConfigured(getSettings());
         super.dumpSettings();
         Message.debug("\t\troot: " + getRoot());
         Message.debug("\t\tpattern: " + getPattern());
         Message.debug("\t\tusepoms: " + usepoms);
+        Message.debug("\t\tuseMavenMetadata: " + useMavenMetadata);
     }
 }

Modified: ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/RepositoryResolver.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/RepositoryResolver.java?rev=610291&r1=610290&r2=610291&view=diff
==============================================================================
--- ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/RepositoryResolver.java (original)
+++ ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/RepositoryResolver.java Tue Jan  8 23:40:34 2008
@@ -120,7 +120,7 @@
             Date date) {
         logAttempt(IvyPatternHelper.substitute(pattern, ModuleRevisionId.newInstance(mrid,
             IvyPatternHelper.getTokenString(IvyPatternHelper.REVISION_KEY)), artifact));
-        ResolvedResource[] rress = ResolverHelper.findAll(repository, mrid, pattern, artifact);
+        ResolvedResource[] rress = listResources(repository, mrid, pattern, artifact);
         if (rress == null) {
             Message.debug("\t" + name + ": unable to list resources for " + mrid + ": pattern="
                     + pattern);
@@ -134,6 +134,26 @@
             }
             return found;
         }
+    }
+
+    /**
+     * List all revisions as resolved resources for the given artifact in the given repository using
+     * the given pattern, and using the given mrid except its revision.
+     * 
+     * @param repository
+     *            the repository in which revisions should be located
+     * @param mrid
+     *            the module revision id to look for (except revision)
+     * @param pattern
+     *            the pattern to use to locate the revisions
+     * @param artifact
+     *            the artifact to find
+     * @return an array of ResolvedResource, all pointing to a different revision of the given
+     *         Artifact.
+     */
+    protected ResolvedResource[] listResources(
+            Repository repository, ModuleRevisionId mrid, String pattern, Artifact artifact) {
+        return ResolverHelper.findAll(repository, mrid, pattern, artifact);
     }
 
     protected long get(Resource resource, File dest) throws IOException {

Modified: ant/ivy/core/trunk/src/java/org/apache/ivy/util/url/ApacheURLLister.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/util/url/ApacheURLLister.java?rev=610291&r1=610290&r2=610291&view=diff
==============================================================================
--- ant/ivy/core/trunk/src/java/org/apache/ivy/util/url/ApacheURLLister.java (original)
+++ ant/ivy/core/trunk/src/java/org/apache/ivy/util/url/ApacheURLLister.java Tue Jan  8 23:40:34 2008
@@ -132,6 +132,11 @@
                 href = href.substring(slashIndex + 1);
             }
 
+            // relative to current href: convert to simple relative one
+            if (href.startsWith("./")) {
+                href = href.substring("./".length());
+            }
+
             // exclude those where they do not match
             // href will never be truncated, text may be truncated by apache
             // may have a '.' from either the extension (.jar) or "..&gt;"

Added: ant/ivy/core/trunk/src/java/org/apache/ivy/util/url/ContextualSAXHandler.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/util/url/ContextualSAXHandler.java?rev=610291&view=auto
==============================================================================
--- ant/ivy/core/trunk/src/java/org/apache/ivy/util/url/ContextualSAXHandler.java (added)
+++ ant/ivy/core/trunk/src/java/org/apache/ivy/util/url/ContextualSAXHandler.java Tue Jan  8 23:40:34 2008
@@ -0,0 +1,65 @@
+/*
+ *  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.
+ *
+ */
+package org.apache.ivy.util.url;
+
+import java.util.Iterator;
+import java.util.Stack;
+
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+import org.xml.sax.helpers.DefaultHandler;
+
+public class ContextualSAXHandler extends DefaultHandler {
+
+    private Stack contextStack = new Stack();
+    
+    private StringBuffer buffer = new StringBuffer();
+
+    public void characters(char[] ch, int start, int length) throws SAXException {
+        buffer.append(ch, start, length);
+    }
+
+    public void startElement(String uri, String localName, String qName, Attributes attributes)
+            throws SAXException {
+        contextStack.push(qName);
+        buffer.setLength(0);
+    }
+
+    public void endElement(String uri, String localName, String qName) throws SAXException {
+        contextStack.pop();
+        buffer.setLength(0);
+    }
+
+
+    protected String getContext() {
+        StringBuffer buf = new StringBuffer();
+        for (Iterator iter = contextStack.iterator(); iter.hasNext();) {
+            String ctx = (String) iter.next();
+            buf.append(ctx).append("/");
+        }
+        if (buf.length() > 0) {
+            buf.setLength(buf.length() - 1);
+        }
+        return buf.toString();
+    }
+    
+    protected String getText() {
+        return buffer.toString();
+    }
+
+}

Propchange: ant/ivy/core/trunk/src/java/org/apache/ivy/util/url/ContextualSAXHandler.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/resolver/Maven2LocalTest.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/resolver/Maven2LocalTest.java?rev=610291&view=auto
==============================================================================
--- ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/resolver/Maven2LocalTest.java (added)
+++ ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/resolver/Maven2LocalTest.java Tue Jan  8 23:40:34 2008
@@ -0,0 +1,97 @@
+/*
+ *  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.
+ *
+ */
+package org.apache.ivy.plugins.resolver;
+
+import java.io.File;
+import java.net.MalformedURLException;
+
+import junit.framework.TestCase;
+
+import org.apache.ivy.core.event.EventManager;
+import org.apache.ivy.core.module.descriptor.DefaultDependencyDescriptor;
+import org.apache.ivy.core.module.id.ModuleRevisionId;
+import org.apache.ivy.core.resolve.ResolveData;
+import org.apache.ivy.core.resolve.ResolveEngine;
+import org.apache.ivy.core.resolve.ResolveOptions;
+import org.apache.ivy.core.resolve.ResolvedModuleRevision;
+import org.apache.ivy.core.settings.IvySettings;
+import org.apache.ivy.core.sort.SortEngine;
+import org.apache.ivy.util.CacheCleaner;
+
+public class Maven2LocalTest extends TestCase {
+    private IvySettings settings;
+
+    private ResolveEngine engine;
+
+    private ResolveData data;
+
+    private File cache;
+    
+    protected void setUp() throws Exception {
+        settings = new IvySettings();
+        engine = new ResolveEngine(settings, new EventManager(), new SortEngine(settings));
+        cache = new File("build/cache");
+        data = new ResolveData(engine, new ResolveOptions());
+        cache.mkdirs();
+        settings.setDefaultCache(cache);
+    }
+
+    protected void tearDown() throws Exception {
+        CacheCleaner.deleteDir(cache);
+    }
+
+    public void testUseMetadataForListing() throws Exception {
+        IBiblioResolver resolver = maven2Resolver();
+        
+        ResolvedModuleRevision m = resolver.getDependency(
+            new DefaultDependencyDescriptor(
+                ModuleRevisionId.newInstance(
+                    "org.apache", "test-metadata", "latest.integration"), 
+                false), data);
+        
+        assertNotNull(m);
+        // should trust the metadata (latest=1.1) instead of listing revisions (latest=1.2)
+        assertEquals(ModuleRevisionId.newInstance(
+            "org.apache", "test-metadata", "1.1"), m.getId());
+    }
+
+    public void testNotUseMetadataForListing() throws Exception {
+        IBiblioResolver resolver = maven2Resolver();
+        resolver.setUseMavenMetadata(false);
+        
+        ResolvedModuleRevision m = resolver.getDependency(
+            new DefaultDependencyDescriptor(
+                ModuleRevisionId.newInstance(
+                    "org.apache", "test-metadata", "latest.integration"), 
+                false), data);
+        
+        assertNotNull(m);
+        // should trust listing revisions (latest=1.2) instead of the metadata (latest=1.1) 
+        assertEquals(ModuleRevisionId.newInstance(
+            "org.apache", "test-metadata", "1.2"), m.getId());
+    }
+
+    private IBiblioResolver maven2Resolver() throws MalformedURLException {
+        IBiblioResolver resolver = new IBiblioResolver();
+        resolver.setSettings(settings);
+        resolver.setName("maven2");
+        resolver.setM2compatible(true);
+        resolver.setRoot(new File("test/repositories/m2").toURL().toExternalForm());
+        return resolver;
+    }
+}

Propchange: ant/ivy/core/trunk/test/java/org/apache/ivy/plugins/resolver/Maven2LocalTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: ant/ivy/core/trunk/test/java/org/apache/ivy/util/url/ApacheURLListerTest.java
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/java/org/apache/ivy/util/url/ApacheURLListerTest.java?rev=610291&r1=610290&r2=610291&view=diff
==============================================================================
--- ant/ivy/core/trunk/test/java/org/apache/ivy/util/url/ApacheURLListerTest.java (original)
+++ ant/ivy/core/trunk/test/java/org/apache/ivy/util/url/ApacheURLListerTest.java Tue Jan  8 23:40:34 2008
@@ -70,4 +70,33 @@
         assertNotNull(files);
         assertTrue(files.size() > 0);
     }
+
+    public void testRetrieveArchivaListing() throws Exception {
+        ApacheURLLister lister = new ApacheURLLister();
+
+        List d = lister.listDirectories(ApacheURLListerTest.class
+                .getResource("archiva-listing.html"));
+        assertNotNull(d);
+        // archiva listing is not valid html at all currently (1.0, unclosed a tags), 
+        // and we don't want to adapt to this
+//        assertEquals(3, d.size());
+    }
+
+    public void testRetrieveFixedArchivaListing() throws Exception {
+        ApacheURLLister lister = new ApacheURLLister();
+
+        List d = lister.listDirectories(ApacheURLListerTest.class
+                .getResource("fixed-archiva-listing.html"));
+        assertNotNull(d);
+        assertEquals(3, d.size());
+    }
+
+    public void testRetrieveMavenProxyListing() throws Exception {
+        ApacheURLLister lister = new ApacheURLLister();
+
+        List d = lister.listDirectories(ApacheURLListerTest.class
+                .getResource("maven-proxy-listing.html"));
+        assertNotNull(d);
+        assertEquals(3, d.size());
+    }
 }

Added: ant/ivy/core/trunk/test/java/org/apache/ivy/util/url/archiva-listing.html
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/java/org/apache/ivy/util/url/archiva-listing.html?rev=610291&view=auto
==============================================================================
--- ant/ivy/core/trunk/test/java/org/apache/ivy/util/url/archiva-listing.html (added)
+++ ant/ivy/core/trunk/test/java/org/apache/ivy/util/url/archiva-listing.html Tue Jan  8 23:40:34 2008
@@ -0,0 +1,17 @@
+<html>
+<head>
+<title>Collection: /ant/ant/</title>
+</head>
+<body>
+<h2>Collection: /ant/ant/</h2>
+<ul>
+<li><a href="../">ant/</a> <i><small>(Parent)</small></i></li>
+</ul>
+<ul>
+<li><a href="./1.6.2/">1.6.2/</li>
+
+<li><a href="./1.6.5/">1.6.5/</li>
+<li><a href="./1.6/">1.6/</li>
+</ul>
+</body>
+</html>

Propchange: ant/ivy/core/trunk/test/java/org/apache/ivy/util/url/archiva-listing.html
------------------------------------------------------------------------------
    svn:eol-style = native

Added: ant/ivy/core/trunk/test/java/org/apache/ivy/util/url/fixed-archiva-listing.html
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/java/org/apache/ivy/util/url/fixed-archiva-listing.html?rev=610291&view=auto
==============================================================================
--- ant/ivy/core/trunk/test/java/org/apache/ivy/util/url/fixed-archiva-listing.html (added)
+++ ant/ivy/core/trunk/test/java/org/apache/ivy/util/url/fixed-archiva-listing.html Tue Jan  8 23:40:34 2008
@@ -0,0 +1,17 @@
+<html>
+<head>
+<title>Collection: /ant/ant/</title>
+</head>
+<body>
+<h2>Collection: /ant/ant/</h2>
+<ul>
+<li><a href="../">ant/</a> <i><small>(Parent)</small></i></li>
+</ul>
+<ul>
+<li><a href="./1.6.2/">1.6.2/</a></li>
+
+<li><a href="./1.6.5/">1.6.5/</a></li>
+<li><a href="./1.6/">1.6/</a></li>
+</ul>
+</body>
+</html>

Propchange: ant/ivy/core/trunk/test/java/org/apache/ivy/util/url/fixed-archiva-listing.html
------------------------------------------------------------------------------
    svn:eol-style = native

Added: ant/ivy/core/trunk/test/java/org/apache/ivy/util/url/maven-proxy-listing.html
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/java/org/apache/ivy/util/url/maven-proxy-listing.html?rev=610291&view=auto
==============================================================================
--- ant/ivy/core/trunk/test/java/org/apache/ivy/util/url/maven-proxy-listing.html (added)
+++ ant/ivy/core/trunk/test/java/org/apache/ivy/util/url/maven-proxy-listing.html Tue Jan  8 23:40:34 2008
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+  <head>
+    <title>maven-proxy - /ant/ant/</title>
+          <link type="text/css" rel="stylesheet" href="/maven-proxy/style.css"/>       
+        <link rel="shortcut icon" href="../../../images/favicon.png"/>    
+  </head>
+  <body>
+  <table class="page-header">
+  <tr>
+
+    <th class="page-header-left">
+            maven-proxy
+    </th>
+    <th class="page-header-middle"></th>
+    <th class="page-header-right">
+      
+      Unversioned
+    </th>
+  </tr>
+</table>
+
+<div class="top-level-menu">
+
+	<a href="../../../servlets/Config"  accesskey="c"><span class="u">C</span>ONFIG</a>
+	      <a href="../../../servlets/Search"  accesskey="s"><span class="u">S</span>EARCH</a>
+		<a href="../../../repository" class="selected" accesskey="r"><span class="u">R</span>EPOSITORY</a>
+	<a href="../../../servlets/Admin"  accesskey="a"><span class="u">A</span>DMIN</a>
+</div>
+
+
+<h1>Browsing /ant/ant/</h1>
+
+<div class="h1">
+<table width="100%">
+        <colgroup>
+          <col width='20px'>
+          <col width='50px'>
+          <col width='180px'>
+          <col width='*'>
+
+          <col width='*'>
+          <col width='5*'>
+        </colgroup>
+        
+        <tr class="a">
+          <th></th>
+          <th>Size (bytes)</th>
+          <th>Last Modified</th>
+          <th>Name</th>
+
+          <th>Repository</th>
+          <th></th>
+        </tr>
+   
+    
+    
+                        
+                
+	                
+    
+      
+        <tr class="b">
+          <td>
+            <a href="1.6/"><img src="../../../images/folder.png" alt=""/></a>
+          </td>
+          <td style='text-align:right'></td>
+
+          <td></td>
+          <td><a href="1.6/">1.6/</a></td>
+          <td>Super Secret Custom Repository</td>
+          <td></td>
+        </tr>
+                        
+	                
+    
+      
+        <tr class="a">
+          <td>
+            <a href="1.6.2/"><img src="../../../images/folder.png" alt=""/></a>
+
+          </td>
+          <td style='text-align:right'></td>
+          <td></td>
+          <td><a href="1.6.2/">1.6.2/</a></td>
+          <td>Super Secret Custom Repository</td>
+          <td></td>
+        </tr>
+                        
+	                
+    
+      
+        <tr class="b">
+
+          <td>
+            <a href="1.6.5/"><img src="../../../images/folder.png" alt=""/></a>
+          </td>
+          <td style='text-align:right'></td>
+          <td></td>
+          <td><a href="1.6.5/">1.6.5/</a></td>
+          <td>Super Secret Custom Repository</td>
+          <td></td>
+
+        </tr>
+              </table>
+  </div>
+	</body>
+</html>
\ No newline at end of file

Propchange: ant/ivy/core/trunk/test/java/org/apache/ivy/util/url/maven-proxy-listing.html
------------------------------------------------------------------------------
    svn:eol-style = native

Added: ant/ivy/core/trunk/test/repositories/m2/org/apache/test-metadata/1.0/test-metadata-1.0.jar
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/repositories/m2/org/apache/test-metadata/1.0/test-metadata-1.0.jar?rev=610291&view=auto
==============================================================================
Binary file - no diff available.

Propchange: ant/ivy/core/trunk/test/repositories/m2/org/apache/test-metadata/1.0/test-metadata-1.0.jar
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: ant/ivy/core/trunk/test/repositories/m2/org/apache/test-metadata/1.0/test-metadata-1.0.pom
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/repositories/m2/org/apache/test-metadata/1.0/test-metadata-1.0.pom?rev=610291&view=auto
==============================================================================
--- ant/ivy/core/trunk/test/repositories/m2/org/apache/test-metadata/1.0/test-metadata-1.0.pom (added)
+++ ant/ivy/core/trunk/test/repositories/m2/org/apache/test-metadata/1.0/test-metadata-1.0.pom Tue Jan  8 23:40:34 2008
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<!--
+   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.    
+-->
+<project>
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.apache</groupId>
+  <artifactId>test-metadata</artifactId>
+  <name>Test Module for Ivy M2 parsing</name>
+  <version>1.0</version>
+</project>

Propchange: ant/ivy/core/trunk/test/repositories/m2/org/apache/test-metadata/1.0/test-metadata-1.0.pom
------------------------------------------------------------------------------
    svn:eol-style = native

Added: ant/ivy/core/trunk/test/repositories/m2/org/apache/test-metadata/1.1/test-metadata-1.1.jar
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/repositories/m2/org/apache/test-metadata/1.1/test-metadata-1.1.jar?rev=610291&view=auto
==============================================================================
Binary file - no diff available.

Propchange: ant/ivy/core/trunk/test/repositories/m2/org/apache/test-metadata/1.1/test-metadata-1.1.jar
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: ant/ivy/core/trunk/test/repositories/m2/org/apache/test-metadata/1.1/test-metadata-1.1.pom
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/repositories/m2/org/apache/test-metadata/1.1/test-metadata-1.1.pom?rev=610291&view=auto
==============================================================================
--- ant/ivy/core/trunk/test/repositories/m2/org/apache/test-metadata/1.1/test-metadata-1.1.pom (added)
+++ ant/ivy/core/trunk/test/repositories/m2/org/apache/test-metadata/1.1/test-metadata-1.1.pom Tue Jan  8 23:40:34 2008
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<!--
+   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.    
+-->
+<project>
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.apache</groupId>
+  <artifactId>test-metadata</artifactId>
+  <name>Test Module for Ivy M2 parsing</name>
+  <version>1.1</version>
+</project>

Propchange: ant/ivy/core/trunk/test/repositories/m2/org/apache/test-metadata/1.1/test-metadata-1.1.pom
------------------------------------------------------------------------------
    svn:eol-style = native

Added: ant/ivy/core/trunk/test/repositories/m2/org/apache/test-metadata/1.2/test-metadata-1.2.jar
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/repositories/m2/org/apache/test-metadata/1.2/test-metadata-1.2.jar?rev=610291&view=auto
==============================================================================
Binary file - no diff available.

Propchange: ant/ivy/core/trunk/test/repositories/m2/org/apache/test-metadata/1.2/test-metadata-1.2.jar
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: ant/ivy/core/trunk/test/repositories/m2/org/apache/test-metadata/1.2/test-metadata-1.2.pom
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/repositories/m2/org/apache/test-metadata/1.2/test-metadata-1.2.pom?rev=610291&view=auto
==============================================================================
--- ant/ivy/core/trunk/test/repositories/m2/org/apache/test-metadata/1.2/test-metadata-1.2.pom (added)
+++ ant/ivy/core/trunk/test/repositories/m2/org/apache/test-metadata/1.2/test-metadata-1.2.pom Tue Jan  8 23:40:34 2008
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<!--
+   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.    
+-->
+<project>
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.apache</groupId>
+  <artifactId>test-metadata</artifactId>
+  <name>Test Module for Ivy M2 parsing</name>
+  <version>1.2</version>
+</project>

Propchange: ant/ivy/core/trunk/test/repositories/m2/org/apache/test-metadata/1.2/test-metadata-1.2.pom
------------------------------------------------------------------------------
    svn:eol-style = native

Added: ant/ivy/core/trunk/test/repositories/m2/org/apache/test-metadata/maven-metadata.xml
URL: http://svn.apache.org/viewvc/ant/ivy/core/trunk/test/repositories/m2/org/apache/test-metadata/maven-metadata.xml?rev=610291&view=auto
==============================================================================
--- ant/ivy/core/trunk/test/repositories/m2/org/apache/test-metadata/maven-metadata.xml (added)
+++ ant/ivy/core/trunk/test/repositories/m2/org/apache/test-metadata/maven-metadata.xml Tue Jan  8 23:40:34 2008
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?><metadata>
+  <groupId>org.apache</groupId>
+  <artifactId>test-metadata</artifactId>
+  <version>1.1</version>
+  <versioning>
+    <release>1.1</release>
+    <versions>
+      <version>1.0</version>
+      <version>1.1</version>
+    </versions>
+    <lastUpdated>20070310164929</lastUpdated>
+  </versioning>
+</metadata>
\ No newline at end of file

Propchange: ant/ivy/core/trunk/test/repositories/m2/org/apache/test-metadata/maven-metadata.xml
------------------------------------------------------------------------------
    svn:eol-style = native