From f2fb641b50d68925995d8196ef62adf35161952a Mon Sep 17 00:00:00 2001 From: Brett Porter Date: Sat, 12 Aug 2006 13:00:14 +0000 Subject: [PATCH] [MRM-138] begin to flesh out proxy tests. Some bugs carried over from previous version already found have been noted. git-svn-id: https://svn.apache.org/repos/asf/maven/repository-manager/trunk@431029 13f79535-47bb-0310-9956-ffa450edef68 --- .../proxy/DefaultProxyRequestHandler.java | 178 ++++++++------- .../proxy/ProxiedArtifactRepository.java | 27 ++- .../proxy/ProxyRequestHandlerTest.java | 212 ++++++++++++------ .../checksumed-md5/repository/file.txt | 1 - .../checksumed-md5/repository/file.txt.md5 | 1 - .../checksumed-sha1/repository/file.txt | 1 - .../checksumed-sha1/repository/file.txt.sha1 | 1 - .../jars/commons-logging-1.0.jar | Bin 21950 -> 0 bytes .../jars/commons-logging-1.0.jar.md5 | 1 - .../poms/commons-logging-1.0.pom | 6 - .../not-standard/repository/file.txt | 1 - .../checksumed-md5/repository/file.txt | 1 - .../checksumed-md5/repository/file.txt.md5 | 1 - .../checksumed-sha1/repository/file.txt | 1 - .../checksumed-sha1/repository/file.txt.sha1 | 1 - .../1.0/commons-logging-1.0.jar | Bin 21950 -> 0 bytes .../1.0/commons-logging-1.0.jar.md5 | 1 - .../1.0/commons-logging-1.0.pom | 6 - .../not-standard/repository/file.txt | 1 - .../1.0/get-default-layout-present-1.0.jar | 3 + .../1.0/get-default-layout-present-1.0.jar | 3 + .../1.0/get-default-layout-1.0.jar | 2 + 22 files changed, 268 insertions(+), 181 deletions(-) delete mode 100644 maven-repository-proxy/src/test/m1-remote-repo/checksumed-md5/repository/file.txt delete mode 100644 maven-repository-proxy/src/test/m1-remote-repo/checksumed-md5/repository/file.txt.md5 delete mode 100644 maven-repository-proxy/src/test/m1-remote-repo/checksumed-sha1/repository/file.txt delete mode 100644 maven-repository-proxy/src/test/m1-remote-repo/checksumed-sha1/repository/file.txt.sha1 delete mode 100644 maven-repository-proxy/src/test/m1-remote-repo/commons-logging/jars/commons-logging-1.0.jar delete mode 100644 maven-repository-proxy/src/test/m1-remote-repo/commons-logging/jars/commons-logging-1.0.jar.md5 delete mode 100644 maven-repository-proxy/src/test/m1-remote-repo/commons-logging/poms/commons-logging-1.0.pom delete mode 100644 maven-repository-proxy/src/test/m1-remote-repo/not-standard/repository/file.txt delete mode 100644 maven-repository-proxy/src/test/remote-repo1/checksumed-md5/repository/file.txt delete mode 100644 maven-repository-proxy/src/test/remote-repo1/checksumed-md5/repository/file.txt.md5 delete mode 100644 maven-repository-proxy/src/test/remote-repo1/checksumed-sha1/repository/file.txt delete mode 100644 maven-repository-proxy/src/test/remote-repo1/checksumed-sha1/repository/file.txt.sha1 delete mode 100644 maven-repository-proxy/src/test/remote-repo1/commons-logging/commons-logging/1.0/commons-logging-1.0.jar delete mode 100644 maven-repository-proxy/src/test/remote-repo1/commons-logging/commons-logging/1.0/commons-logging-1.0.jar.md5 delete mode 100644 maven-repository-proxy/src/test/remote-repo1/commons-logging/commons-logging/1.0/commons-logging-1.0.pom delete mode 100644 maven-repository-proxy/src/test/remote-repo1/not-standard/repository/file.txt create mode 100644 maven-repository-proxy/src/test/repositories/managed/org/apache/maven/test/get-default-layout-present/1.0/get-default-layout-present-1.0.jar create mode 100644 maven-repository-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-default-layout-present/1.0/get-default-layout-present-1.0.jar create mode 100644 maven-repository-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-default-layout/1.0/get-default-layout-1.0.jar diff --git a/maven-repository-proxy/src/main/java/org/apache/maven/repository/proxy/DefaultProxyRequestHandler.java b/maven-repository-proxy/src/main/java/org/apache/maven/repository/proxy/DefaultProxyRequestHandler.java index 64b83ba4c..3f4dc43db 100644 --- a/maven-repository-proxy/src/main/java/org/apache/maven/repository/proxy/DefaultProxyRequestHandler.java +++ b/maven-repository-proxy/src/main/java/org/apache/maven/repository/proxy/DefaultProxyRequestHandler.java @@ -81,6 +81,7 @@ public class DefaultProxyRequestHandler public File get( String path, List proxiedRepositories, ArtifactRepository managedRepository, ProxyInfo wagonProxy ) throws ProxyException, ResourceDoesNotExistException { + // TODO! this will prove wrong for metadata and snapshots, let tests bring it out //@todo use wagonManager for cache use file:// as URL File cachedFile = new File( managedRepository.getBasedir(), path ); if ( !cachedFile.exists() ) @@ -101,7 +102,7 @@ public class DefaultProxyRequestHandler ProxyInfo wagonProxy ) throws ProxyException, ResourceDoesNotExistException { - File remoteFile = null; + File target = new File( managedRepository.getBasedir(), path ); for ( Iterator i = proxiedRepositories.iterator(); i.hasNext(); ) { @@ -115,13 +116,15 @@ public class DefaultProxyRequestHandler { if ( path.endsWith( ".md5" ) || path.endsWith( ".sha1" ) ) { - // always read from the managed repository - remoteFile = new File( managedRepository.getBasedir(), path ); + // always read from the managed repository, no need to make remote request } else if ( path.endsWith( "maven-metadata.xml" ) ) { - remoteFile = getFromRepository( path, repository, managedRepository.getBasedir(), wagonProxy, - repository.getRepository().getReleases() ); + // TODO: this is not always! + if ( !target.exists() || isOutOfDate( repository.getRepository().getReleases(), target ) ) + { + getFileFromRepository( path, repository, managedRepository.getBasedir(), wagonProxy, target ); + } } else { @@ -151,22 +154,23 @@ public class DefaultProxyRequestHandler if ( artifact != null ) { - getArtifact( artifact, repository, managedRepository, wagonProxy ); - - remoteFile = artifact.getFile(); + getArtifactFromRepository( artifact, repository, managedRepository, wagonProxy, target ); } else { // Some other unknown file in the repository, proxy as is - getFromRepository( path, repository, managedRepository.getBasedir(), wagonProxy, null ); + // TODO: this is not always! + if ( !target.exists() ) + { + getFileFromRepository( path, repository, managedRepository.getBasedir(), wagonProxy, + target ); + } } } - if ( remoteFile != null && !remoteFile.exists() ) + if ( !target.exists() ) { repository.addFailure( path ); - throw new ResourceDoesNotExistException( - "Could not find " + path + " in any of the repositories." ); } else { @@ -176,99 +180,99 @@ public class DefaultProxyRequestHandler } } - return remoteFile; + if ( !target.exists() ) + { + throw new ResourceDoesNotExistException( "Could not find " + path + " in any of the repositories." ); + } + + return target; } - private File getFromRepository( String path, ProxiedArtifactRepository repository, String repositoryCachePath, - ProxyInfo httpProxy, ArtifactRepositoryPolicy policy ) + private void getFileFromRepository( String path, ProxiedArtifactRepository repository, String repositoryCachePath, + ProxyInfo httpProxy, File target ) throws ProxyException, ResourceDoesNotExistException { - File target = new File( repositoryCachePath, path ); - if ( !target.exists() || isOutOfDate( policy, target ) ) - { - boolean connected = false; - Map checksums = null; - Wagon wagon = null; + boolean connected = false; + Map checksums = null; + Wagon wagon = null; - try + try + { + String protocol = repository.getRepository().getProtocol(); + wagon = (Wagon) wagons.get( protocol ); + if ( wagon == null ) { - String protocol = repository.getRepository().getProtocol(); - wagon = (Wagon) wagons.get( protocol ); - if ( wagon == null ) - { - throw new ProxyException( "Unsupported remote protocol: " + protocol ); - } - - //@todo configure wagon (ssh settings, etc) - - checksums = prepareChecksumListeners( wagon ); + throw new ProxyException( "Unsupported remote protocol: " + protocol ); + } - connected = connectToRepository( wagon, repository, httpProxy ); - if ( connected ) - { - File temp = new File( target.getAbsolutePath() + ".tmp" ); - temp.deleteOnExit(); + //@todo configure wagon (ssh settings, etc) - int tries = 0; - boolean success; + checksums = prepareChecksumListeners( wagon ); - do - { - tries++; + connected = connectToRepository( wagon, repository, httpProxy ); + if ( connected ) + { + File temp = new File( target.getAbsolutePath() + ".tmp" ); + temp.deleteOnExit(); - getLogger().info( "Trying " + path + " from " + repository.getName() + "..." ); + int tries = 0; + boolean success; - if ( !target.exists() ) - { - wagon.get( path, temp ); - } - else - { - wagon.getIfNewer( path, temp, target.lastModified() ); - } + do + { + tries++; - success = doChecksumCheck( checksums, path, wagon, repositoryCachePath ); + getLogger().info( "Trying " + path + " from " + repository.getName() + "..." ); - if ( tries > 1 && !success ) - { - throw new ProxyException( "Checksum failures occurred while downloading " + path ); - } + if ( !target.exists() ) + { + wagon.get( path, temp ); + } + else + { + wagon.getIfNewer( path, temp, target.lastModified() ); } - while ( !success ); - disconnectWagon( wagon ); + success = doChecksumCheck( checksums, path, wagon, repositoryCachePath ); - if ( temp.exists() ) + if ( tries > 1 && !success ) { - moveTempToTarget( temp, target ); + throw new ProxyException( "Checksum failures occurred while downloading " + path ); } } - //try next repository - } - catch ( TransferFailedException e ) - { - String message = "Skipping repository " + repository.getName() + ": " + e.getMessage(); - processRepositoryFailure( repository, message, e ); + while ( !success ); + + disconnectWagon( wagon ); + + if ( temp.exists() ) + { + moveTempToTarget( temp, target ); + } } - catch ( AuthorizationException e ) + //try next repository + } + catch ( TransferFailedException e ) + { + String message = "Skipping repository " + repository.getName() + ": " + e.getMessage(); + processRepositoryFailure( repository, message, e ); + } + catch ( AuthorizationException e ) + { + String message = "Skipping repository " + repository.getName() + ": " + e.getMessage(); + processRepositoryFailure( repository, message, e ); + } + finally + { + if ( wagon != null && checksums != null ) { - String message = "Skipping repository " + repository.getName() + ": " + e.getMessage(); - processRepositoryFailure( repository, message, e ); + releaseChecksumListeners( wagon, checksums ); } - finally - { - if ( wagon != null && checksums != null ) - { - releaseChecksumListeners( wagon, checksums ); - } - if ( connected ) - { - disconnectWagon( wagon ); - } + if ( connected ) + { + disconnectWagon( wagon ); } } - return target; } private static boolean isOutOfDate( ArtifactRepositoryPolicy policy, File target ) @@ -480,8 +484,8 @@ public class DefaultProxyRequestHandler } } - private void getArtifact( Artifact artifact, ProxiedArtifactRepository repository, ArtifactRepository repoCache, - ProxyInfo httpProxy ) + private void getArtifactFromRepository( Artifact artifact, ProxiedArtifactRepository repository, + ArtifactRepository managedRepository, ProxyInfo httpProxy, File remoteFile ) throws ProxyException, ResourceDoesNotExistException { ArtifactRepository artifactRepository = repository.getRepository(); @@ -495,9 +499,13 @@ public class DefaultProxyRequestHandler else { getLogger().debug( "Trying repository " + repository.getName() ); - // Don't use releases policy, we don't want to perform updates on them (only metadata, as used above) - getFromRepository( artifactRepository.pathOf( artifact ), repository, repoCache.getBasedir(), httpProxy, - artifact.isSnapshot() ? artifactRepository.getSnapshots() : null ); + // Don't use releases policy, we don't want to perform updates on them (only metadata, as used earlier) + // TODO: this is not always! + if ( !remoteFile.exists() || isOutOfDate( policy, remoteFile ) ) + { + getFileFromRepository( artifactRepository.pathOf( artifact ), repository, + managedRepository.getBasedir(), httpProxy, remoteFile ); + } getLogger().debug( " Artifact resolved" ); artifact.setResolved( true ); diff --git a/maven-repository-proxy/src/main/java/org/apache/maven/repository/proxy/ProxiedArtifactRepository.java b/maven-repository-proxy/src/main/java/org/apache/maven/repository/proxy/ProxiedArtifactRepository.java index e3980adc4..a6aa1f51c 100644 --- a/maven-repository-proxy/src/main/java/org/apache/maven/repository/proxy/ProxiedArtifactRepository.java +++ b/maven-repository-proxy/src/main/java/org/apache/maven/repository/proxy/ProxiedArtifactRepository.java @@ -47,7 +47,7 @@ public class ProxiedArtifactRepository /** * The artifact repository on the other end of the proxy. */ - private ArtifactRepository repository; + private final ArtifactRepository repository; /** * Cache of failures that have already occurred, containing paths from the repository root. @@ -59,6 +59,11 @@ public class ProxiedArtifactRepository */ private String name; + public ProxiedArtifactRepository( ArtifactRepository repository ) + { + this.repository = repository; + } + public boolean isHardFail() { return hardFail; @@ -104,4 +109,24 @@ public class ProxiedArtifactRepository { return name; } + + public void setCacheFailures( boolean cacheFailures ) + { + this.cacheFailures = cacheFailures; + } + + public void setHardFail( boolean hardFail ) + { + this.hardFail = hardFail; + } + + public void setUseNetworkProxy( boolean useNetworkProxy ) + { + this.useNetworkProxy = useNetworkProxy; + } + + public void setName( String name ) + { + this.name = name; + } } diff --git a/maven-repository-proxy/src/test/java/org/apache/maven/repository/proxy/ProxyRequestHandlerTest.java b/maven-repository-proxy/src/test/java/org/apache/maven/repository/proxy/ProxyRequestHandlerTest.java index e9b39d846..9e7aa5388 100644 --- a/maven-repository-proxy/src/test/java/org/apache/maven/repository/proxy/ProxyRequestHandlerTest.java +++ b/maven-repository-proxy/src/test/java/org/apache/maven/repository/proxy/ProxyRequestHandlerTest.java @@ -16,113 +16,183 @@ package org.apache.maven.repository.proxy; * limitations under the License. */ +import org.apache.maven.artifact.repository.ArtifactRepository; +import org.apache.maven.artifact.repository.ArtifactRepositoryFactory; +import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout; import org.apache.maven.wagon.ResourceDoesNotExistException; import org.codehaus.plexus.PlexusTestCase; +import org.codehaus.plexus.util.FileUtils; import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; /** - * @author Edwin Punzalan + * @author Brett Porter + * @todo! tests to do vvv + * @todo test when >1 repo has the artifact + * @todo test when >1 repo has the artifact but one fails + * @todo test hard failure on repo1 + * @todo test when failure is cached + * @todo test when failure should be cached but caching is disabled + * @todo test snapshots - general + * @todo test snapshots - newer version on repo2 is pulled down + * @todo test snapshots - older version on repo2 is skipped + * @todo test snapshots - update interval + * @todo test metadata - general + * @todo test metadata - multiple repos are merged + * @todo test metadata - update interval + * @todo test when managed repo is m1 layout (proxy is m2), including metadata + * @todo test when one proxied repo is m1 layout (managed is m2), including metadata + * @todo test when one proxied repo is m1 layout (managed is m1), including metadata + * @todo test get always */ public class ProxyRequestHandlerTest extends PlexusTestCase { private ProxyRequestHandler requestHandler; - public void testdummy(){} + private List proxiedRepositories; + + private ArtifactRepository defaultManagedRepository; + + private ArtifactRepository proxiedRepository1; + + private ArtifactRepository proxiedRepository2; -/* TODO! protected void setUp() throws Exception { super.setUp(); - requestHandler = (ProxyRequestHandler) container.lookup( ProxyRequestHandler.ROLE ); - } + requestHandler = (ProxyRequestHandler) lookup( ProxyRequestHandler.ROLE ); - public void testArtifactDownload() - throws Exception - { - //test download - String s = "/commons-logging/commons-logging/1.0/commons-logging-1.0.jar"; - File file = get( s ); - assertTrue( "File must be downloaded.", file.exists() ); - assertTrue( "Downloaded file should be present in the cache.", - file.getAbsolutePath().startsWith( managedRepository.getBasedir() ) ); + File repoLocation = getTestFile( "target/test-repository/managed" ); + FileUtils.deleteDirectory( repoLocation ); + copyDirectoryStructure( getTestFile( "src/test/repositories/managed" ), repoLocation ); - //test cache - get( "/commons-logging/commons-logging/1.0/commons-logging-1.0.jar" ); + ArtifactRepositoryFactory factory = (ArtifactRepositoryFactory) lookup( ArtifactRepositoryFactory.ROLE ); + ArtifactRepositoryLayout defaultLayout = + (ArtifactRepositoryLayout) lookup( ArtifactRepositoryLayout.ROLE, "default" ); + defaultManagedRepository = factory.createArtifactRepository( "managed-repository", + repoLocation.toURI().toURL().toExternalForm(), + defaultLayout, null, null ); - try - { - get( "/commons-logging/commons-logging/2.0/commons-logging-2.0.jar" ); - fail( "Expected ResourceDoesNotExistException exception not thrown" ); - } - catch ( ResourceDoesNotExistException e ) - { - assertTrue( true ); - } - } + File location = getTestFile( "src/test/repositories/proxied1" ); + proxiedRepository1 = factory.createArtifactRepository( "proxied1", location.toURI().toURL().toExternalForm(), + defaultLayout, null, null ); - private File get( String s ) - throws ProxyException, ResourceDoesNotExistException - { - return requestHandler.get( s, proxiedRepositories, managedRepository ); - } + location = getTestFile( "src/test/repositories/proxied2" ); + proxiedRepository2 = factory.createArtifactRepository( "proxied2", location.toURI().toURL().toExternalForm(), + defaultLayout, null, null ); - public void testArtifactChecksum() - throws Exception - { - //force the downlod from the remote repository, use getAlways() - File file = requestHandler.getAlways( "/commons-logging/commons-logging/1.0/commons-logging-1.0.jar.md5" ); - assertTrue( "File must be downloaded.", file.exists() ); - assertTrue( "Downloaded file should be present in the cache.", - file.getAbsolutePath().startsWith( managedRepository.getBasedir() ) ); + proxiedRepositories = new ArrayList( 2 ); + proxiedRepositories.add( createProxiedRepository( proxiedRepository1 ) ); + proxiedRepositories.add( createProxiedRepository( proxiedRepository2 ) ); } - public void testNonArtifactWithNoChecksum() - throws Exception + public void testGetDefaultLayoutNotPresent() + throws ResourceDoesNotExistException, ProxyException, IOException { - File file = get( "/not-standard/repository/file.txt" ); - assertTrue( "File must be downloaded.", file.exists() ); - assertTrue( "Downloaded file should be present in the cache.", - file.getAbsolutePath().startsWith( managedRepository.getBasedir() ) ); - } + String path = "org/apache/maven/test/get-default-layout/1.0/get-default-layout-1.0.jar"; + File expectedFile = new File( defaultManagedRepository.getBasedir(), path ); - public void testNonArtifactWithMD5Checksum() - throws Exception - { - File file = get( "/checksumed-md5/repository/file.txt" ); - assertTrue( "File must be downloaded.", file.exists() ); - assertTrue( "Downloaded file should be present in the cache.", - file.getAbsolutePath().startsWith( managedRepository.getBasedir() ) ); + assertFalse( expectedFile.exists() ); + + File file = requestHandler.get( path, proxiedRepositories, defaultManagedRepository ); + + assertEquals( "Check file matches", expectedFile, file ); + assertTrue( "Check file created", file.exists() ); + File proxiedFile = new File( proxiedRepository1.getBasedir(), path ); + String expectedContents = FileUtils.fileRead( proxiedFile ); + assertEquals( "Check file contents", expectedContents, FileUtils.fileRead( file ) ); + // TODO: timestamp preservation requires support for that in wagon +// assertEquals( "Check file timestamp", proxiedFile.lastModified(), file.lastModified() ); } - public void testNonArtifactWithSHA1Checksum() - throws Exception + public void testGetDefaultLayoutAlreadyPresent() + throws ResourceDoesNotExistException, ProxyException, IOException { - File file = get( "/checksumed-sha1/repository/file.txt" ); - assertTrue( "File must be downloaded.", file.exists() ); - assertTrue( "Downloaded file should be present in the cache.", - file.getAbsolutePath().startsWith( managedRepository.getBasedir() ) ); + String path = "org/apache/maven/test/get-default-layout-present/1.0/get-default-layout-present-1.0.jar"; + File expectedFile = new File( defaultManagedRepository.getBasedir(), path ); + String expectedContents = FileUtils.fileRead( expectedFile ); + long originalModificationTime = expectedFile.lastModified(); + + assertTrue( expectedFile.exists() ); + + File file = requestHandler.get( path, proxiedRepositories, defaultManagedRepository ); + + assertEquals( "Check file matches", expectedFile, file ); + assertTrue( "Check file created", file.exists() ); + assertEquals( "Check file contents", expectedContents, FileUtils.fileRead( file ) ); + File proxiedFile = new File( proxiedRepository1.getBasedir(), path ); + String unexpectedContents = FileUtils.fileRead( proxiedFile ); + assertFalse( "Check file contents", unexpectedContents.equals( FileUtils.fileRead( file ) ) ); + assertFalse( "Check file timestamp is not that of proxy", proxiedFile.lastModified() == file.lastModified() ); + assertEquals( "Check file timestamp is that of original managed file", originalModificationTime, + file.lastModified() ); } - private ProxyConfiguration getProxyConfiguration() - throws ComponentLookupException + /** + * A faster recursive copy that omits .svn directories. + * + * @param sourceDirectory the source directory to copy + * @param destDirectory the target location + * @throws java.io.IOException if there is a copying problemt + */ + private static void copyDirectoryStructure( File sourceDirectory, File destDirectory ) + throws IOException { - ProxyConfiguration config = new ProxyConfiguration(); - - config.setRepositoryCachePath( "target/requestHandler-cache" ); - - ArtifactRepositoryLayout defLayout = new DefaultRepositoryLayout(); + if ( !sourceDirectory.exists() ) + { + throw new IOException( "Source directory doesn't exists (" + sourceDirectory.getAbsolutePath() + ")." ); + } - File repo1File = getTestFile( "src/test/remote-repo1" ); + File[] files = sourceDirectory.listFiles(); - ProxyRepository repo1 = new ProxyRepository( "test-repo", "file://" + repo1File.getAbsolutePath(), defLayout ); + String sourcePath = sourceDirectory.getAbsolutePath(); - config.addRepository( repo1 ); + for ( int i = 0; i < files.length; i++ ) + { + File file = files[i]; + + String dest = file.getAbsolutePath(); + + dest = dest.substring( sourcePath.length() + 1 ); + + File destination = new File( destDirectory, dest ); + + if ( file.isFile() ) + { + destination = destination.getParentFile(); + + FileUtils.copyFileToDirectory( file, destination ); + } + else if ( file.isDirectory() ) + { + if ( !".svn".equals( file.getName() ) ) + { + if ( !destination.exists() && !destination.mkdirs() ) + { + throw new IOException( + "Could not create destination directory '" + destination.getAbsolutePath() + "'." ); + } + + copyDirectoryStructure( file, destination ); + } + } + else + { + throw new IOException( "Unknown file type: " + file.getAbsolutePath() ); + } + } + } - return config; + private static ProxiedArtifactRepository createProxiedRepository( ArtifactRepository repository ) + { + ProxiedArtifactRepository proxiedArtifactRepository = new ProxiedArtifactRepository( repository ); + proxiedArtifactRepository.setName( repository.getId() ); + return proxiedArtifactRepository; } -*/ } diff --git a/maven-repository-proxy/src/test/m1-remote-repo/checksumed-md5/repository/file.txt b/maven-repository-proxy/src/test/m1-remote-repo/checksumed-md5/repository/file.txt deleted file mode 100644 index 08657d777..000000000 --- a/maven-repository-proxy/src/test/m1-remote-repo/checksumed-md5/repository/file.txt +++ /dev/null @@ -1 +0,0 @@ -test file only \ No newline at end of file diff --git a/maven-repository-proxy/src/test/m1-remote-repo/checksumed-md5/repository/file.txt.md5 b/maven-repository-proxy/src/test/m1-remote-repo/checksumed-md5/repository/file.txt.md5 deleted file mode 100644 index 3839dd62f..000000000 --- a/maven-repository-proxy/src/test/m1-remote-repo/checksumed-md5/repository/file.txt.md5 +++ /dev/null @@ -1 +0,0 @@ -a473f827aa9d5df4e84c802e054c50f7 \ No newline at end of file diff --git a/maven-repository-proxy/src/test/m1-remote-repo/checksumed-sha1/repository/file.txt b/maven-repository-proxy/src/test/m1-remote-repo/checksumed-sha1/repository/file.txt deleted file mode 100644 index 08657d777..000000000 --- a/maven-repository-proxy/src/test/m1-remote-repo/checksumed-sha1/repository/file.txt +++ /dev/null @@ -1 +0,0 @@ -test file only \ No newline at end of file diff --git a/maven-repository-proxy/src/test/m1-remote-repo/checksumed-sha1/repository/file.txt.sha1 b/maven-repository-proxy/src/test/m1-remote-repo/checksumed-sha1/repository/file.txt.sha1 deleted file mode 100644 index d12e1a485..000000000 --- a/maven-repository-proxy/src/test/m1-remote-repo/checksumed-sha1/repository/file.txt.sha1 +++ /dev/null @@ -1 +0,0 @@ -afb037c2bd96fe1ef1cfd220e82682d088d60d3e \ No newline at end of file diff --git a/maven-repository-proxy/src/test/m1-remote-repo/commons-logging/jars/commons-logging-1.0.jar b/maven-repository-proxy/src/test/m1-remote-repo/commons-logging/jars/commons-logging-1.0.jar deleted file mode 100644 index 33232cd09012c72277a4c0f56f74cb53c9b747c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21950 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 V7?ab-!=uG~a)|NpD7CQP{spbyy{`ZO diff --git a/maven-repository-proxy/src/test/m1-remote-repo/commons-logging/jars/commons-logging-1.0.jar.md5 b/maven-repository-proxy/src/test/m1-remote-repo/commons-logging/jars/commons-logging-1.0.jar.md5 deleted file mode 100644 index 7c997d231..000000000 --- a/maven-repository-proxy/src/test/m1-remote-repo/commons-logging/jars/commons-logging-1.0.jar.md5 +++ /dev/null @@ -1 +0,0 @@ -240b26992977c9ad119efb91cb21f8f8 \ No newline at end of file diff --git a/maven-repository-proxy/src/test/m1-remote-repo/commons-logging/poms/commons-logging-1.0.pom b/maven-repository-proxy/src/test/m1-remote-repo/commons-logging/poms/commons-logging-1.0.pom deleted file mode 100644 index 402a9df37..000000000 --- a/maven-repository-proxy/src/test/m1-remote-repo/commons-logging/poms/commons-logging-1.0.pom +++ /dev/null @@ -1,6 +0,0 @@ - - 4.0.0 - commons-logging - commons-logging - 1.0 - diff --git a/maven-repository-proxy/src/test/m1-remote-repo/not-standard/repository/file.txt b/maven-repository-proxy/src/test/m1-remote-repo/not-standard/repository/file.txt deleted file mode 100644 index 08657d777..000000000 --- a/maven-repository-proxy/src/test/m1-remote-repo/not-standard/repository/file.txt +++ /dev/null @@ -1 +0,0 @@ -test file only \ No newline at end of file diff --git a/maven-repository-proxy/src/test/remote-repo1/checksumed-md5/repository/file.txt b/maven-repository-proxy/src/test/remote-repo1/checksumed-md5/repository/file.txt deleted file mode 100644 index 08657d777..000000000 --- a/maven-repository-proxy/src/test/remote-repo1/checksumed-md5/repository/file.txt +++ /dev/null @@ -1 +0,0 @@ -test file only \ No newline at end of file diff --git a/maven-repository-proxy/src/test/remote-repo1/checksumed-md5/repository/file.txt.md5 b/maven-repository-proxy/src/test/remote-repo1/checksumed-md5/repository/file.txt.md5 deleted file mode 100644 index 3839dd62f..000000000 --- a/maven-repository-proxy/src/test/remote-repo1/checksumed-md5/repository/file.txt.md5 +++ /dev/null @@ -1 +0,0 @@ -a473f827aa9d5df4e84c802e054c50f7 \ No newline at end of file diff --git a/maven-repository-proxy/src/test/remote-repo1/checksumed-sha1/repository/file.txt b/maven-repository-proxy/src/test/remote-repo1/checksumed-sha1/repository/file.txt deleted file mode 100644 index 08657d777..000000000 --- a/maven-repository-proxy/src/test/remote-repo1/checksumed-sha1/repository/file.txt +++ /dev/null @@ -1 +0,0 @@ -test file only \ No newline at end of file diff --git a/maven-repository-proxy/src/test/remote-repo1/checksumed-sha1/repository/file.txt.sha1 b/maven-repository-proxy/src/test/remote-repo1/checksumed-sha1/repository/file.txt.sha1 deleted file mode 100644 index d12e1a485..000000000 --- a/maven-repository-proxy/src/test/remote-repo1/checksumed-sha1/repository/file.txt.sha1 +++ /dev/null @@ -1 +0,0 @@ -afb037c2bd96fe1ef1cfd220e82682d088d60d3e \ No newline at end of file diff --git a/maven-repository-proxy/src/test/remote-repo1/commons-logging/commons-logging/1.0/commons-logging-1.0.jar b/maven-repository-proxy/src/test/remote-repo1/commons-logging/commons-logging/1.0/commons-logging-1.0.jar deleted file mode 100644 index 33232cd09012c72277a4c0f56f74cb53c9b747c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21950 zcma&N1C%UXlP=u0?LKXrr)}G|ZQHhO+wRl0ZQFMDJ@3q{`Dea$|G86HnYAl3VpYb@ zsKB!$F8rG=IFX~bnj=;Z#Ap#VVq-Tsvf<-d|i^UH{f z2rDYlN{d9taKiP|BM5os_M_JYlT!l8FNcgg7wE+8%=> z5ycpAR2iCBG&NE+`$Ej)OkqN?W>_}R`}O8MX+bTRdCE{IDqQ*Tj9l`YbO}OfVRx(R zZ8;=yDlLNdD5xPcS3(5zS>+;&FkV$xD~>Qes>L1J&b-`?eBrNkHco?dQ9J?3NrFRU zbgbLO|GnYYzxzKT{k!C_{~|fa->bF`rvE1N|D6K*KPdF=^bO67{|7?k|4wLVYi(_7 z|~;Qr;evH$N3R<@?5<~INJmj0FT*Z<6DZf$4vU!LN>ip=`I;FhvAWtI@scQQ7$ zb#VXth1SqY-_bESMOq148D-?BmKY|;|5o0@+Hxp^5}ySSN?Ef?;TH`HEDHJR`)?RQ zjEu=$BR`j7PVKeqYbR4Syk;f;!jmRW&lu>fcBixX>Q1~HZ_IgSE+8ZOok`D^@9m!+ z*PX7<@7GlDvVJPH=wIQHShVIC(YuV>F>=7u0hCOK5;i5q-N>oS z57{cj31`3&3(aX&ZP6Y?lx1@yc1U1+^(pVOqPuDo>278FMyHp^1rI0MFcBe0X?0q(x$&Vju-z_O#ia9m$(eC6CmQ z_?whvlTH`@X};$!y&2%C%kO?;$X$RH%4QZVd*)@ZZ`=a13X=x9`3(?v+`N`{N8qLG zeN(e+?aZ?L=N#feHyDBj(lzX|;=&~mXfhIUk$sXb>ai)aQup9PSCG$oKYW@!s$CZV zT_Iqbls|>SZc3yBw=zzkw~`Q&wZqf7dDZzYu<^9@F&$)&VK}<^r%Ol{hVkoRicX^F zWq11tLFS0LB{>RmyaeZ^3F|7iJ0eG=ARS|xvtU=MPo{%EUg%5QA1Ys<@;8_2&bFXS z9STpWgFhDNOWmkS7ZOXl$WNKvl|0(~&fN-6t%JRtk>?AjN-I>#zOsw>&s80@0q0=F z=g#}Kmj(YZ1{d;fGhO;ZRT53E@Fn^#)K+>?mBUr8_zo=dy;f)08U^fCofgFxKdvpj z>m+Q|c>Wy<=s79PCdBq)Fy)ZwW~e4P(XM6uNl&Fl&#rI9DIZ|0wGwL-u4G zVP4Zu9~=Go$8AvCCVuYz^$H8H|L!*a-4p(+4Q2k{*-#OEL#Mw6RQ#_&{tpYP3h9M% zg!6A+j<6FQENkW!4VE)xVcV2%qPSXlV_l_M zC4c>~4oMCTg&;|zuEl~|LsB!@L#cXwdASkqb$il?341x{`#JR{>}yiUs74PF=FL#58-2)9ia=>sp9oA&8W+@3W2 zH$~_VQvJ{KJ`K*(F7N$OuT9rgA17Yd#jq#gnKvEJpP#N*1pM|p1_H8Kx99VYAxX3x zd^P@C(B*RM#q~NY^Ga*Rf_$+J^Po*(4`P!tM8jgN7)uc08fxBJ`?viE6=r0ptc|5; ze~tiEme>3Bw)`Q8A+(t`M5q;7Wy7nG4%RA$jmx+(7IJ2H{qCtGq-bzhZi%!*IpT`u zkmfx3i(k7J5~fNw=Q;)BEt&M(d7>K@OEN60HA`SmF>s_c#x>Sfg4TStjgW8qr%LM5 z`7L1!!ul*|$SmnyI!xRbvURfti}%2QZ>oyIwUA1 z$V-d34C^dJD8xz{=xb$+6J?AW|GXOj3n7fj1f)kZ@FRkvm>|-RP^lnmggu}y((oaK zn?l@1G-x^m42bAw11;Q&v0%rxd7Ln>2;i2Y@^Ns_PhmK_x}#c=Dp;q~R%0Rho9++f zRrc5|v^ryOCtkD=n*-0FvsbWR#rTwU?BzMCV#3sRyy0f67p+FymMynFt(y)u_Qkpc zBP&G2V(I-kD~9&<1I;7m9ZC^?Xby_>qf^#SNwTzjw5X{<_zTU(2{xL-9gXc(xoZKv07^}(|!o8F(X4%YQR#8e7{qhS26$IG1Vb|^ulOl;&)r1F9 zY5yRt{mGlm)zV?`x|W2BEX0=bL->)lqbveFn2VdseynOM`+-Wt9xE_Ps5Of{$Nq>^ zP*c^k>L?%BZQ`}&7V%U%(DWy60^)Tg5Qok+*bTZeC&d+-{EJjV*B$6ToxU4a|upA93F zqRgu{RfEYmY1Aj}!G*P$5)`B^Zy~b+0S%hFOA5AWM~X-a7sq@`DxbYzE@*81M;lWbskwyWwI-1*r(!F!D66ZPx(zL{O zf&Gapq|hcop6LmnO{jzFwMU3EDo&u#j5&2FpWEU{W77i+rwx~d-OF@HQ&V`38riBC zDtQ(|=6xPbJ2F|ssc>z(V|#CZ-M=~%E0970vs#46cS3hNZd*% zPzNhARO%GEc7B%+FlmC?lTq4!L0l^`6z=KLSscd}SxSaGpC??-;5bfiV{9sF0V8y< zPOR)K)(h&e`n+J*V{^BJ5s`OEdI2Rv<|ruRr#5m|wNg1&<7j)LR)jlMtT~#ENHHh! zP%?XrIglgzTa-fk3wvRPL|RcU>p4(euQO^$r49Td-snlddg(%b ziu923Dk7LweJHy#+G>hJ*Q`M;MI|Qls<|t14b!xv-CQU;kFJejP6@Dm38zS<{yHt+ zSq*mfzHGZ(IQn`IyTeH7HC+QEQrva2P6ug;bI^8#P4+X-xI8;sBS`bQ0(sw>q~s0l z;tSVB+kru2*_V!>y(##}7BXhw2@wn$id%=9hP5HrGRc7-WUMjCh=`5<=ev(}R6&(B;; zAEnkGYUfuDRzW z=yRR@+BI_YT< zOs9OJ>f68*>wt~L^58z|Vc_epwX5veXpJR?=F#K_-AK*ttt6*SV=%d5?{>hC5U3^; zje!b1-Q%Ys6Sj+Hxs2{#i8tM#K;71jxW+rIm{OL&nCOYS6KVFmNxRt+C|r>(~Q9$5-3I5$u=uBY;+ zkXmwTj*QS=`e?=TEcD=;Q@5hK<)ZRP>V5zcIS_uHmP`vs#pI;Zr`72L>WUz7gO%pe zjard5G|{wJAC4MUc-|&uH9%6-4WVOv0qyF+QLQ6FV*u+7qH8oKuEzDn?$0E9dUvOm z)H~O+^%<1#ncU`j#@zmlfb6T39z{CN>}TERZ=na@W1v!AWroaF6>tSuxTu6H6bnjS z$t+cdRH~}Lnl&Jt08joSZ79cgK%X<*xIm_dB|Qj3$OTtwWQVLal-b>RuyGoF?8 zZY@qK{$~(S)A;P9dH))n8>tKjpfUC)ph7(q>u?SRWq}&pOq7IwVykwl{rA$;@0KHF zR+CCqSQDPy^xPOP4rG!hJ&aukOY6w?O&7c3g}%!^EEfwO1r>OQsphkFz&^uvA-{8V zJ77N}t)}TgD(pn>0TJuWk^(CclBO$xSXvvNccx0-=;k6Imm7>dzg^b{@AGPYK{s5nO+SS@H~qJ&MMsu z@ALR3+d^7uX8l>yI`)X$(p%z$RM7{LbWPuzIAgJWO}Wc0@`1Nz2{@45l@H9c1qZ8(^PC*dCp}Ho&m$x9Wg-ICY>dp{h%& z5kl4uPHw_PpJ!1M)XbZ2hM0FYE4{F1+495dK;%3%!70+bqqiPfXo3|zm0_}zBr$GF zQ1hP{V0ul#Y-9O+vGxjOfp*|-i$`V)WO>=|e8mfW|25F3fvc~lS?S+&H_FT8qM_U0 z$XBQb&x2ofhym(x@#V?aEp=w#ql5f8hSYyTyADaWb>gS&4@tULvum>1&(=--1Kze2 zUj$EiL?w+o8gln!b;7p&ODDI@A)iECU zgY{TLSE4M5@`(a>@7W29lBo)7y<%nsvKj$u`rI{VQ2)7!%m(7%-+GrRqSh zk8}w^CW|{X<|FIJEAHWJCx-NmK4Et(#Uo(Fso>)5NDP~mO+(dW^MnN0@#@fe^w}$- zsWPeLZ3+Lrwm32CEqeWmX+K>Zdiqop_=-)`DN{E~fbW-D(+5Fls@GFX%tHMm_#-QYaVz01T}EDc7L+U*sAxwz78r3DZO;O4}~bV~pUpS^^h) zo~?4yvu-a-^9}j~V+8(aC?AKc= zD`VHe-x>1y`23vUlYM`koY0Z?bC;>oZ#wL@0K4L>63F>XBBgK>$W`62LQZlWT>1U! z8cEnSLudt>%d3W9io|;{Un~k3YnGWd(oR8IeQJZyUN7}wv-8Fq;S%2p3nh>gNFDkb z<=!9hjt%_)Nx9I8^~tjlvcDllR%@umB4bvuE^&cOV&wnQ3*feS0^(JyLIyXN7=YA5 zM_8Tc8)l5I**&@UPC^^2lf9;WHv_Nc57SYf-@}+L7o*39=mQ;wn=%v9iz%Kl-r^^$ zZ{b)|Oy-FTE@UQ!BVmx3Y>l!pC8Jqp5h0x{1KN!Q#(dNK_6jj`f&)0KM1b}WwU3nPNhJF!MRS)TJymuHMeiBv*@Wr$=%%%2Aqsj=UX;uayx zAX`vQ+!B(hh~&@$G9iXwW%&3oylXmid9t`ZQ?WLa-uKT@(~{THg!cxEXgP`_Q+MMR`&;H zZsQ_Cl|QwHh$!)t@1Rj*%iXkSJq7l!6z_^6N|m^1gg=zI4h9+#RWaN^w$}sV@^&><}l(13ea3G_QT<}n4^Wj z)|i(w`hKTV5W>T(f7`1qNWos|{vR&^PVhZl$%U{o&-?CM4*OPh;qWf?yrt%76CZF2^Pmz)2wqQ#ccUZ?Iox-{zETQuP+O_hGG@+Pa3qet3V+2KoAg0#>`Zh? zf+I>_+=$u+JS9)`6E|%$m^~k_QSnC%b+=GawXBTa4cHf(FHpx$#G+yK6)C`)YUAl0 zQd?VE9@&d=9%I}k@+?i+@?0LwhIm8xMS%b4s&P0 zIaryEQ0pSlwa(MXo{(Sx`!mcBi@#3<`_ngq#nb2eW|Q;-pKI|7lM4;<5xi{BbgnJG z5aAt*7j3~V^vi9(x*BVrU3Gwwdae$K>NP?=c49yZQ2^OJpfryBgomaTuEDXY#@TMH zra=o&#YGlR?zzdCd`S5Ez{v5!VpV?Ao8U_G5L}(`3#I`X`n!D0a-nVUYH53fn}bJE)xOL z#`3S_rUn)EYM$a9560qj6&LJuX%m+^Q$>y5foQDi7!h?g-#+(;02-Pj#}k>0)3g*R z8A~%Wa@|%N+yRZK_#Fh^$h)sMoU7VWU&w-$?TwTCKWTLGtxiyn(=tTE$mQcSwYYBp zs#9(pJt0asJu)enQo=G-E)TC~=v+%lOAR^YwpWD-Jg?d`!cRq*5zQEu#Tk|XCZyC- zF4a;TNukO?0yT0Z!@=4f%$OFDL&(Ec+~zodw(9SRmx>^B`Dc6>x`@}_4Q+||8hg`5 zb&`~Z?sH@2IUgPmpwTWO6JNX474f353mP^&YI+y!?FMy`X*R8Xg;8wDL$6(82 zv>Ojc`6>Lkt2JaN_PMwhW6a`~OIBdYj5sTrMsQTcvQ{^=j0q|pRpKSwYB^94PYZqG3kA4t@8;> zw9f0sG7~~$Ehs0un^D{DIJvn@%fEHfnQV^RNKCElHZz!P4%)a)arWGlr(c0$3V$EK zxf$;f+yF5KYc|MOas^nrmE5Nr#ryi9%hPQX{ILo1Yr}WH--A>d*WriS&K})~3@Gl* ze_cX>0)8Qgm4@m;0h_Gc1fJ4O61bbJE~|NrlBqAaDU>^F(NMDX=is<$5u6#z5kd70 z*V@BZN)G4+2L{5+*p9II*=_n`3Az3yI3M68IeUnofrg?M!0}Vp#8(fZ_%*Nqw1gD( z5?cqVkvF(}_aSL5uAe7Fc~!S*eE;Sgb@YJSaq5h6pP>=;LXUB?5DxB+{e@7vM>J{h zhT1=}*)Mzg99svLyKk_ps|umVP3OoK#XG+hHwbOFRng0*$g7 zVC0@R{paj+<*qmG2UUw(re-@Lag}@cTBZI2wUaYu>(0d$qjO|^3-A(;tdo-=AKcoD zXeQANg8k6QZ=x5qZ2Lj6Y**n&h%@3SHD3E9-q-h+tG2O;cDd^GI@*LwK?S%VjXWN2 z05hR(>o^{(^tx$%wvptT66ZC9Mk9sPb~r_`&V}T=g$tdkKC!nGA=D5B26@RI1_Lgj zJr-KnLcP{vp7LaWumLMAnxkEE*$^0F|I@zICUL);*5rU^0bXtxDD^9P10j!QQaFi0 zl^P{!n6W{G8m$Z>)nNI)7lZ2QGHI@!tr01jVB2B@>e>e>Z6hI7(1bmxVSOCeU$_ni zw6nyv;gNY0mdPGXj|kvC$KARG>2zYnRYZ4@y&ry*PI}AgCmq+ zBIi*O&$`N0|Hj$MO?$1jG#a+4{*L@|rL%5^u(SS#;67TYr+nvnyU$nUwAXt1u<7Q9Cq(uCp7BOoi~h0{^2r{xea!r7#(aLjefFUO#ivVj4EMb3 z8go3PfkCo8xqUIMdS&{oox0WCzrBgRdIq~e{s1<>pL7o#s5hqj0^1pJj!7QF(HtA& zzer7r{rR<~AZK;dQyPM6kl%=i->s&kjy1J1H6(3>Tz zkM`4;o^d?3-=u<8s{EnWvpgmcPg?vK)iV#Nz|mUUG+E&iawBY3p2fT1s{*yRl_uIS z$ZHACT^I25MLDU@=!^96X1~g#9zEw(W8Bvg1Lz4kaI4@0kZQjq>n7L^dtlF5QIE+~ z2kQ7+C#=(rtUc6hLoLdNY#(kL8jp0DNXR{DJ(j_rXPWp9q;QX7GoUoQE*A^D4tl2k zg)wJOq8*&+?8knv8?_b+NQaUH7=f7=tZ+($CAX#25)f2XzJ&W6gM)f*q_arP**3``^gTHhiwi?AS;v^^P^L zpuMJgCROX2p147By&;97y(1oTAxl^_lkF8iu-k^C#^g9i`s(-A;?@I9y^%!*KUM=8 zyP%;8+nZ52{mhl+K7yd+^0@hMlgWj_HJ!wDfec2s`oy$pQ$dR6VS1J_xmrmgLzR~f z+XH5|95bUj)lMsO#gW!Tk2J_4mn(Q{*xztiB@7E|O?Iv!9bYUsg?5VWE=%%+Sdq$2 z%O#zOIh28HOa>xON;|e8Iy3nzC5~@Fs}5Pl=6<8emA#40AO&i3S!;`NjIX6#kx{F` zJX*+<<7*fbD{QW1Aym>uN+uOr?lzq(^M7vS02NYy~Hth?P!lg3Bp3oLo$Ta>@O$Lsls5s>j-%zNZSa7#AInIFQje z`4R_zNtl#1l&MNpt;s?#kt-`o_dOzglL6NE8#bJ-`XHUbo3 z5_Z-Mu_Ju8hOMS4Js>#5_^E>`_CfY zKz;XbFc)vn4OsPKSZ>{lMWHzL#|XLU8}ifYkEo7;7NhfehY&09ERwcI zEBd+vGcr_8K#ek1qgC$_kvz%=(Ko zWW386K$f3;x5EEiubC`@25Us3P!>S8&PoVxihD!Ro~idostwaWC92)2y(quFR$b7G zKx_@RK%$>IpA#%94tAkq&bP%b@`^i#Kg%A#T!p9cuSRXbk`*439U5Tbl)skWP8NJC1K~>kg+Ftkj34{K z(Omk&XXw`+0=&JdXkvQwDROl~JV^@qWGWW-{71g?Ml6a}FHVMukXA0_8~7ir1>vh@ zxaDt=LDS!ov;VK$?q7=xi2rA+_@4lab=;gxKRrr_tiEBG4GaohHyH93up1RIDY1?i z^IZ*gaZ=K6kMGNmlSfePw!jOB8p1SsF{L;1`@k&h z9Lsu>+3e}<3%BbmXX&WE097qE{;F}Z#`-J&EO;v4DLqE*>sPWFW;RC8 zY1e`>Jd;`&o1ZbwF^h}KIbLP>P)pqm{=7Qi{jf}W)E*{>gGxq>uGK)QK>_p44P6cQ zn;k2!0d;(l)Sp%3We9SMybLg)CM%j>8qIn8U{JJt@^bOQAiWMq)MR1NZD5J+pPQgD zxtd`-?#j@q?9;M%X%4tDZ(jAec9RdkblvWKV1+F1<2ARb!g6xG`lBDc=7;FRyI5e{ z8RR4|!@s!O^SYF+UExJpxbaEjQ~wcME!J;Mc&*dmDsXaFqQO@jIIvhPe15K2L$-J> znt!8!_bGD8dEOlvAIvpdEq(T_K;wPbKUuvQVscX%pkw}27^vlPn~qd|Z4TLSyVW$F zyFod-Svr2e(vi!uUAzV7*H`ow99eIfhE`!?U8=P`LwMDog|UHqC+ahc?cIt9F61VI zBxOmPYeS9Fzz&EH;xDMTyjWkZv9!7{v#~;V+rZvnWoBd6neEb$WA-mljN8G5Q8%Hs z8U!T~r+}owxy!|ideP{UMhpxn2`21w>ypAvp+Fty@GumqlcXQYR|za2u=n{`E?crx z+l$Mibf1fQN&@`|%-1QTHhO-Nzi0?sTM(og*O<&9)%33hdKtH4wyH)tOi{H$Xv3PM z)lgnViovQ5?~xX%5+ge28KH+ih-HdB)$99;yu#y3bvC}L{ zQ6gTE0Tk(;6>L7h`YP+u{fnV7H$vLcXqUqVlOZx)9LRNZnL+TW855^KoLt7$&Mb=b zJxYyUcrRkzD zh+yFGnyE@B5ia}eS2*StBG3?i-HcfCANy5{7BYeEF``myXk6y0_^>(TsKrnL5w2_E ziZR0C-yP}20*Fo^hD|HtH_=#{^Yqr7TpigVxZFADGKaGk8qy|&8Ty%=>V%+?v2uRH z=a$od7+G)zFsfmM6;Ky8Y)B0V3Mp{vsZ2B?HJo(^@SVHDEI}V)i{kWZm~dFaCOCBZ zDmi-mDnT3J61M`7fueDrSf;9_zuOQua7cwdMM;E40J};KY~7+M(zrjupQu?3FR5+4 zMHQ!@j$(T&_ni6H=9Hj>KSE-B$$h_(tFmYB=(;G#rxi%k#3-OGhN(|wQz7~mt&#;t zdhbF)T0xpa?SDyc0iH-T6{jsyk~WXE2#l~mRgz4qva+Wz=>49TO~n~Qo#Ygl zo1OD#)z(@q5znEunPa{?O`y|ZoX%Lm9EJ_`96wZ?W@PM>J>O$792=SR zmj#>JOfV|Y`39JRdbVR=IWQM%6>2X^pS6yDf?MmLAscKNrYWRbQz}O2c^dWB)Uczd zB~fp}wC~hd9@$WgwHV4z$5|voNu24!p`2(;Ftx3Y7ztOb4qnfW&kp9eFYA)?uKUu+ ztcZ8SMkfo1e+~M!o=iTuZI4Z>5T={%PxQrANH(;r@R#mAP=60er~;1yo-<{Mc>+t{ zlNqV4W5a+?V<=?UlBsJib!k@;sUwWM7KMa)?}K2pe6XG*!H!mJ2(mxmmo*#OTaO>B zIA^aEkO!N;^5sr^y&g21T;*7JJfu~hVo$;VqnmW<4wL6%hy-TED+Z^8-)Ss*m=}@j z5fG$|#%!ZG_>nM4!rxD@1YGQO;v2AHK7fH(wo49VtkJ}|Xx9SAxe!PySgNP>+rqQE zmM6*mxbo{hx2uZSRk#9KF||KBNu43Mr*!T2j-5KTim~y0pmY-8PG$w1?i2Y#!j68j zw)0@`|8>+T7$IF`f7dy_4Jp04r)ji+b=uPF)#H{?yG6I%9& z{@!(9L!lYmU0JXv0P)oSoO`sk2B)tmg})6**>jG{f4qCvJD7+Z3Z`H4j0$HMMc8$i z+$+0~{JQE{dMi93J8hXGEP+GS!;{RUY$`)PX}O(!n%eoQPid!0VTImA7v8pb*wWkbAWJz6F5JmtJtq>>C z9!t=XwxkeD^+02?&xI@6n@e%$i%T}dKJ8@p;t~lqc%Q%iuuzE9Fa^aR2PI!CLY|;e zp2%@8)tz1C*sz#dD3E&CTp`@C7)$Cq|uliab=9sD%E83m!(}|lb#$< zo2CW>u_XiH#jRgfcxW+ftR(pJ*xD*xwwucIfTIJCPTVh@1Zg*Q0rp?om+3Ii^jihu zViAXg6v<(*ot+H99s@zMUQ`Bk^9#M5t&;X~*wp$rwZ4Y1c-BbH^A3UyV7K zmEu`1kd00}qq=%R6=J_1*F?W|F6KIKQ)Q+9KE;DVA)SkgF;pS56RM6Pv$kY0BU>%+ zSfW*KMI2sRL&*ySL><&XVfyX?73^AGrF|i;v%A-Xv zvkJ!^qc^6n#~VFk*X&12f2ZEDZ^XPNhd!Rx*F6(Y$={mx%H@m!U;On$4I0tuR)BMa zt_%ZhR$mA8UI7so;#a}_3|H8mA&=V-T@)VO>E_K?&y%fNXF_fAC5FY6YKw4)iuFKQ z=njy0{Uje`^@{P_m{{HQ8o&S*@0loOOH0;9xAk}f!%fR7K zH5=KX>s#-^QS8s-b^B3?^N_%6#6HOfH=2`+2;1${ds}nT*&Z%;e0@HJP+jdeLV};% zneBvCRjsuKLZq*pp)=81FwOyI6#HhMbst(cvG3U*-vfoZ4@3p)2WD53>nHITl{h!R zVVZM1#7~8FhxgU-aKnpg{b6Eifq1xf!xz2X)hEChjoo%Di637X;KBN#l~BsrpF${M zNMIk7R~7H5FpnW;iX!l{LH5Z;HOr70bne%%k`NTvJ2Re zxzHo3RI5yz8@UbnpL@m=`M6RzZigqCUzj@~v7x0W^>tKJsW;8`No~$brtE%vTL$ZR zo|{ug(xV0kCyFUbDAYYnN)ooiU6M*T5tT?j*B-FSiwBwAa%>%pmqM+pT%hr zJ=Nhl{o93{)lPxKN7e#A>fNLdyS!CmrDNXlkwdjkWBP7VOQYihHF<{UE~NdFz5Z{! zS!fC7{Pwqf2^^y45Vr*2Z$-j8@PE~_f5i?d|DSrMXzT1?X#DSb6|MT_i1HURk(BTk6(`;{rZiW)`crgsQo6@Uc-tTSM;D%J3}muwn{AM~#OLkMJMo-$fAS)z{6 z!dzXWSo!->ImOp+gbwdWRz=-si)oEopNgT}Nw(MLtLFyy%jEv47vDPqKxKD`{#eg5 zZHCS46k0!2>n7;}+tQBKX5Owb%NDW_u+@UTU+XdmAFi>AqHZ8=Y zEF6|+l+au=V|cWP{vQ?>V#I$T97lh9#RqrP)+%GV+wO4o_HArtPWFAO+PMqlF9CrO9jJRHn};jh#}a zm8NV7O^PBWnR{vuSI~jie!|Nqq}F8F^!Fkbf24{otx_N$@5MBOq}R`MI!}v=upgjG zG9O>l)tOGPYK%`#otvUeYAYhmH|h$FGRVzY;?ybC4E3)!C5wo_u@i2SvCdP3QRE)oh%nhHilNQ z+EE}~l^iTG_z>An+p+VM@{B#c9;ocnzZYRdtbcq$NGxH}xsP?ylaL;M4GhOEC5Ku~ z)bKA)Tg-@Cyu=k(t(aX*M}(^A6w#fUQ!%#kyUh&!`;YR=mI%iK+6gaIcPs?1Oi(J%UuqvOvCRVRP6q66PBQ=meYn=fh5a%%G)7_FK+u$o`+!S+CI-Hr zX(WodqQe}_Y6?4Z=7vWnRbAF^4@mo1z(&%B&+Y$EvQVTlQeq#w6kq&P3J$p_JD9<3 zGb)yOfg{>7Zj6jwT)8u(JJB2!)x6{6)qM=vjn~DRL1;-Q4CrcxiSbn4WV{7q6GsiKfZf=Y_jdx>r8GPrEMg9ezP z-y55=hN(ft63N#i_7q7~_9F|7b=M^}$vIU$&tjgDz_6h_y~#PZmLf{^*c9<+N$}XN z_R;y8y{01qWeiVSkGqV`B=yhaf{XZC^9n~ypCv|hm`Z(RN^9s|fTc;dh-b9niS!6= z4$3`L@NQ&X+77BC07(A&FQXZw1v$q|-bP0UxO@p#&D#chXC6~lwaGAV0Q&%VWwkMe zNzB)*yAK zN`SoWDzaE5_Vif~&mYKGH2+D_twy(H}uy;?z z5Vo3G-UE}i^b$(g5v*oVLn~NDtJ{M42ca-0x931z zyPqr!Oes8gR*1+#7#T~532VrJ8cp&QO;aOf%VnpKvW7dBc~S(vMQ)ytm9bOV$Q`!k zNj;~O5Rh6AVuW5c`hl1KE0nzwDp%kCQA5g&X8+J}%WWvq)=lI6^?StZ^aH>&S4eu7 z8124R9<4l#xjs%;kX>vKqRB5qAoGZtFmh2RJB&Fs35&Z}M7LbtDyAu`e}AgJRt{O6 zFjoXYYPe@mUFzdEQCfNwwK9C)HDVRcQ2#+$G__*FyFBx_a-&ADS9b$28AhhZusJBV z#t?+|NIN_lW0tL8{EuM}eH1YJ;2Td@4BPMCU{?l>@hL!NM;xOm69#DaWlw*!o4iLE zm$<+tFE$$d<16<#=?toE-SlI(x>kbnD{E%i-}Y0aFht%fu- zZLvEMeRg#D+u)PsM9u38=piEO)SLQk>%i5M1ChnH|%QAXV-J90UZKb)$Ta|*fX`|VcFQ19IS=|UXwD#k= zs-V4+t-IA1TcRizH>w}vjl(SieJAFx>JL#XowZY6E1TF>G^)GRzuoF%>_04ce#&^w z@t>pw+ndvW_huZdR>nR=X6D}AbY8Ug$V=X^o~NjOG8jSe-W;+p4v8j?q$}9oR#!ZN zX*8Sag|2bfNNh*CHYkU6j7K*#$X-`K-5eC3>V<5&+x9Oj7iAd$E@sD=9DM?Q`+t%p zt)8iuRjOaJKE(P$ntTsjTIjTKO{%hRvD6mQoQ!2TYN8%HCP*f=|AbFl5c-2yTfy}0 z%4_)HqP}6yyP?7nWJqI_O=)t=J~diQ@U&A+!d?hB%p_bgAuYUK{Px|labISZ{fv~B zR1FXGZMgfn)EA3u!aa47A{h^StG#ZucC~mXCWD_3N|XlmaFf%orN9*;{7hAlZ0E4K za2ul#oaw32C{t^;Q(*Vcx}JJ|5C?qO77<8jFk0)8tub==CFs;OMKp2(!^u)G4G93U z^{uk;ndlK^SNl#?EDG*ui^;7;PfS%rj1sWHvrJHt91f*$W35F6eFsKfIB6=qZrnm$ zziO!vp)xptcB@*^e^~rn&<1u0_ziK%9GG=y0AmzF&Z&;W2r>}0aBNc(V}ahiFHfa`B8mO()yKcU`Qs0&AN@xQN5hFQ z9C(df))W{vVK>p7gQoD*1#|@dIZ0MK8iL4=#%dJTjRcN{Kh&=uyFr?sDm5NZ;e-Z&-aCsfSrd5dh!$ZKv+8f|E3~@ z_^O?o=Cbra=NlY4)~l2rD2V z!o1Mx$Y)S-wIT>TkQ=RAM=~3Sn&PawV)Idm-1H!iIf$j|E9mCNz5?2ECp&zCLpy}% zr{Y^EZ{oBbqKv$)c@+vo_gImw!aLsiZyNt^pj+}NR8RBA$U;?u+x3E$zW!Ct7nk@V z?Pa`Bk30k<*U=uoM0lb9)5vv(HI;2qI)tV$fPfT3N9i?4bPx>EL691X^bXRcN(X5} zhoMEfkP)O80qIDOkv24GN=Kw5paZ<*IWt7wd(K<=bMs@beeO9o`@7j?`R3W*5^dxb zk-w8@#I>G#*wR^^{G^O5KffC$2C^4sVz+>TX}`wE%|O(NsLC{iXr^NI`X=g1L+b5Q z8l+#-Y!U2hPN!O32@s2T5Dfg9k+$}eN@>}k!L!TSJEgnV=vMS_HZ?_RCkA=ZG!Rufl2! z6Vs~fWv}|XxV(XITPMlWjwc#W^;Noqr{rm#4OIxS*=CAN@K(%Qd?td2f1b}{E+wzJZ9gZ{7uBjyy zxoPRlQ_+Nyf}A(E6$?k49bbQl6gVIoCi)yw!OX&-S~9B@a(BGVPcK`^SO+O0@|t6U zHu5e-zz3k9D3q!_MQc;H~<*0$t zpZQ=Cv#)-({FTaUB^M~9qkbhLM|TUp+9UO+ZGkk%#^=B zfNCvO@;j_xnxID5?q+uEH8Pygk}M9}rc5S{@aohn7`#n@I75y#lHSw9f*O;nER*Ze zE1Ay-9i~)e@J?bSIP7u~i9lWl{h}Wil$PQHjVfZ7K6KP|vcWWi0?FwDGL}^4WuVQ7)`bjmO>6XAZ%A%=kX~CWrnG1-D?Ve8*>GG1|-7xqtYi-bk>4*!?FePzGvekcz@9sK3%bXCd zfe-bGx}-X!X6@6pb1$L}u3E$q3i~L2qpIZCiIDU7;aNr63Y?o_MR8Pnb59_a)uvsM zz53%$&AL~lif3!J$Ry(Jo6Zk$l*n9~PC$(Ez1L}~Grdw>U)(7(ZU)Xz$2bM_*Bo+6 zxM1==hXJ0{K;qo~2#>5{H+~@R!`a79VC}>{qWDx#OJp`J`sScS+sb&qDn;|4)QqWr zIlSD5Ddm}@YdPy>SWAl3XhHvET30Edcfq@8Aj%fOZj^X?qTg#$gI%5?p^w4T`$L(u z&d1Hdj&2!FKeByYJW&GQZeu97Y*1|boYZ!-<8%_3$rtpPO%JYfrNwO7*)toQLpAt} z@BW?j@;s;cS{Ts?j(to=&K7WWm@r9g40^1Ewo+?%1H%Gz<4nzo^hIutx8G0`wJ;+U%#O6 zH93aSTEzgRE@F*GO;*|UIdXa0fHgMM8#=$7jedtVB1hPLnzU6_sv{SDO(@Cozz(^z zN$-HySZ~Ed6*tO+?Gei8V0b9@xyvTM!VqKXm=WW{hR_ zS_NeOC=k9U9JRTaW%*5qc`||`@Hkx_om7s(}@+oLS80q`}y>H9DCKA;bZ^rWR}mIWMc;Aym@dl zfCLzof-VQbD%afA$GLR6N32o6c~wDtnF$7b;ZUo6DWVkv z@nBKeJUgG49eexYSlE#$V?8bR8v$&B;#f;TQLATpln4dI-&RT6W4R}0!BD`1_k?_Gt zQe|?v)f_!HY9teMCH$j(f91~$K$b7u6o4JE!Oz?WEpt|i^3U82rI8{2_R&C^Efasg zCdm!ox1GvCzfDkE<=W~1C`LwP!DqjC27?5O%O1=O5Tq+s z>V|}QC)FKka%dQC#FxW>lV166o&)Ks;a0LcWhRtnRgQ9_KDF*93ro81Ebcl-dICWH zNXM*=VvfrJ4s!(+)D>D(snPdDNJphQGinj`rZ(ltHe|Pc9c-{dtS5=ciZQxW$%md@ zV)vXbM8wFi!c``m>j&q^-W9m@%0=`zJuM!;% zH@K0Hr;WzK)?aTCfedT6-NDSxQrYG<8B}$?Y`N5=t*y`k3&{aJm#?!eTu+l-fKVZ8 zMZ=eQ=$r>LZ`^kdlpI_<8au$(^a+Qr^ERdOkEBm^)>j5!{f$h=+PW$1z4fwcM*K~< z$SFS6*_z+Ap}13?eeZ?#_RVP^b^q!@8o{l?FzPU&8wO#!T=sCw7xpTRQjObH0a`~Y z4elAiB!^PuR~3Je=v&vw4crZ6m!p7~bRg<0Uy&dr>H+ErZD>%GJ!yLJ5c4#zfnDaF zknC&rA8s7f=F5cb=F1kwke(PUedhC|`)O?)Il(iEV50HM02 zv>NCq>RkkdHY}=vdbS7~nS$EXN4Cv%(F+E5)D z1ri5y;rD>O3XEWy1&BGVM-f{OfeT}@k1N4M(>*`{o49bk$R*B8ALNlCb5M(3aDpXW zta*;hA8Uz5WH+W@{1siwyK}N=OvLepGnlhbM6T~5Gw1H}@g*s_-tA10Fn@Fv(ss?M zW68h8E*b`m)+)1;XXH1PMQAP=p`%0Pm&jS(7llHVeKTKzG;E97`PB+Z=_r3~=C@|7 zYcK>jPw|=2{Y;CG?6T<#iQ@12BwFUI>!C~?vf-4#nfu;|@rJJyM^nm}cFptFY6{sX9cn{qR%M3xtbkdh|k|j8|v$ST+j4 zc-l^(<70MnetGH!GuU@4{^5&3dT(lQR9P6y$SS#OqNn16$BZGZc5j#eP9 z>0tm7}3>u=J0=S#h4fw>bL3l>bzAJ*b;slNYhh!yMm2COT{_lD=vedh!h zlWJJ;zHQ`!&9b}meXD_MmV_dCb-|G|dstN%}_ zzi-EM?gMvJ9V>oy4pGwYHvO-?`|H;Ky<&`y|B%AE=mB^B7(4QQj$F)P;T-FK_3+&Q zJT5i%+;E2wumjBJxX$p;)ECB?FOuW-@?z&0&JoP<&*a$M|9+|gmmmAM<2JNnJA%)V zj`@xKU|%rQ-)f#08FB0P*hbiMeCGQn#_!ror|DK}-^ZftV4{kB|A}{XiB{qJYWB%3;d2v(dxTM&~iW_ym50N7(I3W_}JylDU V7?ab-!=uG~a)|NpD7CQP{spbyy{`ZO diff --git a/maven-repository-proxy/src/test/remote-repo1/commons-logging/commons-logging/1.0/commons-logging-1.0.jar.md5 b/maven-repository-proxy/src/test/remote-repo1/commons-logging/commons-logging/1.0/commons-logging-1.0.jar.md5 deleted file mode 100644 index 7c997d231..000000000 --- a/maven-repository-proxy/src/test/remote-repo1/commons-logging/commons-logging/1.0/commons-logging-1.0.jar.md5 +++ /dev/null @@ -1 +0,0 @@ -240b26992977c9ad119efb91cb21f8f8 \ No newline at end of file diff --git a/maven-repository-proxy/src/test/remote-repo1/commons-logging/commons-logging/1.0/commons-logging-1.0.pom b/maven-repository-proxy/src/test/remote-repo1/commons-logging/commons-logging/1.0/commons-logging-1.0.pom deleted file mode 100644 index 402a9df37..000000000 --- a/maven-repository-proxy/src/test/remote-repo1/commons-logging/commons-logging/1.0/commons-logging-1.0.pom +++ /dev/null @@ -1,6 +0,0 @@ - - 4.0.0 - commons-logging - commons-logging - 1.0 - diff --git a/maven-repository-proxy/src/test/remote-repo1/not-standard/repository/file.txt b/maven-repository-proxy/src/test/remote-repo1/not-standard/repository/file.txt deleted file mode 100644 index 08657d777..000000000 --- a/maven-repository-proxy/src/test/remote-repo1/not-standard/repository/file.txt +++ /dev/null @@ -1 +0,0 @@ -test file only \ No newline at end of file diff --git a/maven-repository-proxy/src/test/repositories/managed/org/apache/maven/test/get-default-layout-present/1.0/get-default-layout-present-1.0.jar b/maven-repository-proxy/src/test/repositories/managed/org/apache/maven/test/get-default-layout-present/1.0/get-default-layout-present-1.0.jar new file mode 100644 index 000000000..a3b38382c --- /dev/null +++ b/maven-repository-proxy/src/test/repositories/managed/org/apache/maven/test/get-default-layout-present/1.0/get-default-layout-present-1.0.jar @@ -0,0 +1,3 @@ +get-default-layout-present-1.0.jar +(managed) + diff --git a/maven-repository-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-default-layout-present/1.0/get-default-layout-present-1.0.jar b/maven-repository-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-default-layout-present/1.0/get-default-layout-present-1.0.jar new file mode 100644 index 000000000..15fd36d5d --- /dev/null +++ b/maven-repository-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-default-layout-present/1.0/get-default-layout-present-1.0.jar @@ -0,0 +1,3 @@ +get-default-layout-present-1.0.jar +(proxied 1) + diff --git a/maven-repository-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-default-layout/1.0/get-default-layout-1.0.jar b/maven-repository-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-default-layout/1.0/get-default-layout-1.0.jar new file mode 100644 index 000000000..a129891a7 --- /dev/null +++ b/maven-repository-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-default-layout/1.0/get-default-layout-1.0.jar @@ -0,0 +1,2 @@ +get-default-layout-1.0.jar + -- 2.39.5