You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jd...@apache.org on 2007/03/29 19:08:47 UTC

svn commit: r523770 - in /maven/plugins/trunk/maven-assembly-plugin/src: main/java/org/apache/maven/plugin/assembly/archive/phase/ main/java/org/apache/maven/plugin/assembly/archive/task/ main/java/org/apache/maven/plugin/assembly/utils/ test/java/org/...

Author: jdcasey
Date: Thu Mar 29 10:08:44 2007
New Revision: 523770

URL: http://svn.apache.org/viewvc?view=rev&rev=523770
Log:
Fixing file/dir mode parsing, to consolidate all parsing in a single utility method for easy maintenance and consistency. Also, parsing everything using Integer.parseInt( mode, 8 ) and wrapping any NumberFormatExceptions in an AssemblyFormattingException that shows the failing mode. Finally, before the utility method returns, it checks the sanity of the resulting mode for lesser segments that have more permissions, such as group-write, user-rdonly...and logs these in the WARN log-level.

Added:
    maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/utils/TypeConversionUtilsTest.java   (with props)
Modified:
    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/TypeConversionUtils.java
    maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/AllTests.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/FileItemAssemblyPhaseTest.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/phase/RepositoryAssemblyPhaseTest.java
    maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/AddArtifactTaskTest.java
    maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/AddDependencySetsTaskTest.java

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=523770&r1=523769&r2=523770
==============================================================================
--- 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 Mar 29 10:08:44 2007
@@ -11,6 +11,7 @@
 import org.apache.maven.plugin.assembly.model.Assembly;
 import org.apache.maven.plugin.assembly.model.FileItem;
 import org.apache.maven.plugin.assembly.utils.AssemblyFormatUtils;
+import org.apache.maven.plugin.assembly.utils.TypeConversionUtils;
 import org.codehaus.plexus.archiver.Archiver;
 import org.codehaus.plexus.archiver.ArchiverException;
 import org.codehaus.plexus.logging.AbstractLogEnabled;
@@ -80,7 +81,7 @@
 
             try
             {
-                archiver.addFile( source, target, Integer.decode( fileItem.getFileMode() ).intValue() );
+                archiver.addFile( source, target, TypeConversionUtils.modeToInt( fileItem.getFileMode(), getLogger() ) );
             }
             catch ( ArchiverException e )
             {

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=523770&r1=523769&r2=523770
==============================================================================
--- 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 Mar 29 10:08:44 2007
@@ -232,7 +232,7 @@
                             + "Please ensure the package phase is run before the assembly is generated." );
         }
 
-        AddArtifactTask task = new AddArtifactTask( artifact );
+        AddArtifactTask task = new AddArtifactTask( artifact, getLogger() );
 
         task.setFileNameMapping( binaries.getOutputFileNameMapping() );
         task.setOutputDirectory( binaries.getOutputDirectory() );

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=523770&r1=523769&r2=523770
==============================================================================
--- 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 Mar 29 10:08:44 2007
@@ -9,6 +9,7 @@
 import org.apache.maven.plugin.assembly.model.Assembly;
 import org.apache.maven.plugin.assembly.model.Repository;
 import org.apache.maven.plugin.assembly.utils.AssemblyFormatUtils;
+import org.apache.maven.plugin.assembly.utils.TypeConversionUtils;
 import org.apache.maven.shared.repository.RepositoryAssembler;
 import org.apache.maven.shared.repository.RepositoryAssemblyException;
 import org.apache.maven.shared.repository.RepositoryBuilderConfigSource;
@@ -78,8 +79,8 @@
             
             AddDirectoryTask task = new AddDirectoryTask( repositoryDirectory );
             
-            task.setDirectoryMode( Integer.decode( repository.getDirectoryMode() ).intValue() );
-            task.setFileMode( Integer.decode( repository.getFileMode() ).intValue() );
+            task.setDirectoryMode( TypeConversionUtils.modeToInt( repository.getDirectoryMode(), getLogger() ) );
+            task.setFileMode( TypeConversionUtils.modeToInt( repository.getFileMode(), getLogger() ) );
             task.setUseDefaultExcludes( repository.isUseDefaultExcludes() );
             task.setOutputDirectory( outputDirectory );
             

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=523770&r1=523769&r2=523770
==============================================================================
--- 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 Mar 29 10:08:44 2007
@@ -12,14 +12,15 @@
 import org.apache.maven.project.MavenProject;
 import org.codehaus.plexus.archiver.Archiver;
 import org.codehaus.plexus.archiver.ArchiverException;
+import org.codehaus.plexus.logging.Logger;
 
 public class AddArtifactTask
     implements ArchiverTask
 {
 
-    private int directoryMode = -1;
+    private String directoryMode;
 
-    private int fileMode = -1;
+    private String fileMode;
 
     private boolean unpack = false;
 
@@ -35,9 +36,12 @@
 
     private String outputFileNameMapping;
 
-    public AddArtifactTask( Artifact artifact )
+    private final Logger logger;
+
+    public AddArtifactTask( Artifact artifact, Logger logger )
     {
         this.artifact = artifact;
+        this.logger = logger;
     }
 
     public void execute( Archiver archiver, AssemblerConfigurationSource configSource )
@@ -66,14 +70,14 @@
 
             try
             {
-                if ( fileMode > -1 )
+                if ( fileMode != null )
                 {
-                    archiver.setDefaultFileMode( fileMode );
+                    archiver.setDefaultFileMode( TypeConversionUtils.modeToInt( fileMode, logger ) );
                 }
 
-                if ( directoryMode > -1 )
+                if ( directoryMode != null )
                 {
-                    archiver.setDefaultDirectoryMode( directoryMode );
+                    archiver.setDefaultDirectoryMode( TypeConversionUtils.modeToInt( directoryMode, logger ) );
                 }
 
                 archiver.addArchivedFileSet( artifact.getFile(), outputLocation, includesArray, excludesArray );
@@ -93,11 +97,13 @@
         {
             try
             {
-                if ( fileMode > -1 )
+                if ( fileMode != null )
                 {
                     File artifactFile = artifact.getFile();
                     
-                    archiver.addFile( artifactFile, outputLocation, fileMode );
+                    int mode = TypeConversionUtils.modeToInt( fileMode, logger );
+                    
+                    archiver.addFile( artifactFile, outputLocation, mode );
                 }
                 else
                 {
@@ -112,14 +118,14 @@
         }
     }
 
-    public void setDirectoryMode( String rawDirectoryMode )
+    public void setDirectoryMode( String directoryMode )
     {
-        this.directoryMode = Integer.decode( rawDirectoryMode ).intValue();
+        this.directoryMode = directoryMode;
     }
 
-    public void setFileMode( String rawFileMode )
+    public void setFileMode( String fileMode )
     {
-        this.fileMode = Integer.decode( rawFileMode ).intValue();
+        this.fileMode = fileMode;
     }
 
     public void setExcludes( List excludes )

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=523770&r1=523769&r2=523770
==============================================================================
--- 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 Mar 29 10:08:44 2007
@@ -13,6 +13,7 @@
 import org.apache.maven.plugin.assembly.model.UnpackOptions;
 import org.apache.maven.plugin.assembly.utils.AssemblyFormatUtils;
 import org.apache.maven.plugin.assembly.utils.FilterUtils;
+import org.apache.maven.plugin.assembly.utils.TypeConversionUtils;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.MavenProjectBuilder;
 import org.apache.maven.project.ProjectBuildingException;
@@ -120,7 +121,7 @@
             }
             else
             {
-                AddArtifactTask task = new AddArtifactTask( depArtifact );
+                AddArtifactTask task = new AddArtifactTask( depArtifact, logger );
 
                 task.setProject( depProject );
                 task.setOutputDirectory( dependencySet.getOutputDirectory(), defaultOutputDirectory );
@@ -200,7 +201,7 @@
 
         try
         {
-            archiver.addFile( source, target, Integer.decode( dependencySet.getFileMode() ).intValue() );
+            archiver.addFile( source, target, TypeConversionUtils.modeToInt( dependencySet.getFileMode(), logger ) );
         }
         catch ( ArchiverException e )
         {

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=523770&r1=523769&r2=523770
==============================================================================
--- 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 Mar 29 10:08:44 2007
@@ -11,6 +11,7 @@
 import org.apache.maven.plugin.assembly.format.FileSetFormatter;
 import org.apache.maven.plugin.assembly.model.FileSet;
 import org.apache.maven.plugin.assembly.utils.AssemblyFormatUtils;
+import org.apache.maven.plugin.assembly.utils.TypeConversionUtils;
 import org.apache.maven.project.MavenProject;
 import org.codehaus.plexus.archiver.Archiver;
 import org.codehaus.plexus.logging.Logger;
@@ -117,8 +118,8 @@
 
             AddDirectoryTask task = new AddDirectoryTask( fileSetDir );
 
-            task.setDirectoryMode( Integer.decode( fileSet.getDirectoryMode() ).intValue() );
-            task.setFileMode( Integer.decode( fileSet.getFileMode() ).intValue() );
+            task.setDirectoryMode( TypeConversionUtils.modeToInt( fileSet.getDirectoryMode(), logger ) );
+            task.setFileMode( TypeConversionUtils.modeToInt( fileSet.getFileMode(), logger ) );
             task.setUseDefaultExcludes( fileSet.isUseDefaultExcludes() );
             task.setExcludes( fileSet.getExcludes() );
             task.setIncludes( fileSet.getIncludes() );

Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/TypeConversionUtils.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/TypeConversionUtils.java?view=diff&rev=523770&r1=523769&r2=523770
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/TypeConversionUtils.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/utils/TypeConversionUtils.java Thu Mar 29 10:08:44 2007
@@ -1,10 +1,25 @@
 package org.apache.maven.plugin.assembly.utils;
 
+import org.apache.maven.plugin.assembly.format.AssemblyFormattingException;
+import org.codehaus.plexus.logging.Logger;
+
 import java.util.List;
 
 public final class TypeConversionUtils
 {
     
+    private static final int U_R = 256;
+    private static final int U_W = 128;
+    private static final int U_X = 64;
+    
+    private static final int G_R = 32;
+    private static final int G_W = 16;
+    private static final int G_X = 8;
+    
+    private static final int W_R = 4;
+    private static final int W_W = 2;
+    private static final int W_X = 1;
+    
     private TypeConversionUtils()
     {
     }
@@ -20,5 +35,101 @@
         
         return result;
     }
+    
+    public static int modeToInt( String mode, Logger logger )
+        throws AssemblyFormattingException
+    {
+        try
+        {
+            int value = Integer.parseInt( mode, 8 );
+            
+            // discard sanity assessment here; we're pushing ahead.
+            verifyModeSanity( value, logger );
+            
+            return value;
+        }
+        catch( NumberFormatException e )
+        {
+            throw new AssemblyFormattingException( "Failed to parse mode as an octal number: \'" + mode + "\'.", e );
+        }
+    }
 
+    // the boolean return type is for people who want to make a decision based on the sanity
+    // assessment.
+    public static boolean verifyModeSanity( int mode, Logger logger )
+    {
+        StringBuffer messages = new StringBuffer();
+        
+        messages.append( "The mode: " + Integer.toString( mode, 8 ) + " contains nonsensical permissions:" );
+        
+        boolean warn = false;
+        
+        // read-access checks.
+        if ( ( mode & U_R ) == 0 && ( mode & G_R ) == G_R )
+        {
+            messages.append( "\n- Group has read access, but user does not." );
+            warn = true;
+        }
+        
+        if ( ( mode & U_R ) == 0 && ( mode & W_R ) == W_R )
+        {
+            messages.append( "\n- World has read access, but user does not." );
+            warn = true;
+        }
+        
+        if ( ( mode & G_R ) == 0 && ( mode & W_R ) == W_R )
+        {
+            messages.append( "\n- World has read access, but group does not." );
+            warn = true;
+        }
+        // end read-access checks.
+        
+        // write-access checks.
+        if ( ( mode & U_W ) == 0 && ( mode & G_W ) == G_W )
+        {
+            messages.append( "\n- Group has write access, but user does not." );
+            warn = true;
+        }
+        
+        if ( ( mode & U_W ) == 0 && ( mode & W_W ) == W_W )
+        {
+            messages.append( "\n- World has write access, but user does not." );
+            warn = true;
+        }
+        
+        if ( ( mode & G_W ) == 0 && ( mode & W_W ) == W_W )
+        {
+            messages.append( "\n- World has write access, but group does not." );
+            warn = true;
+        }
+        // end write-access checks.
+        
+        // execute-/list-access checks.
+        if ( ( mode & U_X ) == 0 && ( mode & G_X ) == G_X )
+        {
+            messages.append( "\n- Group has execute/list access, but user does not." );
+            warn = true;
+        }
+        
+        if ( ( mode & U_X ) == 0 && ( mode & W_X ) == W_X )
+        {
+            messages.append( "\n- World has execute/list access, but user does not." );
+            warn = true;
+        }
+        
+        if ( ( mode & G_X ) == 0 && ( mode & W_X ) == W_X )
+        {
+            messages.append( "\n- World has execute/list access, but group does not." );
+            warn = true;
+        }
+        // end execute-/list-access checks.
+        
+        if ( warn )
+        {
+            logger.warn( messages.toString() );
+        }
+        
+        return !warn;
+    }
+    
 }

Modified: maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/AllTests.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/AllTests.java?view=diff&rev=523770&r1=523769&r2=523770
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/AllTests.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/AllTests.java Thu Mar 29 10:08:44 2007
@@ -22,6 +22,7 @@
 import org.apache.maven.plugin.assembly.utils.ProjectUtilsTest;
 import org.apache.maven.plugin.assembly.utils.PropertiesInterpolationValueSourceTest;
 import org.apache.maven.plugin.assembly.utils.PropertyUtilsTest;
+import org.apache.maven.plugin.assembly.utils.TypeConversionUtilsTest;
 
 import junit.framework.Test;
 import junit.framework.TestSuite;
@@ -55,6 +56,7 @@
         suite.addTestSuite( PropertyUtilsTest.class );
         suite.addTestSuite( AssemblyFormatUtilsTest.class );
         suite.addTestSuite( DefaultAssemblyReaderTest.class );
+        suite.addTestSuite( TypeConversionUtilsTest.class );
         //$JUnit-END$
         return suite;
     }

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=523770&r1=523769&r2=523770
==============================================================================
--- 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 Mar 29 10:08:44 2007
@@ -38,7 +38,7 @@
         ds.setOutputFileNameMapping( "artifact" );
         ds.setUnpack( false );
         ds.setScope( Artifact.SCOPE_COMPILE );
-        ds.setFileMode( Integer.toString( 8, 8 ) );
+        ds.setFileMode( Integer.toString( 10, 8 ) );
         
         Assembly assembly = new Assembly();
         

Modified: maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/FileItemAssemblyPhaseTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/FileItemAssemblyPhaseTest.java?view=diff&rev=523770&r1=523769&r2=523770
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/FileItemAssemblyPhaseTest.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/FileItemAssemblyPhaseTest.java Thu Mar 29 10:08:44 2007
@@ -8,10 +8,12 @@
 import org.apache.maven.plugin.assembly.model.FileItem;
 import org.apache.maven.plugin.assembly.testutils.MockManager;
 import org.apache.maven.plugin.assembly.testutils.TestFileManager;
+import org.apache.maven.plugin.assembly.utils.TypeConversionUtils;
 import org.apache.maven.project.MavenProject;
 import org.codehaus.plexus.archiver.Archiver;
 import org.codehaus.plexus.archiver.ArchiverException;
 import org.codehaus.plexus.logging.Logger;
+import org.codehaus.plexus.logging.console.ConsoleLogger;
 import org.easymock.MockControl;
 
 import java.io.File;
@@ -89,7 +91,7 @@
         fi.setLineEnding( "keep" );
         fi.setFileMode( "777" );
 
-        macArchiver.expectAddFile( file, "file.txt", Integer.decode( "777" ).intValue() );
+        macArchiver.expectAddFile( file, "file.txt", TypeConversionUtils.modeToInt( "777", new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ) ) );
 
         assembly.addFile( fi );
 
@@ -134,7 +136,7 @@
         fi.setLineEnding( "keep" );
         fi.setFileMode( "777" );
 
-        macArchiver.expectAddFile( file, "file.txt", Integer.decode( "777" ).intValue() );
+        macArchiver.expectAddFile( file, "file.txt", TypeConversionUtils.modeToInt( "777", new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ) ) );
 
         assembly.addFile( fi );
 
@@ -197,9 +199,9 @@
         configFileItem.setLineEnding( "keep" );
         configFileItem.setFileMode( "777" );
 
-        macArchiver.expectAddFile( readmeFile, "README.txt", Integer.decode( "777" ).intValue() );
-        macArchiver.expectAddFile( licenseFile, "LICENSE.txt", Integer.decode( "777" ).intValue() );
-        macArchiver.expectAddFile( configFile, "config/config.txt", Integer.decode( "777" ).intValue() );
+        macArchiver.expectAddFile( readmeFile, "README.txt", TypeConversionUtils.modeToInt( "777", new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ) ) );
+        macArchiver.expectAddFile( licenseFile, "LICENSE.txt", TypeConversionUtils.modeToInt( "777", new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ) ) );
+        macArchiver.expectAddFile( configFile, "config/config.txt", TypeConversionUtils.modeToInt( "777", new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ) ) );
 
         assembly.addFile( readmeFileItem );
         assembly.addFile( licenseFileItem );
@@ -268,9 +270,9 @@
         configFileItem.setLineEnding( "keep" );
         configFileItem.setFileMode( "777" );
 
-        macArchiver.expectAddFile( readmeFile, "README_renamed.txt", Integer.decode( "777" ).intValue() );
-        macArchiver.expectAddFile( licenseFile, "LICENSE_renamed.txt", Integer.decode( "777" ).intValue() );
-        macArchiver.expectAddFile( configFile, "config/config_renamed.txt", Integer.decode( "777" ).intValue() );
+        macArchiver.expectAddFile( readmeFile, "README_renamed.txt", TypeConversionUtils.modeToInt( "777", new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ) ) );
+        macArchiver.expectAddFile( licenseFile, "LICENSE_renamed.txt", TypeConversionUtils.modeToInt( "777", new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ) ) );
+        macArchiver.expectAddFile( configFile, "config/config_renamed.txt", TypeConversionUtils.modeToInt( "777", new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ) ) );
 
         assembly.addFile( readmeFileItem );
         assembly.addFile( licenseFileItem );
@@ -337,9 +339,9 @@
         configFileItem.setLineEnding( "keep" );
         configFileItem.setFileMode( "777" );
 
-        macArchiver.expectAddFile( readmeFile, "README_renamed.txt", Integer.decode( "777" ).intValue() );
-        macArchiver.expectAddFile( licenseFile, "LICENSE_renamed.txt", Integer.decode( "777" ).intValue() );
-        macArchiver.expectAddFile( configFile, "config/config_renamed.txt", Integer.decode( "777" ).intValue() );
+        macArchiver.expectAddFile( readmeFile, "README_renamed.txt", TypeConversionUtils.modeToInt( "777", new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ) ) );
+        macArchiver.expectAddFile( licenseFile, "LICENSE_renamed.txt", TypeConversionUtils.modeToInt( "777", new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ) ) );
+        macArchiver.expectAddFile( configFile, "config/config_renamed.txt", TypeConversionUtils.modeToInt( "777", new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ) ) );
 
         assembly.addFile( readmeFileItem );
         assembly.addFile( licenseFileItem );

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=523770&r1=523769&r2=523770
==============================================================================
--- 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 Mar 29 10:08:44 2007
@@ -17,6 +17,7 @@
 import org.apache.maven.plugin.assembly.model.ModuleSources;
 import org.apache.maven.plugin.assembly.testutils.MockManager;
 import org.apache.maven.plugin.assembly.testutils.TestFileManager;
+import org.apache.maven.plugin.assembly.utils.TypeConversionUtils;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.MavenProjectBuilder;
 import org.codehaus.plexus.logging.Logger;
@@ -246,7 +247,7 @@
         macTask.expectIsSnapshot( false );
         macTask.expectGetArtifactHandler();
         
-        int mode = Integer.decode( "777" ).intValue();
+        int mode = TypeConversionUtils.modeToInt( "777", new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ) );
 
         macTask.expectAddFile( "out/artifact", mode );
 
@@ -325,7 +326,7 @@
         macTask.expectGetFinalName( "final-name" );
         macTask.expectIsSnapshot( false );
         macTask.expectGetArtifactHandler();
-        macTask.expectAddFile( "out/artifact", Integer.decode( "777" ).intValue() );
+        macTask.expectAddFile( "out/artifact", TypeConversionUtils.modeToInt( "777", new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ) ) );
 
         ModuleBinaries binaries = new ModuleBinaries();
 
@@ -402,7 +403,7 @@
         macTask.expectGetFinalName( "final-name" );
         macTask.expectIsSnapshot( false );
         macTask.expectGetArtifactHandler();
-        macTask.expectAddFile( "out/artifact", Integer.decode( "777" ).intValue() );
+        macTask.expectAddFile( "out/artifact", TypeConversionUtils.modeToInt( "777", new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ) ) );
 
         ModuleBinaries binaries = new ModuleBinaries();
 
@@ -438,7 +439,7 @@
         macTask.expectGetFinalName( "final-name" );
         macTask.expectIsSnapshot( false );
         macTask.expectGetArtifactHandler();
-        macTask.expectAddFile( "out/artifact", Integer.decode( "777" ).intValue() );
+        macTask.expectAddFile( "out/artifact", TypeConversionUtils.modeToInt( "777", new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ) ) );
 
         ModuleBinaries binaries = new ModuleBinaries();
 
@@ -468,7 +469,7 @@
 
         macDepArtifact.expectGetFile( artifactFile );
 
-        macTask.expectAddFile( artifactFile, "out/dep", Integer.decode( "777" ).intValue() );
+        macTask.expectAddFile( artifactFile, "out/dep", TypeConversionUtils.modeToInt( "777", new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ) ) );
 
         MavenProject depProject = createProject( "group", "dep", "version", null );
 
@@ -505,7 +506,7 @@
         macTask.expectGetFinalName( "final-name" );
         macTask.expectIsSnapshot( false );
         macTask.expectGetArtifactHandler();
-        macTask.expectAddFile( "out/artifact", Integer.decode( "777" ).intValue() );
+        macTask.expectAddFile( "out/artifact", TypeConversionUtils.modeToInt( "777", new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ) ) );
 
         ModuleBinaries binaries = new ModuleBinaries();
 
@@ -529,7 +530,7 @@
 
         macDepArtifact.expectGetFile( artifactFile );
 
-        macTask.expectAddFile( artifactFile, "out/dep", Integer.decode( "777" ).intValue() );
+        macTask.expectAddFile( artifactFile, "out/dep", TypeConversionUtils.modeToInt( "777", new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ) ) );
 
         MavenProject depProject = createProject( "group", "dep", "version", null );
 
@@ -638,7 +639,7 @@
         macTask.expectIsSnapshot( false );
         macTask.expectGetArtifactHandler();
 
-        macTask.expectAddFile( "out/artifact", Integer.decode( "777" ).intValue() );
+        macTask.expectAddFile( "out/artifact", TypeConversionUtils.modeToInt( "777", new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ) ) );
 
         ModuleBinaries binaries = new ModuleBinaries();
         binaries.setOutputDirectory( "out" );
@@ -698,7 +699,7 @@
 
         macTask.expectGetArchiveBaseDirectory();
 
-        int mode = Integer.decode( "777" ).intValue();
+        int mode = TypeConversionUtils.modeToInt( "777", new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ) );
         int[] modes = { -1, -1, mode, mode };
 
         macTask.expectAdditionOfSingleFileSet( project, project.getBasedir(), "final-name", false, modes, 1, true,

Modified: maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/RepositoryAssemblyPhaseTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/RepositoryAssemblyPhaseTest.java?view=diff&rev=523770&r1=523769&r2=523770
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/RepositoryAssemblyPhaseTest.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/phase/RepositoryAssemblyPhaseTest.java Thu Mar 29 10:08:44 2007
@@ -10,12 +10,14 @@
 import org.apache.maven.plugin.assembly.model.Repository;
 import org.apache.maven.plugin.assembly.testutils.MockManager;
 import org.apache.maven.plugin.assembly.testutils.TestFileManager;
+import org.apache.maven.plugin.assembly.utils.TypeConversionUtils;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.shared.repository.RepositoryAssembler;
 import org.apache.maven.shared.repository.RepositoryAssemblyException;
 import org.codehaus.plexus.archiver.Archiver;
 import org.codehaus.plexus.archiver.ArchiverException;
 import org.codehaus.plexus.logging.Logger;
+import org.codehaus.plexus.logging.console.ConsoleLogger;
 import org.codehaus.plexus.util.FileUtils;
 import org.easymock.MockControl;
 
@@ -89,7 +91,7 @@
         repo.setDirectoryMode( "777" );
         repo.setFileMode( "777" );
         
-        int mode = Integer.decode( "777" ).intValue();
+        int mode = TypeConversionUtils.modeToInt( "777", new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ) );
         
         File outDir = new File( tempRoot, "out" );
         

Modified: maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/AddArtifactTaskTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/AddArtifactTaskTest.java?view=diff&rev=523770&r1=523769&r2=523770
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/AddArtifactTaskTest.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/AddArtifactTaskTest.java Thu Mar 29 10:08:44 2007
@@ -5,7 +5,10 @@
 import org.apache.maven.plugin.assembly.archive.task.testutils.MockAndControlForAddArtifactTask;
 import org.apache.maven.plugin.assembly.format.AssemblyFormattingException;
 import org.apache.maven.plugin.assembly.testutils.MockManager;
+import org.apache.maven.plugin.assembly.utils.TypeConversionUtils;
 import org.codehaus.plexus.archiver.ArchiverException;
+import org.codehaus.plexus.logging.Logger;
+import org.codehaus.plexus.logging.console.ConsoleLogger;
 
 import java.io.IOException;
 import java.util.Arrays;
@@ -49,7 +52,7 @@
 
     private AddArtifactTask createTask( Artifact artifact )
     {
-        AddArtifactTask task = new AddArtifactTask( artifact );
+        AddArtifactTask task = new AddArtifactTask( artifact, new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ) );
 
         task.setFileNameMapping( "artifact" );
 
@@ -87,8 +90,8 @@
     public void testShouldAddArchiveFileWithUnpackAndModes()
         throws ArchiveCreationException, AssemblyFormattingException
     {
-        int directoryMode = Integer.decode( "777" ).intValue();
-        int fileMode = Integer.decode( "777" ).intValue();
+        int directoryMode = TypeConversionUtils.modeToInt( "777", new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ) );
+        int fileMode = TypeConversionUtils.modeToInt( "777", new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ) );
         
         mac.expectModeChange( -1, -1, directoryMode, fileMode, 2 );
         mac.expectIsSnapshot( false );

Modified: maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/AddDependencySetsTaskTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/AddDependencySetsTaskTest.java?view=diff&rev=523770&r1=523769&r2=523770
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/AddDependencySetsTaskTest.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/task/AddDependencySetsTaskTest.java Thu Mar 29 10:08:44 2007
@@ -78,8 +78,8 @@
         ds.setUnpack( unpack );
         ds.setScope( Artifact.SCOPE_COMPILE );
 
-        ds.setDirectoryMode( Integer.toString( 8, 8 ) );
-        ds.setFileMode( Integer.toString( 8, 8 ) );
+        ds.setDirectoryMode( Integer.toString( 10, 8 ) );
+        ds.setFileMode( Integer.toString( 10, 8 ) );
 
         MockAndControlForAddDependencySetsTask macTask = new MockAndControlForAddDependencySetsTask( mockManager );
 

Added: maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/utils/TypeConversionUtilsTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/utils/TypeConversionUtilsTest.java?view=auto&rev=523770
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/utils/TypeConversionUtilsTest.java (added)
+++ maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/utils/TypeConversionUtilsTest.java Thu Mar 29 10:08:44 2007
@@ -0,0 +1,108 @@
+package org.apache.maven.plugin.assembly.utils;
+
+import org.apache.maven.plugin.assembly.format.AssemblyFormattingException;
+import org.codehaus.plexus.logging.Logger;
+import org.codehaus.plexus.logging.console.ConsoleLogger;
+import org.codehaus.plexus.util.StringOutputStream;
+
+import java.io.PrintStream;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+
+import junit.framework.TestCase;
+
+public class TypeConversionUtilsTest
+    extends TestCase
+{
+
+    public void testModeToInt_InterpretAsOctalWithoutLeadingZero()
+        throws AssemblyFormattingException
+    {
+        int check = Integer.decode( "0777" ).intValue();
+        int test = TypeConversionUtils.modeToInt( "777", new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ) );
+
+        assertEquals( check, test );
+    }
+
+    public void testModeToInt_InterpretValuesWithLeadingZeroAsOctal()
+        throws AssemblyFormattingException
+    {
+        int check = Integer.decode( "0777" ).intValue();
+        int test = TypeConversionUtils.modeToInt( "0777", new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ) );
+
+        assertEquals( check, test );
+    }
+
+    public void testModeToInt_FailOnInvalidOctalValue()
+    {
+        try
+        {
+            TypeConversionUtils.modeToInt( "493", new ConsoleLogger( Logger.LEVEL_DEBUG, "test" ) );
+
+            fail( "'493' is an invalid mode and should trigger an exception." );
+        }
+        catch ( AssemblyFormattingException e )
+        {
+            // expected.
+        }
+    }
+
+    public void testVerifyModeSanity_WarnOnNonsensicalOctalValue_002()
+    {
+        List messages = new ArrayList( 2 );
+        messages.add( "World has write access, but user does not." );
+        messages.add( "World has write access, but group does not." );
+        
+        checkFileModeSanity( "002", false, messages );
+    }
+    
+    public void testVerifyModeSanity_WarnOnNonsensicalOctalValue_020()
+    {
+        List messages = new ArrayList( 1 );
+        messages.add( "Group has write access, but user does not." );
+        
+        checkFileModeSanity( "020", false, messages );
+    }
+    
+    public void testVerifyModeSanity_ReturnTrueForValidOctalValue_775()
+    {
+        checkFileModeSanity( "775", true, Collections.EMPTY_LIST );
+    }
+    
+    private void checkFileModeSanity( String mode, boolean isSane, List messagesToCheckIfInsane )
+    {
+        StringOutputStream sos = new StringOutputStream();
+        PrintStream ps = new PrintStream( sos );
+        
+        PrintStream oldOut = System.out;
+        PrintStream oldErr = System.err;
+        
+        try
+        {
+            System.setOut( ps );
+            System.setErr( ps );
+            
+            assertEquals( "Mode sanity should be: " + isSane, isSane, TypeConversionUtils.verifyModeSanity( Integer.parseInt( mode, 8 ), new ConsoleLogger( Logger.LEVEL_WARN, "test" ) ) );
+        }
+        finally
+        {
+            System.setOut( oldOut );
+            System.setErr( oldErr );
+        }
+        
+        if ( !isSane && messagesToCheckIfInsane != null && !messagesToCheckIfInsane.isEmpty() )
+        {
+            String message = sos.toString();
+            
+            for ( Iterator it = messagesToCheckIfInsane.iterator(); it.hasNext(); )
+            {
+                String checkMessage = (String) it.next();
+                
+                assertTrue( "\'" + checkMessage + "\' is not present in output.", message.indexOf( checkMessage ) > -1 );
+            }
+        }
+    }
+
+}

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

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