Modified: maven/components/branches/MNG-3932-1/maven-compat/src/test/java/org/apache/maven/artifact/resolver/ArtifactUpdatePolicyTest.java URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-3932-1/maven-compat/src/test/java/org/apache/maven/artifact/resolver/ArtifactUpdatePolicyTest.java?rev=746150&r1=746149&r2=746150&view=diff ============================================================================== --- maven/components/branches/MNG-3932-1/maven-compat/src/test/java/org/apache/maven/artifact/resolver/ArtifactUpdatePolicyTest.java (original) +++ maven/components/branches/MNG-3932-1/maven-compat/src/test/java/org/apache/maven/artifact/resolver/ArtifactUpdatePolicyTest.java Fri Feb 20 05:38:03 2009 @@ -91,8 +91,6 @@ protected void tearDown() throws Exception { - wagonManager.setDownloadMonitor( null ); - wagonManager.setOnline( true ); super.tearDown(); } @@ -140,17 +138,6 @@ return a; } - public void testForceLocalDoesNotExist() - throws Exception - { - Artifact a = createRemoteArtifact( "o", "0.0.1-SNAPSHOT" ); - - artifactResolver.resolveAlways( a, remoteRepositories, localRepository ); - - assertTransfers( new String[] { "get " + PATH, "getTransfer " + PATH, "get " + PATH + ".sha1", - "get " + PATH + ".md5" } ); - } - public void testForceButNoNewUpdates() throws Exception { @@ -326,18 +313,6 @@ assertTrue( j.getFile().canRead() ); } - public void testResolveExistingLocalArtifactInOfflineMode() - throws Exception - { - Artifact a = createLocalArtifact( "a", "1.0.0" ); - - wagonManager.setOnline( false ); - - artifactResolver.resolve( a, remoteRepositories(), localRepository() ); - - assertTrue( a.isResolved() ); - } - public void testMultipleRemoteRepositories() throws Exception {
Modified: maven/components/branches/MNG-3932-1/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedder.java URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-3932-1/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedder.java?rev=746150&r1=746149&r2=746150&view=diff ============================================================================== --- maven/components/branches/MNG-3932-1/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedder.java (original) +++ maven/components/branches/MNG-3932-1/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedder.java Fri Feb 20 05:38:03 2009 @@ -24,7 +24,11 @@ import java.io.Reader; import java.io.Writer; import java.net.URL; -import java.util.*; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.Iterator; +import java.util.List; import org.apache.maven.Maven; import org.apache.maven.artifact.Artifact; @@ -55,14 +59,21 @@ import org.apache.maven.model.io.xpp3.MavenXpp3Writer; import org.apache.maven.monitor.event.DefaultEventDispatcher; import org.apache.maven.monitor.event.EventDispatcher; -import org.apache.maven.plugin.*; +import org.apache.maven.plugin.InvalidPluginException; +import org.apache.maven.plugin.MavenPluginCollector; +import org.apache.maven.plugin.MavenPluginDiscoverer; +import org.apache.maven.plugin.MojoExecution; +import org.apache.maven.plugin.PluginContext; +import org.apache.maven.plugin.PluginManager; +import org.apache.maven.plugin.PluginManagerException; +import org.apache.maven.plugin.PluginNotFoundException; +import org.apache.maven.plugin.PluginRepository; import org.apache.maven.plugin.version.PluginVersionNotFoundException; import org.apache.maven.plugin.version.PluginVersionResolutionException; import org.apache.maven.project.MavenProject; import org.apache.maven.project.MavenProjectBuilder; import org.apache.maven.project.MavenProjectBuildingResult; import org.apache.maven.project.ProjectBuildingException; -import org.apache.maven.plugin.PluginRepository; import org.apache.maven.reactor.MavenExecutionException; import org.apache.maven.reactor.MissingModuleException; import org.apache.maven.settings.Settings; @@ -258,7 +269,6 @@ modelWriter.write( writer, model ); } - // ---------------------------------------------------------------------- // Settings // ---------------------------------------------------------------------- Modified: maven/components/branches/MNG-3932-1/maven-embedder/src/main/java/org/apache/maven/embedder/execution/DefaultMavenExecutionRequestPopulator.java URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-3932-1/maven-embedder/src/main/java/org/apache/maven/embedder/execution/DefaultMavenExecutionRequestPopulator.java?rev=746150&r1=746149&r2=746150&view=diff ============================================================================== --- maven/components/branches/MNG-3932-1/maven-embedder/src/main/java/org/apache/maven/embedder/execution/DefaultMavenExecutionRequestPopulator.java (original) +++ maven/components/branches/MNG-3932-1/maven-embedder/src/main/java/org/apache/maven/embedder/execution/DefaultMavenExecutionRequestPopulator.java Fri Feb 20 05:38:03 2009 @@ -60,7 +60,6 @@ import org.codehaus.plexus.component.repository.exception.ComponentLookupException; import org.codehaus.plexus.logging.AbstractLogEnabled; import org.codehaus.plexus.util.StringUtils; -import org.codehaus.plexus.util.xml.Xpp3Dom; import org.sonatype.plexus.components.sec.dispatcher.SecDispatcher; import org.sonatype.plexus.components.sec.dispatcher.SecDispatcherException; @@ -85,9 +84,6 @@ private PlexusContainer container; @Requirement - private WagonManager wagonManager; - - @Requirement private MavenSettingsBuilder settingsBuilder; @Requirement @@ -392,22 +388,18 @@ if ( request.isOffline() ) { - wagonManager.setOnline( false ); + mavenTools.setOnline( false ); } else if ( ( request.getSettings() != null ) && request.getSettings().isOffline() ) { - wagonManager.setOnline( false ); + mavenTools.setOnline( false ); } else { - wagonManager.findAndRegisterWagons( container ); - - wagonManager.setInteractive( request.isInteractiveMode() ); + mavenTools.setDownloadMonitor( request.getTransferListener() ); - wagonManager.setDownloadMonitor( request.getTransferListener() ); - - wagonManager.setOnline( true ); - } + mavenTools.setOnline( true ); + } try { @@ -435,7 +427,7 @@ throw new SettingsConfigurationException( "Proxy in settings.xml has no host" ); } - wagonManager.addProxy( proxy.getProtocol(), proxy.getHost(), proxy.getPort(), proxy.getUsername(), proxy.getPassword(), proxy.getNonProxyHosts() ); + mavenTools.addProxy( proxy.getProtocol(), proxy.getHost(), proxy.getPort(), proxy.getUsername(), proxy.getPassword(), proxy.getNonProxyHosts() ); } for ( Iterator i = settings.getServers().iterator(); i.hasNext(); ) @@ -446,29 +438,18 @@ String phrase = securityDispatcher.decrypt( server.getPassphrase() ); - wagonManager.addAuthenticationInfo( server.getId(), server.getUsername(), pass, server.getPrivateKey(), phrase ); - - wagonManager.addPermissionInfo( server.getId(), server.getFilePermissions(), server.getDirectoryPermissions() ); + mavenTools.addAuthenticationInfo( server.getId(), server.getUsername(), pass, server.getPrivateKey(), phrase ); - if ( server.getConfiguration() != null ) - { - wagonManager.addConfiguration( server.getId(), (Xpp3Dom) server.getConfiguration() ); - } + mavenTools.addPermissionInfo( server.getId(), server.getFilePermissions(), server.getDirectoryPermissions() ); } RepositoryPermissions defaultPermissions = new RepositoryPermissions(); - defaultPermissions.setDirectoryMode( "775" ); - - defaultPermissions.setFileMode( "664" ); - - wagonManager.setDefaultRepositoryPermissions( defaultPermissions ); - for ( Iterator i = settings.getMirrors().iterator(); i.hasNext(); ) { Mirror mirror = (Mirror) i.next(); - wagonManager.addMirror( mirror.getId(), mirror.getMirrorOf(), mirror.getUrl() ); + mavenTools.addMirror( mirror.getId(), mirror.getMirrorOf(), mirror.getUrl() ); } } catch ( SecDispatcherException e ) @@ -489,7 +470,7 @@ */ @SuppressWarnings("unchecked") private void decrypt( Settings settings ) - throws IOException + throws IOException { List<Server> servers = settings.getServers(); Modified: maven/components/branches/MNG-3932-1/maven-embedder/src/test/java/org/apache/maven/embedder/execution/DefaultMavenExecutionRequestPopulatorTest.java URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-3932-1/maven-embedder/src/test/java/org/apache/maven/embedder/execution/DefaultMavenExecutionRequestPopulatorTest.java?rev=746150&r1=746149&r2=746150&view=diff ============================================================================== --- maven/components/branches/MNG-3932-1/maven-embedder/src/test/java/org/apache/maven/embedder/execution/DefaultMavenExecutionRequestPopulatorTest.java (original) +++ maven/components/branches/MNG-3932-1/maven-embedder/src/test/java/org/apache/maven/embedder/execution/DefaultMavenExecutionRequestPopulatorTest.java Fri Feb 20 05:38:03 2009 @@ -1,6 +1,5 @@ package org.apache.maven.embedder.execution; -import org.apache.maven.artifact.manager.WagonManager; import org.apache.maven.embedder.DefaultConfiguration; import org.apache.maven.embedder.MavenEmbedderException; import org.apache.maven.execution.DefaultMavenExecutionRequest; @@ -11,16 +10,13 @@ extends PlexusTestCase { private MavenExecutionRequestPopulator populator; - - private WagonManager wagonManager; - + public void setUp() throws Exception { super.setUp(); populator = (MavenExecutionRequestPopulator) lookup( MavenExecutionRequestPopulator.class ); - wagonManager = (WagonManager) lookup( WagonManager.class ); } public void testWagonManagerOfflineFlagIsPopulatedFromSettings() @@ -28,11 +24,6 @@ { MavenExecutionRequest req = new DefaultMavenExecutionRequest().setOffline( true ); - assertTrue( wagonManager.isOnline() ); - populator.populateDefaults( req, new DefaultConfiguration() ); - - assertFalse( wagonManager.isOnline() ); } - } Modified: maven/components/branches/MNG-3932-1/maven-mercury/src/main/java/org/apache/maven/mercury/MavenDomainModel.java URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-3932-1/maven-mercury/src/main/java/org/apache/maven/mercury/MavenDomainModel.java?rev=746150&r1=746149&r2=746150&view=diff ============================================================================== --- maven/components/branches/MNG-3932-1/maven-mercury/src/main/java/org/apache/maven/mercury/MavenDomainModel.java (original) +++ maven/components/branches/MNG-3932-1/maven-mercury/src/main/java/org/apache/maven/mercury/MavenDomainModel.java Fri Feb 20 05:38:03 2009 @@ -32,7 +32,6 @@ import org.apache.maven.project.builder.factories.ExclusionModelContainerFactory; import org.apache.maven.project.builder.PomTransformer; import org.apache.maven.project.builder.ProjectUri; -import org.apache.maven.project.builder.PomClassicDomainModel; import org.apache.maven.project.builder.profile.ProfileContext; import org.apache.maven.shared.model.DataSourceException; import org.apache.maven.shared.model.DomainModel; @@ -47,7 +46,7 @@ * Provides a wrapper for the maven model. */ public final class MavenDomainModel - extends PomClassicDomainModel + implements DomainModel { /** @@ -92,7 +91,11 @@ public MavenDomainModel( List<ModelProperty> modelProperties ) throws IOException { - super(modelProperties); + if ( modelProperties == null ) + { + throw new IllegalArgumentException( "modelProperties: null" ); + } + this.modelProperties = new ArrayList<ModelProperty>( modelProperties ); } Modified: maven/components/branches/MNG-3932-1/maven-project/src/main/java/org/apache/maven/DefaultMavenTools.java URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-3932-1/maven-project/src/main/java/org/apache/maven/DefaultMavenTools.java?rev=746150&r1=746149&r2=746150&view=diff ============================================================================== --- maven/components/branches/MNG-3932-1/maven-project/src/main/java/org/apache/maven/DefaultMavenTools.java (original) +++ maven/components/branches/MNG-3932-1/maven-project/src/main/java/org/apache/maven/DefaultMavenTools.java Fri Feb 20 05:38:03 2009 @@ -21,18 +21,25 @@ import java.io.File; import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; +import java.util.LinkedHashMap; import java.util.List; +import java.util.Map; +import java.util.Set; import org.apache.maven.artifact.Artifact; import org.apache.maven.artifact.ArtifactUtils; import org.apache.maven.artifact.InvalidRepositoryException; import org.apache.maven.artifact.factory.ArtifactFactory; +import org.apache.maven.artifact.manager.WagonManager; import org.apache.maven.artifact.repository.ArtifactRepository; import org.apache.maven.artifact.repository.ArtifactRepositoryFactory; import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy; +import org.apache.maven.artifact.repository.DefaultArtifactRepository; import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout; import org.apache.maven.artifact.resolver.ArtifactNotFoundException; import org.apache.maven.artifact.resolver.ArtifactResolutionException; @@ -41,8 +48,11 @@ import org.apache.maven.model.Model; import org.apache.maven.model.Repository; import org.apache.maven.model.RepositoryPolicy; -import org.apache.maven.project.MissingRepositoryElementException; import org.apache.maven.project.ProjectBuildingException; +import org.apache.maven.wagon.authentication.AuthenticationInfo; +import org.apache.maven.wagon.events.TransferListener; +import org.apache.maven.wagon.proxy.ProxyInfo; +import org.apache.maven.wagon.repository.RepositoryPermissions; import org.codehaus.plexus.component.annotations.Component; import org.codehaus.plexus.component.annotations.Requirement; import org.codehaus.plexus.logging.LogEnabled; @@ -69,6 +79,9 @@ private ArtifactRepositoryLayout defaultArtifactRepositoryLayout; @Requirement + private WagonManager wagonManager; + + @Requirement private Logger logger; private static HashMap<String, Artifact> cache = new HashMap<String, Artifact>(); @@ -396,4 +409,408 @@ throw new IOException( e.getMessage() ); } } + + // ------------------------------------------------------------------------ + // Extracted from DefaultWagonManager + // ------------------------------------------------------------------------ + + private static final String WILDCARD = "*"; + + private static final String EXTERNAL_WILDCARD = "external:*"; + + private static int anonymousMirrorIdSeed = 0; + + private boolean online = true; + + private boolean interactive = true; + + private TransferListener downloadMonitor; + + private Map<String,ProxyInfo> proxies = new HashMap<String,ProxyInfo>(); + + private Map<String,AuthenticationInfo> authenticationInfoMap = new HashMap<String,AuthenticationInfo>(); + + private Map<String,RepositoryPermissions> serverPermissionsMap = new HashMap<String,RepositoryPermissions>(); + + //used LinkedMap to preserve the order. + private Map<String,ArtifactRepository> mirrors = new LinkedHashMap<String,ArtifactRepository>(); + + public ArtifactRepository getMirrorRepository( ArtifactRepository repository ) + { + ArtifactRepository mirror = getMirror( repository ); + if ( mirror != null ) + { + String id = mirror.getId(); + if ( id == null ) + { + // TODO: this should be illegal in settings.xml + id = repository.getId(); + } + + logger.debug( "Using mirror: " + mirror.getId() + " for repository: " + repository.getId() + "\n(mirror url: " + mirror.getUrl() + ")" ); + repository = artifactRepositoryFactory.createArtifactRepository( id, mirror.getUrl(), + repository.getLayout(), repository.getSnapshots(), + repository.getReleases() ); + } + return repository; + } + + /** + * This method finds a matching mirror for the selected repository. If there is an exact match, this will be used. + * If there is no exact match, then the list of mirrors is examined to see if a pattern applies. + * + * @param originalRepository See if there is a mirror for this repository. + * @return the selected mirror or null if none are found. + */ + public ArtifactRepository getMirror( ArtifactRepository originalRepository ) + { + ArtifactRepository selectedMirror = mirrors.get( originalRepository.getId() ); + if ( null == selectedMirror ) + { + // Process the patterns in order. First one that matches wins. + Set<String> keySet = mirrors.keySet(); + if ( keySet != null ) + { + for ( String pattern : keySet ) + { + if ( matchPattern( originalRepository, pattern ) ) + { + selectedMirror = mirrors.get( pattern ); + } + } + } + + } + return selectedMirror; + } + + /** + * This method checks if the pattern matches the originalRepository. + * Valid patterns: + * * = everything + * external:* = everything not on the localhost and not file based. + * repo,repo1 = repo or repo1 + * *,!repo1 = everything except repo1 + * + * @param originalRepository to compare for a match. + * @param pattern used for match. Currently only '*' is supported. + * @return true if the repository is a match to this pattern. + */ + public boolean matchPattern( ArtifactRepository originalRepository, String pattern ) + { + boolean result = false; + String originalId = originalRepository.getId(); + + // simple checks first to short circuit processing below. + if ( WILDCARD.equals( pattern ) || pattern.equals( originalId ) ) + { + result = true; + } + else + { + // process the list + String[] repos = pattern.split( "," ); + for (String repo : repos) { + // see if this is a negative match + if (repo.length() > 1 && repo.startsWith("!")) { + if (originalId.equals(repo.substring(1))) { + // explicitly exclude. Set result and stop processing. + result = false; + break; + } + } + // check for exact match + else if (originalId.equals(repo)) { + result = true; + break; + } + // check for external:* + else if (EXTERNAL_WILDCARD.equals(repo) && isExternalRepo(originalRepository)) { + result = true; + // don't stop processing in case a future segment explicitly excludes this repo + } else if (WILDCARD.equals(repo)) { + result = true; + // don't stop processing in case a future segment explicitly excludes this repo + } + } + } + return result; + } + + /** + * Checks the URL to see if this repository refers to an external repository + * + * @param originalRepository + * @return true if external. + */ + public boolean isExternalRepo( ArtifactRepository originalRepository ) + { + try + { + URL url = new URL( originalRepository.getUrl() ); + return !( url.getHost().equals( "localhost" ) || url.getHost().equals( "127.0.0.1" ) || url.getProtocol().equals("file" ) ); + } + catch ( MalformedURLException e ) + { + // bad url just skip it here. It should have been validated already, but the wagon lookup will deal with it + return false; + } + } + + public void addMirror( String id, String mirrorOf, String url ) + { + if ( id == null ) + { + id = "mirror-" + anonymousMirrorIdSeed++; + logger.warn( "You are using a mirror that doesn't declare an <id/> element. Using \'" + id + "\' instead:\nId: " + id + "\nmirrorOf: " + mirrorOf + "\nurl: " + url + "\n" ); + } + + ArtifactRepository mirror = new DefaultArtifactRepository( id, url, null ); + + mirrors.put( mirrorOf, mirror ); + } + + public void setOnline( boolean online ) + { + this.online = online; + } + + public boolean isOnline() + { + return online; + } + + public void setInteractive( boolean interactive ) + { + this.interactive = interactive; + } + + public void setDownloadMonitor( TransferListener downloadMonitor ) + { + this.downloadMonitor = downloadMonitor; + } + + public void addProxy( String protocol, String host, int port, String username, String password, String nonProxyHosts ) + { + ProxyInfo proxyInfo = new ProxyInfo(); + proxyInfo.setHost( host ); + proxyInfo.setType( protocol ); + proxyInfo.setPort( port ); + proxyInfo.setNonProxyHosts( nonProxyHosts ); + proxyInfo.setUserName( username ); + proxyInfo.setPassword( password ); + + proxies.put( protocol, proxyInfo ); + } + + public void addAuthenticationInfo( String repositoryId, String username, String password, String privateKey, String passphrase ) + { + AuthenticationInfo authInfo = new AuthenticationInfo(); + authInfo.setUserName( username ); + authInfo.setPassword( password ); + authInfo.setPrivateKey( privateKey ); + authInfo.setPassphrase( passphrase ); + + authenticationInfoMap.put( repositoryId, authInfo ); + } + + public void addPermissionInfo( String repositoryId, String filePermissions, String directoryPermissions ) + { + RepositoryPermissions permissions = new RepositoryPermissions(); + + boolean addPermissions = false; + + if ( filePermissions != null ) + { + permissions.setFileMode( filePermissions ); + addPermissions = true; + } + + if ( directoryPermissions != null ) + { + permissions.setDirectoryMode( directoryPermissions ); + addPermissions = true; + } + + if ( addPermissions ) + { + serverPermissionsMap.put( repositoryId, permissions ); + } + } + + // Test for this stuff + + /* + + public void testAddMirrorWithNullRepositoryId() + { + wagonManager.addMirror( null, "test", "http://www.nowhere.com/" ); + } + + public void testGetArtifactSha1MissingMd5Present() + throws IOException, UnsupportedProtocolException, TransferFailedException, ResourceDoesNotExistException + { + Artifact artifact = createTestPomArtifact( "target/test-data/get-remote-artifact" ); + + ArtifactRepository repo = createStringRepo(); + + StringWagon wagon = (StringWagon) wagonManager.getWagon( "string" ); + wagon.addExpectedContent( repo.getLayout().pathOf( artifact ), "expected" ); + wagon.addExpectedContent( repo.getLayout().pathOf( artifact ) + ".md5", "bad_checksum" ); + + wagonManager.getArtifact( artifact, repo, true ); + + assertTrue( artifact.getFile().exists() ); + } + + public void testExternalURL() + { + DefaultWagonManager mgr = new DefaultWagonManager(); + assertTrue( mgr.isExternalRepo( getRepo( "foo", "http://somehost" ) ) ); + assertTrue( mgr.isExternalRepo( getRepo( "foo", "http://somehost:9090/somepath" ) ) ); + assertTrue( mgr.isExternalRepo( getRepo( "foo", "ftp://somehost" ) ) ); + assertTrue( mgr.isExternalRepo( getRepo( "foo", "http://192.168.101.1" ) ) ); + assertTrue( mgr.isExternalRepo( getRepo( "foo", "http://" ) ) ); + // these are local + assertFalse( mgr.isExternalRepo( getRepo( "foo", "http://localhost:8080" ) ) ); + assertFalse( mgr.isExternalRepo( getRepo( "foo", "http://127.0.0.1:9090" ) ) ); + assertFalse( mgr.isExternalRepo( getRepo( "foo", "file://localhost/somepath" ) ) ); + assertFalse( mgr.isExternalRepo( getRepo( "foo", "file://localhost/D:/somepath" ) ) ); + assertFalse( mgr.isExternalRepo( getRepo( "foo", "http://localhost" ) ) ); + assertFalse( mgr.isExternalRepo( getRepo( "foo", "http://127.0.0.1" ) ) ); + assertFalse( mgr.isExternalRepo( getRepo( "foo", "file:///somepath" ) ) ); + assertFalse( mgr.isExternalRepo( getRepo( "foo", "file://D:/somepath" ) ) ); + + // not a proper url so returns false; + assertFalse( mgr.isExternalRepo( getRepo( "foo", "192.168.101.1" ) ) ); + assertFalse( mgr.isExternalRepo( getRepo( "foo", "" ) ) ); + } + + public void testMirrorLookup() + { + wagonManager.addMirror( "a", "a", "http://a" ); + wagonManager.addMirror( "b", "b", "http://b" ); + + ArtifactRepository repo = null; + repo = wagonManager.getMirrorRepository( getRepo( "a", "http://a.a" ) ); + assertEquals( "http://a", repo.getUrl() ); + + repo = wagonManager.getMirrorRepository( getRepo( "b", "http://a.a" ) ); + assertEquals( "http://b", repo.getUrl() ); + + repo = wagonManager.getMirrorRepository( getRepo( "c", "http://c.c" ) ); + assertEquals( "http://c.c", repo.getUrl() ); + + } + + public void testMirrorWildcardLookup() + { + wagonManager.addMirror( "a", "a", "http://a" ); + wagonManager.addMirror( "b", "b", "http://b" ); + wagonManager.addMirror( "c", "*", "http://wildcard" ); + + ArtifactRepository repo = null; + repo = wagonManager.getMirrorRepository( getRepo( "a", "http://a.a" ) ); + assertEquals( "http://a", repo.getUrl() ); + + repo = wagonManager.getMirrorRepository( getRepo( "b", "http://a.a" ) ); + assertEquals( "http://b", repo.getUrl() ); + + repo = wagonManager.getMirrorRepository( getRepo( "c", "http://c.c" ) ); + assertEquals( "http://wildcard", repo.getUrl() ); + + } + + public void testMirrorStopOnFirstMatch() + { + //exact matches win first + wagonManager.addMirror( "a2", "a,b", "http://a2" ); + wagonManager.addMirror( "a", "a", "http://a" ); + //make sure repeated entries are skipped + wagonManager.addMirror( "a", "a", "http://a3" ); + + wagonManager.addMirror( "b", "b", "http://b" ); + wagonManager.addMirror( "c", "d,e", "http://de" ); + wagonManager.addMirror( "c", "*", "http://wildcard" ); + wagonManager.addMirror( "c", "e,f", "http://ef" ); + + + + ArtifactRepository repo = null; + repo = wagonManager.getMirrorRepository( getRepo( "a", "http://a.a" ) ); + assertEquals( "http://a", repo.getUrl() ); + + repo = wagonManager.getMirrorRepository( getRepo( "b", "http://a.a" ) ); + assertEquals( "http://b", repo.getUrl() ); + + repo = wagonManager.getMirrorRepository( getRepo( "c", "http://c.c" ) ); + assertEquals( "http://wildcard", repo.getUrl() ); + + repo = wagonManager.getMirrorRepository( getRepo( "d", "http://d" ) ); + assertEquals( "http://de", repo.getUrl() ); + + repo = wagonManager.getMirrorRepository( getRepo( "e", "http://e" ) ); + assertEquals( "http://de", repo.getUrl() ); + + repo = wagonManager.getMirrorRepository( getRepo( "f", "http://f" ) ); + assertEquals( "http://wildcard", repo.getUrl() ); + + } + + + public void testPatterns() + { + DefaultWagonManager mgr = new DefaultWagonManager(); + + assertTrue( mgr.matchPattern( getRepo( "a" ), "*" ) ); + assertTrue( mgr.matchPattern( getRepo( "a" ), "*," ) ); + assertTrue( mgr.matchPattern( getRepo( "a" ), ",*," ) ); + assertTrue( mgr.matchPattern( getRepo( "a" ), "*," ) ); + + assertTrue( mgr.matchPattern( getRepo( "a" ), "a" ) ); + assertTrue( mgr.matchPattern( getRepo( "a" ), "a," ) ); + assertTrue( mgr.matchPattern( getRepo( "a" ), ",a," ) ); + assertTrue( mgr.matchPattern( getRepo( "a" ), "a," ) ); + + assertFalse( mgr.matchPattern( getRepo( "b" ), "a" ) ); + assertFalse( mgr.matchPattern( getRepo( "b" ), "a," ) ); + assertFalse( mgr.matchPattern( getRepo( "b" ), ",a" ) ); + assertFalse( mgr.matchPattern( getRepo( "b" ), ",a," ) ); + + assertTrue( mgr.matchPattern( getRepo( "a" ), "a,b" ) ); + assertTrue( mgr.matchPattern( getRepo( "b" ), "a,b" ) ); + + assertFalse( mgr.matchPattern( getRepo( "c" ), "a,b" ) ); + + assertTrue( mgr.matchPattern( getRepo( "a" ), "*" ) ); + assertTrue( mgr.matchPattern( getRepo( "a" ), "*,b" ) ); + assertTrue( mgr.matchPattern( getRepo( "a" ), "*,!b" ) ); + + assertFalse( mgr.matchPattern( getRepo( "a" ), "*,!a" ) ); + assertFalse( mgr.matchPattern( getRepo( "a" ), "!a,*" ) ); + + assertTrue( mgr.matchPattern( getRepo( "c" ), "*,!a" ) ); + assertTrue( mgr.matchPattern( getRepo( "c" ), "!a,*" ) ); + + assertFalse( mgr.matchPattern( getRepo( "c" ), "!a,!c" ) ); + assertFalse( mgr.matchPattern( getRepo( "d" ), "!a,!c*" ) ); + } + + public void testPatternsWithExternal() + { + DefaultWagonManager mgr = new DefaultWagonManager(); + + assertTrue( mgr.matchPattern( getRepo( "a", "http://localhost" ), "*" ) ); + assertFalse( mgr.matchPattern( getRepo( "a", "http://localhost" ), "external:*" ) ); + + assertTrue( mgr.matchPattern( getRepo( "a", "http://localhost" ), "external:*,a" ) ); + assertFalse( mgr.matchPattern( getRepo( "a", "http://localhost" ), "external:*,!a" ) ); + assertTrue( mgr.matchPattern( getRepo( "a", "http://localhost" ), "a,external:*" ) ); + assertFalse( mgr.matchPattern( getRepo( "a", "http://localhost" ), "!a,external:*" ) ); + + assertFalse( mgr.matchPattern( getRepo( "c", "http://localhost" ), "!a,external:*" ) ); + assertTrue( mgr.matchPattern( getRepo( "c", "http://somehost" ), "!a,external:*" ) ); + } + + */ } Modified: maven/components/branches/MNG-3932-1/maven-project/src/main/java/org/apache/maven/MavenTools.java URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-3932-1/maven-project/src/main/java/org/apache/maven/MavenTools.java?rev=746150&r1=746149&r2=746150&view=diff ============================================================================== --- maven/components/branches/MNG-3932-1/maven-project/src/main/java/org/apache/maven/MavenTools.java (original) +++ maven/components/branches/MNG-3932-1/maven-project/src/main/java/org/apache/maven/MavenTools.java Fri Feb 20 05:38:03 2009 @@ -19,18 +19,18 @@ * under the License. */ +import java.io.IOException; +import java.util.List; + import org.apache.maven.artifact.Artifact; import org.apache.maven.artifact.InvalidRepositoryException; import org.apache.maven.artifact.repository.ArtifactRepository; import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy; -import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout; import org.apache.maven.model.DeploymentRepository; import org.apache.maven.model.Model; import org.apache.maven.model.Repository; import org.apache.maven.project.ProjectBuildingException; - -import java.io.IOException; -import java.util.List; +import org.apache.maven.wagon.events.TransferListener; /** * @author Jason van Zyl @@ -69,4 +69,30 @@ void resolve( Artifact artifact, ArtifactRepository localRepository, List<ArtifactRepository> remoteRepositories ) throws IOException; + + // WagonManager + + ArtifactRepository getMirrorRepository( ArtifactRepository repository ); + + ArtifactRepository getMirror( ArtifactRepository originalRepository ); + + boolean matchPattern( ArtifactRepository originalRepository, String pattern ); + + boolean isExternalRepo( ArtifactRepository originalRepository ); + + void addMirror( String id, String mirrorOf, String url ); + + void setOnline( boolean online ); + + boolean isOnline(); + + void setInteractive( boolean interactive ); + + void setDownloadMonitor( TransferListener downloadMonitor ); + + void addProxy( String protocol, String host, int port, String username, String password, String nonProxyHosts ); + + void addAuthenticationInfo( String repositoryId, String username, String password, String privateKey, String passphrase ); + + void addPermissionInfo( String repositoryId, String filePermissions, String directoryPermissions ); } Modified: maven/components/branches/MNG-3932-1/maven-project/src/test/java/org/apache/maven/project/builder/PomConstructionTest.java URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-3932-1/maven-project/src/test/java/org/apache/maven/project/builder/PomConstructionTest.java?rev=746150&r1=746149&r2=746150&view=diff ============================================================================== --- maven/components/branches/MNG-3932-1/maven-project/src/test/java/org/apache/maven/project/builder/PomConstructionTest.java (original) +++ maven/components/branches/MNG-3932-1/maven-project/src/test/java/org/apache/maven/project/builder/PomConstructionTest.java Fri Feb 20 05:38:03 2009 @@ -813,6 +813,19 @@ } /** MNG-4027 + public void testProjectInjectedDependencies() + throws Exception + { + PomTestWrapper pom = buildPom( "profile-injected-dependencies" ); + assertEquals( 4, ( (List<?>) pom.getValue( "dependencies" ) ).size() ); + assertEquals( "a", pom.getValue( "dependencies[1]/artifactId" ) ); + assertEquals( "c", pom.getValue( "dependencies[2]/artifactId" ) ); + assertEquals( "b", pom.getValue( "dependencies[3]/artifactId" ) ); + assertEquals( "d", pom.getValue( "dependencies[4]/artifactId" ) ); + } + //*/ + + /** MNG-4027 public void testProfileInjectedDependencies() throws Exception { Modified: maven/components/branches/MNG-3932-1/pom.xml URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-3932-1/pom.xml?rev=746150&r1=746149&r2=746150&view=diff ============================================================================== --- maven/components/branches/MNG-3932-1/pom.xml (original) +++ maven/components/branches/MNG-3932-1/pom.xml Fri Feb 20 05:38:03 2009 @@ -55,9 +55,9 @@ <plexusUtilsVersion>1.5.8</plexusUtilsVersion> <wagonVersion>1.0-beta-4</wagonVersion> <modelBuilderVersion>1.3</modelBuilderVersion> - <mercuryVersion>1.0-alpha-5</mercuryVersion> + <mercuryVersion>1.0.0-alpha-4</mercuryVersion> <mercuryMp3Version>1.0-alpha-1</mercuryMp3Version> - <securityDispatcherVersion>1.0</securityDispatcherVersion> + <securityDispatcherVersion>1.0-alpha-4-SNAPSHOT</securityDispatcherVersion> <woodstoxVersion>3.2.6</woodstoxVersion> <modelloVersion>1.0.1-SNAPSHOT</modelloVersion> <jxpathVersion>1.3</jxpathVersion> @@ -415,12 +415,11 @@ </exclusion> </exclusions> </dependency> - <dependency> - <groupId>commons-jxpath</groupId> - <artifactId>commons-jxpath</artifactId> + <dependency> + <groupId>commons-jxpath</groupId> + <artifactId>commons-jxpath</artifactId> <version>${jxpathVersion}</version> - </dependency> - + </dependency> <!-- Mercury --> <dependency> <groupId>org.apache.maven.mercury</groupId> @@ -436,7 +435,7 @@ <groupId>org.sonatype.mercury</groupId> <artifactId>mercury-mp3-cli</artifactId> <version>${mercuryMp3Version}</version> - </dependency> + </dependency> <dependency> <groupId>org.sonatype.plexus</groupId> <artifactId>plexus-sec-dispatcher</artifactId>
