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;
- }
-
}