MASSEMBLY-775 make isAbsolute() check more general

We now also detect '/' as indicator for an absolute file
in a more generic way.
diff --git a/src/main/java/org/apache/maven/plugins/assembly/archive/phase/FileItemAssemblyPhase.java b/src/main/java/org/apache/maven/plugins/assembly/archive/phase/FileItemAssemblyPhase.java
index af10ee6..4572449 100644
--- a/src/main/java/org/apache/maven/plugins/assembly/archive/phase/FileItemAssemblyPhase.java
+++ b/src/main/java/org/apache/maven/plugins/assembly/archive/phase/FileItemAssemblyPhase.java
@@ -25,6 +25,7 @@
 import org.apache.maven.plugins.assembly.format.ReaderFormatter;
 import org.apache.maven.plugins.assembly.model.Assembly;
 import org.apache.maven.plugins.assembly.model.FileItem;
+import org.apache.maven.plugins.assembly.utils.AssemblyFileUtils;
 import org.apache.maven.plugins.assembly.utils.AssemblyFormatUtils;
 import org.apache.maven.plugins.assembly.utils.TypeConversionUtils;
 import org.codehaus.plexus.archiver.Archiver;
@@ -73,7 +74,7 @@
             // create a temp file with a different name.
             final String sourceName = source.getName();
 
-            if ( !source.isAbsolute() )
+            if ( !AssemblyFileUtils.isAbsolutePath( source ) )
             {
                 source = new File( basedir, sourcePath );
             }
diff --git a/src/main/java/org/apache/maven/plugins/assembly/archive/phase/ModuleSetAssemblyPhase.java b/src/main/java/org/apache/maven/plugins/assembly/archive/phase/ModuleSetAssemblyPhase.java
index 81cf4c7..e35c8e8 100644
--- a/src/main/java/org/apache/maven/plugins/assembly/archive/phase/ModuleSetAssemblyPhase.java
+++ b/src/main/java/org/apache/maven/plugins/assembly/archive/phase/ModuleSetAssemblyPhase.java
@@ -38,6 +38,7 @@
 import org.apache.maven.plugins.assembly.model.ModuleBinaries;
 import org.apache.maven.plugins.assembly.model.ModuleSet;
 import org.apache.maven.plugins.assembly.model.ModuleSources;
+import org.apache.maven.plugins.assembly.utils.AssemblyFileUtils;
 import org.apache.maven.plugins.assembly.utils.AssemblyFormatUtils;
 import org.apache.maven.plugins.assembly.utils.FilterUtils;
 import org.apache.maven.plugins.assembly.utils.ProjectUtils;
@@ -501,7 +502,7 @@
         {
             final File sourceDir = new File( sourcePath );
 
-            if ( !sourceDir.isAbsolute() )
+            if ( !AssemblyFileUtils.isAbsolutePath( sourceDir ) )
             {
                 sourcePath = new File( moduleBasedir, sourcePath ).getAbsolutePath();
             }
diff --git a/src/main/java/org/apache/maven/plugins/assembly/archive/task/AddFileSetsTask.java b/src/main/java/org/apache/maven/plugins/assembly/archive/task/AddFileSetsTask.java
index e9a082e..5e44521 100644
--- a/src/main/java/org/apache/maven/plugins/assembly/archive/task/AddFileSetsTask.java
+++ b/src/main/java/org/apache/maven/plugins/assembly/archive/task/AddFileSetsTask.java
@@ -24,6 +24,7 @@
 import org.apache.maven.plugins.assembly.format.AssemblyFormattingException;
 import org.apache.maven.plugins.assembly.format.ReaderFormatter;
 import org.apache.maven.plugins.assembly.model.FileSet;
+import org.apache.maven.plugins.assembly.utils.AssemblyFileUtils;
 import org.apache.maven.plugins.assembly.utils.AssemblyFormatUtils;
 import org.apache.maven.plugins.assembly.utils.TypeConversionUtils;
 import org.apache.maven.project.MavenProject;
@@ -192,7 +193,7 @@
             // as File#isAbsolute() returns false for /absolutePath under Windows :(
             // Note that in Windows an absolute path with / will be on the 'current drive'.
             // But I think we can live with this.
-            if ( !fileSetDir.isAbsolute() && !fileSetDir.getPath().startsWith( "/" ) )
+            if ( ! AssemblyFileUtils.isAbsolutePath( fileSetDir ) )
             {
                 fileSetDir = new File( basedir, sourceDirectory );
             }
diff --git a/src/main/java/org/apache/maven/plugins/assembly/utils/AssemblyFileUtils.java b/src/main/java/org/apache/maven/plugins/assembly/utils/AssemblyFileUtils.java
index 0874d39..cbe2713 100644
--- a/src/main/java/org/apache/maven/plugins/assembly/utils/AssemblyFileUtils.java
+++ b/src/main/java/org/apache/maven/plugins/assembly/utils/AssemblyFileUtils.java
@@ -108,4 +108,16 @@
     {
         return isPropertyFile( file.getName() );
     }
+
+    /**
+     * This method exists because {@link File#isAbsolute()} is not OS independent.
+     *
+     * In addition to the check in {@link File#isAbsolute()} we will also test for a leading '/'.
+     *
+     * @return {@code true} if {@code File#isAbsolute()} or starts with a '/'
+     */
+    public static boolean isAbsolutePath( File dir )
+    {
+        return dir != null && ( dir.isAbsolute() || dir.getPath().startsWith( "/" ) );
+    }
 }