You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by si...@apache.org on 2009/04/13 21:14:46 UTC

svn commit: r764568 [5/5] - in /maven/components/trunk: maven-core/src/main/java/org/apache/maven/plugin/ maven-core/src/test/java/org/apache/maven/project/harness/ maven-mercury/src/main/java/org/apache/maven/mercury/ maven-mercury/src/main/java/org/a...

Propchange: maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/ProjectUri.java
------------------------------------------------------------------------------
--- svn:mergeinfo (added)
+++ svn:mergeinfo Mon Apr 13 19:14:44 2009
@@ -0,0 +1,7 @@
+/maven/components/branches/MNG-3932-1/maven-project-builder/src/main/java/org/apache/maven/project/builder/ProjectUri.java:746145-746157
+/maven/components/branches/maven-2.0.10-RC/maven-project-builder/src/main/java/org/apache/maven/project/builder/ProjectUri.java:680477
+/maven/components/branches/maven-2.0.x/maven-project-builder/src/main/java/org/apache/maven/project/builder/ProjectUri.java:679206,708871,720042,726541,727548,727998,728264,728940,729060,729738,729785,730631
+/maven/components/branches/maven-2.1.x/maven-project-builder/src/main/java/org/apache/maven/project/builder/ProjectUri.java:739385,741841,747468,747683,748815,749612
+/maven/components/branches/sisbell-plugin-manager/maven-project-builder/src/main/java/org/apache/maven/project/builder/ProjectUri.java:738973-739966
+/maven/components/sisbell-plugin-manager/maven-project-builder/src/main/java/org/apache/maven/project/builder/ProjectUri.java:738757-738972
+/maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/ProjectUri.java:688587-696625,696644-699681

Copied: maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/PropertiesProcessor.java (from r764415, maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/processor/PropertiesProcessor.java)
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/PropertiesProcessor.java?p2=maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/PropertiesProcessor.java&p1=maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/processor/PropertiesProcessor.java&r1=764415&r2=764568&rev=764568&view=diff
==============================================================================
--- maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/processor/PropertiesProcessor.java (original)
+++ maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/PropertiesProcessor.java Mon Apr 13 19:14:44 2009
@@ -1,4 +1,4 @@
-package org.apache.maven.project.processor;
+package org.apache.maven.project.builder;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one

Propchange: maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/PropertiesProcessor.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/PropertiesProcessor.java
------------------------------------------------------------------------------
--- svn:mergeinfo (added)
+++ svn:mergeinfo Mon Apr 13 19:14:44 2009
@@ -0,0 +1,7 @@
+/maven/components/branches/MNG-3932-1/maven-project/src/main/java/org/apache/maven/project/processor/PropertiesProcessor.java:746145-746157
+/maven/components/branches/maven-2.0.10-RC/maven-project/src/main/java/org/apache/maven/project/processor/PropertiesProcessor.java:680477
+/maven/components/branches/maven-2.0.x/maven-project/src/main/java/org/apache/maven/project/processor/PropertiesProcessor.java:679206,708871,720042,726541,727548,727998,728264,728940,729060,729738,729785,730631
+/maven/components/branches/maven-2.1.x/maven-project/src/main/java/org/apache/maven/project/processor/PropertiesProcessor.java:739385,741841,747468,748815,749612
+/maven/components/branches/sisbell-plugin-manager/maven-project/src/main/java/org/apache/maven/project/processor/PropertiesProcessor.java:738973-739966
+/maven/components/sisbell-plugin-manager/maven-project/src/main/java/org/apache/maven/project/processor/PropertiesProcessor.java:738757-738972
+/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/processor/PropertiesProcessor.java:688587-696625,696644-699681

Copied: maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/ReportingProcessor.java (from r764415, maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/processor/ReportingProcessor.java)
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/ReportingProcessor.java?p2=maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/ReportingProcessor.java&p1=maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/processor/ReportingProcessor.java&r1=764415&r2=764568&rev=764568&view=diff
==============================================================================
--- maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/processor/ReportingProcessor.java (original)
+++ maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/ReportingProcessor.java Mon Apr 13 19:14:44 2009
@@ -1,4 +1,4 @@
-package org.apache.maven.project.processor;
+package org.apache.maven.project.builder;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one

Propchange: maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/ReportingProcessor.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/ReportingProcessor.java
------------------------------------------------------------------------------
--- svn:mergeinfo (added)
+++ svn:mergeinfo Mon Apr 13 19:14:44 2009
@@ -0,0 +1,7 @@
+/maven/components/branches/MNG-3932-1/maven-project/src/main/java/org/apache/maven/project/processor/ReportingProcessor.java:746145-746157
+/maven/components/branches/maven-2.0.10-RC/maven-project/src/main/java/org/apache/maven/project/processor/ReportingProcessor.java:680477
+/maven/components/branches/maven-2.0.x/maven-project/src/main/java/org/apache/maven/project/processor/ReportingProcessor.java:679206,708871,720042,726541,727548,727998,728264,728940,729060,729738,729785,730631
+/maven/components/branches/maven-2.1.x/maven-project/src/main/java/org/apache/maven/project/processor/ReportingProcessor.java:739385,741841,747468,748815,749612
+/maven/components/branches/sisbell-plugin-manager/maven-project/src/main/java/org/apache/maven/project/processor/ReportingProcessor.java:738973-739966
+/maven/components/sisbell-plugin-manager/maven-project/src/main/java/org/apache/maven/project/processor/ReportingProcessor.java:738757-738972
+/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/processor/ReportingProcessor.java:688587-696625,696644-699681

Copied: maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/RepositoriesProcessor.java (from r764415, maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/processor/RepositoriesProcessor.java)
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/RepositoriesProcessor.java?p2=maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/RepositoriesProcessor.java&p1=maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/processor/RepositoriesProcessor.java&r1=764415&r2=764568&rev=764568&view=diff
==============================================================================
--- maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/processor/RepositoriesProcessor.java (original)
+++ maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/RepositoriesProcessor.java Mon Apr 13 19:14:44 2009
@@ -1,4 +1,4 @@
-package org.apache.maven.project.processor;
+package org.apache.maven.project.builder;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one

Propchange: maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/RepositoriesProcessor.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/RepositoriesProcessor.java
------------------------------------------------------------------------------
--- svn:mergeinfo (added)
+++ svn:mergeinfo Mon Apr 13 19:14:44 2009
@@ -0,0 +1,7 @@
+/maven/components/branches/MNG-3932-1/maven-project/src/main/java/org/apache/maven/project/processor/RepositoriesProcessor.java:746145-746157
+/maven/components/branches/maven-2.0.10-RC/maven-project/src/main/java/org/apache/maven/project/processor/RepositoriesProcessor.java:680477
+/maven/components/branches/maven-2.0.x/maven-project/src/main/java/org/apache/maven/project/processor/RepositoriesProcessor.java:679206,708871,720042,726541,727548,727998,728264,728940,729060,729738,729785,730631
+/maven/components/branches/maven-2.1.x/maven-project/src/main/java/org/apache/maven/project/processor/RepositoriesProcessor.java:739385,741841,747468,748815,749612
+/maven/components/branches/sisbell-plugin-manager/maven-project/src/main/java/org/apache/maven/project/processor/RepositoriesProcessor.java:738973-739966
+/maven/components/sisbell-plugin-manager/maven-project/src/main/java/org/apache/maven/project/processor/RepositoriesProcessor.java:738757-738972
+/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/processor/RepositoriesProcessor.java:688587-696625,696644-699681

Copied: maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/ScmProcessor.java (from r764415, maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/processor/ScmProcessor.java)
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/ScmProcessor.java?p2=maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/ScmProcessor.java&p1=maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/processor/ScmProcessor.java&r1=764415&r2=764568&rev=764568&view=diff
==============================================================================
--- maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/processor/ScmProcessor.java (original)
+++ maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/ScmProcessor.java Mon Apr 13 19:14:44 2009
@@ -1,4 +1,4 @@
-package org.apache.maven.project.processor;
+package org.apache.maven.project.builder;
 
 /*
  * Licensed to the Apache Software Foundation (ASF) under one

Propchange: maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/ScmProcessor.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/ScmProcessor.java
------------------------------------------------------------------------------
--- svn:mergeinfo (added)
+++ svn:mergeinfo Mon Apr 13 19:14:44 2009
@@ -0,0 +1,7 @@
+/maven/components/branches/MNG-3932-1/maven-project/src/main/java/org/apache/maven/project/processor/ScmProcessor.java:746145-746157
+/maven/components/branches/maven-2.0.10-RC/maven-project/src/main/java/org/apache/maven/project/processor/ScmProcessor.java:680477
+/maven/components/branches/maven-2.0.x/maven-project/src/main/java/org/apache/maven/project/processor/ScmProcessor.java:679206,708871,720042,726541,727548,727998,728264,728940,729060,729738,729785,730631
+/maven/components/branches/maven-2.1.x/maven-project/src/main/java/org/apache/maven/project/processor/ScmProcessor.java:739385,741841,747468,748815,749612
+/maven/components/branches/sisbell-plugin-manager/maven-project/src/main/java/org/apache/maven/project/processor/ScmProcessor.java:738973-739966
+/maven/components/sisbell-plugin-manager/maven-project/src/main/java/org/apache/maven/project/processor/ScmProcessor.java:738757-738972
+/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/processor/ScmProcessor.java:688587-696625,696644-699681

Added: maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/interpolator/DomainModel.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/interpolator/DomainModel.java?rev=764568&view=auto
==============================================================================
--- maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/interpolator/DomainModel.java (added)
+++ maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/interpolator/DomainModel.java Mon Apr 13 19:14:44 2009
@@ -0,0 +1,13 @@
+package org.apache.maven.project.builder.interpolator;
+
+import java.io.IOException;
+import java.util.List;
+
+public interface DomainModel {
+	
+    List<ModelProperty> getModelProperties() throws IOException;
+    
+    boolean isMostSpecialized();
+    
+    void setMostSpecialized(boolean isMostSpecialized);
+}

Added: maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/interpolator/InterpolatorProperty.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/interpolator/InterpolatorProperty.java?rev=764568&view=auto
==============================================================================
--- maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/interpolator/InterpolatorProperty.java (added)
+++ maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/interpolator/InterpolatorProperty.java Mon Apr 13 19:14:44 2009
@@ -0,0 +1,175 @@
+package org.apache.maven.project.builder.interpolator;
+
+import java.util.*;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/**
+ * Provides interpolator property information.
+ */
+public final class InterpolatorProperty
+{
+    /**
+     * The key (or name) of the property
+     */
+    private final String key;
+
+    /**
+     * The value of the property
+     */
+    private final String value;
+
+    /**
+     * Metadata tag (general use)
+     */
+    private String tag;
+
+
+    /**
+     * Constructor
+     *
+     * @param key   the key (or name) of the property. May not be null
+     * @param value the value of the property. May not be null.
+     */
+    public InterpolatorProperty( String key, String value )
+    {
+        this(key, value, null);
+    }
+
+    public InterpolatorProperty( String key, String value, String tag )
+    {
+        if ( key == null )
+        {
+            throw new IllegalArgumentException( "key: null" );
+        }
+
+        if ( value == null )
+        {
+            throw new IllegalArgumentException( "value: null" );
+        }
+        this.key = key;
+        this.value = value;
+        this.tag = tag;
+
+    }
+
+    /**
+     * Returns key (or name) of property.
+     *
+     * @return key (or name) of property
+     */
+    public String getKey()
+    {
+        return key;
+    }
+
+    /**
+     * Returns value of property.
+     *
+     * @return value of property
+     */
+    public String getValue()
+    {
+        return value;
+    }
+
+    public String getTag()
+    {
+        return tag;
+    }
+
+    public void setTag(String tag)
+    {
+        this.tag = tag;
+    }
+    public static List<InterpolatorProperty> toInterpolatorProperties( Map<String, String> properties, String tag )
+    {
+            if( properties == null )
+            {
+                throw new IllegalArgumentException( "properties: null" );
+            }
+    
+            List<InterpolatorProperty> interpolatorProperties = new ArrayList<InterpolatorProperty>();
+            for ( Map.Entry<String, String> e : properties.entrySet() )
+            {
+                interpolatorProperties.add( new InterpolatorProperty( "${" + e.getKey() +"}", e.getValue(), tag) );
+            }
+            return interpolatorProperties;
+     }
+
+    /**
+     * Returns true if key values match, otherwise returns false.
+     *
+     * @param o interpolator property to compare
+     * @return true if key values match, otherwise returns false
+     */
+    public boolean equals( Object o )
+    {
+        if ( this == o )
+        {
+            return true;
+        }
+        if ( o == null || getClass() != o.getClass() )
+        {
+            return false;
+        }
+
+        InterpolatorProperty that = (InterpolatorProperty) o;
+
+        if ( !key.equals( that.key ) )
+        {
+            return false;
+        }
+
+        return true;
+    }
+
+    /**
+     * Returns hash code of interpolator property key.
+     *
+     * @return hash code of interpolator property key
+     */
+    public int hashCode()
+    {
+        return key.hashCode();
+    }
+
+    public String toString()
+    {
+        return "Key = " + key + ", Value = " + value +  ", Hash = " +
+            this.hashCode();
+    }
+
+    public static List<InterpolatorProperty> toInterpolatorProperties( Properties properties, String tag )
+    {
+        if( properties == null )
+        {
+            throw new IllegalArgumentException( "properties: null" );
+        }
+
+        List<InterpolatorProperty> interpolatorProperties = new ArrayList<InterpolatorProperty>();
+        for ( Map.Entry<Object, Object> e : properties.entrySet() )
+        {
+            interpolatorProperties.add( new InterpolatorProperty( "${" + e.getKey() +"}", (String) e.getValue(), tag) );
+        }
+        return interpolatorProperties;
+    }
+}
+

Added: maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/interpolator/ModelInterpolator.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/interpolator/ModelInterpolator.java?rev=764568&view=auto
==============================================================================
--- maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/interpolator/ModelInterpolator.java (added)
+++ maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/interpolator/ModelInterpolator.java Mon Apr 13 19:14:44 2009
@@ -0,0 +1,343 @@
+package org.apache.maven.project.builder.interpolator;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.maven.model.Model;
+import org.apache.maven.project.builder.PomClassicDomainModel;
+import org.apache.maven.project.builder.ProjectUri;
+
+public class ModelInterpolator {
+
+	private HashMap<String, String> values;
+	
+	public ModelInterpolator()
+	{
+		values = new HashMap<String, String>();
+	}
+	
+	public static void interpolate(PomClassicDomainModel domainModel, List<InterpolatorProperty> interpolatorProperties ) throws IOException
+	{
+		List<ModelProperty> m = new ArrayList<ModelProperty>();
+		
+		Model model = domainModel.getModel();
+
+		m.add(new ModelProperty(ProjectUri.groupId, model.getGroupId()));
+		m.add(new ModelProperty(ProjectUri.artifactId, model.getArtifactId()));
+		
+		interpolateModelProperties(m, interpolatorProperties, domainModel);
+		//Set model properties on model
+		
+		
+		
+		//InterpolatorProperty ip = new InterpolatorProperty();
+		//ModelProperty mp;
+		/*
+		values.put("groupId", model.getGroupId());
+		values.put("artifactId", model.getArtifactId());
+		values.put("version", model.getVersion());
+		values.put("packaging", model.getPackaging());
+		values.put("name", model.getName());
+		values.put("description", model.getDescription());
+		
+		//Collect uninterpolated values
+		HashMap<String, String> hm = new HashMap<String, String>();
+		for(Map.Entry<String, String> entry : hm.entrySet())
+		{
+			
+		}
+		*/
+	}
+	
+	/*
+	 *         addProjectAlias( "modelVersion", true );
+        addProjectAlias( "groupId", true );
+        addProjectAlias( "artifactId", true );
+        addProjectAlias( "version", true );
+        addProjectAlias( "packaging", true );
+        addProjectAlias( "name", true );
+        addProjectAlias( "description", true );
+        addProjectAlias( "inceptionYear", true );
+        addProjectAlias( "url", true );
+        addProjectAlias( "parent", false );
+        addProjectAlias( "prerequisites", false );
+        addProjectAlias( "organization", false );
+        addProjectAlias( "build", false );
+        addProjectAlias( "reporting", false );
+        addProjectAlias( "scm", false );
+        addProjectAlias( "distributionManagement", false );
+        addProjectAlias( "issueManagement", false );
+        addProjectAlias( "ciManagement", false );
+	 */
+
+   private static final Map<String, String> aliases = new HashMap<String, String>();
+
+   private static void addProjectAlias( String element, boolean leaf )
+   {
+       String suffix = leaf ? "\\}" : "\\.";
+       aliases.put( "\\$\\{project\\." + element + suffix, "\\$\\{" + element + suffix );
+   }
+
+   static
+   {
+       aliases.put( "\\$\\{project\\.", "\\$\\{pom\\." );
+       addProjectAlias( "modelVersion", true );
+       addProjectAlias( "groupId", true );
+       addProjectAlias( "artifactId", true );
+       addProjectAlias( "version", true );
+       addProjectAlias( "packaging", true );
+       addProjectAlias( "name", true );
+       addProjectAlias( "description", true );
+       addProjectAlias( "inceptionYear", true );
+       addProjectAlias( "url", true );
+       addProjectAlias( "parent", false );
+       addProjectAlias( "prerequisites", false );
+       addProjectAlias( "organization", false );
+       addProjectAlias( "build", false );
+       addProjectAlias( "reporting", false );
+       addProjectAlias( "scm", false );
+       addProjectAlias( "distributionManagement", false );
+       addProjectAlias( "issueManagement", false );
+       addProjectAlias( "ciManagement", false );
+   }
+
+   private static void interpolateModelProperties( List<ModelProperty> mps,
+                                                  List<InterpolatorProperty> interpolatorProperties, 
+                                                  PomClassicDomainModel dm )
+       throws IOException
+   {
+
+       if(dm == null)
+       {
+           throw new IllegalArgumentException("dm: null");
+       }
+       if ( !containsProjectVersion( interpolatorProperties ) )
+       {
+           aliases.put( "\\$\\{project.version\\}", "\\$\\{version\\}" );
+       }
+       
+       if("jar".equals( dm.getModel().getPackaging() ) )
+       {
+           mps.add( new ModelProperty(ProjectUri.packaging, "jar") );
+       }  
+       
+       List<ModelProperty> firstPassModelProperties = new ArrayList<ModelProperty>();
+       List<ModelProperty> secondPassModelProperties = new ArrayList<ModelProperty>();
+
+       ModelProperty buildProperty = new ModelProperty( ProjectUri.Build.xUri, null );
+       for ( ModelProperty mp : mps )
+       {
+           if ( mp.getValue() != null )
+           {
+        	   //!buildProperty.isParentOf( mp ) && 
+               if ( ( !mp.getUri().equals( ProjectUri.Reporting.outputDirectory ) || mp.getUri().equals(
+                                                                                                                                            ProjectUri.Build.finalName ) ) )
+               {
+                   firstPassModelProperties.add( mp );
+               }
+               else
+               {
+                   secondPassModelProperties.add( mp );
+               }
+           }
+       }
+
+       List<InterpolatorProperty> standardInterpolatorProperties = new ArrayList<InterpolatorProperty>();
+       
+        if ( dm.isPomInBuild() )
+       {
+           String basedir = dm.getProjectDirectory().getAbsolutePath();
+           standardInterpolatorProperties.add( new InterpolatorProperty( "${project.basedir}", basedir,
+                                                                         PomInterpolatorTag.PROJECT_PROPERTIES.name() ) );
+           standardInterpolatorProperties.add( new InterpolatorProperty( "${basedir}", basedir,
+                                                                         PomInterpolatorTag.PROJECT_PROPERTIES.name() ) );
+           standardInterpolatorProperties.add( new InterpolatorProperty( "${pom.basedir}", basedir,
+                                                                         PomInterpolatorTag.PROJECT_PROPERTIES.name() ) );
+
+           String baseuri = dm.getProjectDirectory().toURI().toString();
+           standardInterpolatorProperties.add( new InterpolatorProperty( "${project.baseUri}", baseuri,
+                                                                         PomInterpolatorTag.PROJECT_PROPERTIES.name() ) );
+           standardInterpolatorProperties.add( new InterpolatorProperty( "${pom.baseUri}", baseuri,
+                                                                         PomInterpolatorTag.PROJECT_PROPERTIES.name() ) );
+       }
+        
+       for ( ModelProperty mp : mps )
+       {
+           if ( mp.getUri().startsWith( ProjectUri.properties ) && mp.getValue() != null )
+           {
+               String uri = mp.getUri();
+               standardInterpolatorProperties.add( new InterpolatorProperty(
+                                                                             "${"
+                                                                                 + uri.substring(
+                                                                                                  uri.lastIndexOf( "/" ) + 1,
+                                                                                                  uri.length() ) + "}",
+                                                                             mp.getValue(),
+                                                                             PomInterpolatorTag.PROJECT_PROPERTIES.name() ) );
+           }
+       }
+
+       // FIRST PASS - Withhold using build directories as interpolator properties
+       List<InterpolatorProperty> ips1 = new ArrayList<InterpolatorProperty>( interpolatorProperties );
+       ips1.addAll( standardInterpolatorProperties );
+       ips1.addAll(createInterpolatorProperties(firstPassModelProperties,
+				ProjectUri.baseUri, aliases,
+				PomInterpolatorTag.PROJECT_PROPERTIES.name()));
+       Collections.sort( ips1, new Comparator<InterpolatorProperty>()
+       {
+           public int compare( InterpolatorProperty o, InterpolatorProperty o1 )
+           {
+               if ( o.getTag() == null || o1.getTag() == null )
+               {
+                   return 0;
+               }
+               return PomInterpolatorTag.valueOf( o.getTag() ).compareTo( PomInterpolatorTag.valueOf( o1.getTag() ) );
+           }
+       } );
+
+       interpolateModelProperties( mps, ips1 );
+
+       // SECOND PASS - Set absolute paths on build directories
+
+        if ( dm.isPomInBuild() )
+       {
+           String basedir = dm.getProjectDirectory().getAbsolutePath();
+           Map<ModelProperty, ModelProperty> buildDirectories = new HashMap<ModelProperty, ModelProperty>();
+           for ( ModelProperty mp : secondPassModelProperties )
+           {
+               if ( mp.getUri().startsWith( ProjectUri.Build.xUri )
+                   || mp.getUri().equals( ProjectUri.Reporting.outputDirectory ) )
+               {
+                   File file = new File( mp.getResolvedValue() );
+                   if ( !file.isAbsolute() && !mp.getResolvedValue().startsWith( "${project.build." )
+                       && !mp.getResolvedValue().equals( "${project.basedir}" ) )
+                   {
+                       buildDirectories.put( mp,
+                                             new ModelProperty( mp.getUri(),
+                                                                new File( basedir, file.getPath() ).getAbsolutePath() ) );
+                   }
+               }
+           }
+           for ( Map.Entry<ModelProperty, ModelProperty> e : buildDirectories.entrySet() )
+           {
+               secondPassModelProperties.remove( e.getKey() );
+               secondPassModelProperties.add( e.getValue() );
+           }
+       }
+
+       // THIRD PASS - Use build directories as interpolator properties
+       List<InterpolatorProperty> ips2 = new ArrayList<InterpolatorProperty>( interpolatorProperties );
+       ips2.addAll( standardInterpolatorProperties );
+       ips2.addAll(createInterpolatorProperties(secondPassModelProperties,
+				ProjectUri.baseUri, aliases,
+				PomInterpolatorTag.PROJECT_PROPERTIES.name()));
+       ips2.addAll( interpolatorProperties );
+       Collections.sort( ips2, new Comparator<InterpolatorProperty>()
+       {
+           public int compare( InterpolatorProperty o, InterpolatorProperty o1 )
+           {
+               if ( o.getTag() == null || o1.getTag() == null )
+               {
+                   return 0;
+               }
+
+               return PomInterpolatorTag.valueOf( o.getTag() ).compareTo( PomInterpolatorTag.valueOf( o1.getTag() ) );
+           }
+       } );
+       
+       interpolateModelProperties( mps, ips2 );
+   }
+   
+   private static void interpolateModelProperties(
+			List<ModelProperty> modelProperties,
+			List<InterpolatorProperty> interpolatorProperties) {
+		if (modelProperties == null) {
+			throw new IllegalArgumentException("modelProperties: null");
+		}
+
+		if (interpolatorProperties == null) {
+			throw new IllegalArgumentException("interpolatorProperties: null");
+		}
+
+		List<ModelProperty> unresolvedProperties = new ArrayList<ModelProperty>();
+		for (ModelProperty mp : modelProperties) {
+			if (!mp.isResolved()) {
+				unresolvedProperties.add(mp);
+			}
+		}
+
+		LinkedHashSet<InterpolatorProperty> ips = new LinkedHashSet<InterpolatorProperty>();
+		ips.addAll(interpolatorProperties);
+		boolean continueInterpolation = true;
+		while (continueInterpolation) {
+			continueInterpolation = false;
+			for (InterpolatorProperty ip : ips) {
+				for (ModelProperty mp : unresolvedProperties) {
+					if (mp.resolveWith(ip) && !continueInterpolation) {
+						continueInterpolation = true;
+					}
+				}
+			}
+		}
+	}
+ 
+   public static List<InterpolatorProperty> createInterpolatorProperties(List<ModelProperty> modelProperties,
+           String baseUriForModel,
+           Map<String, String> aliases,
+           String interpolatorTag)
+{
+		if (modelProperties == null) {
+			throw new IllegalArgumentException("modelProperties: null");
+		}
+
+		if (baseUriForModel == null) {
+			throw new IllegalArgumentException("baseUriForModel: null");
+		}
+
+		List<InterpolatorProperty> interpolatorProperties = new ArrayList<InterpolatorProperty>();
+
+		for (ModelProperty mp : modelProperties) {
+			InterpolatorProperty ip = mp
+					.asInterpolatorProperty(baseUriForModel);
+			if (ip != null) {
+				ip.setTag(interpolatorTag);
+				interpolatorProperties.add(ip);
+				for (Map.Entry<String, String> a : aliases.entrySet()) {
+					interpolatorProperties.add(new InterpolatorProperty(ip
+							.getKey().replaceAll(a.getKey(), a.getValue()), ip
+							.getValue().replaceAll(a.getKey(), a.getValue()),
+							interpolatorTag));
+				}
+			}
+		}
+
+		List<InterpolatorProperty> ips = new ArrayList<InterpolatorProperty>();
+		for (InterpolatorProperty ip : interpolatorProperties) {
+			if (!ips.contains(ip)) {
+				ips.add(ip);
+			}
+		}
+		return ips;
+	}   
+  
+   private static boolean containsProjectVersion( List<InterpolatorProperty> interpolatorProperties )
+   {
+       InterpolatorProperty versionInterpolatorProperty =
+           new ModelProperty( ProjectUri.version, "" ).asInterpolatorProperty( ProjectUri.baseUri );
+       for ( InterpolatorProperty ip : interpolatorProperties )
+       {
+           if ( ip.equals( versionInterpolatorProperty ) )
+           {
+               return true;
+           }
+       }
+       return false;
+   }  
+   
+}

Added: maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/interpolator/ModelProperty.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/interpolator/ModelProperty.java?rev=764568&view=auto
==============================================================================
--- maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/interpolator/ModelProperty.java (added)
+++ maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/interpolator/ModelProperty.java Mon Apr 13 19:14:44 2009
@@ -0,0 +1,254 @@
+package org.apache.maven.project.builder.interpolator;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * Maps a URI to a string value, which may be null. This class is immutable.
+ */
+public final class ModelProperty
+{
+
+    /**
+     * A pattern used for finding pom, project and env properties
+     */
+    private static final Pattern EXPRESSION_PATTERN = Pattern.compile( "\\$\\{(pom\\.|project\\.|env\\.)?([^}]+)\\}" );
+
+    /**
+     * URI of the resource
+     */
+    private final String uri;
+
+    /**
+     * Value associated with the uri
+     */
+    private final String value;
+
+    /**
+     * The count of '/' within this model property's uri, which is the depth of its XML nodes.
+     */
+    private final int depth;
+
+    /**
+     * Value of this model property after interpolation
+     */
+    private String resolvedValue;
+
+    /**
+     * List of unresolved expressions within this model property's value
+     */
+    private final List<String> unresolvedExpressions;
+
+    /**
+     * Constructor
+     *
+     * @param uri   URI of the resource. May not be null
+     * @param value Value associated with specified uri. Value may be null if uri does not map to primitive type.
+     */
+    public ModelProperty( String uri, String value )
+    {
+        if ( uri == null )
+        {
+            throw new IllegalArgumentException( "uri" );
+        }
+        this.uri = uri;
+        this.value = value;
+        resolvedValue = value;
+
+        unresolvedExpressions = new ArrayList<String>();
+        if ( value != null )
+        {
+            Matcher matcher = EXPRESSION_PATTERN.matcher( value );
+            while ( matcher.find() )
+            {
+                unresolvedExpressions.add( matcher.group( 0 ) );
+            }
+        }
+
+        String uriWithoutProperty;
+        int index =  uri.lastIndexOf( "/" );
+        if(index > -1) {
+            uriWithoutProperty = uri.substring( 0, uri.lastIndexOf( "/" ) );
+            if(uriWithoutProperty.endsWith("#property") || uriWithoutProperty.endsWith("combine.children") )
+            {
+                uriWithoutProperty = uriWithoutProperty.substring( 0, uriWithoutProperty.lastIndexOf( "/" ) );
+            }
+        }
+        else
+        {
+            uriWithoutProperty = uri;
+        }
+
+        depth = uriWithoutProperty.split( "/" ).length;
+    }
+
+    /**
+     * Returns URI key
+     *
+     * @return URI key
+     */
+    public String getUri()
+    {
+        return uri;
+    }
+
+    /**
+     * Returns value for the URI key. Value may be null.
+     *
+     * @return value for the URI key. Value may be null
+     */
+    public String getValue()
+    {
+        return value;
+    }
+
+    /**
+     * Value of this model property after interpolation. CDATA section will be added if needed.
+     *
+     * @return value of this model property after interpolation
+     */
+    public String getResolvedValue()
+    {
+        if( !uri.contains("#property") && resolvedValue != null && !resolvedValue.startsWith ("<![CDATA[")
+                && (resolvedValue.contains( "=" ) || resolvedValue.contains( "<" ) || resolvedValue.contains( "&" )))
+        {
+            resolvedValue =  "<![CDATA[" + resolvedValue + "]]>";
+        }
+        return resolvedValue;
+    }
+
+    /**
+     * Returns true if model property is completely interpolated, otherwise returns false.
+     *
+     * @return true if model property is completely interpolated, otherwise returns false
+     */
+    public boolean isResolved()
+    {
+        return unresolvedExpressions.isEmpty();
+    }
+
+    /**
+     * Returns copy of the uninterpolated model property
+     *
+     * @return copy of the uninterpolated model property
+     */
+    public ModelProperty createCopyOfOriginal()
+    {
+        return new ModelProperty( uri, value );
+    }
+
+    /**
+     * Returns the count of '/' within this model property's uri, which is the depth of its XML nodes.
+     *
+     * @return the count of '/' within this model property's uri, which is the depth of its XML nodes
+     */
+    public int getDepth()
+    {
+        return depth;
+    }
+
+    /**
+     * Returns true if this model property is a direct parent of the specified model property, otherwise returns false.
+     *
+     * @param modelProperty the model property
+     * @return true if this model property is a direct parent of the specified model property, otherwise returns false
+     */
+    public boolean isParentOf( ModelProperty modelProperty )
+    {
+        if ( Math.abs( depth - modelProperty.getDepth() ) > 1 )
+        {
+            return false;
+        }
+        if ( uri.equals( modelProperty.getUri() ) || uri.startsWith( modelProperty.getUri() ) )
+        {
+            return false;
+        }
+        return ( modelProperty.getUri().startsWith( uri ) );
+    }
+
+    /**
+     * Returns this model property as an interpolator property, allowing the interpolation of model elements within
+     * other model elements.
+     *
+     * @param baseUri the base uri of the model property
+     * @return this model property as an interpolator property, allowing the interpolation of model elements within
+     *         other model elements
+     */
+    public InterpolatorProperty asInterpolatorProperty( String baseUri )
+    {
+        if ( uri.contains( "#collection" ) || uri.contains("#set") || value == null )
+        {
+            return null;
+        }
+        String key = "${" + uri.replace( baseUri + "/", "" ).replace( "/", "." ) + "}";
+        return new InterpolatorProperty( key, value );
+    }
+
+    /**
+     * Resolves any unresolved model property expressions using the specified interpolator property
+     *
+     * @param property the interpolator property used to resolve
+     */
+    public boolean resolveWith( InterpolatorProperty property )
+    {
+        if ( property == null )
+        {
+            throw new IllegalArgumentException( "property: null" );
+        }
+        if ( isResolved() )
+        {
+            return false;
+        }
+        boolean resolved = false;
+        for ( String expression : unresolvedExpressions )
+        {
+            if ( property.getKey().equals( expression ) )
+            {
+                resolved = true;
+                resolvedValue = resolvedValue.replace( property.getKey(), property.getValue() );
+                unresolvedExpressions.clear();
+                Matcher matcher = EXPRESSION_PATTERN.matcher( resolvedValue );
+                while ( matcher.find() )
+                {
+                    unresolvedExpressions.add( matcher.group( 0 ) );
+                }
+                break;
+            }
+        }
+        return resolved;
+    }
+
+    public String toCode() {
+        String val = (value != null) ? "\"" + value + "\"" : null;
+        return "mpz.add(new ModelProperty(\"" + uri + "\", " + val +"));";
+    }
+
+    public String toString()
+    {
+        return "Uri = " + uri + ", Value = " + value + ", Resolved Value = " + resolvedValue + ", Hash = " +
+            this.hashCode();
+    }
+}
+
+

Copied: maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/interpolator/PomInterpolatorTag.java (from r764415, maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/PomInterpolatorTag.java)
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/interpolator/PomInterpolatorTag.java?p2=maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/interpolator/PomInterpolatorTag.java&p1=maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/PomInterpolatorTag.java&r1=764415&r2=764568&rev=764568&view=diff
==============================================================================
--- maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/PomInterpolatorTag.java (original)
+++ maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/interpolator/PomInterpolatorTag.java Mon Apr 13 19:14:44 2009
@@ -1,4 +1,4 @@
-package org.apache.maven.project.builder;
+package org.apache.maven.project.builder.interpolator;
 
 
 public enum PomInterpolatorTag

Propchange: maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/interpolator/PomInterpolatorTag.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/interpolator/PomInterpolatorTag.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Propchange: maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/interpolator/PomInterpolatorTag.java
------------------------------------------------------------------------------
--- svn:mergeinfo (added)
+++ svn:mergeinfo Mon Apr 13 19:14:44 2009
@@ -0,0 +1,7 @@
+/maven/components/branches/MNG-3932-1/maven-project-builder/src/main/java/org/apache/maven/project/builder/PomInterpolatorTag.java:746145-746157
+/maven/components/branches/maven-2.0.10-RC/maven-project-builder/src/main/java/org/apache/maven/project/builder/PomInterpolatorTag.java:680477
+/maven/components/branches/maven-2.0.x/maven-project-builder/src/main/java/org/apache/maven/project/builder/PomInterpolatorTag.java:679206,708871,720042,726541,727548,727998,728264,728940,729060,729738,729785,730631
+/maven/components/branches/maven-2.1.x/maven-project-builder/src/main/java/org/apache/maven/project/builder/PomInterpolatorTag.java:739385,741841,747468,747683,748815,749612
+/maven/components/branches/sisbell-plugin-manager/maven-project-builder/src/main/java/org/apache/maven/project/builder/PomInterpolatorTag.java:738973-739966
+/maven/components/sisbell-plugin-manager/maven-project-builder/src/main/java/org/apache/maven/project/builder/PomInterpolatorTag.java:738757-738972
+/maven/components/trunk/maven-project-builder/src/main/java/org/apache/maven/project/builder/PomInterpolatorTag.java:688587-696625,696644-699681

Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/DefaultProfileManager.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/DefaultProfileManager.java?rev=764568&r1=764567&r2=764568&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/DefaultProfileManager.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/DefaultProfileManager.java Mon Apr 13 19:14:44 2009
@@ -30,9 +30,9 @@
 import org.apache.maven.profiles.matchers.JdkMatcher;
 import org.apache.maven.profiles.matchers.ProfileMatcher;
 import org.apache.maven.profiles.matchers.PropertyMatcher;
-import org.apache.maven.shared.model.InterpolatorProperty;
 import org.apache.maven.project.ProjectBuilderConfiguration;
-import org.apache.maven.project.builder.PomInterpolatorTag;
+import org.apache.maven.project.builder.interpolator.InterpolatorProperty;
+import org.apache.maven.project.builder.interpolator.PomInterpolatorTag;
 import org.codehaus.plexus.PlexusContainer;
 import org.codehaus.plexus.MutablePlexusContainer;
 

Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/ProfileManagerInfo.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/ProfileManagerInfo.java?rev=764568&r1=764567&r2=764568&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/ProfileManagerInfo.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/ProfileManagerInfo.java Mon Apr 13 19:14:44 2009
@@ -4,7 +4,7 @@
 import java.util.Collection;
 import java.util.List;
 
-import org.apache.maven.shared.model.InterpolatorProperty;
+import org.apache.maven.project.builder.interpolator.InterpolatorProperty;
 
 public class ProfileManagerInfo
 {

Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/matchers/DefaultMatcher.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/matchers/DefaultMatcher.java?rev=764568&r1=764567&r2=764568&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/matchers/DefaultMatcher.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/matchers/DefaultMatcher.java Mon Apr 13 19:14:44 2009
@@ -22,7 +22,7 @@
 import java.util.List;
 
 import org.apache.maven.model.Profile;
-import org.apache.maven.shared.model.InterpolatorProperty;
+import org.apache.maven.project.builder.interpolator.InterpolatorProperty;
 
 public class DefaultMatcher implements ProfileMatcher
 {

Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/matchers/FileMatcher.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/matchers/FileMatcher.java?rev=764568&r1=764567&r2=764568&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/matchers/FileMatcher.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/matchers/FileMatcher.java Mon Apr 13 19:14:44 2009
@@ -5,7 +5,7 @@
 
 import org.apache.maven.model.ActivationFile;
 import org.apache.maven.model.Profile;
-import org.apache.maven.shared.model.InterpolatorProperty;
+import org.apache.maven.project.builder.interpolator.InterpolatorProperty;
 
 public class FileMatcher implements ProfileMatcher {
 

Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/matchers/JdkMatcher.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/matchers/JdkMatcher.java?rev=764568&r1=764567&r2=764568&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/matchers/JdkMatcher.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/matchers/JdkMatcher.java Mon Apr 13 19:14:44 2009
@@ -5,7 +5,7 @@
 import java.util.List;
 
 import org.apache.maven.model.Profile;
-import org.apache.maven.shared.model.InterpolatorProperty;
+import org.apache.maven.project.builder.interpolator.InterpolatorProperty;
 
 public class JdkMatcher
 	implements ProfileMatcher 

Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/matchers/ProfileMatcher.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/matchers/ProfileMatcher.java?rev=764568&r1=764567&r2=764568&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/matchers/ProfileMatcher.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/matchers/ProfileMatcher.java Mon Apr 13 19:14:44 2009
@@ -21,7 +21,7 @@
 
 import java.util.List;
 
-import org.apache.maven.shared.model.InterpolatorProperty;
+import org.apache.maven.project.builder.interpolator.InterpolatorProperty;
 import org.apache.maven.model.Profile;
 
 public interface ProfileMatcher

Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/matchers/PropertyMatcher.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/matchers/PropertyMatcher.java?rev=764568&r1=764567&r2=764568&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/matchers/PropertyMatcher.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/matchers/PropertyMatcher.java Mon Apr 13 19:14:44 2009
@@ -22,7 +22,7 @@
 import java.util.List;
 
 import org.apache.maven.model.Profile;
-import org.apache.maven.shared.model.InterpolatorProperty;
+import org.apache.maven.project.builder.interpolator.InterpolatorProperty;
 
 public class PropertyMatcher implements ProfileMatcher
 {

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=764568&r1=764567&r2=764568&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 Mon Apr 13 19:14:44 2009
@@ -41,23 +41,22 @@
 import org.apache.maven.model.Model;
 import org.apache.maven.model.Profile;
 import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
-import org.apache.maven.model.io.xpp3.MavenXpp3Writer;
 import org.apache.maven.profiles.DefaultProfileManager;
 import org.apache.maven.profiles.ProfileActivationException;
 import org.apache.maven.profiles.ProfileManagerInfo;
 import org.apache.maven.profiles.ProfileManager;
 import org.apache.maven.project.artifact.InvalidDependencyVersionException;
 import org.apache.maven.project.builder.PomClassicDomainModel;
-import org.apache.maven.project.builder.PomInterpolatorTag;
-import org.apache.maven.project.processor.ProcessorContext;
+import org.apache.maven.project.builder.ProcessorContext;
+import org.apache.maven.project.builder.interpolator.DomainModel;
+import org.apache.maven.project.builder.interpolator.InterpolatorProperty;
+import org.apache.maven.project.builder.interpolator.ModelProperty;
+import org.apache.maven.project.builder.interpolator.PomInterpolatorTag;
 import org.apache.maven.project.validation.ModelValidationResult;
 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.DomainModel;
-import org.apache.maven.shared.model.InterpolatorProperty;
 import org.apache.maven.shared.model.ModelEventListener;
-import org.apache.maven.shared.model.ModelProperty;
 import org.codehaus.plexus.PlexusContainer;
 import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.component.annotations.Requirement;
@@ -65,7 +64,6 @@
 import org.codehaus.plexus.util.IOUtil;
 import org.codehaus.plexus.util.ReaderFactory;
 import org.codehaus.plexus.util.StringUtils;
-import org.codehaus.plexus.util.WriterFactory;
 
 /**
  * @version $Id$
@@ -388,11 +386,13 @@
         {
             interpolatorProperties.add( new InterpolatorProperty( "${build.timestamp}", new SimpleDateFormat( "yyyyMMdd-hhmm" ).format( config.getBuildStartTime() ),
                                                                   PomInterpolatorTag.PROJECT_PROPERTIES.name() ) );
-        }      
+        }    
+        
             try
             {
-            	List<ModelProperty> mps = domainModel.getModelProperties();
-            	ProcessorContext.interpolateModelProperties( mps, interpolatorProperties, domainModel );
+            	//List<ModelProperty> mps = domainModel.getModelProperties();
+            	model = ProcessorContext.interpolateDomainModel( domainModel, interpolatorProperties ).getModel();
+            	/*
             	if ( domainModel.getProjectDirectory() != null )
             	{
             		mps = ProcessorContext.alignPaths( mps, domainModel.getProjectDirectory() );
@@ -400,14 +400,17 @@
             	File f = domainModel.getParentFile();
             	domainModel = new PomClassicDomainModel( mps, false );
             	domainModel.setParentFile(f);
+
             	model = domainModel.getModel();
+            	*/
 
             }
             catch ( IOException e )
             {
 
                 throw new ProjectBuildingException(projectId, "", projectDescriptor, e);
-            }   
+            }  
+            
 
         MavenProject project;
 
@@ -481,7 +484,7 @@
             	domainModels.addAll( mavenParents );
             }
 
-            domainModels.add( convertToDomainModel( getSuperModel(), false ) );
+            domainModels.add( new PomClassicDomainModel( getSuperModel(), false ) );
             List<DomainModel> profileModels = new ArrayList<DomainModel>();
             //Process Profiles
             for(DomainModel domain : domainModels)
@@ -567,31 +570,6 @@
         }
     }
 
-    private static PomClassicDomainModel convertToDomainModel( Model model, boolean isMostSpecialized )
-        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() ), isMostSpecialized );
-    }
-
     /**
      * Returns true if the relative path of the specified parent references a pom, otherwise returns
      * false.

Modified: maven/components/trunk/maven-project/src/test/java/org/apache/maven/profiles/matchers/JdkMatcherTest.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/test/java/org/apache/maven/profiles/matchers/JdkMatcherTest.java?rev=764568&r1=764567&r2=764568&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/test/java/org/apache/maven/profiles/matchers/JdkMatcherTest.java (original)
+++ maven/components/trunk/maven-project/src/test/java/org/apache/maven/profiles/matchers/JdkMatcherTest.java Mon Apr 13 19:14:44 2009
@@ -4,7 +4,7 @@
 
 import org.apache.maven.model.Activation;
 import org.apache.maven.model.Profile;
-import org.apache.maven.shared.model.InterpolatorProperty;
+import org.apache.maven.project.builder.interpolator.InterpolatorProperty;
 
 import junit.framework.TestCase;
 

Modified: maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/harness/PomTestWrapper.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/harness/PomTestWrapper.java?rev=764568&r1=764567&r2=764568&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/harness/PomTestWrapper.java (original)
+++ maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/harness/PomTestWrapper.java Mon Apr 13 19:14:44 2009
@@ -32,8 +32,8 @@
 import org.apache.maven.model.io.xpp3.MavenXpp3Writer;
 import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
 import org.apache.maven.project.builder.PomClassicDomainModel;
+import org.apache.maven.project.builder.interpolator.ModelProperty;
 import org.apache.maven.project.MavenProject;
-import org.apache.maven.shared.model.ModelProperty;
 import org.codehaus.plexus.util.WriterFactory;
 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
 
@@ -68,11 +68,7 @@
         }
         this.domainModel = domainModel;
         this.pomFile = pomFile;
-        try {
-            context = JXPathContext.newContext( new MavenXpp3Reader().read(domainModel.getInputStream()));
-        } catch (XmlPullParserException e) {
-            throw new IOException(e.getMessage());
-        }
+        context = JXPathContext.newContext( domainModel.getModel());
     }
 
     public PomTestWrapper( File pomFile, MavenProject mavenProject )
@@ -107,11 +103,7 @@
         }
 
         this.domainModel = new PomClassicDomainModel( file );
-        try {
-            context = JXPathContext.newContext( new MavenXpp3Reader().read(domainModel.getInputStream()));
-        } catch (XmlPullParserException e) {
-            throw new IOException(e.getMessage());
-        }
+        context = JXPathContext.newContext( domainModel.getModel() );
     }
 
     public MavenProject getMavenProject()
@@ -120,67 +112,26 @@
     }
 
     public PomClassicDomainModel getDomainModel()
-    {
+    	throws IOException {
         if ( domainModel == null && mavenProject != null )
         {
-            try
-            {
-                domainModel = convertToDomainModel( mavenProject.getModel() );
+                domainModel = new PomClassicDomainModel( mavenProject.getModel() );
                 int lineageCount = 1;
                 for ( MavenProject parent = mavenProject.getParent(); parent != null; parent = parent.getParent() )
                 {
                     lineageCount++;
                 }
                 domainModel.setLineageCount( lineageCount );
-            }
-            catch ( IOException e )
-            {
-
-            }
         }
 
         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;
     }
 
-    public String getValueOfProjectUri( String projectUri, boolean withResolvedValue )
-        throws IOException
-    {
-        if ( projectUri.contains( "#collection" ) || projectUri.contains( "#set" ) )
-        {
-            throw new IllegalArgumentException( "projectUri: contains a collection or set" );
-        }
-        return asMap( withResolvedValue ).get( projectUri );
-    }
-
     public void setValueOnModel( String expression, Object value )
     {
         context.setValue( expression, value );
@@ -227,106 +178,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;
-    }
-
 }