Author: sisbell
Date: Sun Sep 14 04:34:27 2008
New Revision: 695196
URL: http://svn.apache.org/viewvc?rev=695196&view=rev
Log:
Fix: mng3746 - Implemented proper ordering of system, user and model properties
used in interpolation. this required creating a tag value, which could be used
for comparing and ordering of InterpolatorProperty.
Added:
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/PomInterpolatorTag.java
Modified:
maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultBuildExtensionScanner.java
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/PomClassicTransformer.java
maven/components/trunk/maven-shared-model/src/main/java/org/apache/maven/shared/model/InterpolatorProperty.java
maven/components/trunk/maven-shared-model/src/main/java/org/apache/maven/shared/model/ModelTransformerContext.java
Modified:
maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultBuildExtensionScanner.java
URL:
http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultBuildExtensionScanner.java?rev=695196&r1=695195&r2=695196&view=diff
==============================================================================
---
maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultBuildExtensionScanner.java
(original)
+++
maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultBuildExtensionScanner.java
Sun Sep 14 04:34:27 2008
@@ -36,6 +36,7 @@
import org.apache.maven.project.ProjectBuilderConfiguration;
import org.apache.maven.project.ProjectBuildingException;
import org.apache.maven.project.builder.PomClassicTransformer;
+import org.apache.maven.project.builder.PomInterpolatorTag;
import org.apache.maven.extension.lineage.ModelLineage;
import org.apache.maven.extension.lineage.ModelLineageBuilder;
import org.apache.maven.extension.lineage.ModelLineageIterator;
@@ -163,8 +164,10 @@
config.setExecutionProperties( execProps );
List<InterpolatorProperty> interpolatorProperties = new
ArrayList<InterpolatorProperty>();
- interpolatorProperties.addAll(
InterpolatorProperty.toInterpolatorProperties(
config.getExecutionProperties()));
- interpolatorProperties.addAll(
InterpolatorProperty.toInterpolatorProperties( config.getUserProperties()));
+ interpolatorProperties.addAll(
InterpolatorProperty.toInterpolatorProperties( config.getExecutionProperties(),
+ PomInterpolatorTag.SYSTEM_PROPERTIES.name()));
+ interpolatorProperties.addAll(
InterpolatorProperty.toInterpolatorProperties( config.getUserProperties(),
+ PomInterpolatorTag.USER_PROPERTIES.name()));
model = PomClassicTransformer.interpolateModel( model,
interpolatorProperties, modelPom.getParentFile());
grabManagedPluginsWithExtensionsFlagTurnedOn( model,
managedPluginsWithExtensionsFlag );
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=695196&r1=695195&r2=695196&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
Sun Sep 14 04:34:27 2008
@@ -61,6 +61,7 @@
import org.apache.maven.project.ProjectBuildingException;
import org.apache.maven.project.ModelUtils;
import org.apache.maven.project.builder.PomClassicTransformer;
+import org.apache.maven.project.builder.PomInterpolatorTag;
import org.apache.maven.project.artifact.InvalidDependencyVersionException;
import org.apache.maven.project.artifact.MavenMetadataSource;
import org.apache.maven.realm.MavenRealmManager;
@@ -556,10 +557,12 @@
if ( dom != null )
{
try
- {
+ {
List<InterpolatorProperty> interpolatorProperties = new
ArrayList<InterpolatorProperty>();
- interpolatorProperties.addAll(
InterpolatorProperty.toInterpolatorProperties(
session.getProjectBuilderConfiguration().getExecutionProperties()));
- interpolatorProperties.addAll(
InterpolatorProperty.toInterpolatorProperties(
session.getProjectBuilderConfiguration().getUserProperties()));
+ interpolatorProperties.addAll(
InterpolatorProperty.toInterpolatorProperties(
session.getProjectBuilderConfiguration().getExecutionProperties(),
+ PomInterpolatorTag.SYSTEM_PROPERTIES.name()));
+ interpolatorProperties.addAll(
InterpolatorProperty.toInterpolatorProperties(
session.getProjectBuilderConfiguration().getUserProperties(),
+ PomInterpolatorTag.USER_PROPERTIES.name()));
String interpolatedDom =
PomClassicTransformer.interpolateXmlString(
String.valueOf( dom ), interpolatorProperties );
dom = Xpp3DomBuilder.build( new StringReader( interpolatedDom
) );
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=695196&r1=695195&r2=695196&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
Sun Sep 14 04:34:27 2008
@@ -44,6 +44,7 @@
import org.apache.maven.project.artifact.InvalidDependencyVersionException;
import org.apache.maven.project.builder.PomArtifactResolver;
import org.apache.maven.project.builder.ProjectBuilder;
+import org.apache.maven.project.builder.PomInterpolatorTag;
import org.apache.maven.project.validation.ModelValidationResult;
import org.apache.maven.project.validation.ModelValidator;
import org.apache.maven.project.workspace.ProjectWorkspace;
@@ -532,8 +533,10 @@
}
List<InterpolatorProperty> interpolatorProperties = new
ArrayList<InterpolatorProperty>();
- interpolatorProperties.addAll(
InterpolatorProperty.toInterpolatorProperties(
config.getExecutionProperties()));
- interpolatorProperties.addAll(
InterpolatorProperty.toInterpolatorProperties( config.getUserProperties()));
+ interpolatorProperties.addAll(
InterpolatorProperty.toInterpolatorProperties( config.getExecutionProperties(),
+ PomInterpolatorTag.SYSTEM_PROPERTIES.name()));
+ interpolatorProperties.addAll(
InterpolatorProperty.toInterpolatorProperties( config.getUserProperties(),
+ PomInterpolatorTag.USER_PROPERTIES.name()));
MavenProject mavenProject;
try
Modified:
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/PomClassicTransformer.java
URL:
http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/PomClassicTransformer.java?rev=695196&r1=695195&r2=695196&view=diff
==============================================================================
---
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/PomClassicTransformer.java
(original)
+++
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/PomClassicTransformer.java
Sun Sep 14 04:34:27 2008
@@ -29,14 +29,7 @@
import java.io.StringReader;
import java.io.File;
import java.io.ByteArrayInputStream;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
+import java.util.*;
/**
* Provides methods for transforming model properties into a domain model for
the pom classic format and vice versa.
@@ -506,7 +499,7 @@
List<InterpolatorProperty> ips = new
ArrayList<InterpolatorProperty>(interpolatorProperties);
ips.addAll(ModelTransformerContext.createInterpolatorProperties(modelProperties,
ProjectUri.baseUri, aliases,
- false, false));
+ PomInterpolatorTag.PROJECT_PROPERTIES.name(), false,
false));
for(ModelProperty mp : modelProperties)
{
@@ -593,9 +586,12 @@
List<InterpolatorProperty> standardInterpolatorProperties = new
ArrayList<InterpolatorProperty>();
if(domainModel.isPomInBuild())
{
- standardInterpolatorProperties.add(new
InterpolatorProperty("${project.basedir}", basedir ));
- standardInterpolatorProperties.add(new
InterpolatorProperty("${basedir}", basedir ));
- standardInterpolatorProperties.add(new
InterpolatorProperty("${pom.basedir}", basedir ));
+ 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() ));
}
@@ -605,15 +601,21 @@
{
String uri = mp.getUri();
standardInterpolatorProperties.add( new InterpolatorProperty(
"${" + uri.substring( uri.lastIndexOf( "/" ) + 1,
- uri.length() ) + "}", mp.getValue() ) );
+ 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(ModelTransformerContext.createInterpolatorProperties(firstPassModelProperties,
ProjectUri.baseUri, aliases,
- false, false));
ips1.addAll(standardInterpolatorProperties);
+
ips1.addAll(ModelTransformerContext.createInterpolatorProperties(firstPassModelProperties,
ProjectUri.baseUri, aliases,
+ PomInterpolatorTag.PROJECT_PROPERTIES.name(), false,
false));
+ Collections.sort(ips1, new Comparator<InterpolatorProperty>()
+ {
+ public int compare(InterpolatorProperty o, InterpolatorProperty
o1) {
+ return
PomInterpolatorTag.valueOf(o.getTag()).compareTo(PomInterpolatorTag.valueOf(o1.getTag()));
+ }
+ });
ModelTransformerContext.interpolateModelProperties( modelProperties,
ips1 );
@@ -642,9 +644,16 @@
//THIRD PASS - Use build directories as interpolator properties
List<InterpolatorProperty> ips2 = new
ArrayList<InterpolatorProperty>(interpolatorProperties);
+ ips2.addAll(standardInterpolatorProperties);
ips2.addAll(ModelTransformerContext.createInterpolatorProperties(secondPassModelProperties,
ProjectUri.baseUri, aliases,
- false, false));
- ips2.addAll(standardInterpolatorProperties);
+ PomInterpolatorTag.PROJECT_PROPERTIES.name(), false,
false));
+ ips2.addAll(interpolatorProperties);
+ Collections.sort(ips2, new Comparator<InterpolatorProperty>()
+ {
+ public int compare(InterpolatorProperty o, InterpolatorProperty
o1) {
+ return
PomInterpolatorTag.valueOf(o.getTag()).compareTo(PomInterpolatorTag.valueOf(o1.getTag()));
+ }
+ });
ModelTransformerContext.interpolateModelProperties( modelProperties,
ips2 );
}
Added:
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/PomInterpolatorTag.java
URL:
http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/PomInterpolatorTag.java?rev=695196&view=auto
==============================================================================
---
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/PomInterpolatorTag.java
(added)
+++
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/builder/PomInterpolatorTag.java
Sun Sep 14 04:34:27 2008
@@ -0,0 +1,14 @@
+package org.apache.maven.project.builder;
+
+
+public enum PomInterpolatorTag
+{
+
+ USER_PROPERTIES,
+
+ PROJECT_PROPERTIES,
+
+ SYSTEM_PROPERTIES
+
+
+}
Modified:
maven/components/trunk/maven-shared-model/src/main/java/org/apache/maven/shared/model/InterpolatorProperty.java
URL:
http://svn.apache.org/viewvc/maven/components/trunk/maven-shared-model/src/main/java/org/apache/maven/shared/model/InterpolatorProperty.java?rev=695196&r1=695195&r2=695196&view=diff
==============================================================================
---
maven/components/trunk/maven-shared-model/src/main/java/org/apache/maven/shared/model/InterpolatorProperty.java
(original)
+++
maven/components/trunk/maven-shared-model/src/main/java/org/apache/maven/shared/model/InterpolatorProperty.java
Sun Sep 14 04:34:27 2008
@@ -36,6 +36,11 @@
*/
private final String value;
+ /**
+ * Metadata tag (general use)
+ */
+ private String tag;
+
/**
* Constructor
@@ -45,6 +50,11 @@
*/
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" );
@@ -56,6 +66,8 @@
}
this.key = key;
this.value = value;
+ this.tag = tag;
+
}
/**
@@ -78,6 +90,16 @@
return value;
}
+ public String getTag()
+ {
+ return tag;
+ }
+
+ public void setTag(String tag)
+ {
+ this.tag = tag;
+ }
+
/**
* Returns true if key values match, otherwise returns false.
*
@@ -121,7 +143,7 @@
this.hashCode();
}
- public static List<InterpolatorProperty> toInterpolatorProperties(
Properties properties )
+ public static List<InterpolatorProperty> toInterpolatorProperties(
Properties properties, String tag )
{
if( properties == null )
{
@@ -131,7 +153,7 @@
List<InterpolatorProperty> interpolatorProperties = new
ArrayList<InterpolatorProperty>();
for ( Map.Entry<Object, Object> e : properties.entrySet() )
{
- interpolatorProperties.add( new InterpolatorProperty( "${" +
e.getKey() +"}", (String) e.getValue()) );
+ interpolatorProperties.add( new InterpolatorProperty( "${" +
e.getKey() +"}", (String) e.getValue(), tag) );
}
return interpolatorProperties;
}
Modified:
maven/components/trunk/maven-shared-model/src/main/java/org/apache/maven/shared/model/ModelTransformerContext.java
URL:
http://svn.apache.org/viewvc/maven/components/trunk/maven-shared-model/src/main/java/org/apache/maven/shared/model/ModelTransformerContext.java?rev=695196&r1=695195&r2=695196&view=diff
==============================================================================
---
maven/components/trunk/maven-shared-model/src/main/java/org/apache/maven/shared/model/ModelTransformerContext.java
(original)
+++
maven/components/trunk/maven-shared-model/src/main/java/org/apache/maven/shared/model/ModelTransformerContext.java
Sun Sep 14 04:34:27 2008
@@ -78,6 +78,7 @@
public static List<InterpolatorProperty>
createInterpolatorProperties(List<ModelProperty> modelProperties,
String
baseUriForModel,
Map<String, String> aliases,
+ String
interpolatorTag,
boolean
includeSystemProperties,
boolean
includeEnvironmentProperties)
{
@@ -108,13 +109,14 @@
{
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()) ) );
+ ip.getValue().replaceAll( a.getKey(),
a.getValue()),
+ interpolatorTag) );
}
}
}
@@ -124,6 +126,15 @@
public 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 )
@@ -134,7 +145,10 @@
}
}
- for ( InterpolatorProperty ip : interpolatorProperties )
+ LinkedHashSet<InterpolatorProperty> ips = new
LinkedHashSet<InterpolatorProperty>();
+ ips.addAll(interpolatorProperties);
+
+ for ( InterpolatorProperty ip : ips)
{
for ( ModelProperty mp : unresolvedProperties )
{
@@ -142,8 +156,7 @@
}
}
-
- for ( InterpolatorProperty ip : interpolatorProperties )
+ for ( InterpolatorProperty ip : ips )
{
for ( ModelProperty mp : unresolvedProperties )
{
@@ -152,7 +165,6 @@
}
}
-
/**
* Transforms the specified model properties using the specified
transformers.
*