You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by kr...@apache.org on 2014/12/12 15:57:55 UTC
svn commit: r1644916 - in /maven/plugins/trunk/maven-assembly-plugin: ./
src/it/projects/bugs/massembly-743/
src/main/java/org/apache/maven/plugin/assembly/interpolation/
src/main/java/org/apache/maven/plugin/assembly/io/
src/test/java/org/apache/maven...
Author: krosenvold
Date: Fri Dec 12 14:57:54 2014
New Revision: 1644916
URL: http://svn.apache.org/r1644916
Log:
[MASSEMBLY-743] Cannot interpolate boolean values
Fixed with IT. Testcase supplied by Jean-Eric Cuendet.
Added:
maven/plugins/trunk/maven-assembly-plugin/src/it/projects/bugs/massembly-743/verify.bsh
Modified:
maven/plugins/trunk/maven-assembly-plugin/pom.xml
maven/plugins/trunk/maven-assembly-plugin/src/it/projects/bugs/massembly-743/assembly.xml
maven/plugins/trunk/maven-assembly-plugin/src/it/projects/bugs/massembly-743/pom.xml
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/interpolation/AssemblyExpressionEvaluator.java
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/interpolation/AssemblyInterpolator.java
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/io/DefaultAssemblyReader.java
maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/interpolation/AssemblyInterpolatorTest.java
maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/io/DefaultAssemblyReaderTest.java
Modified: maven/plugins/trunk/maven-assembly-plugin/pom.xml
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/pom.xml?rev=1644916&r1=1644915&r2=1644916&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/pom.xml (original)
+++ maven/plugins/trunk/maven-assembly-plugin/pom.xml Fri Dec 12 14:57:54 2014
@@ -250,6 +250,7 @@ under the License.
<plugin>
<groupId>org.codehaus.modello</groupId>
<artifactId>modello-maven-plugin</artifactId>
+ <version>1.8.3</version>
<configuration>
<version>${mdoVersion}</version>
<models>
Modified: maven/plugins/trunk/maven-assembly-plugin/src/it/projects/bugs/massembly-743/assembly.xml
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/projects/bugs/massembly-743/assembly.xml?rev=1644916&r1=1644915&r2=1644916&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/it/projects/bugs/massembly-743/assembly.xml (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/it/projects/bugs/massembly-743/assembly.xml Fri Dec 12 14:57:54 2014
@@ -24,7 +24,7 @@ under the License.
<!-- Generates a zip package containing the needed files -->
<formats>
- <format>tar.gz</format>
+ <format>dir</format>
</formats>
<includeBaseDirectory>${mine.includeBaseDirectory}</includeBaseDirectory>
Modified: maven/plugins/trunk/maven-assembly-plugin/src/it/projects/bugs/massembly-743/pom.xml
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/projects/bugs/massembly-743/pom.xml?rev=1644916&r1=1644915&r2=1644916&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/it/projects/bugs/massembly-743/pom.xml (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/it/projects/bugs/massembly-743/pom.xml Fri Dec 12 14:57:54 2014
@@ -29,7 +29,6 @@ under the License.
<version>1</version>
</parent>
- <!-- groupId>ch.vd</groupId -->
<artifactId>massembly-743</artifactId>
<version>1.0.0-SNAPSHOT</version>
@@ -69,7 +68,7 @@ under the License.
</build>
<properties>
- <mine.includeBaseDirectory>faXse</mine.includeBaseDirectory>
+ <mine.includeBaseDirectory>true</mine.includeBaseDirectory>
</properties>
</project>
Added: maven/plugins/trunk/maven-assembly-plugin/src/it/projects/bugs/massembly-743/verify.bsh
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/projects/bugs/massembly-743/verify.bsh?rev=1644916&view=auto
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/it/projects/bugs/massembly-743/verify.bsh (added)
+++ maven/plugins/trunk/maven-assembly-plugin/src/it/projects/bugs/massembly-743/verify.bsh Fri Dec 12 14:57:54 2014
@@ -0,0 +1,44 @@
+/*
+ * 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.io.*;
+import java.net.*;
+import java.util.zip.*;
+
+
+
+boolean result = true;
+
+try
+{
+ File zipFile = new File( basedir, "target/massembly-743-1.0.0-SNAPSHOT/massembly-743-1.0.0-SNAPSHOT/folder/README.txt" );
+
+ if ( !zipFile.exists() )
+ {
+ System.err.println( "incorrect path of file." );
+ result = false;
+ }
+}
+catch( IOException e )
+{
+ e.printStackTrace();
+ result = false;
+}
+
+return result;
Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/interpolation/AssemblyExpressionEvaluator.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/interpolation/AssemblyExpressionEvaluator.java?rev=1644916&r1=1644915&r2=1644916&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/interpolation/AssemblyExpressionEvaluator.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/interpolation/AssemblyExpressionEvaluator.java Fri Dec 12 14:57:54 2014
@@ -51,7 +51,7 @@ public class AssemblyExpressionEvaluator
final MavenProject project = configSource.getProject();
final FixedStringSearchInterpolator projectInterpolator =
DefaultAssemblyReader.createProjectInterpolator( project );
- interpolator = AssemblyInterpolator.buildInterpolator( project, projectInterpolator, configSource );
+ interpolator = AssemblyInterpolator.fullInterpolator( project, projectInterpolator, configSource );
interceptor = new PrefixAwareRecursionInterceptor( InterpolationConstants.PROJECT_PREFIXES, true );
}
Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/interpolation/AssemblyInterpolator.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/interpolation/AssemblyInterpolator.java?rev=1644916&r1=1644915&r2=1644916&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/interpolation/AssemblyInterpolator.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/interpolation/AssemblyInterpolator.java Fri Dec 12 14:57:54 2014
@@ -20,40 +20,31 @@ package org.apache.maven.plugin.assembly
*/
import org.apache.maven.plugin.assembly.AssemblerConfigurationSource;
-import org.apache.maven.plugin.assembly.model.Assembly;
+import org.apache.maven.plugin.assembly.model.io.xpp3.AssemblyXpp3Reader;
+import org.apache.maven.plugin.assembly.model.io.xpp3.ComponentXpp3Reader;
+import org.apache.maven.plugin.assembly.resolved.AssemblyId;
import org.apache.maven.plugin.assembly.utils.AssemblyFileUtils;
-import org.apache.maven.plugin.assembly.utils.InterpolationConstants;
import org.apache.maven.project.MavenProject;
-import org.codehaus.plexus.interpolation.InterpolationException;
import org.codehaus.plexus.interpolation.InterpolationPostProcessor;
-import org.codehaus.plexus.interpolation.PrefixAwareRecursionInterceptor;
-import org.codehaus.plexus.interpolation.RecursionInterceptor;
import org.codehaus.plexus.interpolation.fixed.FixedStringSearchInterpolator;
+import org.codehaus.plexus.interpolation.fixed.InterpolationState;
import org.codehaus.plexus.interpolation.object.FieldBasedObjectInterpolator;
-import org.codehaus.plexus.interpolation.object.ObjectInterpolationWarning;
-import org.codehaus.plexus.logging.AbstractLogEnabled;
import org.codehaus.plexus.logging.Logger;
-import org.codehaus.plexus.logging.console.ConsoleLogger;
-import org.codehaus.plexus.util.cli.CommandLineUtils;
import javax.annotation.Nonnull;
import java.io.File;
import java.io.IOException;
import java.util.HashSet;
import java.util.List;
-import java.util.Properties;
import java.util.Set;
/**
* @version $Id$
*/
public class AssemblyInterpolator
- extends AbstractLogEnabled
{
private static final Set<String> INTERPOLATION_BLACKLIST;
- private static final Properties ENVIRONMENT_VARIABLES;
-
static
{
final Set<String> blacklist = new HashSet<String>();
@@ -63,18 +54,6 @@ public class AssemblyInterpolator
blacklist.add( "outputDirectory" );
INTERPOLATION_BLACKLIST = blacklist;
-
- Properties environmentVariables;
- try
- {
- environmentVariables = CommandLineUtils.getSystemEnvVars( false );
- }
- catch ( final IOException e )
- {
- environmentVariables = new Properties();
- }
-
- ENVIRONMENT_VARIABLES = environmentVariables;
}
public AssemblyInterpolator()
@@ -82,84 +61,93 @@ public class AssemblyInterpolator
{
}
- public Assembly interpolate( final Assembly assembly, final MavenProject project,
- final AssemblerConfigurationSource configSource,
- FixedStringSearchInterpolator projectInterpolator )
- throws AssemblyInterpolationException
+ public static AssemblyXpp3Reader.ContentTransformer assemblyInterpolator(
+ final FixedStringSearchInterpolator interpolator, final InterpolationState is, final Logger logger )
{
@SuppressWarnings( "unchecked" ) final Set<String> blacklistFields =
new HashSet<String>( FieldBasedObjectInterpolator.DEFAULT_BLACKLISTED_FIELD_NAMES );
blacklistFields.addAll( INTERPOLATION_BLACKLIST );
- @SuppressWarnings( "unchecked" ) final Set<String> blacklistPkgs =
- FieldBasedObjectInterpolator.DEFAULT_BLACKLISTED_PACKAGE_PREFIXES;
-
- final FieldBasedObjectInterpolator objectInterpolator =
- new FieldBasedObjectInterpolator( blacklistFields, blacklistPkgs );
-
- final FixedStringSearchInterpolator interpolator =
- buildInterpolator( project, projectInterpolator, configSource );
+ return new AssemblyXpp3Reader.ContentTransformer()
+ {
+ public String transform( String source, String contextDescription )
+ {
+ if ( blacklistFields.contains( contextDescription ) )
+ {
+ return source;
+ }
+
+ String interpolated = interpolator.interpolate( source, is );
+ if ( !source.equals( interpolated ) && logger.isDebugEnabled())
+ {
+ logger.debug(
+ "Field" + contextDescription + " value: " + source + " interpolated to: " + interpolated );
+ }
+ return interpolated;
+ }
+ };
+ }
- // TODO: Will this adequately detect cycles between prefixed property references and prefixed project
- // references??
- final RecursionInterceptor interceptor =
- new PrefixAwareRecursionInterceptor( InterpolationConstants.PROJECT_PREFIXES, true );
+ public static ComponentXpp3Reader.ContentTransformer componentInterpolator(
+ final FixedStringSearchInterpolator interpolator, final InterpolationState is, final Logger logger )
+ {
+ @SuppressWarnings( "unchecked" ) final Set<String> blacklistFields =
+ new HashSet<String>( FieldBasedObjectInterpolator.DEFAULT_BLACKLISTED_FIELD_NAMES );
+ blacklistFields.addAll( INTERPOLATION_BLACKLIST );
- try
+ return new ComponentXpp3Reader.ContentTransformer()
{
- objectInterpolator.interpolate( assembly, interpolator.asBasicInterpolator(), interceptor );
- }
- catch ( final InterpolationException e )
- {
- throw new AssemblyInterpolationException(
- "Failed to interpolate assembly with ID: " + assembly.getId() + ". Reason: " + e.getMessage(), e );
- }
+ public String transform( String source, String contextDescription )
+ {
+ if ( blacklistFields.contains( contextDescription ) )
+ {
+ return source;
+ }
+
+ String interpolated = interpolator.interpolate( source, is );
+ if ( !source.equals( interpolated ) )
+ {
+ logger.debug(
+ "Field" + contextDescription + " value: " + source + " interpolated to: " + interpolated );
+ }
+ return interpolated;
+ }
+ };
+ }
- if ( objectInterpolator.hasWarnings() && getLogger().isDebugEnabled() )
+
+ public static void checkErrors( AssemblyId assemblyId, InterpolationState interpolationState, Logger logger )
+ {
+ if ( interpolationState.asList() != null && interpolationState.asList().size() > 0 && logger.isDebugEnabled() )
{
final StringBuilder sb = new StringBuilder();
sb.append( "One or more minor errors occurred while interpolating the assembly with ID: " ).append(
- assembly.getId() ).append( ":\n" );
+ assemblyId ).append( ":\n" );
- @SuppressWarnings( "unchecked" ) final List<ObjectInterpolationWarning> warnings =
- objectInterpolator.getWarnings();
- for ( final ObjectInterpolationWarning warning : warnings )
+ @SuppressWarnings( "unchecked" ) final List<Object> warnings = interpolationState.asList();
+ for ( final Object warning : warnings )
{
sb.append( '\n' ).append( warning );
}
sb.append( "\n\nThese values were SKIPPED, but the assembly process will continue.\n" );
- getLogger().debug( sb.toString() );
+ logger.debug( sb.toString() );
}
-
- return assembly;
}
- public static FixedStringSearchInterpolator buildInterpolator( final MavenProject project,
- @Nonnull FixedStringSearchInterpolator projectIp,
- final AssemblerConfigurationSource configSource )
+ public static FixedStringSearchInterpolator fullInterpolator( final MavenProject project,
+ @Nonnull FixedStringSearchInterpolator projectIp,
+ final AssemblerConfigurationSource configSource )
{
- return FixedStringSearchInterpolator.create( configSource.getRepositoryInterpolator(),
- configSource.getCommandLinePropsInterpolator(),
- configSource.getEnvInterpolator(), projectIp ).withPostProcessor(
+ FixedStringSearchInterpolator fixedStringSearchInterpolator =
+ FixedStringSearchInterpolator.create( configSource.getRepositoryInterpolator(),
+ configSource.getCommandLinePropsInterpolator(),
+ configSource.getEnvInterpolator(), projectIp );
+ return fixedStringSearchInterpolator.withPostProcessor(
new PathTranslatingPostProcessor( project.getBasedir() ) );
- }
-
- @Override
- protected Logger getLogger()
- {
- Logger logger = super.getLogger();
-
- if ( logger == null )
- {
- logger = new ConsoleLogger( Logger.LEVEL_INFO, "interpolator-internal" );
-
- enableLogging( logger );
- }
- return logger;
}
private static final class PathTranslatingPostProcessor
Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/io/DefaultAssemblyReader.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/io/DefaultAssemblyReader.java?rev=1644916&r1=1644915&r2=1644916&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/io/DefaultAssemblyReader.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/io/DefaultAssemblyReader.java Fri Dec 12 14:57:54 2014
@@ -23,8 +23,6 @@ import org.apache.commons.io.IOUtils;
import org.apache.maven.plugin.assembly.AssemblerConfigurationSource;
import org.apache.maven.plugin.assembly.InvalidAssemblerConfigurationException;
import org.apache.maven.plugin.assembly.interpolation.AssemblyExpressionEvaluator;
-import org.apache.maven.plugin.assembly.interpolation.AssemblyInterpolationException;
-import org.apache.maven.plugin.assembly.interpolation.AssemblyInterpolator;
import org.apache.maven.plugin.assembly.model.Assembly;
import org.apache.maven.plugin.assembly.model.Component;
import org.apache.maven.plugin.assembly.model.ContainerDescriptorHandlerConfig;
@@ -36,6 +34,7 @@ import org.apache.maven.plugin.assembly.
import org.apache.maven.plugin.assembly.model.io.xpp3.AssemblyXpp3Reader;
import org.apache.maven.plugin.assembly.model.io.xpp3.AssemblyXpp3Writer;
import org.apache.maven.plugin.assembly.model.io.xpp3.ComponentXpp3Reader;
+import org.apache.maven.plugin.assembly.resolved.AssemblyId;
import org.apache.maven.plugin.assembly.utils.InterpolationConstants;
import org.apache.maven.project.MavenProject;
import org.apache.maven.shared.io.location.ClasspathResourceLocatorStrategy;
@@ -44,7 +43,10 @@ import org.apache.maven.shared.io.locati
import org.apache.maven.shared.io.location.Locator;
import org.apache.maven.shared.io.location.LocatorStrategy;
import org.apache.maven.shared.utils.ReaderFactory;
+import org.codehaus.plexus.interpolation.PrefixAwareRecursionInterceptor;
+import org.codehaus.plexus.interpolation.RecursionInterceptor;
import org.codehaus.plexus.interpolation.fixed.FixedStringSearchInterpolator;
+import org.codehaus.plexus.interpolation.fixed.InterpolationState;
import org.codehaus.plexus.interpolation.fixed.PrefixedObjectValueSource;
import org.codehaus.plexus.interpolation.fixed.PrefixedPropertiesValueSource;
import org.codehaus.plexus.logging.AbstractLogEnabled;
@@ -66,6 +68,12 @@ import java.util.HashSet;
import java.util.List;
import java.util.Set;
+import static org.apache.maven.plugin.assembly.interpolation.AssemblyInterpolator.componentInterpolator;
+import static org.apache.maven.plugin.assembly.interpolation.AssemblyInterpolator.assemblyInterpolator;
+import static org.apache.maven.plugin.assembly.interpolation.AssemblyInterpolator.fullInterpolator;
+import static org.apache.maven.plugin.assembly.interpolation.AssemblyInterpolator.checkErrors;
+
+
/**
* @version $Id$
*/
@@ -315,7 +323,7 @@ public class DefaultAssemblyReader
}
- protected Assembly readAssembly( final Reader reader, final String locationDescription, final File assemblyDir,
+ public Assembly readAssembly( final Reader reader, final String locationDescription, final File assemblyDir,
final AssemblerConfigurationSource configSource )
throws AssemblyReadException, InvalidAssemblerConfigurationException
{
@@ -324,17 +332,25 @@ public class DefaultAssemblyReader
final MavenProject project = configSource.getProject();
try
{
- final AssemblyXpp3Reader r = new AssemblyXpp3Reader();
- assembly = r.read( reader );
-
- mergeComponentsWithMainAssembly( assembly, assemblyDir, configSource );
- debugPrintAssembly( "Before assembly is interpolated:", assembly );
+ InterpolationState is = new InterpolationState();
+ final RecursionInterceptor interceptor =
+ new PrefixAwareRecursionInterceptor( InterpolationConstants.PROJECT_PREFIXES, true );
+ is.setRecursionInterceptor( interceptor );
+
+ FixedStringSearchInterpolator interpolator =
+ fullInterpolator( project, createProjectInterpolator( project ), configSource );
+ AssemblyXpp3Reader.ContentTransformer transformer = assemblyInterpolator( interpolator, is, getLogger() );
- assembly = new AssemblyInterpolator().interpolate( assembly, project, configSource,
- createProjectInterpolator( project ) );
+ final AssemblyXpp3Reader r = new AssemblyXpp3Reader( transformer );
+ assembly = r.read( reader );
+ ComponentXpp3Reader.ContentTransformer ctrans = componentInterpolator( interpolator, is, getLogger() );
+ mergeComponentsWithMainAssembly( assembly, assemblyDir, configSource, ctrans );
debugPrintAssembly( "After assembly is interpolated:", assembly );
+
+ checkErrors( AssemblyId.createAssemblyId( assembly ), is, getLogger() );
+
}
catch ( final IOException e )
{
@@ -346,11 +362,6 @@ public class DefaultAssemblyReader
throw new AssemblyReadException( "Error reading descriptor: " + locationDescription + ": " + e.getMessage(),
e );
}
- catch ( final AssemblyInterpolationException e )
- {
- throw new AssemblyReadException( "Error reading descriptor: " + locationDescription + ": " + e.getMessage(),
- e );
- }
finally
{
IOUtil.close( reader );
@@ -364,6 +375,7 @@ public class DefaultAssemblyReader
return assembly;
}
+
public static FixedStringSearchInterpolator createProjectInterpolator( MavenProject project )
{
return FixedStringSearchInterpolator.create(
@@ -393,10 +405,12 @@ public class DefaultAssemblyReader
*
* @param assembly The assembly
* @param assemblyDir The assembly directory
+ * @param transformer The component interpolator
* @throws AssemblyReadException .
*/
protected void mergeComponentsWithMainAssembly( final Assembly assembly, final File assemblyDir,
- final AssemblerConfigurationSource configSource )
+ final AssemblerConfigurationSource configSource,
+ ComponentXpp3Reader.ContentTransformer transformer )
throws AssemblyReadException
{
final Locator locator = new Locator();
@@ -439,7 +453,7 @@ public class DefaultAssemblyReader
try
{
reader = new InputStreamReader( resolvedLocation.getInputStream() );
- component = new ComponentXpp3Reader().read( reader );
+ component = new ComponentXpp3Reader( transformer ).read( reader );
}
catch ( final IOException e )
{
Modified: maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/interpolation/AssemblyInterpolatorTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/interpolation/AssemblyInterpolatorTest.java?rev=1644916&r1=1644915&r2=1644916&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/interpolation/AssemblyInterpolatorTest.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/interpolation/AssemblyInterpolatorTest.java Fri Dec 12 14:57:54 2014
@@ -25,7 +25,10 @@ import org.apache.maven.execution.MavenS
import org.apache.maven.model.Build;
import org.apache.maven.model.Model;
import org.apache.maven.plugin.assembly.AssemblerConfigurationSource;
+import org.apache.maven.plugin.assembly.InvalidAssemblerConfigurationException;
+import org.apache.maven.plugin.assembly.io.AssemblyReadException;
import org.apache.maven.plugin.assembly.io.DefaultAssemblyReader;
+import org.apache.maven.plugin.assembly.io.DefaultAssemblyReaderTest;
import org.apache.maven.plugin.assembly.model.Assembly;
import org.apache.maven.plugin.assembly.model.DependencySet;
import org.apache.maven.plugin.assembly.testutils.PojoConfigSource;
@@ -37,6 +40,7 @@ import org.codehaus.plexus.logging.conso
import org.easymock.classextension.EasyMockSupport;
import java.io.IOException;
+import java.io.StringReader;
import java.util.List;
import java.util.Properties;
@@ -46,21 +50,9 @@ public class AssemblyInterpolatorTest
extends TestCase
{
- private AssemblyInterpolator interpolator;
-
- private final PojoConfigSource configSourceStub = new PojoConfigSource();
-
- @Override
- public void setUp()
- throws IOException
- {
- interpolator = new AssemblyInterpolator();
-
- interpolator.enableLogging( new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ) );
- }
-
public void testDependencySetOutputFileNameMappingsAreNotInterpolated()
- throws IOException, AssemblyInterpolationException
+ throws IOException, AssemblyInterpolationException, AssemblyReadException,
+ InvalidAssemblerConfigurationException
{
final Model model = new Model();
model.setArtifactId( "artifact-id" );
@@ -80,10 +72,14 @@ public class AssemblyInterpolatorTest
assembly.addDependencySet( set );
+ final PojoConfigSource configSourceStub = new PojoConfigSource();
+
+
configSourceStub.setRootInterpolator( FixedStringSearchInterpolator.create( ) );
configSourceStub.setEnvironmentInterpolator( FixedStringSearchInterpolator.create() );
- final Assembly outputAssembly = interpolator.interpolate( assembly, project, configSourceStub,
- createProjectInterpolator( project ) );
+
+ configSourceStub.setMavenProject( project);
+ final Assembly outputAssembly = roundTripInterpolation( assembly, configSourceStub );
final List<DependencySet> outputDependencySets = outputAssembly.getDependencySets();
assertEquals( 1, outputDependencySets.size() );
@@ -94,7 +90,8 @@ public class AssemblyInterpolatorTest
}
public void testDependencySetOutputDirectoryIsNotInterpolated()
- throws IOException, AssemblyInterpolationException
+ throws IOException, AssemblyInterpolationException, AssemblyReadException,
+ InvalidAssemblerConfigurationException
{
final Model model = new Model();
model.setArtifactId( "artifact-id" );
@@ -111,12 +108,15 @@ public class AssemblyInterpolatorTest
assembly.addDependencySet( set );
+ final PojoConfigSource configSourceStub = new PojoConfigSource();
+
+
configSourceStub.setRootInterpolator( FixedStringSearchInterpolator.create() );
configSourceStub.setEnvironmentInterpolator( FixedStringSearchInterpolator.create() );
final MavenProject project = new MavenProject( model );
- final Assembly outputAssembly =
- interpolator.interpolate( assembly, project, configSourceStub, createProjectInterpolator( project ) );
+ configSourceStub.setMavenProject( project);
+ final Assembly outputAssembly = roundTripInterpolation( assembly, configSourceStub );
final List<DependencySet> outputDependencySets = outputAssembly.getDependencySets();
assertEquals( 1, outputDependencySets.size() );
@@ -126,8 +126,17 @@ public class AssemblyInterpolatorTest
assertEquals( "${artifactId}.${packaging}", outputSet.getOutputDirectory() );
}
+ public Assembly roundTripInterpolation( Assembly assembly, AssemblerConfigurationSource configSource )
+ throws IOException, AssemblyReadException, InvalidAssemblerConfigurationException
+ {
+ final StringReader stringReader = DefaultAssemblyReaderTest.writeToStringReader( assembly );
+ return new DefaultAssemblyReader().readAssembly( stringReader, "testLocation", null,
+ configSource );
+ }
+
public void testShouldResolveModelGroupIdInAssemblyId()
- throws AssemblyInterpolationException
+ throws AssemblyInterpolationException, InvalidAssemblerConfigurationException, AssemblyReadException,
+ IOException
{
final Model model = new Model();
model.setArtifactId( "artifact-id" );
@@ -140,16 +149,18 @@ public class AssemblyInterpolatorTest
assembly.setId( "assembly.${groupId}" );
final MavenProject project = new MavenProject( model );
+ final PojoConfigSource configSourceStub = new PojoConfigSource();
+
configSourceStub.setRootInterpolator( FixedStringSearchInterpolator.create() );
configSourceStub.setEnvironmentInterpolator( FixedStringSearchInterpolator.create() );
- final Assembly result = interpolator.interpolate( assembly, project, configSourceStub,
- createProjectInterpolator( project ) );
-
- assertEquals( "assembly.group.id", result.getId() );
+ configSourceStub.setMavenProject( project);
+ final Assembly outputAssembly = roundTripInterpolation( assembly, configSourceStub );
+ assertEquals( "assembly.group.id", outputAssembly.getId() );
}
public void testShouldResolveModelPropertyBeforeModelGroupIdInAssemblyId()
- throws AssemblyInterpolationException
+ throws AssemblyInterpolationException, InvalidAssemblerConfigurationException, AssemblyReadException,
+ IOException
{
final Model model = new Model();
model.setArtifactId( "artifact-id" );
@@ -162,6 +173,8 @@ public class AssemblyInterpolatorTest
model.setProperties( props );
+ final PojoConfigSource configSourceStub = new PojoConfigSource();
+
configSourceStub.setRootInterpolator( FixedStringSearchInterpolator.create( ) );
configSourceStub.setEnvironmentInterpolator( FixedStringSearchInterpolator.create() );
@@ -170,19 +183,15 @@ public class AssemblyInterpolatorTest
assembly.setId( "assembly.${groupId}" );
final MavenProject project = new MavenProject( model );
- final Assembly result = interpolator.interpolate( assembly, project, configSourceStub,
- createProjectInterpolator( project ) );
+ configSourceStub.setMavenProject( project);
+ final Assembly result = roundTripInterpolation( assembly, configSourceStub );
assertEquals( "assembly.other.id", result.getId() );
}
- private FixedStringSearchInterpolator createProjectInterpolator( MavenProject project )
- {
- return DefaultAssemblyReader.createProjectInterpolator( project );
- }
-
public void testShouldResolveContextValueBeforeModelPropertyOrModelGroupIdInAssemblyId()
- throws AssemblyInterpolationException
+ throws AssemblyInterpolationException, InvalidAssemblerConfigurationException, AssemblyReadException,
+ IOException
{
final Model model = new Model();
model.setArtifactId( "artifact-id" );
@@ -210,25 +219,24 @@ public class AssemblyInterpolatorTest
expect( session.getUserProperties()).andReturn( new Properties()).anyTimes();
- final AssemblerConfigurationSource cs = mm.createMock( AssemblerConfigurationSource.class );
+ final PojoConfigSource cs = new PojoConfigSource();
final ArtifactRepository lr = mm.createMock( ArtifactRepository.class );
- expect( lr.getBasedir()).andReturn( "/path/to/local/repo").anyTimes();
-
- expect(cs.getLocalRepository()).andReturn( lr ).anyTimes();
+ cs.setLocalRepository( lr );
+ cs.setMavenSession( session );
+ cs.setRootInterpolator( FixedStringSearchInterpolator.create() );
+ cs.setEnvironmentInterpolator( FixedStringSearchInterpolator.create(
+ new PropertiesBasedValueSource(execProps) ));
+ cs.setEnvInterpolator( FixedStringSearchInterpolator.empty() );
- expect( cs.getMavenSession()).andReturn( session ).anyTimes();
-
- expect( cs.getRepositoryInterpolator()).andReturn( FixedStringSearchInterpolator.create( ) ).anyTimes();
- expect( cs.getCommandLinePropsInterpolator()).andReturn( FixedStringSearchInterpolator.create(
- new PropertiesBasedValueSource(execProps) ) ).anyTimes();
- expect( cs.getEnvInterpolator()).andReturn( FixedStringSearchInterpolator.empty() ).anyTimes();
+ expect( lr.getBasedir() ).andReturn( "/path/to/local/repo").anyTimes();
mm.replayAll();
final MavenProject project = new MavenProject( model );
- final Assembly result = interpolator.interpolate( assembly, project, cs, createProjectInterpolator( project ) );
+ cs.setMavenProject( project );
+ final Assembly result = roundTripInterpolation( assembly, cs );
assertEquals( "assembly.still.another.id", result.getId() );
@@ -237,7 +245,8 @@ public class AssemblyInterpolatorTest
}
public void testShouldNotTouchUnresolvedExpression()
- throws AssemblyInterpolationException
+ throws AssemblyInterpolationException, InvalidAssemblerConfigurationException, AssemblyReadException,
+ IOException
{
final Model model = new Model();
model.setArtifactId( "artifact-id" );
@@ -249,18 +258,21 @@ public class AssemblyInterpolatorTest
assembly.setId( "assembly.${unresolved}" );
+ final PojoConfigSource configSourceStub = new PojoConfigSource();
+
configSourceStub.setRootInterpolator( FixedStringSearchInterpolator.create( ) );
configSourceStub.setEnvironmentInterpolator( FixedStringSearchInterpolator.create() );
- final MavenProject project = new MavenProject( model );
- final Assembly result = interpolator.interpolate( assembly, project, configSourceStub,
- createProjectInterpolator( project ) );
+ final MavenProject project = new MavenProject( model );
+ configSourceStub.setMavenProject( project);
+ final Assembly result = roundTripInterpolation( assembly, configSourceStub );
assertEquals( "assembly.${unresolved}", result.getId() );
}
public void testShouldInterpolateMultiDotProjectExpression()
- throws AssemblyInterpolationException
+ throws AssemblyInterpolationException, InvalidAssemblerConfigurationException, AssemblyReadException,
+ IOException
{
final Build build = new Build();
build.setFinalName( "final-name" );
@@ -272,13 +284,14 @@ public class AssemblyInterpolatorTest
assembly.setId( "assembly.${project.build.finalName}" );
+ final PojoConfigSource configSourceStub = new PojoConfigSource();
+
configSourceStub.setRootInterpolator( FixedStringSearchInterpolator.create( ) );
configSourceStub.setEnvironmentInterpolator( FixedStringSearchInterpolator.create() );
final MavenProject project = new MavenProject( model );
- final Assembly result = interpolator.interpolate( assembly, project, configSourceStub,
- createProjectInterpolator( project ) );
-
+ configSourceStub.setMavenProject( project);
+ final Assembly result = roundTripInterpolation( assembly, configSourceStub );
assertEquals( "assembly.final-name", result.getId() );
}
Modified: maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/io/DefaultAssemblyReaderTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/io/DefaultAssemblyReaderTest.java?rev=1644916&r1=1644915&r2=1644916&view=diff
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/io/DefaultAssemblyReaderTest.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/io/DefaultAssemblyReaderTest.java Fri Dec 12 14:57:54 2014
@@ -26,6 +26,7 @@ import org.apache.maven.model.Model;
import org.apache.maven.plugin.assembly.AssemblerConfigurationSource;
import org.apache.maven.plugin.assembly.InvalidAssemblerConfigurationException;
import org.apache.maven.plugin.assembly.archive.DefaultAssemblyArchiverTest;
+import org.apache.maven.plugin.assembly.interpolation.AssemblyInterpolator;
import org.apache.maven.plugin.assembly.model.Assembly;
import org.apache.maven.plugin.assembly.model.Component;
import org.apache.maven.plugin.assembly.model.ContainerDescriptorHandlerConfig;
@@ -34,9 +35,14 @@ import org.apache.maven.plugin.assembly.
import org.apache.maven.plugin.assembly.model.FileSet;
import org.apache.maven.plugin.assembly.model.Repository;
import org.apache.maven.plugin.assembly.model.io.xpp3.AssemblyXpp3Writer;
+import org.apache.maven.plugin.assembly.model.io.xpp3.ComponentXpp3Reader;
import org.apache.maven.plugin.assembly.model.io.xpp3.ComponentXpp3Writer;
import org.apache.maven.plugin.assembly.testutils.TestFileManager;
import org.apache.maven.project.MavenProject;
+import org.codehaus.plexus.interpolation.fixed.FixedStringSearchInterpolator;
+import org.codehaus.plexus.interpolation.fixed.InterpolationState;
+import org.codehaus.plexus.logging.Logger;
+import org.codehaus.plexus.logging.console.ConsoleLogger;
import org.codehaus.plexus.util.IOUtil;
import org.easymock.classextension.EasyMockSupport;
@@ -66,8 +72,6 @@ public class DefaultAssemblyReaderTest
private AssemblerConfigurationSource configSource;
- private ArtifactRepository localRepo;
-
@Override
public void setUp()
@@ -77,9 +81,9 @@ public class DefaultAssemblyReaderTest
configSource = mockManager.createMock(AssemblerConfigurationSource.class);
- localRepo = mockManager.createMock( ArtifactRepository.class );
+ ArtifactRepository localRepo = mockManager.createMock( ArtifactRepository.class );
- expect(localRepo.getBasedir()).andReturn("/path/to/local/repo").anyTimes();
+ expect( localRepo.getBasedir()).andReturn("/path/to/local/repo").anyTimes();
expect(configSource.getLocalRepository()).andReturn( localRepo ).anyTimes();
expect( configSource.getRemoteRepositories()).andReturn( Collections.<ArtifactRepository>emptyList()).anyTimes();
expect(configSource.getMavenSession()).andReturn( null).anyTimes();
@@ -494,10 +498,14 @@ public class DefaultAssemblyReaderTest
expect( configSource.getProject()).andReturn( project ).anyTimes();
expect( configSource.getBasedir()).andReturn( basedir ).anyTimes();
DefaultAssemblyArchiverTest.setupInterpolators( configSource );
+ InterpolationState is = new InterpolationState();
+ ComponentXpp3Reader.ContentTransformer componentIp = AssemblyInterpolator.componentInterpolator(
+ FixedStringSearchInterpolator.create(), is, new ConsoleLogger( Logger.LEVEL_DEBUG, "console" ) );
+
mockManager.replayAll();
- new DefaultAssemblyReader().mergeComponentsWithMainAssembly( assembly, null, configSource );
+ new DefaultAssemblyReader().mergeComponentsWithMainAssembly( assembly, null, configSource, componentIp );
final List<FileSet> fileSets = assembly.getFileSets();
@@ -517,12 +525,7 @@ public class DefaultAssemblyReaderTest
final Assembly assembly = new Assembly();
assembly.setId( "test" );
- final StringWriter sw = new StringWriter();
- final AssemblyXpp3Writer assemblyWriter = new AssemblyXpp3Writer();
-
- assemblyWriter.write( sw, assembly );
-
- final StringReader sr = new StringReader( sw.toString() );
+ final StringReader sr = writeToStringReader( assembly );
final File basedir = fileManager.createTempDir();
@@ -557,12 +560,7 @@ public class DefaultAssemblyReaderTest
assembly.setIncludeSiteDirectory( true );
- final StringWriter sw = new StringWriter();
- final AssemblyXpp3Writer assemblyWriter = new AssemblyXpp3Writer();
-
- assemblyWriter.write( sw, assembly );
-
- final StringReader sr = new StringReader( sw.toString() );
+ final StringReader sr = writeToStringReader( assembly );
final File siteDir = fileManager.createTempDir();
@@ -606,12 +604,7 @@ public class DefaultAssemblyReaderTest
final Assembly assembly = new Assembly();
assembly.setId( "test" );
- final StringWriter sw = new StringWriter();
- final AssemblyXpp3Writer assemblyWriter = new AssemblyXpp3Writer();
-
- assemblyWriter.write( sw, assembly );
-
- final StringReader sr = new StringReader( sw.toString() );
+ final StringReader sr = writeToStringReader( assembly );
final File siteDir = fileManager.createTempDir();
@@ -681,12 +674,7 @@ public class DefaultAssemblyReaderTest
assembly.addComponentDescriptor( componentsFilename );
- final StringWriter sw = new StringWriter();
- final AssemblyXpp3Writer assemblyWriter = new AssemblyXpp3Writer();
-
- assemblyWriter.write( sw, assembly );
-
- final StringReader sr = new StringReader( sw.toString() );
+ final StringReader sr = writeToStringReader( assembly );
expect( configSource.getBasedir()).andReturn( basedir ).anyTimes();
@@ -749,12 +737,7 @@ public class DefaultAssemblyReaderTest
assembly.addComponentDescriptor( componentsFilename );
- final StringWriter sw = new StringWriter();
- final AssemblyXpp3Writer assemblyWriter = new AssemblyXpp3Writer();
-
- assemblyWriter.write( sw, assembly );
-
- final StringReader sr = new StringReader( sw.toString() );
+ final StringReader sr = writeToStringReader( assembly );
expect( configSource.getBasedir()).andReturn( basedir ).atLeastOnce();
@@ -786,18 +769,24 @@ public class DefaultAssemblyReaderTest
mockManager.verifyAll();
}
- public void testReadAssembly_ShouldReadAssemblyWithInterpolationWithoutComponentsOrSiteDirInclusion()
- throws IOException, AssemblyReadException, InvalidAssemblerConfigurationException
+ public static StringReader writeToStringReader( Assembly assembly )
+ throws IOException
{
- final Assembly assembly = new Assembly();
- assembly.setId( "${groupId}-assembly" );
-
final StringWriter sw = new StringWriter();
final AssemblyXpp3Writer assemblyWriter = new AssemblyXpp3Writer();
assemblyWriter.write( sw, assembly );
- final StringReader sr = new StringReader( sw.toString() );
+ return new StringReader( sw.toString() );
+ }
+
+ public void testReadAssembly_ShouldReadAssemblyWithInterpolationWithoutComponentsOrSiteDirInclusion()
+ throws IOException, AssemblyReadException, InvalidAssemblerConfigurationException
+ {
+ final Assembly assembly = new Assembly();
+ assembly.setId( "${groupId}-assembly" );
+
+ final StringReader sr = writeToStringReader( assembly );
final File basedir = fileManager.createTempDir();