Author: sisbell Date: Thu Apr 16 16:50:46 2009 New Revision: 765684 URL: http://svn.apache.org/viewvc?rev=765684&view=rev Log: Support for build extensions. Updated maven-mercury to use latest project builder code. Dumped all references to model-builder.
Removed: maven/components/trunk/maven-core/src/test/java/org/apache/maven/lifecycle/plan/testutils/ maven/components/trunk/maven-mercury/src/main/java/org/apache/maven/mercury/MavenDependencyProcessor2.java maven/components/trunk/maven-mercury/src/main/java/org/apache/maven/mercury/MavenDomainModelFactory.java maven/components/trunk/maven-mercury/src/main/java/org/apache/maven/mercury/PomProcessor.java maven/components/trunk/maven-mercury/src/main/java/org/apache/maven/mercury/PomProcessorException.java maven/components/trunk/maven-mercury/src/main/java/org/apache/maven/project/builder/factories/ maven/components/trunk/maven-mercury/src/main/java/org/apache/maven/project/builder/legacy/ maven/components/trunk/maven-mercury/src/main/java/org/apache/maven/project/builder/profile/ maven/components/trunk/maven-mercury/src/main/java/org/apache/maven/project/builder/rules/ Modified: maven/components/trunk/maven-core/pom.xml maven/components/trunk/maven-core/src/main/java/org/apache/maven/listeners/BuildExtensionListener.java maven/components/trunk/maven-core/src/main/java/org/apache/maven/listeners/MavenModelEventListener.java maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java maven/components/trunk/maven-core/src/test/java/org/apache/maven/listeners/BuildExtensionListenerTest.java maven/components/trunk/maven-core/src/test/java/org/apache/maven/project/harness/PomTestWrapper.java maven/components/trunk/maven-mercury/pom.xml maven/components/trunk/maven-mercury/src/main/java/org/apache/maven/mercury/MavenDependencyProcessor.java maven/components/trunk/maven-mercury/src/main/java/org/apache/maven/mercury/MavenDomainModel.java maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/ModelEventListener.java maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/PomClassicDomainModel.java maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/ProcessorContext.java maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/PomConstructionTest.java Modified: maven/components/trunk/maven-core/pom.xml URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/pom.xml?rev=765684&r1=765683&r2=765684&view=diff ============================================================================== --- maven/components/trunk/maven-core/pom.xml (original) +++ maven/components/trunk/maven-core/pom.xml Thu Apr 16 16:50:46 2009 @@ -28,10 +28,6 @@ <groupId>org.apache.maven</groupId> <artifactId>maven-reporting-api</artifactId> </dependency> - <dependency> - <groupId>org.apache.maven</groupId> - <artifactId>maven-model</artifactId> - </dependency> <!-- Required for Maven Artifact mediator as we phase it out. --> <dependency> <groupId>org.apache.maven</groupId> @@ -110,10 +106,6 @@ <version>${project.version}</version> </dependency> <dependency> - <groupId>org.sonatype.spice</groupId> - <artifactId>model-builder</artifactId> - </dependency> - <dependency> <groupId>org.sonatype.plexus</groupId> <artifactId>plexus-sec-dispatcher</artifactId> </dependency> @@ -121,6 +113,20 @@ <groupId>commons-jxpath</groupId> <artifactId>commons-jxpath</artifactId> </dependency> + + <dependency> + <groupId>org.apache.maven.mercury</groupId> + <artifactId>mercury-repo-remote-m2</artifactId> + <version>${mercuryVersion}</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.apache.maven.mercury</groupId> + <artifactId>mercury-transport-http</artifactId> + <version>${mercuryVersion}</version> + <scope>test</scope> + </dependency> + </dependencies> <build> <plugins> Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/listeners/BuildExtensionListener.java URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/listeners/BuildExtensionListener.java?rev=765684&r1=765683&r2=765684&view=diff ============================================================================== --- maven/components/trunk/maven-core/src/main/java/org/apache/maven/listeners/BuildExtensionListener.java (original) +++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/listeners/BuildExtensionListener.java Thu Apr 16 16:50:46 2009 @@ -2,17 +2,13 @@ import java.util.ArrayList; import java.util.Arrays; -import java.util.Collection; import java.util.List; import org.apache.maven.artifact.repository.ArtifactRepository; import org.apache.maven.execution.MavenSession; -import org.apache.maven.project.builder.factories.ArtifactModelContainerFactory; +import org.apache.maven.model.Extension; +import org.apache.maven.model.Model; import org.apache.maven.project.builder.ProjectUri; -import org.apache.maven.shared.model.DataSourceException; -import org.apache.maven.shared.model.ModelContainer; -import org.apache.maven.shared.model.ModelContainerFactory; -import org.apache.maven.shared.model.ModelProperty; import org.codehaus.plexus.classworlds.realm.ClassRealm; import org.codehaus.plexus.component.annotations.Component; import org.codehaus.plexus.component.annotations.Configuration; @@ -43,81 +39,17 @@ @Requirement PlexusPluginManager pluginManager; - private List<BuildExtension> buildExtensions = new ArrayList<BuildExtension>(); - - public void fire(List<? extends ModelContainer> modelContainers) - throws DataSourceException - { - if ( !inBuild ) - { - return; - } - - for ( ModelContainer mc : modelContainers ) - { - if ( hasExtension( mc ) ) - { - buildExtensions.add( new BuildExtension( mc.getProperties() ) ); - } - } + private List<Extension> buildExtensions = new ArrayList<Extension>(); + + public void fire(Model model) + { + buildExtensions.addAll(new ArrayList<Extension>(model.getBuild().getExtensions())); } public List<String> getUris() { return Arrays.asList( ProjectUri.Build.Extensions.Extension.xUri ); } - - public Collection<ModelContainerFactory> getModelContainerFactories() - { - return Arrays.asList( (ModelContainerFactory) new ArtifactModelContainerFactory() ); - } - - private static boolean hasExtension( ModelContainer container ) - { - for ( ModelProperty mp : container.getProperties() ) - { - if ( mp.getUri().equals( ProjectUri.Build.Extensions.Extension.xUri ) ) - { - return true; - } - } - return false; - } - - private static class BuildExtension - { - private String groupId; - - private String artifactId; - - private String version; - - public BuildExtension( String groupId, String artifactId, String version ) - { - this.groupId = groupId; - this.artifactId = artifactId; - this.version = version; - } - - BuildExtension( List<ModelProperty> modelProperties ) - { - for ( ModelProperty mp : modelProperties ) - { - if ( mp.getUri().equals( ProjectUri.Build.Extensions.Extension.groupId ) ) - { - groupId = mp.getValue(); - } - else if ( mp.getUri().equals( ProjectUri.Build.Extensions.Extension.artifactId ) ) - { - artifactId = mp.getValue(); - } - else if ( mp.getUri().equals( ProjectUri.Build.Extensions.Extension.version ) ) - { - version = mp.getValue(); - } - } - } - } /** * Take the extension elements that were found during the POM construction process and now @@ -129,11 +61,16 @@ * @param session Maven session used as the execution context for the current Maven project. */ public void processModelContainers( MavenSession session ) - { - for ( BuildExtension be : buildExtensions ) + { + if(!inBuild) + { + return; + } + + for ( Extension be : buildExtensions ) { PluginResolutionRequest request = new PluginResolutionRequest() - .setPluginMetadata( new PluginMetadata( be.groupId, be.artifactId, be.version ) ) + .setPluginMetadata( new PluginMetadata( be.getGroupId(), be.getArtifactId(), be.getVersion() ) ) .addLocalRepository( session.getRequest().getLocalRepositoryPath() ) .setRemoteRepositories( convertToMercuryRepositories( session.getRequest().getRemoteRepositories() ) ); Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/listeners/MavenModelEventListener.java URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/listeners/MavenModelEventListener.java?rev=765684&r1=765683&r2=765684&view=diff ============================================================================== --- maven/components/trunk/maven-core/src/main/java/org/apache/maven/listeners/MavenModelEventListener.java (original) +++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/listeners/MavenModelEventListener.java Thu Apr 16 16:50:46 2009 @@ -1,7 +1,8 @@ package org.apache.maven.listeners; import org.apache.maven.execution.MavenSession; -import org.apache.maven.shared.model.ModelEventListener; +import org.apache.maven.project.builder.ModelEventListener; + public interface MavenModelEventListener extends ModelEventListener Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java?rev=765684&r1=765683&r2=765684&view=diff ============================================================================== --- maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java (original) +++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java Thu Apr 16 16:50:46 2009 @@ -73,9 +73,11 @@ import org.apache.maven.project.MavenProjectBuilder; import org.apache.maven.project.ProjectBuildingException; import org.apache.maven.project.artifact.InvalidDependencyVersionException; +import org.apache.maven.project.builder.InterpolatorProperty; +import org.apache.maven.project.builder.ModelProperty; import org.apache.maven.project.builder.PomInterpolatorTag; +import org.apache.maven.project.builder.ProcessorContext; import org.apache.maven.project.builder.ProjectUri; -import org.apache.maven.project.builder.legacy.PomTransformer; import org.apache.maven.project.path.PathTranslator; import org.apache.maven.realm.MavenRealmManager; import org.apache.maven.realm.RealmManagementException; @@ -83,10 +85,6 @@ import org.apache.maven.reporting.MavenReport; import org.apache.maven.repository.RepositorySystem; import org.apache.maven.repository.VersionNotFoundException; -import org.apache.maven.shared.model.InterpolatorProperty; -import org.apache.maven.shared.model.ModelMarshaller; -import org.apache.maven.shared.model.ModelProperty; -import org.apache.maven.shared.model.ModelTransformerContext; import org.codehaus.plexus.PlexusContainer; import org.codehaus.plexus.classworlds.realm.ClassRealm; import org.codehaus.plexus.component.annotations.Component; @@ -1531,13 +1529,13 @@ private static String interpolateXmlString( String xml, List<InterpolatorProperty> interpolatorProperties ) throws IOException { - List<ModelProperty> modelProperties = ModelMarshaller.marshallXmlToModelProperties( new ByteArrayInputStream( xml.getBytes() ), ProjectUri.baseUri, PomTransformer.URIS ); + List<ModelProperty> modelProperties = ProcessorContext.marshallXmlToModelProperties( new ByteArrayInputStream( xml.getBytes() ), ProjectUri.baseUri, ProcessorContext.URIS ); Map<String, String> aliases = new HashMap<String, String>(); aliases.put( "project.", "pom." ); List<InterpolatorProperty> ips = new ArrayList<InterpolatorProperty>( interpolatorProperties ); - ips.addAll( ModelTransformerContext.createInterpolatorProperties( modelProperties, ProjectUri.baseUri, aliases, PomInterpolatorTag.PROJECT_PROPERTIES.name(), false, false ) ); + ips.addAll( ProcessorContext.createInterpolatorProperties( modelProperties, ProjectUri.baseUri, aliases, PomInterpolatorTag.PROJECT_PROPERTIES.name()) ); for ( ModelProperty mp : modelProperties ) { @@ -1548,8 +1546,8 @@ } } - ModelTransformerContext.interpolateModelProperties( modelProperties, ips ); - return ModelMarshaller.unmarshalModelPropertiesToXml( modelProperties, ProjectUri.baseUri ); + ProcessorContext.interpolateModelProperties( modelProperties, ips ); + return ProcessorContext.unmarshalModelPropertiesToXml( modelProperties, ProjectUri.baseUri ); } // Plugin Prefix Loader Modified: maven/components/trunk/maven-core/src/test/java/org/apache/maven/listeners/BuildExtensionListenerTest.java URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/test/java/org/apache/maven/listeners/BuildExtensionListenerTest.java?rev=765684&r1=765683&r2=765684&view=diff ============================================================================== --- maven/components/trunk/maven-core/src/test/java/org/apache/maven/listeners/BuildExtensionListenerTest.java (original) +++ maven/components/trunk/maven-core/src/test/java/org/apache/maven/listeners/BuildExtensionListenerTest.java Thu Apr 16 16:50:46 2009 @@ -11,13 +11,12 @@ import org.apache.maven.execution.MavenExecutionRequest; import org.apache.maven.execution.MavenSession; import org.apache.maven.execution.ReactorManager; +import org.apache.maven.model.Build; +import org.apache.maven.model.Extension; import org.apache.maven.model.Model; import org.apache.maven.monitor.event.DefaultEventDispatcher; import org.apache.maven.project.MavenProject; import org.apache.maven.project.builder.ProjectUri; -import org.apache.maven.shared.model.ModelContainer; -import org.apache.maven.shared.model.ModelContainerAction; -import org.apache.maven.shared.model.ModelProperty; import org.apache.maven.wagon.Wagon; import org.codehaus.plexus.PlexusTestCase; import org.codehaus.plexus.util.dag.CycleDetectedException; @@ -28,19 +27,21 @@ public void testBuildExtensionListener() throws Exception { - /*DISABLE - the listener is in the old model-builder code - need to add back in support BuildExtensionListener listener = (BuildExtensionListener) lookup( MavenModelEventListener.class, "extensions" ); - // Create the model properties and the model container to feed to the event firing - List<ModelProperty> modelProperties = new ArrayList<ModelProperty>(); - modelProperties.add( new ModelProperty( ProjectUri.Build.Extensions.Extension.xUri, null ) ); - modelProperties.add( new ModelProperty( ProjectUri.Build.Extensions.Extension.groupId, "org.apache.maven.wagon" ) ); - modelProperties.add( new ModelProperty( ProjectUri.Build.Extensions.Extension.artifactId, "wagon-webdav" ) ); - modelProperties.add( new ModelProperty( ProjectUri.Build.Extensions.Extension.version, "1.0-beta-2" ) ); - ModelContainer container = new TestModelContainer( modelProperties ); - + Extension extension = new Extension(); + extension.setGroupId("org.apache.maven.wagon" ); + extension.setArtifactId("wagon-webdav" ); + extension.setVersion( "1.0-beta-2" ); + + Build build = new Build(); + build.addExtension(extension); + + Model model = new Model(); + model.setBuild(build); + // Fire the event. - listener.fire( Arrays.asList( container ) ); + listener.fire( model ); try { @@ -56,9 +57,7 @@ listener.processModelContainers( newMavenSession() ); // Now we should be able to find the extension. - // lookup( Wagon.class, "dav" ); - * */ - + lookup( Wagon.class, "dav" ); } private MavenSession newMavenSession() @@ -78,29 +77,4 @@ return session; } - public class TestModelContainer - implements ModelContainer - { - List<ModelProperty> modelProperties; - - public TestModelContainer( List<ModelProperty> properties ) - { - this.modelProperties = properties; - } - - public List<ModelProperty> getProperties() - { - return new ArrayList<ModelProperty>( modelProperties ); - } - - public ModelContainerAction containerAction( ModelContainer modelContainer ) - { - return null; - } - - public ModelContainer createNewInstance( List<ModelProperty> modelProperties ) - { - return null; - } - } } Modified: maven/components/trunk/maven-core/src/test/java/org/apache/maven/project/harness/PomTestWrapper.java URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/test/java/org/apache/maven/project/harness/PomTestWrapper.java?rev=765684&r1=765683&r2=765684&view=diff ============================================================================== --- maven/components/trunk/maven-core/src/test/java/org/apache/maven/project/harness/PomTestWrapper.java (original) +++ maven/components/trunk/maven-core/src/test/java/org/apache/maven/project/harness/PomTestWrapper.java Thu Apr 16 16:50:46 2009 @@ -20,26 +20,18 @@ */ import java.io.*; -import java.util.HashMap; import java.util.Iterator; -import java.util.List; -import java.util.Map; import org.apache.commons.jxpath.JXPathContext; import org.apache.commons.jxpath.JXPathNotFoundException; import org.apache.commons.jxpath.ri.JXPathContextReferenceImpl; -import org.apache.maven.model.Model; -import org.apache.maven.model.io.xpp3.MavenXpp3Writer; import org.apache.maven.model.io.xpp3.MavenXpp3Reader; -import org.apache.maven.project.builder.legacy.PomClassicDomainModel; import org.apache.maven.project.MavenProject; -import org.apache.maven.shared.model.ModelProperty; -import org.codehaus.plexus.util.WriterFactory; +import org.apache.maven.project.builder.PomClassicDomainModel; import org.codehaus.plexus.util.xml.pull.XmlPullParserException; public class PomTestWrapper { - private PomClassicDomainModel domainModel; private File pomFile; @@ -125,7 +117,7 @@ { try { - domainModel = convertToDomainModel( mavenProject.getModel() ); + domainModel = new PomClassicDomainModel( mavenProject.getModel() ); int lineageCount = 1; for ( MavenProject parent = mavenProject.getParent(); parent != null; parent = parent.getParent() ) { @@ -142,30 +134,6 @@ return this.domainModel; } - private PomClassicDomainModel convertToDomainModel(Model model) throws IOException - { - if ( model == null ) - { - throw new IllegalArgumentException( "model: null" ); - } - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - Writer out = null; - MavenXpp3Writer writer = new MavenXpp3Writer(); - try - { - out = WriterFactory.newXmlWriter( baos ); - writer.write( out, model ); - } - finally - { - if ( out != null ) - { - out.close(); - } - } - return new PomClassicDomainModel(new ByteArrayInputStream(baos.toByteArray())); - } - public File getBasedir() { return ( pomFile != null ) ? pomFile.getParentFile() : null; @@ -176,20 +144,6 @@ context.setValue( expression, value ); } - /* - public int containerCountForUri( String uri ) - throws IOException - { - if ( uri == null || uri.trim().equals( "" ) ) - { - throw new IllegalArgumentException( "uri: null or empty" ); - } - ModelDataSource source = new DefaultModelDataSource(); - source.init( domainModel.getModelProperties(), null ); - return source.queryFor( uri ).size(); - } - */ - public Iterator<?> getIteratorForXPathExpression( String expression ) { return context.iterate( expression ); @@ -216,107 +170,4 @@ { return context.getValue( expression ) != null && context.getValue( expression ).equals( value ); } - - public Map<String, String> asMap( boolean withResolvedValues ) - throws IOException - { - Map<String, String> map = new HashMap<String, String>(); - for ( ModelProperty mp : domainModel.getModelProperties() ) - { - if ( withResolvedValues ) - { - map.put( mp.getUri(), mp.getResolvedValue() ); - } - else - { - map.put( mp.getUri(), mp.getValue() ); - } - - } - return map; - } - - public boolean containsModelProperty( ModelProperty modelProperty ) - throws IOException - { - return domainModel.getModelProperties().contains( modelProperty ); - } - - public boolean containsAllModelPropertiesOf( List<ModelProperty> modelProperties ) - throws IOException - { - for ( ModelProperty mp : modelProperties ) - { - if ( !containsModelProperty( mp ) ) - { - return false; - } - } - return true; - } - - public boolean matchModelProperties( List<ModelProperty> hasProperties, List<ModelProperty> doesNotHaveProperties ) - throws IOException - { - return containsAllModelPropertiesOf( hasProperties ) && containNoModelPropertiesOf( doesNotHaveProperties ); - } - - public boolean matchUris( List<String> hasAllUris, List<String> doesNotHaveUris ) - throws IOException - { - return hasAllUris( hasAllUris ) && hasNoUris( doesNotHaveUris ); - } - - public boolean containNoModelPropertiesOf( List<ModelProperty> modelProperties ) - throws IOException - { - for ( ModelProperty mp : modelProperties ) - { - if ( containsModelProperty( mp ) ) - { - return false; - } - } - return true; - } - - public boolean hasUri( String uri ) - throws IOException - { - for ( ModelProperty mp : domainModel.getModelProperties() ) - { - if ( mp.getValue().equals( uri ) ) - { - return true; - } - } - return false; - } - - public boolean hasAllUris( List<String> uris ) - throws IOException - { - for ( String s : uris ) - { - if ( !hasUri( s ) ) - { - return false; - } - } - return true; - } - - public boolean hasNoUris( List<String> uris ) - throws IOException - { - for ( String s : uris ) - { - if ( hasUri( s ) ) - { - return false; - } - } - return true; - } - } Modified: maven/components/trunk/maven-mercury/pom.xml URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-mercury/pom.xml?rev=765684&r1=765683&r2=765684&view=diff ============================================================================== --- maven/components/trunk/maven-mercury/pom.xml (original) +++ maven/components/trunk/maven-mercury/pom.xml Thu Apr 16 16:50:46 2009 @@ -42,11 +42,6 @@ <artifactId>plexus-component-annotations</artifactId> </dependency> - <dependency> - <groupId>org.sonatype.spice</groupId> - <artifactId>model-builder</artifactId> - </dependency> - <!-- test dependencies --> <dependency> <groupId>org.apache.maven.mercury</groupId> @@ -86,6 +81,12 @@ </dependency> <dependency> + <groupId>commons-cli</groupId> + <artifactId>commons-cli</artifactId> + <scope>test</scope> + </dependency> + + <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.4</version> Modified: maven/components/trunk/maven-mercury/src/main/java/org/apache/maven/mercury/MavenDependencyProcessor.java URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-mercury/src/main/java/org/apache/maven/mercury/MavenDependencyProcessor.java?rev=765684&r1=765683&r2=765684&view=diff ============================================================================== --- maven/components/trunk/maven-mercury/src/main/java/org/apache/maven/mercury/MavenDependencyProcessor.java (original) +++ maven/components/trunk/maven-mercury/src/main/java/org/apache/maven/mercury/MavenDependencyProcessor.java Thu Apr 16 16:50:46 2009 @@ -21,7 +21,6 @@ import java.io.IOException; import java.util.ArrayList; -import java.util.Collection; import java.util.List; import java.util.Map; @@ -30,14 +29,11 @@ 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.project.builder.DomainModel; +import org.apache.maven.project.builder.InterpolatorProperty; +import org.apache.maven.project.builder.PomClassicDomainModel; import org.apache.maven.project.builder.PomInterpolatorTag; -import org.apache.maven.project.builder.ProjectUri; -import org.apache.maven.project.builder.legacy.PomTransformer; -import org.apache.maven.shared.model.DomainModel; -import org.apache.maven.shared.model.InterpolatorProperty; -import org.apache.maven.shared.model.ModelContainer; -import org.apache.maven.shared.model.ModelProperty; -import org.apache.maven.shared.model.ModelTransformerContext; +import org.apache.maven.project.builder.ProcessorContext; import org.codehaus.plexus.component.annotations.Component; /** @@ -52,6 +48,7 @@ public class MavenDependencyProcessor implements DependencyProcessor { + /** * Over-ride this method to change how dependencies are obtained */ @@ -88,14 +85,14 @@ MavenDomainModel domainModel = new MavenDomainModel( superBytes ); domainModel.setMostSpecialized(true); domainModels.add( domainModel ); - +/*TODO: Profiles Collection<ModelContainer> activeProfiles = domainModel.getActiveProfileContainers( interpolatorProperties ); for ( ModelContainer mc : activeProfiles ) { domainModels.add( new MavenDomainModel( transformProfiles( mc.getProperties() ) ) ); } - +*/ List<DomainModel> parentModels = getParentsOfDomainModel( domainModel, mdReader ); if ( parentModels == null ) @@ -110,21 +107,13 @@ throw new MetadataReaderException( "Failed to create domain model. Message = " + e.getMessage(), e ); } - PomTransformer transformer = new PomTransformer( new MavenDomainModelFactory() ); - ModelTransformerContext ctx = - new ModelTransformerContext( PomTransformer.MODEL_CONTAINER_INFOS ); + try { + return new MavenDomainModel(ProcessorContext.interpolateDomainModel(ProcessorContext.build(domainModels, null), + interpolatorProperties)).getDependencyMetadata(); + } catch (IOException e) { + throw new DependencyProcessorException(); + } - try - { - MavenDomainModel model = - ( (MavenDomainModel) ctx.transform( domainModels, transformer, transformer, null, - interpolatorProperties, null ) ); - return model.getDependencyMetadata(); - } - catch ( IOException e ) - { - throw new MetadataReaderException( "Unable to transform model", e ); - } } protected final List<InterpolatorProperty> createInterpolatorProperties(Map system, Map user) @@ -165,20 +154,4 @@ } return domainModels; } - - private static List<ModelProperty> transformProfiles( List<ModelProperty> modelProperties ) - { - List<ModelProperty> properties = new ArrayList<ModelProperty>(); - for ( ModelProperty mp : modelProperties ) - { - if ( mp.getUri().startsWith( ProjectUri.Profiles.Profile.xUri ) - && !mp.getUri().equals( ProjectUri.Profiles.Profile.id ) - && !mp.getUri().startsWith( ProjectUri.Profiles.Profile.Activation.xUri ) ) - { - properties.add( new ModelProperty( mp.getUri().replace( ProjectUri.Profiles.Profile.xUri, - ProjectUri.xUri ), mp.getResolvedValue() ) ); - } - } - return properties; - } } Modified: maven/components/trunk/maven-mercury/src/main/java/org/apache/maven/mercury/MavenDomainModel.java URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-mercury/src/main/java/org/apache/maven/mercury/MavenDomainModel.java?rev=765684&r1=765683&r2=765684&view=diff ============================================================================== --- maven/components/trunk/maven-mercury/src/main/java/org/apache/maven/mercury/MavenDomainModel.java (original) +++ maven/components/trunk/maven-mercury/src/main/java/org/apache/maven/mercury/MavenDomainModel.java Thu Apr 16 16:50:46 2009 @@ -21,44 +21,19 @@ import java.io.ByteArrayInputStream; import java.io.IOException; -import java.io.InputStream; import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; import java.util.List; import org.apache.maven.mercury.artifact.ArtifactMetadata; -import org.apache.maven.project.builder.ProjectUri; -import org.apache.maven.project.builder.factories.ArtifactModelContainerFactory; -import org.apache.maven.project.builder.factories.ExclusionModelContainerFactory; -import org.apache.maven.project.builder.legacy.PomClassicDomainModel; -import org.apache.maven.project.builder.legacy.PomTransformer; -import org.apache.maven.project.builder.profile.ProfileContext; -import org.apache.maven.shared.model.DataSourceException; -import org.apache.maven.shared.model.InterpolatorProperty; -import org.apache.maven.shared.model.ModelContainer; -import org.apache.maven.shared.model.ModelDataSource; -import org.apache.maven.shared.model.ModelMarshaller; -import org.apache.maven.shared.model.ModelProperty; -import org.apache.maven.shared.model.impl.DefaultModelDataSource; - -/** - * Provides a wrapper for the maven model. - */ +import org.apache.maven.model.Dependency; +import org.apache.maven.model.Exclusion; +import org.apache.maven.model.Parent; +import org.apache.maven.project.builder.PomClassicDomainModel; + public final class MavenDomainModel extends PomClassicDomainModel { - /** - * Bytes containing the underlying model - */ - private final List<ModelProperty> modelProperties; - - /** - * History of joins and deletes of model properties - */ - private String eventHistory; - private ArtifactMetadata parentMetadata; /** @@ -69,105 +44,74 @@ public MavenDomainModel( byte[] bytes ) throws IOException { - this( new ByteArrayInputStream( bytes ) ); - } - - /** - * Constructor - * - * @throws IOException if there is a problem constructing the model - */ - public MavenDomainModel( InputStream inputStream ) - throws IOException - { - this( ModelMarshaller.marshallXmlToModelProperties( inputStream, ProjectUri.baseUri, PomTransformer.URIS ) ); + super( new ByteArrayInputStream( bytes ) ); } - /** - * Constructor - * - * @throws IOException if there is a problem constructing the model - */ - public MavenDomainModel( List<ModelProperty> modelProperties ) - throws IOException - { - super(modelProperties); - this.modelProperties = new ArrayList<ModelProperty>( modelProperties ); - } public MavenDomainModel(PomClassicDomainModel model) throws IOException { - this(model.getInputStream()); + super(model.getModel()); } public boolean hasParent() { - // TODO: Expensive call if no parent return getParentMetadata() != null; } public List<ArtifactMetadata> getDependencyMetadata() - throws DataSourceException { List<ArtifactMetadata> metadatas = new ArrayList<ArtifactMetadata>(); - ModelDataSource source = new DefaultModelDataSource( modelProperties, PomTransformer.MODEL_CONTAINER_FACTORIES ); - for ( ModelContainer modelContainer : source.queryFor( ProjectUri.Dependencies.Dependency.xUri ) ) + for(Dependency d: model.getDependencies()) { - metadatas.add( transformContainerToMetadata( modelContainer ) ); + ArtifactMetadata metadata = new ArtifactMetadata(); + metadata.setArtifactId(d.getArtifactId()); + metadata.setClassifier(d.getClassifier()); + metadata.setGroupId(d.getGroupId()); + metadata.setScope( (d.getScope() == null) ? "runtime" : d.getScope()); + metadata.setVersion(d.getVersion()); + metadata.setOptional(d.isOptional()); + + if( "test-jar".equals( d.getType() ) ) + { + metadata.setType( "jar" ); + metadata.setClassifier( "tests" ); + } + else + { + metadata.setType( d.getType() ); + } + + List<ArtifactMetadata> exclusions = new ArrayList<ArtifactMetadata>(); + for( Exclusion e : d.getExclusions() ) + { + ArtifactMetadata md = new ArtifactMetadata(); + md.setArtifactId(e.getArtifactId()); + md.setGroupId(e.getGroupId()); + exclusions.add(md); + } + metadata.setExclusions(exclusions); + metadatas.add(metadata); } - + return metadatas; } - public Collection<ModelContainer> getActiveProfileContainers( List<InterpolatorProperty> properties ) - throws DataSourceException - { - ModelDataSource dataSource = new DefaultModelDataSource( modelProperties, PomTransformer.MODEL_CONTAINER_FACTORIES ); - - return new ProfileContext( dataSource, null, null, properties ).getActiveProfiles(); - } - public ArtifactMetadata getParentMetadata() { - if ( parentMetadata != null ) + if(parentMetadata == null) { - return copyArtifactBasicMetadata( parentMetadata ); - } - - String groupId = null, artifactId = null, version = null; - - for ( ModelProperty mp : modelProperties ) - { - if ( mp.getUri().equals( ProjectUri.Parent.version ) ) - { - version = mp.getResolvedValue(); - } - else if ( mp.getUri().equals( ProjectUri.Parent.artifactId ) ) + Parent parent = model.getParent(); + if(parent != null) { - artifactId = mp.getResolvedValue(); - } - else if ( mp.getUri().equals( ProjectUri.Parent.groupId ) ) - { - groupId = mp.getResolvedValue(); - } - if ( groupId != null && artifactId != null && version != null ) - { - break; - } + parentMetadata = new ArtifactMetadata(); + parentMetadata.setArtifactId( parent.getArtifactId() ); + parentMetadata.setVersion( parent.getVersion() ); + parentMetadata.setGroupId( parent.getGroupId() ); + } } - - if ( groupId == null || artifactId == null || version == null ) - { - return null; - } - parentMetadata = new ArtifactMetadata(); - parentMetadata.setArtifactId( artifactId ); - parentMetadata.setVersion( version ); - parentMetadata.setGroupId( groupId ); - - return copyArtifactBasicMetadata( parentMetadata ); + return (parentMetadata != null) ? copyArtifactBasicMetadata( parentMetadata ) : null; } private ArtifactMetadata copyArtifactBasicMetadata( ArtifactMetadata metadata ) @@ -178,108 +122,4 @@ amd.setVersion( metadata.getVersion() ); return amd; } - - /** - * @see org.apache.maven.shared.model.DomainModel#getEventHistory() - */ - public String getEventHistory() - { - return eventHistory; - } - - /** - * @see org.apache.maven.shared.model.DomainModel#setEventHistory(String) - */ - public void setEventHistory( String eventHistory ) - { - if ( eventHistory == null ) - { - throw new IllegalArgumentException( "eventHistory: null" ); - } - this.eventHistory = eventHistory; - } - - public List<ModelProperty> getModelProperties() - throws IOException - { - return new ArrayList<ModelProperty>( modelProperties ); - } - - private ArtifactMetadata transformContainerToMetadata( ModelContainer container ) - throws DataSourceException - { - List<ModelProperty> modelProperties = container.getProperties(); - - ArtifactMetadata metadata = new ArtifactMetadata(); - for ( ModelProperty mp : modelProperties ) - { - if ( mp.getUri().equals( ProjectUri.Dependencies.Dependency.groupId ) ) - { - metadata.setGroupId( mp.getResolvedValue() ); - } - else if ( mp.getUri().equals( ProjectUri.Dependencies.Dependency.artifactId ) ) - { - metadata.setArtifactId( mp.getResolvedValue() ); - } - else if ( mp.getUri().equals( ProjectUri.Dependencies.Dependency.version ) ) - { - metadata.setVersion( mp.getResolvedValue() ); - } - else if ( mp.getUri().equals( ProjectUri.Dependencies.Dependency.classifier ) ) - { - metadata.setClassifier( mp.getResolvedValue() ); - } - else if ( mp.getUri().equals( ProjectUri.Dependencies.Dependency.scope ) ) - { - metadata.setScope( mp.getResolvedValue() ); - } - else if ( mp.getUri().equals( ProjectUri.Dependencies.Dependency.type ) ) - { - String val = mp.getResolvedValue(); - // 2009-03-23 Oleg: TODO ask Shane where this really belongs? - if( "test-jar".equals( val ) ) - { - metadata.setType( "jar" ); - metadata.setClassifier( "tests" ); - } - else - metadata.setType( val ); - } - else if ( mp.getUri().equals( ProjectUri.Dependencies.Dependency.optional ) ) - { - metadata.setOptional( mp.getResolvedValue() ); - } - } - - if ( metadata.getScope() == null ) - { - metadata.setScope( "runtime" ); - } - - ModelDataSource dataSource = new DefaultModelDataSource( container.getProperties(), Arrays.asList( new ArtifactModelContainerFactory(), - new ExclusionModelContainerFactory() ) ); - List<ArtifactMetadata> exclusions = new ArrayList<ArtifactMetadata>(); - - for ( ModelContainer exclusion : dataSource.queryFor( ProjectUri.Dependencies.Dependency.Exclusions.Exclusion.xUri ) ) - { - ArtifactMetadata meta = new ArtifactMetadata(); - exclusions.add( meta ); - - for ( ModelProperty mp : exclusion.getProperties() ) - { - if ( mp.getUri().equals( ProjectUri.Dependencies.Dependency.Exclusions.Exclusion.artifactId ) ) - { - meta.setArtifactId( mp.getResolvedValue() ); - } - else if ( mp.getUri().equals( ProjectUri.Dependencies.Dependency.Exclusions.Exclusion.groupId ) ) - { - meta.setGroupId( mp.getResolvedValue() ); - } - } - - } - metadata.setExclusions( exclusions ); - - return metadata; - } } Modified: maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/ModelEventListener.java URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/ModelEventListener.java?rev=765684&r1=765683&r2=765684&view=diff ============================================================================== --- maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/ModelEventListener.java (original) +++ maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/ModelEventListener.java Thu Apr 16 16:50:46 2009 @@ -1,10 +1,13 @@ package org.apache.maven.project.builder; import java.util.List; -import java.util.Collection; + +import org.apache.maven.model.Model; public interface ModelEventListener { + void fire(Model model); + List<String> getUris(); } Modified: maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/PomClassicDomainModel.java URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/PomClassicDomainModel.java?rev=765684&r1=765683&r2=765684&view=diff ============================================================================== --- maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/PomClassicDomainModel.java (original) +++ maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/PomClassicDomainModel.java Thu Apr 16 16:50:46 2009 @@ -38,7 +38,7 @@ private String parentGroupId = null, parentArtifactId = null, parentVersion = null, parentId = null, parentRelativePath; - private Model model; + protected Model model; public Model getModel() throws IOException { Modified: maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/ProcessorContext.java URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/ProcessorContext.java?rev=765684&r1=765683&r2=765684&view=diff ============================================================================== --- maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/ProcessorContext.java (original) +++ maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/ProcessorContext.java Thu Apr 16 16:50:46 2009 @@ -170,10 +170,17 @@ return models; } - public static PomClassicDomainModel build( List<DomainModel> domainModels, - List<InterpolatorProperty> interpolationProperties, List<ModelEventListener> listeners) - throws IOException - { + /** + * Parent domain models on bottom. + * + * @param domainModels + * @param listeners + * @return + * @throws IOException + */ + public static PomClassicDomainModel build( List<DomainModel> domainModels, List<ModelEventListener> listeners ) + throws IOException + { PomClassicDomainModel child = null; for ( DomainModel domainModel : domainModels ) { @@ -196,24 +203,18 @@ new LicensesProcessor(), new ScmProcessor(), new PrerequisitesProcessor(), new ContributorsProcessor(), new DevelopersProcessor(), new ProfilesProcessor() ); Model target = processModelsForInheritance( convertDomainModelsToMavenModels( domainModels ), processors ); - + if(listeners != null) + { + for(ModelEventListener listener : listeners) + { + listener.fire(target); + } + } PomClassicDomainModel domainModel = new PomClassicDomainModel( target, child.isMostSpecialized() ); domainModel.setProjectDirectory(child.getProjectDirectory()); domainModel.setParentFile(child.getParentFile()); + return domainModel; - } - /** - * Parent domain models on bottom. - * - * @param domainModels - * @return - * @throws IOException - */ - public static PomClassicDomainModel build( List<DomainModel> domainModels, - List<InterpolatorProperty> interpolationProperties ) - throws IOException - { - return build(domainModels, interpolationProperties, null); } private static Model processModelsForInheritance(List<Model> models, List<Processor> processors) @@ -680,7 +681,7 @@ } } - private static List<InterpolatorProperty> createInterpolatorProperties(List<ModelProperty> modelProperties, + public static List<InterpolatorProperty> createInterpolatorProperties(List<ModelProperty> modelProperties, String baseUriForModel, Map<String, String> aliases, String interpolatorTag) @@ -864,7 +865,7 @@ return sb.toString(); } - public static List<ModelProperty> getModelProperties(InputStream is) throws IOException + private static List<ModelProperty> getModelProperties(InputStream is) throws IOException { Set<String> s = new HashSet<String>(); //TODO: Should add all collections from ProjectUri @@ -893,7 +894,7 @@ return new ArrayList<ModelProperty>(marshallXmlToModelProperties(is, ProjectUri.baseUri, s )); } - private static final Set<String> URIS = Collections.unmodifiableSet(new HashSet<String>( Arrays.asList( ProjectUri.Build.Extensions.xUri, + public static final Set<String> URIS = Collections.unmodifiableSet(new HashSet<String>( Arrays.asList( ProjectUri.Build.Extensions.xUri, ProjectUri.Build.PluginManagement.Plugins.xUri, ProjectUri.Build.PluginManagement.Plugins.Plugin.configuration, ProjectUri.Build.PluginManagement.Plugins.Plugin.Executions.xUri, Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java?rev=765684&r1=765683&r2=765684&view=diff ============================================================================== --- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java (original) +++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java Thu Apr 16 16:50:46 2009 @@ -15,12 +15,9 @@ * the License. */ -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; import java.io.Reader; -import java.io.Writer; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Collection; @@ -48,7 +45,7 @@ import org.apache.maven.project.artifact.InvalidDependencyVersionException; import org.apache.maven.project.builder.DomainModel; import org.apache.maven.project.builder.InterpolatorProperty; -import org.apache.maven.project.builder.ModelProperty; +import org.apache.maven.project.builder.ModelEventListener; import org.apache.maven.project.builder.PomClassicDomainModel; import org.apache.maven.project.builder.PomInterpolatorTag; import org.apache.maven.project.builder.ProcessorContext; @@ -56,7 +53,6 @@ import org.apache.maven.project.validation.ModelValidator; import org.apache.maven.repository.RepositorySystem; import org.apache.maven.repository.VersionNotFoundException; -import org.apache.maven.shared.model.ModelEventListener; import org.codehaus.plexus.PlexusContainer; import org.codehaus.plexus.component.annotations.Component; import org.codehaus.plexus.component.annotations.Requirement; @@ -513,7 +509,7 @@ } } - PomClassicDomainModel transformedDomainModel = ProcessorContext.build( profileModels, null ); + PomClassicDomainModel transformedDomainModel = ProcessorContext.build(profileModels, listeners); // Lineage count is inclusive to add the POM read in itself. transformedDomainModel.setLineageCount( lineageCount + 1 ); Modified: maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/PomConstructionTest.java URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/PomConstructionTest.java?rev=765684&r1=765683&r2=765684&view=diff ============================================================================== --- maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/PomConstructionTest.java (original) +++ maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/PomConstructionTest.java Thu Apr 16 16:50:46 2009 @@ -220,7 +220,6 @@ throws Exception { PomTestWrapper pom = buildPom( "plugin-management-dependencies/sub", "test" ); - System.out.println(pom.getDomainModel().asString()); assertEquals( "1.0-alpha-21", pom.getValue( "build/plugins[1]/version" ) ); assertEquals( "1.0", pom.getValue( "build/plugins[1]/dependencies[1]/version" ) ); } @@ -782,7 +781,6 @@ throws Exception { PomTestWrapper pom = buildPom( "plugin-config-append/" + test + "/subproject" ); - System.out.println(pom.getDomainModel().asString()); String prefix = "build/plugins[1]/configuration/"; assertEquals( "PARENT-1", pom.getValue( prefix + "stringParams/stringParam[1]" ) ); assertEquals( "PARENT-3", pom.getValue( prefix + "stringParams/stringParam[2]" ) );