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"


Reply via email to