Author: jdcasey
Date: Thu Aug 16 12:52:42 2007
New Revision: 566812

URL: http://svn.apache.org/viewvc?view=rev&rev=566812
Log:
[MASSEMBLY-222] Modifying interpolation such that outputDirectory calculations 
can pull values from either the dependency's project info or the main project 
info, using the ${artifact.*} and ${pom.*} expressions, respectively. Leaving 
off the prefix, as in ${version} will now once again reference the main project 
info, NOT the dependency info.

Added:
    
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/PrefixedObjectBasedValueSource.java
   (with props)
Modified:
    
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/DefaultAssemblyArchiver.java
    
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/FileItemAssemblyPhase.java
    
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhase.java
    
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/RepositoryAssemblyPhase.java
    
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddArtifactTask.java
    
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddDependencySetsTask.java
    
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddFileSetsTask.java
    
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/AssemblyFormatUtils.java
    
maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/DependencySetAssemblyPhaseTest.java
    
maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhaseTest.java
    
maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/AddFileSetsTaskTest.java
    
maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/testutils/MockAndControlForAddArtifactTask.java
    
maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/testutils/MockAndControlForAddDependencySetsTask.java
    
maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/utils/AssemblyFormatUtilsTest.java

Modified: 
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/DefaultAssemblyArchiver.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/DefaultAssemblyArchiver.java?view=diff&rev=566812&r1=566811&r2=566812
==============================================================================
--- 
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/DefaultAssemblyArchiver.java
 (original)
+++ 
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/DefaultAssemblyArchiver.java
 Thu Aug 16 12:52:42 2007
@@ -96,7 +96,7 @@
             if ( specifiedBasedir != null )
             {
                 basedir = AssemblyFormatUtils.getOutputDirectory( 
specifiedBasedir, configSource.getProject(),
-                                                                  finalName );
+                                                                  null, 
finalName );
             }
 
             List containerHandlers = createContainerDescriptorHandlers( 
assembly.getContainerDescriptorHandlers() );

Modified: 
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/FileItemAssemblyPhase.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/FileItemAssemblyPhase.java?view=diff&rev=566812&r1=566811&r2=566812
==============================================================================
--- 
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/FileItemAssemblyPhase.java
 (original)
+++ 
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/FileItemAssemblyPhase.java
 Thu Aug 16 12:52:42 2007
@@ -61,7 +61,7 @@
             }
 
             String outputDirectory = AssemblyFormatUtils.getOutputDirectory( 
fileItem.getOutputDirectory(),
-                configSource.getProject(), configSource.getFinalName() );
+                configSource.getProject(), null, configSource.getFinalName() );
 
             String target;
 

Modified: 
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhase.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhase.java?view=diff&rev=566812&r1=566811&r2=566812
==============================================================================
--- 
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhase.java
 (original)
+++ 
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhase.java
 Thu Aug 16 12:52:42 2007
@@ -80,7 +80,7 @@
             ModuleSources sources = moduleSet.getSources();
             ModuleBinaries binaries = moduleSet.getBinaries();
 
-            if ( sources == null && binaries == null )
+            if ( ( sources == null ) && ( binaries == null ) )
             {
                 getLogger().warn( "Encountered ModuleSet with no sources or 
binaries specified. Skipping." );
                 continue;
@@ -116,7 +116,7 @@
                 it.remove();
             }
         }
-        
+
         String classifier = binaries.getAttachmentClassifier();
 
         for ( Iterator j = moduleProjects.iterator(); j.hasNext(); )
@@ -124,7 +124,7 @@
             MavenProject project = ( MavenProject ) j.next();
 
             Artifact artifact = null;
-            
+
             if ( classifier == null )
             {
                 getLogger().debug( "Processing binary artifact for module 
project: " + project.getId() );
@@ -136,12 +136,12 @@
                 getLogger().debug( "Processing binary attachment: " + 
classifier + " for module project: " + project.getId() );
 
                 List attachments = project.getAttachedArtifacts();
-                if ( attachments != null && !attachments.isEmpty() )
+                if ( ( attachments != null ) && !attachments.isEmpty() )
                 {
                     for ( Iterator attachmentIterator = 
attachments.iterator(); attachmentIterator.hasNext(); )
                     {
                         Artifact attachment = (Artifact) 
attachmentIterator.next();
-                        
+
                         if ( classifier.equals( attachment.getClassifier() ) )
                         {
                             artifact = attachment;
@@ -149,7 +149,7 @@
                         }
                     }
                 }
-                
+
                 if ( artifact == null )
                 {
                     throw new InvalidAssemblerConfigurationException( "Cannot 
find attachment with classifier: " + classifier + " in module project: " + 
project.getId() + ". Please exclude this module from the module-set." );
@@ -161,7 +161,7 @@
 
         List depSets = binaries.getDependencySets();
 
-        if ( ( depSets == null || depSets.isEmpty() ) && 
binaries.isIncludeDependencies() )
+        if ( ( ( depSets == null ) || depSets.isEmpty() ) && 
binaries.isIncludeDependencies() )
         {
             DependencySet impliedDependencySet = new DependencySet();
 
@@ -268,7 +268,7 @@
 
         List subFileSets = sources.getFileSets();
 
-        if ( subFileSets == null || subFileSets.isEmpty() )
+        if ( ( subFileSets == null ) || subFileSets.isEmpty() )
         {
             FileSet fs = new FileSet();
             fs.setDirectory( "src" );
@@ -288,7 +288,7 @@
             {
                 FileSet fileSet = ( FileSet ) fsIterator.next();
 
-                FileSet moduleFileSet = createFileSet( fileSet, sources, 
moduleProject );
+                FileSet moduleFileSet = createFileSet( fileSet, sources, 
moduleProject, configSource );
 
                 AddFileSetsTask task = new AddFileSetsTask( 
Collections.singletonList( moduleFileSet ) );
 
@@ -311,11 +311,11 @@
         {
             result = true;
         }
-        else if ( sources.getIncludes() != null && 
!sources.getIncludes().isEmpty() )
+        else if ( ( sources.getIncludes() != null ) && 
!sources.getIncludes().isEmpty() )
         {
             result = true;
         }
-        else if ( sources.getExcludes() != null && 
!sources.getExcludes().isEmpty() )
+        else if ( ( sources.getExcludes() != null ) && 
!sources.getExcludes().isEmpty() )
         {
             result = true;
         }
@@ -337,7 +337,7 @@
         return result;
     }
 
-    protected FileSet createFileSet( FileSet fileSet, ModuleSources sources, 
MavenProject moduleProject )
+    protected FileSet createFileSet( FileSet fileSet, ModuleSources sources, 
MavenProject moduleProject, AssemblerConfigurationSource configSource )
         throws AssemblyFormattingException
     {
         FileSet fs = new FileSet();
@@ -366,7 +366,7 @@
         List excludes = new ArrayList();
 
         List originalExcludes = fileSet.getExcludes();
-        if ( originalExcludes != null && !originalExcludes.isEmpty() )
+        if ( ( originalExcludes != null ) && !originalExcludes.isEmpty() )
         {
             excludes.addAll( originalExcludes );
         }
@@ -412,7 +412,7 @@
             destPath = destPathPrefix + destPath;
         }
 
-        destPath = AssemblyFormatUtils.getOutputDirectory( destPath, 
moduleProject, "" );
+        destPath = AssemblyFormatUtils.getOutputDirectory( destPath, 
configSource.getProject(), moduleProject, "", "module" );
 
         fs.setOutputDirectory( destPath );
 

Modified: 
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/RepositoryAssemblyPhase.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/RepositoryAssemblyPhase.java?view=diff&rev=566812&r1=566811&r2=566812
==============================================================================
--- 
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/RepositoryAssemblyPhase.java
 (original)
+++ 
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/phase/RepositoryAssemblyPhase.java
 Thu Aug 16 12:52:42 2007
@@ -93,7 +93,7 @@
 
             String outputDirectory =
                 AssemblyFormatUtils.getOutputDirectory( 
repository.getOutputDirectory(), configSource.getProject(),
-                                                        
configSource.getFinalName() );
+                                                        null, 
configSource.getFinalName() );
 
             AddDirectoryTask task = new AddDirectoryTask( repositoryDirectory 
);
 

Modified: 
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddArtifactTask.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddArtifactTask.java?view=diff&rev=566812&r1=566811&r2=566812
==============================================================================
--- 
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddArtifactTask.java
 (original)
+++ 
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddArtifactTask.java
 Thu Aug 16 12:52:42 2007
@@ -49,7 +49,7 @@
     {
         String destDirectory = outputDirectory;
 
-        destDirectory = AssemblyFormatUtils.getOutputDirectory( destDirectory, 
project, configSource.getFinalName() );
+        destDirectory = AssemblyFormatUtils.getOutputDirectory( destDirectory, 
configSource.getProject(), project, configSource.getFinalName() );
 
         if ( unpack )
         {

Modified: 
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddDependencySetsTask.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddDependencySetsTask.java?view=diff&rev=566812&r1=566811&r2=566812
==============================================================================
--- 
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddDependencySetsTask.java
 (original)
+++ 
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddDependencySetsTask.java
 Thu Aug 16 12:52:42 2007
@@ -118,7 +118,7 @@
 
             if ( NON_ARCHIVE_DEPENDENCY_TYPES.contains( depArtifact.getType() 
) )
             {
-                addNonArchiveDependency( depArtifact, depProject, 
dependencySet, archiver );
+                addNonArchiveDependency( depArtifact, depProject, 
dependencySet, archiver, configSource );
             }
             else
             {
@@ -215,14 +215,14 @@
     }
 
     protected void addNonArchiveDependency( Artifact depArtifact, MavenProject 
depProject, DependencySet dependencySet,
-                                            Archiver archiver )
+                                            Archiver archiver, 
AssemblerConfigurationSource configSource )
         throws AssemblyFormattingException, ArchiveCreationException
     {
         File source = depArtifact.getFile();
 
         String outputDirectory = dependencySet.getOutputDirectory();
 
-        outputDirectory = AssemblyFormatUtils.getOutputDirectory( 
outputDirectory, depProject, depProject.getBuild()
+        outputDirectory = AssemblyFormatUtils.getOutputDirectory( 
outputDirectory, configSource.getProject(), depProject, depProject.getBuild()
             .getFinalName() );
         String destName = AssemblyFormatUtils.evaluateFileNameMapping( 
dependencySet.getOutputFileNameMapping(),
                                                                        
depArtifact );

Modified: 
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddFileSetsTask.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddFileSetsTask.java?view=diff&rev=566812&r1=566811&r2=566812
==============================================================================
--- 
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddFileSetsTask.java
 (original)
+++ 
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/task/AddFileSetsTask.java
 Thu Aug 16 12:52:42 2007
@@ -22,7 +22,7 @@
 {
 
     private final List fileSets;
-    
+
     private Logger logger;
 
     private MavenProject project;
@@ -31,11 +31,11 @@
     {
         this.fileSets = fileSets;
     }
-    
+
     public void execute( Archiver archiver, AssemblerConfigurationSource 
configSource )
         throws ArchiveCreationException, AssemblyFormattingException
     {
-        // don't need this check here. it's more efficient here, but the 
logger is not actually 
+        // don't need this check here. it's more efficient here, but the 
logger is not actually
         // used until addFileSet(..)...and the check should be there in case 
someone extends the
         // class.
         // checkLogger();
@@ -74,7 +74,7 @@
         FileSetFormatter fileSetFormatter = new FileSetFormatter( 
configSource, logger );
 
         File basedir = project.getBasedir();
-        
+
         if ( project == null )
         {
             project = configSource.getProject();
@@ -95,7 +95,7 @@
                 + ( fileSet.getLineEnding() == null ? "" : " lineEndings: " + 
fileSet.getLineEnding() ) );
         }
 
-        destDirectory = AssemblyFormatUtils.getOutputDirectory( destDirectory, 
project, configSource.getFinalName() );
+        destDirectory = AssemblyFormatUtils.getOutputDirectory( destDirectory, 
configSource.getProject(), project, configSource.getFinalName() );
 
         logger.debug( "The archive base directory is '" + archiveBaseDir + "'" 
);
 

Modified: 
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/AssemblyFormatUtils.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/AssemblyFormatUtils.java?view=diff&rev=566812&r1=566811&r2=566812
==============================================================================
--- 
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/AssemblyFormatUtils.java
 (original)
+++ 
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/AssemblyFormatUtils.java
 Thu Aug 16 12:52:42 2007
@@ -46,7 +46,12 @@
         return distributionName;
     }
 
-    public static String getOutputDirectory( String output, MavenProject 
project, String finalName )
+    public static String getOutputDirectory( String output, MavenProject 
mainProject, MavenProject artifactProject, String finalName )
+    {
+        return getOutputDirectory( output, mainProject, artifactProject, 
finalName, "artifact" );
+    }
+
+    public static String getOutputDirectory( String output, MavenProject 
mainProject, MavenProject artifactProject, String finalName, String 
artifactProjectRefName )
     {
         String value = output;
         if ( value == null )
@@ -66,9 +71,15 @@
 
         interpolator.addValueSource( new PropertiesInterpolationValueSource( 
specialExpressionOverrides ) );
 
-        if ( project != null )
+        if ( mainProject != null )
+        {
+            interpolator.addValueSource( new PrefixedObjectBasedValueSource( 
"pom.", mainProject ) );
+            interpolator.addValueSource( new ObjectBasedValueSource( 
mainProject ) );
+        }
+
+        if ( artifactProject != null )
         {
-            interpolator.addValueSource( new ObjectBasedValueSource( project ) 
);
+            interpolator.addValueSource( new PrefixedObjectBasedValueSource( 
"artifact.", artifactProject ) );
         }
 
         value = interpolator.interpolate( value, "__project" );

Added: 
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/PrefixedObjectBasedValueSource.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/PrefixedObjectBasedValueSource.java?view=auto&rev=566812
==============================================================================
--- 
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/PrefixedObjectBasedValueSource.java
 (added)
+++ 
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/PrefixedObjectBasedValueSource.java
 Thu Aug 16 12:52:42 2007
@@ -0,0 +1,58 @@
+package org.apache.maven.plugin.assembly.utils;
+
+import org.codehaus.plexus.logging.Logger;
+import org.codehaus.plexus.util.interpolation.ValueSource;
+import org.codehaus.plexus.util.introspection.ReflectionValueExtractor;
+
+public class PrefixedObjectBasedValueSource
+    implements ValueSource
+{
+
+    private String prefix;
+    private final Object root;
+    private final Logger logger;
+
+    public PrefixedObjectBasedValueSource( String prefix, Object root )
+    {
+        this.prefix = prefix;
+        this.root = root;
+        logger = null;
+    }
+
+    public PrefixedObjectBasedValueSource( String prefix, Object root, Logger 
logger )
+    {
+        this.prefix = prefix;
+        this.root = root;
+        this.logger = logger;
+    }
+
+    public Object getValue( String expression )
+    {
+        if ( !expression.startsWith( prefix ) )
+        {
+            return null;
+        }
+
+        String realExpr = expression.substring( prefix.length() );
+        if ( realExpr.startsWith( "." ) )
+        {
+            realExpr = realExpr.substring( 1 );
+        }
+
+        Object value = null;
+        try
+        {
+            value = ReflectionValueExtractor.evaluate( realExpr, root, false );
+        }
+        catch ( Exception e )
+        {
+            if ( ( logger != null ) && logger.isDebugEnabled() )
+            {
+                logger.debug( "Failed to extract \'" + realExpr + "\' from: " 
+ root + " (full expression was: \'" + expression + "\').", e );
+            }
+        }
+
+        return value;
+    }
+
+}

Propchange: 
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/PrefixedObjectBasedValueSource.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/PrefixedObjectBasedValueSource.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Modified: 
maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/DependencySetAssemblyPhaseTest.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/DependencySetAssemblyPhaseTest.java?view=diff&rev=566812&r1=566811&r2=566812
==============================================================================
--- 
maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/DependencySetAssemblyPhaseTest.java
 (original)
+++ 
maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/DependencySetAssemblyPhaseTest.java
 Thu Aug 16 12:52:42 2007
@@ -46,7 +46,7 @@
         assembly.setIncludeBaseDirectory( false );
         assembly.addDependencySet( ds );
 
-        MockAndControlForAddDependencySetsTask macTask = new 
MockAndControlForAddDependencySetsTask( mockManager );
+        MockAndControlForAddDependencySetsTask macTask = new 
MockAndControlForAddDependencySetsTask( mockManager, null, project );
 
         macTask.expectArtifactGetFile();
         macTask.expectArtifactGetType( "jar" );
@@ -60,7 +60,6 @@
 
         project.setArtifacts( Collections.singleton( macTask.artifact ) );
 
-        macTask.expectGetProject( project );
         macTask.expectCSGetFinalName( "final-name" );
 
         Logger logger = new ConsoleLogger( Logger.LEVEL_DEBUG, "test" );
@@ -86,9 +85,7 @@
 
         Logger logger = new ConsoleLogger( Logger.LEVEL_DEBUG, "test" );
 
-        MockAndControlForAddDependencySetsTask macTask = new 
MockAndControlForAddDependencySetsTask( mockManager );
-
-        macTask.expectGetProject( null );
+        MockAndControlForAddDependencySetsTask macTask = new 
MockAndControlForAddDependencySetsTask( mockManager, null, null );
 
         mockManager.replayAll();
 

Modified: 
maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhaseTest.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhaseTest.java?view=diff&rev=566812&r1=566811&r2=566812
==============================================================================
--- 
maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhaseTest.java
 (original)
+++ 
maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/ModuleSetAssemblyPhaseTest.java
 Thu Aug 16 12:52:42 2007
@@ -103,32 +103,37 @@
     {
         MockManager mm = new MockManager();
 
-        FileSet fs = new FileSet();
-
-        ModuleSources sources = new ModuleSources();
-        sources.setIncludeModuleDirectory( true );
-
         Model model = new Model();
         model.setArtifactId( "artifact" );
 
         MavenProject project = new MavenProject( model );
 
+        MockAndControlForAddArtifactTask macTask = new 
MockAndControlForAddArtifactTask( mm, "test", project );
+
+        FileSet fs = new FileSet();
+
+        ModuleSources sources = new ModuleSources();
+        sources.setIncludeModuleDirectory( true );
+
         File basedir = fileManager.createTempDir();
 
-        project.setFile( new File( basedir, "pom.xml" ) );
+        MavenProject artifactProject = new MavenProject( new Model() );
+
+        artifactProject.setFile( new File( basedir, "pom.xml" ) );
 
         MockAndControlForArtifact macArtifact = new MockAndControlForArtifact( 
mm );
 
         macArtifact.expectIsSnapshot( false );
         macArtifact.expectGetArtifactHandler();
 
-        project.setArtifact( macArtifact.artifact );
+        artifactProject.setArtifact( macArtifact.artifact );
 
         mm.replayAll();
 
         FileSet result = createPhase( new ConsoleLogger( Logger.LEVEL_DEBUG, 
"test" ), null ).createFileSet( fs,
                                                                                
                              sources,
-                                                                               
                              project );
+                                                                               
                              artifactProject,
+                                                                               
                              macTask.configSource );
 
         assertEquals( "artifact/", result.getOutputDirectory() );
 
@@ -140,33 +145,38 @@
     {
         MockManager mm = new MockManager();
 
+        Model model = new Model();
+        model.setArtifactId( "artifact" );
+
+        MavenProject project = new MavenProject( model );
+
+        MockAndControlForAddArtifactTask macTask = new 
MockAndControlForAddArtifactTask( mm, "test", project );
+
         FileSet fs = new FileSet();
         fs.setOutputDirectory( "out" );
 
         ModuleSources sources = new ModuleSources();
         sources.setIncludeModuleDirectory( true );
 
-        Model model = new Model();
-        model.setArtifactId( "artifact" );
-
-        MavenProject project = new MavenProject( model );
+        MavenProject artifactProject = new MavenProject( new Model() );
 
         File basedir = fileManager.createTempDir();
 
-        project.setFile( new File( basedir, "pom.xml" ) );
+        artifactProject.setFile( new File( basedir, "pom.xml" ) );
 
         MockAndControlForArtifact macArtifact = new MockAndControlForArtifact( 
mm );
 
         macArtifact.expectIsSnapshot( false );
         macArtifact.expectGetArtifactHandler();
 
-        project.setArtifact( macArtifact.artifact );
+        artifactProject.setArtifact( macArtifact.artifact );
 
         mm.replayAll();
 
         FileSet result = createPhase( new ConsoleLogger( Logger.LEVEL_DEBUG, 
"test" ), null ).createFileSet( fs,
                                                                                
                              sources,
-                                                                               
                              project );
+                                                                               
                              artifactProject,
+                                                                               
                              macTask.configSource );
 
         assertEquals( "artifact/out/", result.getOutputDirectory() );
 
@@ -178,6 +188,8 @@
     {
         MockManager mm = new MockManager();
 
+        MockAndControlForAddArtifactTask macTask = new 
MockAndControlForAddArtifactTask( mm, "test", null );
+
         FileSet fs = new FileSet();
 
         ModuleSources sources = new ModuleSources();
@@ -205,7 +217,8 @@
 
         FileSet result = createPhase( new ConsoleLogger( Logger.LEVEL_DEBUG, 
"test" ), null ).createFileSet( fs,
                                                                                
                              sources,
-                                                                               
                              project );
+                                                                               
                              project,
+                                                                               
                              macTask.configSource );
 
         assertEquals( 1, result.getExcludes().size() );
         assertEquals( "submodule/**", result.getExcludes().get( 0 ) );
@@ -228,9 +241,10 @@
     {
         MockManager mm = new MockManager();
 
-        MockAndControlForAddArtifactTask macTask = new 
MockAndControlForAddArtifactTask( mm );
-
         MavenProject project = createProject( "group", "artifact", "version", 
null );
+
+        MockAndControlForAddArtifactTask macTask = new 
MockAndControlForAddArtifactTask( mm, null, project );
+
         MavenProject module = createProject( "group", "module", "version", 
project );
 
         macTask.expectArtifactGetFile();
@@ -238,10 +252,8 @@
 
         List projects = new ArrayList();
 
-        projects.add( project );
         projects.add( module );
 
-        macTask.expectGetProject( project );
         macTask.expectGetReactorProjects( projects );
         macTask.expectGetFinalName( "final-name" );
         macTask.expectIsSnapshot( false );
@@ -319,7 +331,7 @@
     {
         MockManager mm = new MockManager();
 
-        MockAndControlForAddArtifactTask macTask = new 
MockAndControlForAddArtifactTask( mm, "test" );
+        MockAndControlForAddArtifactTask macTask = new 
MockAndControlForAddArtifactTask( mm, "test", null );
 
         macTask.expectArtifactGetFile( true );
         macTask.expectGetFinalName( "final-name" );
@@ -680,6 +692,8 @@
 
         MavenProject project = createProject( "group", "artifact", "version", 
null );
 
+        macTask.expectGetProject( project );
+
         MockAndControlForArtifact macArtifact = new MockAndControlForArtifact( 
mm );
 
         macArtifact.expectIsSnapshot( false );
@@ -720,13 +734,12 @@
     {
         MockManager mm = new MockManager();
 
-        MockAndControlForAddDependencySetsTask macTask = new 
MockAndControlForAddDependencySetsTask( mm );
-
         MavenProject project = createProject( "group", "artifact", "version", 
null );
 
+        MockAndControlForAddDependencySetsTask macTask = new 
MockAndControlForAddDependencySetsTask( mm, null, project );
+
         List projects = Collections.singletonList( project );
 
-        macTask.expectGetProject( project );
         macTask.expectGetReactorProjects( projects );
 
         ModuleSet moduleSet = new ModuleSet();
@@ -746,16 +759,16 @@
     {
         MockManager mm = new MockManager();
 
-        MockAndControlForAddDependencySetsTask macTask = new 
MockAndControlForAddDependencySetsTask( mm );
-
         MavenProject project = createProject( "group", "artifact", "version", 
null );
+
+        MockAndControlForAddDependencySetsTask macTask = new 
MockAndControlForAddDependencySetsTask( mm, null, project );
+
         MavenProject project2 = createProject( "group", "artifact2", 
"version", null );
 
         List projects = new ArrayList();
         projects.add( project );
         projects.add( project2 );
 
-        macTask.expectGetProject( project );
         macTask.expectGetReactorProjects( projects );
 
         ModuleSet moduleSet = new ModuleSet();
@@ -775,16 +788,16 @@
     {
         MockManager mm = new MockManager();
 
-        MockAndControlForAddDependencySetsTask macTask = new 
MockAndControlForAddDependencySetsTask( mm );
-
         MavenProject project = createProject( "group", "artifact", "version", 
null );
+
+        MockAndControlForAddDependencySetsTask macTask = new 
MockAndControlForAddDependencySetsTask( mm, null, project );
+
         MavenProject project2 = createProject( "group", "artifact2", 
"version", project );
 
         List projects = new ArrayList();
         projects.add( project );
         projects.add( project2 );
 
-        macTask.expectGetProject( project );
         macTask.expectGetReactorProjects( projects );
 
         ModuleSet moduleSet = new ModuleSet();
@@ -808,9 +821,10 @@
     {
         MockManager mm = new MockManager();
 
-        MockAndControlForAddDependencySetsTask macTask = new 
MockAndControlForAddDependencySetsTask( mm );
-
         MavenProject project = createProject( "group", "artifact", "version", 
null );
+
+        MockAndControlForAddDependencySetsTask macTask = new 
MockAndControlForAddDependencySetsTask( mm, null, project );
+
         MavenProject project2 = createProject( "group", "artifact2", 
"version", project );
         MavenProject project3 = createProject( "group", "artifact3", 
"version", project2 );
 
@@ -819,7 +833,6 @@
         projects.add( project2 );
         projects.add( project3 );
 
-        macTask.expectGetProject( project );
         macTask.expectGetReactorProjects( projects );
 
         ModuleSet moduleSet = new ModuleSet();
@@ -845,11 +858,12 @@
     {
         MockManager mm = new MockManager();
 
-        MockAndControlForAddDependencySetsTask macTask = new 
MockAndControlForAddDependencySetsTask( mm );
+        MavenProject project = createProject( "group", "artifact", "version", 
null );
+
+        MockAndControlForAddDependencySetsTask macTask = new 
MockAndControlForAddDependencySetsTask( mm, null, project );
 
         List macArtifacts = new ArrayList();
 
-        MavenProject project = createProject( "group", "artifact", "version", 
null );
         macArtifacts.add( addArtifact( project, mm, false, false ) );
 
         MavenProject project2 = createProject( "group", "artifact2", 
"version", project );
@@ -869,7 +883,6 @@
         projects.add( project2 );
         projects.add( project3 );
 
-        macTask.expectGetProject( project );
         macTask.expectGetReactorProjects( projects );
 
         ModuleSet moduleSet = new ModuleSet();

Modified: 
maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/AddFileSetsTaskTest.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/AddFileSetsTaskTest.java?view=diff&rev=566812&r1=566811&r2=566812
==============================================================================
--- 
maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/AddFileSetsTaskTest.java
 (original)
+++ 
maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/AddFileSetsTaskTest.java
 Thu Aug 16 12:52:42 2007
@@ -32,7 +32,7 @@
         mockManager = new MockManager();
 
         fileManager = new TestFileManager( "add-fileset.test.", "" );
-        
+
         macTask = new MockAndControlForAddFileSetsTask( mockManager, 
fileManager );
     }
 
@@ -121,9 +121,11 @@
         int[] modes = { -1, -1, Integer.parseInt( fs.getDirectoryMode(), 8 ), 
Integer.parseInt( fs.getFileMode(), 8 ) };
 
         macTask.expectAdditionOfSingleFileSet( null, null, null, true, modes, 
2, true, false );
-        
+
+        macTask.expectGetProject( null );
+
         MavenProject project = new MavenProject( new Model() );
-        
+
         mockManager.replayAll();
 
         AddFileSetsTask task = new AddFileSetsTask( Collections.EMPTY_LIST );
@@ -154,7 +156,9 @@
         int[] modes = { -1, -1, Integer.parseInt( fs.getDirectoryMode(), 8 ), 
Integer.parseInt( fs.getFileMode(), 8 ) };
 
         macTask.expectAdditionOfSingleFileSet( null, null, null, true, modes, 
2, true, false );
-        
+
+        macTask.expectGetProject( null );
+
         MavenProject project = new MavenProject( new Model() );
 
         mockManager.replayAll();
@@ -181,7 +185,9 @@
         File archiveBaseDir = fileManager.createTempDir();
 
         macTask.expectGetFinalName( "finalName" );
-        
+
+        macTask.expectGetProject( null );
+
         macTask.archiver.getDefaultDirectoryMode();
         macTask.archiverCtl.setReturnValue( -1 );
         macTask.archiver.getDefaultFileMode();
@@ -230,7 +236,7 @@
         throws AssemblyFormattingException, IOException
     {
         File archiveBaseDir = fileManager.createTempFile();
-        
+
         macTask.archiveBaseDir = archiveBaseDir;
         macTask.expectGetArchiveBaseDirectory();
 

Modified: 
maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/testutils/MockAndControlForAddArtifactTask.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/testutils/MockAndControlForAddArtifactTask.java?view=diff&rev=566812&r1=566811&r2=566812
==============================================================================
--- 
maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/testutils/MockAndControlForAddArtifactTask.java
 (original)
+++ 
maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/testutils/MockAndControlForAddArtifactTask.java
 Thu Aug 16 12:52:42 2007
@@ -38,14 +38,17 @@
 
     private final String classifier;
 
+    private MavenProject project = null;
+
     public MockAndControlForAddArtifactTask( MockManager mockManager )
     {
-        this( mockManager, null );
+        this( mockManager, null, null );
     }
 
-    public MockAndControlForAddArtifactTask( MockManager mockManager, String 
classifier )
+    public MockAndControlForAddArtifactTask( MockManager mockManager, String 
classifier, MavenProject project )
     {
         this.classifier = classifier;
+        this.project = project;
 
         artifactCtl = MockControl.createControl( Artifact.class );
         mockManager.add( artifactCtl );
@@ -74,6 +77,9 @@
     {
         artifact.getClassifier();
         artifactCtl.setReturnValue( classifier, MockControl.ZERO_OR_MORE );
+
+        configSource.getProject();
+        configSourceCtl.setReturnValue( project, MockControl.ZERO_OR_MORE );
     }
 
     public void expectGetArtifactHandler()
@@ -192,12 +198,6 @@
     {
         artifact.getScope();
         artifactCtl.setReturnValue( scope, MockControl.ONE_OR_MORE );
-    }
-
-    public void expectGetProject( MavenProject project )
-    {
-        configSource.getProject();
-        configSourceCtl.setReturnValue( project, MockControl.ONE_OR_MORE );
     }
 
     public void expectGetReactorProjects( List projects )

Modified: 
maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/testutils/MockAndControlForAddDependencySetsTask.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/testutils/MockAndControlForAddDependencySetsTask.java?view=diff&rev=566812&r1=566811&r2=566812
==============================================================================
--- 
maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/testutils/MockAndControlForAddDependencySetsTask.java
 (original)
+++ 
maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/testutils/MockAndControlForAddDependencySetsTask.java
 Thu Aug 16 12:52:42 2007
@@ -54,13 +54,16 @@
 
     private String classifier;
 
+    private MavenProject project;
+
     public MockAndControlForAddDependencySetsTask( MockManager mockManager )
     {
-        this( mockManager, null );
+        this( mockManager, null, null );
     }
 
-    public MockAndControlForAddDependencySetsTask( MockManager mockManager, 
String classifier )
+    public MockAndControlForAddDependencySetsTask( MockManager mockManager, 
String classifier, MavenProject project )
     {
+        this.project = project;
         artifactCtl = MockControl.createControl( Artifact.class );
         mockManager.add( artifactCtl );
 
@@ -100,6 +103,9 @@
     {
         artifact.getClassifier();
         artifactCtl.setReturnValue( classifier, MockControl.ZERO_OR_MORE );
+
+        configSource.getProject();
+        configSourceCtl.setReturnValue( project, MockControl.ZERO_OR_MORE );
     }
 
     public void expectGetArtifactHandler()
@@ -223,12 +229,6 @@
     {
         artifact.getScope();
         artifactCtl.setReturnValue( scope, MockControl.ONE_OR_MORE );
-    }
-
-    public void expectGetProject( MavenProject project )
-    {
-        configSource.getProject();
-        configSourceCtl.setReturnValue( project, MockControl.ONE_OR_MORE );
     }
 
     public void expectGetReactorProjects( List projects )

Modified: 
maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/utils/AssemblyFormatUtilsTest.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/utils/AssemblyFormatUtilsTest.java?view=diff&rev=566812&r1=566811&r2=566812
==============================================================================
--- 
maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/utils/AssemblyFormatUtilsTest.java
 (original)
+++ 
maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/utils/AssemblyFormatUtilsTest.java
 Thu Aug 16 12:52:42 2007
@@ -2,6 +2,7 @@
 
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.handler.ArtifactHandler;
+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.format.AssemblyFormattingException;
@@ -29,6 +30,46 @@
         verifyDistroName( "assembly", "classifier", "finalName", false, 
"finalName-classifier" );
     }
 
+    public void testGetOutputDir_ShouldResolveGroupIdInOutDir_UseArtifactInfo()
+    {
+        verifyOutputDir( "${artifact.groupId}", null, "group", null, null, 
null, "group/", false );
+    }
+
+    public void 
testGetOutputDir_ShouldResolveArtifactIdInOutDir_UseArtifactInfo()
+    {
+        verifyOutputDir( "${artifact.artifactId}", null, null, "artifact", 
null, null, "artifact/", false );
+    }
+
+    public void testGetOutputDir_ShouldResolveVersionInOutDir_UseArtifactInfo()
+    {
+        verifyOutputDir( "${artifact.version}", null, null, null, "version", 
null, "version/", false );
+    }
+
+    public void 
testGetOutputDir_ShouldResolveBuildFinalNameInOutDir_UseArtifactInfo()
+    {
+        verifyOutputDir( "${artifact.build.finalName}", null, null, null, 
null, "finalName", "finalName/", false );
+    }
+
+    public void 
testGetOutputDir_ShouldResolveGroupIdInOutDir_UseExplicitMainProject()
+    {
+        verifyOutputDir( "${pom.groupId}", null, "group", null, null, null, 
"group/", true );
+    }
+
+    public void 
testGetOutputDir_ShouldResolveArtifactIdInOutDir_UseExplicitMainProject()
+    {
+        verifyOutputDir( "${pom.artifactId}", null, null, "artifact", null, 
null, "artifact/", true );
+    }
+
+    public void 
testGetOutputDir_ShouldResolveVersionInOutDir_UseExplicitMainProject()
+    {
+        verifyOutputDir( "${pom.version}", null, null, null, "version", null, 
"version/", true );
+    }
+
+    public void 
testGetOutputDir_ShouldResolveBuildFinalNameInOutDir_UseExplicitMainProject()
+    {
+        verifyOutputDir( "${pom.build.finalName}", null, null, null, null, 
"finalName", "finalName/", true );
+    }
+
     public void 
testGetOutputDir_ShouldNotAlterOutDirWhenIncludeBaseFalseAndNoExpressions()
     {
         verifyOutputDir( "dir/", "finalName", null, null, null, "dir/" );
@@ -139,19 +180,44 @@
 
     private void verifyOutputDir( String outDir, String finalName, String 
groupId, String artifactId, String version, String checkValue )
     {
-        MavenProject project = null;
+        verifyOutputDir( outDir, finalName, groupId, artifactId, version, 
null, checkValue, true );
+    }
 
-        if ( ( groupId != null ) || ( artifactId != null ) || ( version != 
null ) )
+    private void verifyOutputDir( String outDir, String finalName, String 
groupId, String artifactId, String version, String projectFinalName, String 
checkValue, boolean usingMainProject )
+    {
+        MavenProject project = null;
+        if ( ( groupId != null ) || ( artifactId != null ) || ( version != 
null ) || ( projectFinalName != null ) )
         {
             Model model = new Model();
             model.setGroupId( groupId );
             model.setArtifactId( artifactId );
             model.setVersion( version );
 
+            if ( projectFinalName != null )
+            {
+                Build build = new Build();
+                build.setFinalName( projectFinalName );
+
+                model.setBuild( build );
+            }
+
             project = new MavenProject( model );
         }
 
-        String result = AssemblyFormatUtils.getOutputDirectory( outDir, 
project, finalName );
+        MavenProject mainProject;
+        MavenProject artifactProject = null;
+
+        if ( usingMainProject )
+        {
+            mainProject = project;
+        }
+        else
+        {
+            artifactProject = project;
+            mainProject = new MavenProject( new Model() );
+        }
+
+        String result = AssemblyFormatUtils.getOutputDirectory( outDir, 
mainProject, artifactProject, finalName );
 
         assertEquals( checkValue, result );
     }


Reply via email to