From 5988d021d1ec6528bc0c657128c7c6c2bf94f802 Mon Sep 17 00:00:00 2001 From: Britton Isbell Date: Fri, 24 Apr 2009 03:18:51 +0000 Subject: [PATCH] Fixed interpolation in maven-mercury. git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@768140 13f79535-47bb-0310-9956-ffa450edef68 --- .../mercury/MavenDependencyProcessor.java | 24 +++-- .../mercury/MavenDependencyProcessorTest.java | 90 ++++++++++--------- 2 files changed, 64 insertions(+), 50 deletions(-) diff --git a/maven-mercury/src/main/java/org/apache/maven/mercury/MavenDependencyProcessor.java b/maven-mercury/src/main/java/org/apache/maven/mercury/MavenDependencyProcessor.java index 6708ce2e6f..95b25a17ce 100644 --- a/maven-mercury/src/main/java/org/apache/maven/mercury/MavenDependencyProcessor.java +++ b/maven-mercury/src/main/java/org/apache/maven/mercury/MavenDependencyProcessor.java @@ -21,6 +21,7 @@ package org.apache.maven.mercury; import java.io.IOException; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.Map; @@ -30,6 +31,7 @@ import org.apache.maven.mercury.builder.api.DependencyProcessorException; import org.apache.maven.mercury.builder.api.MetadataReader; import org.apache.maven.mercury.builder.api.MetadataReaderException; import org.apache.maven.model.DomainModel; +import org.apache.maven.model.PomClassicDomainModel; import org.apache.maven.model.ProcessorContext; import org.apache.maven.model.interpolator.DefaultInterpolator; import org.apache.maven.model.interpolator.InterpolatorProperty; @@ -68,7 +70,7 @@ public class MavenDependencyProcessor List interpolatorProperties = createInterpolatorProperties(system, user); - List domainModels = new ArrayList(); + List domainModels = new ArrayList(); try { // MavenDomainModel superPom = @@ -93,7 +95,7 @@ public class MavenDependencyProcessor domainModels.add( new MavenDomainModel( transformProfiles( mc.getProperties() ) ) ); } */ - List parentModels = getParentsOfDomainModel( domainModel, mdReader ); + List parentModels = getParentsOfDomainModel( domainModel, mdReader ); if ( parentModels == null ) { @@ -107,11 +109,19 @@ public class MavenDependencyProcessor throw new MetadataReaderException( "Failed to create domain model. Message = " + e.getMessage(), e ); } + List iModels = new ArrayList(); + + try { - return new MavenDomainModel(new DefaultInterpolator().interpolateDomainModel(ProcessorContext.build(domainModels, null), - interpolatorProperties)).getDependencyMetadata(); + for(PomClassicDomainModel m : domainModels) + { + iModels.add(new DefaultInterpolator().interpolateDomainModel(m, interpolatorProperties)); + } + iModels.get(0).setMostSpecialized(true); + + return new MavenDomainModel(ProcessorContext.build(iModels, null)).getDependencyMetadata(); } catch (IOException e) { - throw new DependencyProcessorException(); + throw new DependencyProcessorException(e); } } @@ -135,10 +145,10 @@ public class MavenDependencyProcessor return interpolatorProperties; } - protected final List getParentsOfDomainModel( MavenDomainModel domainModel, MetadataReader mdReader ) + protected final List getParentsOfDomainModel( MavenDomainModel domainModel, MetadataReader mdReader ) throws IOException, MetadataReaderException, DependencyProcessorException { - List domainModels = new ArrayList(); + List domainModels = new ArrayList(); if ( domainModel.hasParent() ) { byte[] b = mdReader.readMetadata( domainModel.getParentMetadata() ); diff --git a/maven-mercury/src/test/java/org/apache/maven/mercury/MavenDependencyProcessorTest.java b/maven-mercury/src/test/java/org/apache/maven/mercury/MavenDependencyProcessorTest.java index 737e713361..f3ad75b2cd 100644 --- a/maven-mercury/src/test/java/org/apache/maven/mercury/MavenDependencyProcessorTest.java +++ b/maven-mercury/src/test/java/org/apache/maven/mercury/MavenDependencyProcessorTest.java @@ -1,15 +1,16 @@ package org.apache.maven.mercury; - + +import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; - + import java.io.File; import java.net.URL; import java.util.ArrayList; import java.util.List; - + import org.apache.maven.mercury.artifact.ArtifactMetadata; import org.apache.maven.mercury.metadata.DependencyBuilder; import org.apache.maven.mercury.metadata.DependencyBuilderFactory; @@ -23,7 +24,7 @@ import org.apache.maven.mercury.util.FileUtil; import org.junit.After; import org.junit.Before; import org.junit.Test; - + /** * * @@ -34,25 +35,25 @@ import org.junit.Test; public class MavenDependencyProcessorTest { LocalRepositoryM2 _localRepo; - + RemoteRepositoryM2 _remoteRepo; - + File _localRepoFile; - + static final String _remoteRepoDir = "./target/test-classes/repo"; - + File _remoteRepoFile; - - static final String _remoteRepoUrlPrefix = "http://localhost:"; - - static final String _remoteRepoUrlSufix = "/maven2"; - + + static String _remoteRepoUrlPrefix = "http://localhost:"; + + static String _remoteRepoUrlSufix = "/maven2"; + // HttpTestServer _jetty; - + int _port; - + DependencyBuilder _depBuilder; - + /** * @throws java.lang.Exception */ @@ -61,30 +62,35 @@ public class MavenDependencyProcessorTest throws Exception { MavenDependencyProcessor dp = new MavenDependencyProcessor(); - + _localRepoFile = File.createTempFile( "maven-mercury-", "-test-repo" ); FileUtil.delete( _localRepoFile ); _localRepoFile.mkdirs(); _localRepoFile.deleteOnExit(); _localRepo = new LocalRepositoryM2( "localRepo", _localRepoFile, dp ); - + _remoteRepoFile = new File( _remoteRepoDir ); // _jetty = new HttpTestServer( _remoteRepoFile, _remoteRepoUrlSufix ); // FIXME 2009-02-12 Oleg: disabling not to mess with jetty server. Will move to Mercury ITs // _jetty.start(); // _port = _jetty.getPort(); - + +// Server server = new Server( "testRemote", new URL(_remoteRepoUrlPrefix + _port + _remoteRepoUrlSufix) ); + + _remoteRepoUrlPrefix = "http://repo2.maven.org:"; + _port = 80; + _remoteRepoUrlSufix = "/maven2"; Server server = new Server( "testRemote", new URL(_remoteRepoUrlPrefix + _port + _remoteRepoUrlSufix) ); _remoteRepo = new RemoteRepositoryM2( server, dp ); - + ArrayList repos = new ArrayList(2); - + repos.add( _localRepo ); repos.add( _remoteRepo ); - + _depBuilder = DependencyBuilderFactory.create( DependencyBuilderFactory.JAVA_DEPENDENCY_MODEL, repos, null, null, null ); } - + /** * @throws java.lang.Exception */ @@ -101,47 +107,45 @@ public class MavenDependencyProcessorTest // System.out.println( "Jetty on :" + _port + " destroyed\n<========\n\n" ); // } } - + @Test public void testDummy() throws Exception { - + } - + /** * Test method for {@link org.apache.maven.mercury.MavenDependencyProcessor#getDependencies(org.apache.maven.mercury.artifact.ArtifactMetadata, org.apache.maven.mercury.builder.api.MetadataReader, java.util.Map, java.util.Map)}. */ + @Test public void testMavenVersion() throws Exception { RepositoryReader rr = _remoteRepo.getReader(); - - String gav = "org.apache.maven.plugins:maven-dependency-plugin:2.0"; - + +// String gav = "org.apache.maven.plugins:maven-dependency-plugin:2.0"; + String gav = "asm:asm-xml:3.0"; + ArtifactMetadata bmd = new ArtifactMetadata( gav ); ArrayList query = new ArrayList(1); query.add( bmd ); - + MetadataResults res = rr.readDependencies( query ); - + assertNotNull( res ); - + assertFalse( res.hasExceptions() ); - + assertTrue( res.hasResults() ); - + List deps = res.getResult( bmd ); - + assertNotNull( deps ); - + assertFalse( deps.isEmpty() ); - + assertEquals("3.0", deps.get(0).getVersion()); System.out.println(deps); - - for( ArtifactMetadata md : deps ) - if( "${maven.version}".equals( md.getVersion() ) ) - fail( "dependency has unresolved variable: "+md.toString() ); } - -} + +} \ No newline at end of file