[MASSEMBLY-818] Remove deprecated parameters for the single goal
Remove descriptor; instead use descriptors
Include check for removed parameters

git-svn-id: https://svn.apache.org/repos/asf/maven/plugins/trunk@1749089 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/it/projects/repositories/basic-repository/pom.xml b/src/it/projects/repositories/basic-repository/pom.xml
index a20dbd7..53328fb 100644
--- a/src/it/projects/repositories/basic-repository/pom.xml
+++ b/src/it/projects/repositories/basic-repository/pom.xml
@@ -45,7 +45,9 @@
       <plugin>
         <artifactId>maven-assembly-plugin</artifactId>
         <configuration>
-          <descriptor>src/assemble/bin.xml</descriptor>
+          <descriptors>
+            <descriptor>src/assemble/bin.xml</descriptor>
+          </descriptors>
           <finalName>assembly</finalName>        
         </configuration>
 
diff --git a/src/main/java/org/apache/maven/plugins/assembly/AssemblerConfigurationSource.java b/src/main/java/org/apache/maven/plugins/assembly/AssemblerConfigurationSource.java
index 03cad62..bcbd02a 100644
--- a/src/main/java/org/apache/maven/plugins/assembly/AssemblerConfigurationSource.java
+++ b/src/main/java/org/apache/maven/plugins/assembly/AssemblerConfigurationSource.java
@@ -35,12 +35,6 @@
  */
 public interface AssemblerConfigurationSource
 {
-
-    /**
-     * @return The descriptor.
-     */
-    String getDescriptor();
-
     /**
      * @return The descriptors.
      */
diff --git a/src/main/java/org/apache/maven/plugins/assembly/io/DefaultAssemblyReader.java b/src/main/java/org/apache/maven/plugins/assembly/io/DefaultAssemblyReader.java
index 2dfe932..9d4d11a 100644
--- a/src/main/java/org/apache/maven/plugins/assembly/io/DefaultAssemblyReader.java
+++ b/src/main/java/org/apache/maven/plugins/assembly/io/DefaultAssemblyReader.java
@@ -103,17 +103,10 @@
 
         final List<Assembly> assemblies = new ArrayList<Assembly>();
 
-        final String descriptor = configSource.getDescriptor();
         final String[] descriptors = configSource.getDescriptors();
         final String[] descriptorRefs = configSource.getDescriptorReferences();
         final File descriptorSourceDirectory = configSource.getDescriptorSourceDirectory();
 
-        if ( descriptor != null )
-        {
-            locator.setStrategies( strategies );
-            addAssemblyFromDescriptor( descriptor, locator, configSource, assemblies );
-        }
-
         if ( ( descriptors != null ) && ( descriptors.length > 0 ) )
         {
             locator.setStrategies( strategies );
diff --git a/src/main/java/org/apache/maven/plugins/assembly/mojos/AbstractAssemblyMojo.java b/src/main/java/org/apache/maven/plugins/assembly/mojos/AbstractAssemblyMojo.java
index 3c11a13..b1392a1 100644
--- a/src/main/java/org/apache/maven/plugins/assembly/mojos/AbstractAssemblyMojo.java
+++ b/src/main/java/org/apache/maven/plugins/assembly/mojos/AbstractAssemblyMojo.java
@@ -194,15 +194,6 @@
     private File archiveBaseDirectory;
 
     /**
-     * Assembly XML Descriptor file. This must be the path to your customized descriptor file.
-     *
-     * @deprecated Please use descriptors instead
-     */
-    @Deprecated
-    @Parameter( property = "descriptor" )
-    private String descriptor;
-
-    /**
      * Sets the TarArchiver behavior on file paths with more than 100 characters length. Valid values are: "warn"
      * (default), "fail", "truncate", "gnu", "posix", "posix_warn" or "omit".
      */
@@ -629,18 +620,6 @@
         this.basedir = basedir;
     }
 
-    /**
-     * {@inheritDoc}
-     *
-     * @deprecated This has been replaced by {@link #getDescriptors()}
-     */
-    @Override
-    @Deprecated
-    public String getDescriptor()
-    {
-        return descriptor;
-    }
-
     @Override
     public String[] getDescriptorReferences()
     {
diff --git a/src/main/java/org/apache/maven/plugins/assembly/mojos/SingleAssemblyMojo.java b/src/main/java/org/apache/maven/plugins/assembly/mojos/SingleAssemblyMojo.java
index c5f2d46..64f962a 100644
--- a/src/main/java/org/apache/maven/plugins/assembly/mojos/SingleAssemblyMojo.java
+++ b/src/main/java/org/apache/maven/plugins/assembly/mojos/SingleAssemblyMojo.java
@@ -19,10 +19,15 @@
  * under the License.
  */
 
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugin.descriptor.PluginDescriptor;
+
 import org.apache.maven.plugins.annotations.Mojo;
 import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.plugins.annotations.ResolutionScope;
 import org.apache.maven.project.MavenProject;
+import org.codehaus.plexus.util.xml.Xpp3Dom;
 
 /**
  * Assemble an application bundle or distribution from an assembly descriptor. This goal is suitable either for binding
@@ -38,6 +43,36 @@
 public class SingleAssemblyMojo
     extends AbstractAssemblyMojo
 {
+    @Parameter( defaultValue = "${plugin}", readonly = true )
+    private PluginDescriptor plugin;
+
+    @Override
+    public void execute()
+        throws MojoExecutionException, MojoFailureException
+    {
+        verifyRemovedParameter( "classifier" );
+        verifyRemovedParameter( "descriptor" );
+        verifyRemovedParameter( "descriptorId" );
+        verifyRemovedParameter( "includeSite" );
+        
+        super.execute();
+    }
+    
+    private void verifyRemovedParameter( String paramName )
+    {
+        Object pluginConfiguration = plugin.getPlugin().getConfiguration();
+        if ( pluginConfiguration instanceof Xpp3Dom )
+        {
+            Xpp3Dom configDom = (Xpp3Dom) pluginConfiguration;
+            
+            if ( configDom.getChild( paramName ) != null )
+            {
+                throw new IllegalArgumentException( "parameter '" + paramName
+                    + "' has been removed from the plugin, please verify documentation." );
+            }
+        }
+    }
+    
     /**
      */
     @Parameter( defaultValue = "${project}", readonly = true, required = true )
diff --git a/src/test/java/org/apache/maven/plugins/assembly/io/DefaultAssemblyReaderTest.java b/src/test/java/org/apache/maven/plugins/assembly/io/DefaultAssemblyReaderTest.java
index e4377aa..8acff00 100644
--- a/src/test/java/org/apache/maven/plugins/assembly/io/DefaultAssemblyReaderTest.java
+++ b/src/test/java/org/apache/maven/plugins/assembly/io/DefaultAssemblyReaderTest.java
@@ -825,7 +825,7 @@
 
         final String assemblyFile = files.get( 0 );
 
-        final List<Assembly> assemblies = performReadAssemblies( basedir, assemblyFile, null, null, null );
+        final List<Assembly> assemblies = performReadAssemblies( basedir, new String[] { assemblyFile }, null, null );
 
         assertNotNull( assemblies );
         assertEquals( 1, assemblies.size() );
@@ -845,7 +845,7 @@
 
         try
         {
-            performReadAssemblies( basedir, assemblyFile.getAbsolutePath(), null, null, null, false );
+            performReadAssemblies( basedir, null, null, null, false );
 
             fail( "Should fail when descriptor file is missing and ignoreDescriptors == false" );
         }
@@ -865,7 +865,7 @@
 
         try
         {
-            performReadAssemblies( basedir, assemblyFile.getAbsolutePath(), null, null, null, true );
+            performReadAssemblies( basedir, null, null, null, true );
         }
         catch ( final AssemblyReadException e )
         {
@@ -892,7 +892,7 @@
         final List<String> files = writeAssembliesToFile( assemblies, basedir );
 
         final List<Assembly> results =
-            performReadAssemblies( basedir, null, files.toArray( new String[files.size()] ), null, null );
+            performReadAssemblies( basedir, files.toArray( new String[files.size()] ), null, null );
 
         assertNotNull( results );
         assertEquals( 2, results.size() );
@@ -912,7 +912,7 @@
         final File basedir = fileManager.createTempDir();
 
         final List<Assembly> assemblies =
-            performReadAssemblies( basedir, null, null, new String[]{ "bin", "src" }, null );
+            performReadAssemblies( basedir, null, new String[]{ "bin", "src" }, null );
 
         assertNotNull( assemblies );
         assertEquals( 2, assemblies.size() );
@@ -943,7 +943,7 @@
 
         writeAssembliesToFile( assemblies, basedir );
 
-        final List<Assembly> results = performReadAssemblies( basedir, null, null, null, basedir );
+        final List<Assembly> results = performReadAssemblies( basedir, null, null, basedir );
 
         assertNotNull( results );
         assertEquals( 2, results.size() );
@@ -976,7 +976,7 @@
 
         fileManager.createFile( basedir, "readme.txt", "This is just a readme file, not a descriptor." );
 
-        final List<Assembly> results = performReadAssemblies( basedir, null, null, null, basedir );
+        final List<Assembly> results = performReadAssemblies( basedir, null, null, basedir );
 
         assertNotNull( results );
         assertEquals( 2, results.size() );
@@ -1018,21 +1018,18 @@
         return files;
     }
 
-    private List<Assembly> performReadAssemblies( final File basedir, final String descriptor,
-                                                  final String[] descriptors, final String[] descriptorRefs,
-                                                  final File descriptorDir )
+    private List<Assembly> performReadAssemblies( final File basedir, final String[] descriptors,
+                                                  final String[] descriptorRefs, final File descriptorDir )
         throws AssemblyReadException, InvalidAssemblerConfigurationException
     {
-        return performReadAssemblies( basedir, descriptor, descriptors, descriptorRefs, descriptorDir, false );
+        return performReadAssemblies( basedir, descriptors, descriptorRefs, descriptorDir, false );
     }
 
-    private List<Assembly> performReadAssemblies( final File basedir, final String descriptor,
-                                                  final String[] descriptors, final String[] descriptorRefs,
-                                                  final File descriptorDir, final boolean ignoreMissing )
+    private List<Assembly> performReadAssemblies( final File basedir, final String[] descriptors,
+                                                  final String[] descriptorRefs, final File descriptorDir,
+                                                  final boolean ignoreMissing )
         throws AssemblyReadException, InvalidAssemblerConfigurationException
     {
-        expect( configSource.getDescriptor() ).andReturn( descriptor );
-
         expect( configSource.getDescriptorReferences() ).andReturn( descriptorRefs );
 
         expect( configSource.getDescriptors() ).andReturn( descriptors );