added src+bin format

git-svn-id: https://svn.apache.org/repos/asf/maven/sandbox/trunk@1502390 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/ConfigurationLineInfo.java b/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/ConfigurationLineInfo.java
index 6c30e5f..568dd08 100644
--- a/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/ConfigurationLineInfo.java
+++ b/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/ConfigurationLineInfo.java
@@ -22,6 +22,8 @@
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.Date;
+import java.util.LinkedList;
+import java.util.List;
 
 import org.apache.maven.artifact.repository.metadata.Metadata;
 
@@ -33,8 +35,9 @@
 {
     private static final String URLSEP = "/";
 
-    private final String groupId;
     private final String directory;
+    private final String groupId;
+    private final boolean srcBin;
 
     private final String artifactId;
     private final String forceVersion;
@@ -45,6 +48,7 @@
     {
         this.directory = infos[0];
         this.groupId = infos[1];
+        this.srcBin = ( infos.length > 2 ) && "src+bin".equals( infos[2] );
 
         this.artifactId = null;
         this.forceVersion = null;
@@ -54,6 +58,7 @@
     {
         this.directory = group.getDirectory();
         this.groupId = group.getGroupId();
+        this.srcBin = group.isSrcBin();
 
         this.artifactId = infos[0];
         this.forceVersion = ( infos.length > 1 ) ? infos[1] : null;
@@ -88,6 +93,11 @@
         return directory;
     }
 
+    public boolean isSrcBin()
+    {
+        return srcBin;
+    }
+
     String getBaseURL( String repoBaseUrl, String folder )
     {
         return repoBaseUrl + groupId.replaceAll( "\\.", URLSEP ) + URLSEP + artifactId + URLSEP + folder;
@@ -129,4 +139,22 @@
         }
 
     }
+
+    String getSourceReleaseFilename( String version, boolean dist )
+    {
+        return artifactId + "-" + version
+            + ( srcBin && ( dist || !"maven-ant-tasks".equals( artifactId ) ) ? "-src" : "-source-release" ) + ".zip";
+    }
+
+    List<String> getExpectedFilenames( String version, boolean dist )
+    {
+        String sourceReleaseFilename = getSourceReleaseFilename( version, dist );
+
+        List<String> expectedFiles = new LinkedList<>();
+        expectedFiles.add( sourceReleaseFilename );
+        expectedFiles.add( sourceReleaseFilename + ".asc" );
+        expectedFiles.add( sourceReleaseFilename + ".md5" );
+
+        return expectedFiles;
+    }
 }
diff --git a/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/DistCheckSourceReleaseMojo.java b/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/DistCheckSourceReleaseMojo.java
index 20d866f..70a352a 100644
--- a/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/DistCheckSourceReleaseMojo.java
+++ b/dist-tools/dist-tool-plugin/src/main/java/org/apache/maven/dist/tools/DistCheckSourceReleaseMojo.java
@@ -189,8 +189,9 @@
 
         // dist column
         sink.tableCell();
-        sink.link( DIST_AREA + cli.getDirectory() );
-        sink.text( cli.getDirectory() );
+        String directory = cli.getDirectory() + ( cli.isSrcBin() ? ( "/" + csr.getVersion() + "/source" ) : "" );
+        sink.link( DIST_AREA + directory );
+        sink.text( directory );
         sink.link_();
         sink.text( "source-release" );
         if ( csr.dist.isEmpty() && csr.distOlder.isEmpty() )
@@ -433,11 +434,7 @@
             }
         }
 
-        List<String> expectedFiles = new LinkedList<>();
-
-        expectedFiles.add( configLine.getArtifactId() + "-" + version + "-source-release.zip" );
-        expectedFiles.add( configLine.getArtifactId() + "-" + version + "-source-release.zip.asc" );
-        expectedFiles.add( configLine.getArtifactId() + "-" + version + "-source-release.zip.md5" );
+        List<String> expectedFiles = configLine.getExpectedFilenames( version, true );
 
         retrievedFile.removeAll( expectedFiles );
 
@@ -463,7 +460,7 @@
      * @return missing files
      * @throws IOException
      */
-    private List<String> checkDirectoryIndex( String url, ConfigurationLineInfo configLine, String version )
+    private List<String> checkDirectoryIndex( String url, ConfigurationLineInfo configLine, String version, boolean dist )
             throws IOException
     {
         List<String> retrievedFile = new LinkedList<>();
@@ -473,11 +470,9 @@
             retrievedFile.add( e.attr( "href" ) );
         }
 
-        List<String> missingFiles = new LinkedList<>();
+        List<String> missingFiles;
         // initialize missing files with expected release file names
-        missingFiles.add( configLine.getArtifactId() + "-" + version + "-source-release.zip" );
-        missingFiles.add( configLine.getArtifactId() + "-" + version + "-source-release.zip.asc" );
-        missingFiles.add( configLine.getArtifactId() + "-" + version + "-source-release.zip.md5" );
+        missingFiles = configLine.getExpectedFilenames( version, dist );
 
         // removed retrieved files
         missingFiles.removeAll( retrievedFile );
@@ -505,11 +500,12 @@
 
             // central
             String centralUrl = configLine.getVersionnedFolderURL( repoBaseUrl, version );
-            result.setMissingCentralSourceRelease( checkDirectoryIndex( centralUrl, configLine, version ) );
+            result.setMissingCentralSourceRelease( checkDirectoryIndex( centralUrl, configLine, version, false ) );
 
             // dist
-            String distUrl = DIST_AREA + configLine.getDirectory();
-            result.setMissingDistSourceRelease( checkDirectoryIndex( distUrl, configLine, version ) );
+            String distUrl =
+                DIST_AREA + configLine.getDirectory() + ( configLine.isSrcBin() ? ( "/" + version + "/source" ) : "" );
+            result.setMissingDistSourceRelease( checkDirectoryIndex( distUrl, configLine, version, true ) );
             result.setDistOlderSourceRelease( checkContainsOld( distUrl, configLine, version ) );
         }
         catch ( IOException ex )
diff --git a/dist-tools/dist-tool-plugin/src/main/resources/db/mavendb.txt b/dist-tools/dist-tool-plugin/src/main/resources/db/mavendb.txt
index 5dba1d7..b4a3c8a 100644
--- a/dist-tools/dist-tool-plugin/src/main/resources/db/mavendb.txt
+++ b/dist-tools/dist-tool-plugin/src/main/resources/db/mavendb.txt
@@ -1,8 +1,8 @@
 ## line format:

-## directory groupId

+## directory groupId [src+bin]

 ##   artifactId [forced version]

 ##

-ant-tasks org.apache.maven

+ant-tasks org.apache.maven src+bin

   maven-ant-tasks

 archetype org.apache.maven.archetype

   maven-archetype

@@ -21,8 +21,12 @@
 indexer org.apache.maven.indexer

   maven-indexer

 ## maven-1

-## maven-2

-## maven-3

+maven-2 org.apache.maven src+bin

+  apache-maven 2.0.11

+  apache-maven 2.2.1

+maven-3 org.apache.maven src+bin

+  apache-maven 3.0.5

+  apache-maven

 jxr org.apache.maven.jxr

   jxr

 plugin-testing org.apache.maven.plugin-testing

diff --git a/dist-tools/dist-tool-plugin/src/test/java/org/apache/maven/dist/tools/PatternTest.java b/dist-tools/dist-tool-plugin/src/test/java/org/apache/maven/dist/tools/PatternTest.java
index 6468536..aaf7deb 100644
--- a/dist-tools/dist-tool-plugin/src/test/java/org/apache/maven/dist/tools/PatternTest.java
+++ b/dist-tools/dist-tool-plugin/src/test/java/org/apache/maven/dist/tools/PatternTest.java
@@ -33,7 +33,7 @@
     @Test
     public void testGetGroupId()
     {
-        String q = DistCheckSourceReleaseMojo.getArtifactPattern( "doxia" );
+        String q = DistCheckSourceReleaseMojo.getSourceReleasePattern( "doxia" );
 
         assertTrue( "doxia-1.4-source-release.zip.asc".matches( q ) );
         assertTrue( "doxia-1.4-source-release.zip.md5".matches( q ) );
@@ -42,7 +42,7 @@
         assertFalse( "doxia-sitetools-1.4-source-release.zip.md5".matches( q ) );
         assertFalse( "doxia-sitetools-1.4-source-release.zip".matches( q ) );
 
-        String r = DistCheckSourceReleaseMojo.getArtifactPattern( "doxia-sitetools" );
+        String r = DistCheckSourceReleaseMojo.getSourceReleasePattern( "doxia-sitetools" );
 
         assertFalse( "doxia-1.4-source-release.zip.asc".matches( r ) );
         assertFalse( "doxia-1.4-source-release.zip.md5".matches( r ) );