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 @@ * [EMAIL PROTECTED] 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 "..>" 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