Author: justin
Date: Thu Oct 6 17:03:55 2011
New Revision: 1179709
URL: http://svn.apache.org/viewvc?rev=1179709&view=rev
Log:
SLING-2238 - doing property interpolation on bundle list
Modified:
sling/trunk/maven/maven-launchpad-plugin/src/main/java/org/apache/sling/maven/projectsupport/AbstractUsingBundleListMojo.java
Modified:
sling/trunk/maven/maven-launchpad-plugin/src/main/java/org/apache/sling/maven/projectsupport/AbstractUsingBundleListMojo.java
URL:
http://svn.apache.org/viewvc/sling/trunk/maven/maven-launchpad-plugin/src/main/java/org/apache/sling/maven/projectsupport/AbstractUsingBundleListMojo.java?rev=1179709&r1=1179708&r2=1179709&view=diff
==============================================================================
---
sling/trunk/maven/maven-launchpad-plugin/src/main/java/org/apache/sling/maven/projectsupport/AbstractUsingBundleListMojo.java
(original)
+++
sling/trunk/maven/maven-launchpad-plugin/src/main/java/org/apache/sling/maven/projectsupport/AbstractUsingBundleListMojo.java
Thu Oct 6 17:03:55 2011
@@ -21,6 +21,7 @@ import java.io.FileInputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
+import java.util.Arrays;
import java.util.Enumeration;
import java.util.List;
import java.util.Properties;
@@ -40,13 +41,21 @@ import org.apache.maven.artifact.version
import org.apache.maven.execution.MavenSession;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.settings.Settings;
import org.apache.maven.shared.filtering.MavenFileFilter;
import org.apache.maven.shared.filtering.MavenFilteringException;
import org.apache.maven.shared.filtering.PropertyUtils;
+import org.apache.sling.maven.projectsupport.bundlelist.v1_0_0.Bundle;
import org.apache.sling.maven.projectsupport.bundlelist.v1_0_0.BundleList;
+import org.apache.sling.maven.projectsupport.bundlelist.v1_0_0.StartLevel;
import
org.apache.sling.maven.projectsupport.bundlelist.v1_0_0.io.xpp3.BundleListXpp3Reader;
import org.codehaus.plexus.archiver.ArchiverException;
import org.codehaus.plexus.archiver.zip.ZipUnArchiver;
+import org.codehaus.plexus.interpolation.InterpolationException;
+import org.codehaus.plexus.interpolation.Interpolator;
+import org.codehaus.plexus.interpolation.PrefixedObjectValueSource;
+import org.codehaus.plexus.interpolation.PropertiesBasedValueSource;
+import org.codehaus.plexus.interpolation.StringSearchInterpolator;
import org.codehaus.plexus.util.FileUtils;
import org.codehaus.plexus.util.StringUtils;
import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
@@ -422,9 +431,53 @@ public abstract class AbstractUsingBundl
initBundleList(bundleList);
+ interpolateProperties(bundleList);
+
rewriteBundleList(bundleList);
}
+ private void interpolateProperties(BundleList bundleList) throws
MojoExecutionException {
+ Interpolator interpolator = createInterpolator();
+ for (final StartLevel sl : bundleList.getStartLevels()) {
+ for (final Bundle bndl : sl.getBundles()) {
+ try {
+
bndl.setArtifactId(interpolator.interpolate(bndl.getArtifactId()));
+
bndl.setGroupId(interpolator.interpolate(bndl.getGroupId()));
+
bndl.setVersion(interpolator.interpolate(bndl.getVersion()));
+
bndl.setClassifier(interpolator.interpolate(bndl.getClassifier()));
+ bndl.setType(interpolator.interpolate(bndl.getType()));
+ } catch (InterpolationException e) {
+ throw new MojoExecutionException("Unable to interpolate
properties for bundle " + bndl.toString(), e);
+ }
+ }
+ }
+
+ }
+
+ private Interpolator createInterpolator() {
+ StringSearchInterpolator interpolator = new StringSearchInterpolator();
+
+ final Properties props = new Properties();
+ props.putAll(project.getProperties());
+ props.putAll(mavenSession.getExecutionProperties());
+
+ interpolator.addValueSource(new PropertiesBasedValueSource(props));
+
+ // add ${project.foo}
+ interpolator.addValueSource(new
PrefixedObjectValueSource(Arrays.asList("project", "pom"), project, true));
+
+ // add ${session.foo}
+ interpolator.addValueSource(new PrefixedObjectValueSource("session",
mavenSession));
+
+ // add ${settings.foo}
+ final Settings settings = mavenSession.getSettings();
+ if (settings != null) {
+ interpolator.addValueSource(new
PrefixedObjectValueSource("settings", settings));
+ }
+
+ return interpolator;
+ }
+
private void rewriteBundleList(BundleList bundleList) throws
MojoExecutionException {
if (rewriteRuleFiles != null) {
KnowledgeBase knowledgeBase =
createKnowledgeBase(rewriteRuleFiles);