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/07/16 22:40:19 UTC

svn commit: r556728 - in /maven/plugins/trunk/maven-assembly-plugin: ./ src/it/container-descriptors/ src/it/container-descriptors/custom-containerDescriptorHandler/ src/it/container-descriptors/custom-containerDescriptorHandler/assembly/ src/it/contai...

Author: jdcasey
Date: Mon Jul 16 13:40:11 2007
New Revision: 556728

URL: http://svn.apache.org/viewvc?view=rev&rev=556728
Log:
Test and implementation of a custom container-descriptor processor.

Added:
    maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/
    maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/
    maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/assembly/
    maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/assembly/a.properties   (with props)
    maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/assembly/pom.xml   (with props)
    maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/assembly/src/
    maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/assembly/src/assemble/
    maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/assembly/src/assemble/bin.xml   (with props)
    maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/assembly/src/config/
    maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/assembly/src/config/a/
    maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/assembly/src/config/a/file.txt   (with props)
    maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/assembly/src/config/b/
    maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/assembly/src/config/b/file.txt   (with props)
    maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/goals.txt   (with props)
    maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/handler-def/
    maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/handler-def/pom.xml   (with props)
    maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/handler-def/src/
    maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/handler-def/src/main/
    maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/handler-def/src/main/resources/
    maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/handler-def/src/main/resources/META-INF/
    maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/handler-def/src/main/resources/META-INF/plexus/
    maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/handler-def/src/main/resources/META-INF/plexus/components.xml   (with props)
    maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/pom.xml   (with props)
    maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/verify.bsh
    maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/filter/SimpleAggregatingDescriptorHandler.java   (with props)
Modified:
    maven/plugins/trunk/maven-assembly-plugin/pom.xml
    maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/DefaultAssemblyArchiver.java
    maven/plugins/trunk/maven-assembly-plugin/src/main/mdo/descriptor.mdo
    maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/DefaultAssemblyArchiverTest.java

Modified: maven/plugins/trunk/maven-assembly-plugin/pom.xml
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/pom.xml?view=diff&rev=556728&r1=556727&r2=556728
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/pom.xml (original)
+++ maven/plugins/trunk/maven-assembly-plugin/pom.xml Mon Jul 16 13:40:11 2007
@@ -260,17 +260,26 @@
                 </goals>
                 <configuration>
                   <projectsDirectory>src/it</projectsDirectory>
+                  
+                  <!-- Useful config for debugging one IT -->
+                  <!-- 
                   <debug>true</debug>
                   <pomIncludes>
+                    <pomInclude>container-descriptors/custom-containerDescriptorHandler/pom.xml</pomInclude>
+                  </pomIncludes>
+                  <streamLogs>true</streamLogs>
+                   -->
+                  <!-- END single-IT debugging block. -->
+                  <pomIncludes>
                     <pomInclude>**/pom.xml</pomInclude>
                   </pomIncludes>
                   <pomExcludes>
-                    <!-- This isn't working yet...pending fix in the repo builder, I guess -->
                     <pomExclude>repositories/repo-with-snapshot-parents/pom.xml</pomExclude>
                     
                     <pomExclude>**/child*/pom.xml</pomExclude>
                     <pomExclude>**/module*/pom.xml</pomExclude>
                     <pomExclude>**/descriptor/pom.xml</pomExclude>
+                    <pomExclude>**/handler-def/pom.xml</pomExclude>
                     <pomExclude>**/assembly/pom.xml</pomExclude>
                   </pomExcludes>
                   <postBuildHookScript>verify.bsh</postBuildHookScript>
@@ -304,6 +313,28 @@
       <groupId>org.apache.maven.shared</groupId>
       <artifactId>maven-shared-io</artifactId>
       <version>1.1-SNAPSHOT</version>
+    </dependency>
+    <dependency>
+      <groupId>org.codehaus.plexus</groupId>
+      <artifactId>plexus-active-collections</artifactId>
+      <version>1.0-beta-2-SNAPSHOT</version>
+      <exclusions>
+        <exclusion>
+          <groupId>org.codehaus.plexus</groupId>
+          <artifactId>plexus-component-api</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>org.codehaus.plexus</groupId>
+      <artifactId>plexus-io</artifactId>
+      <version>1.0-alpha-1</version>
+      <exclusions>
+        <exclusion>
+          <groupId>org.codehaus.plexus</groupId>
+          <artifactId>plexus-component-api</artifactId>
+        </exclusion>
+      </exclusions>
     </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>

Added: maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/assembly/a.properties
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/assembly/a.properties?view=auto&rev=556728
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/assembly/a.properties (added)
+++ maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/assembly/a.properties Mon Jul 16 13:40:11 2007
@@ -0,0 +1 @@
+testProp=boo

Propchange: maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/assembly/a.properties
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/assembly/a.properties
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/assembly/pom.xml
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/assembly/pom.xml?view=auto&rev=556728
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/assembly/pom.xml (added)
+++ maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/assembly/pom.xml Mon Jul 16 13:40:11 2007
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.test</groupId>
+    <artifactId>custom-containerDescriptorHandler</artifactId>
+    <version>1</version>
+  </parent>
+  
+  <artifactId>assembly</artifactId>
+  
+  <build>
+    <plugins>
+      <plugin>
+        <artifactId>maven-assembly-plugin</artifactId>
+        <version>testing</version>
+        
+        <dependencies>
+          <dependency>
+            <groupId>org.test</groupId>
+            <artifactId>handler-def</artifactId>
+            <version>1</version>
+          </dependency>
+        </dependencies>
+        
+        <configuration>
+          <descriptors>
+            <descriptor>src/assemble/bin.xml</descriptor>
+          </descriptors>
+        </configuration>
+        
+        <executions>
+          <execution>
+            <id>assembly</id>
+            <phase>package</phase>
+            <goals>
+              <goal>single</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+</project>

Propchange: maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/assembly/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/assembly/pom.xml
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/assembly/src/assemble/bin.xml
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/assembly/src/assemble/bin.xml?view=auto&rev=556728
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/assembly/src/assemble/bin.xml (added)
+++ maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/assembly/src/assemble/bin.xml Mon Jul 16 13:40:11 2007
@@ -0,0 +1,22 @@
+<assembly>
+  <id>bin</id>
+  
+  <formats>
+    <format>dir</format>
+  </formats>
+  
+  <includeBaseDirectory>false</includeBaseDirectory>
+  
+  <fileSets>
+    <fileSet>
+      <directory>src/config</directory>
+      <outputDirectory>/</outputDirectory>
+    </fileSet>
+  </fileSets>
+  
+  <containerDescriptorHandlers>
+    <containerDescriptorHandler>
+      <handlerName>file.txt</handlerName>
+    </containerDescriptorHandler>
+  </containerDescriptorHandlers>
+</assembly>

Propchange: maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/assembly/src/assemble/bin.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/assembly/src/assemble/bin.xml
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/assembly/src/config/a/file.txt
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/assembly/src/config/a/file.txt?view=auto&rev=556728
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/assembly/src/config/a/file.txt (added)
+++ maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/assembly/src/config/a/file.txt Mon Jul 16 13:40:11 2007
@@ -0,0 +1 @@
+file A

Propchange: maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/assembly/src/config/a/file.txt
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/assembly/src/config/a/file.txt
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/assembly/src/config/b/file.txt
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/assembly/src/config/b/file.txt?view=auto&rev=556728
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/assembly/src/config/b/file.txt (added)
+++ maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/assembly/src/config/b/file.txt Mon Jul 16 13:40:11 2007
@@ -0,0 +1,2 @@
+file B
+

Propchange: maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/assembly/src/config/b/file.txt
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/assembly/src/config/b/file.txt
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/goals.txt
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/goals.txt?view=auto&rev=556728
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/goals.txt (added)
+++ maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/goals.txt Mon Jul 16 13:40:11 2007
@@ -0,0 +1 @@
+install

Propchange: maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/goals.txt
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/goals.txt
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/handler-def/pom.xml
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/handler-def/pom.xml?view=auto&rev=556728
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/handler-def/pom.xml (added)
+++ maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/handler-def/pom.xml Mon Jul 16 13:40:11 2007
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.test</groupId>
+    <artifactId>custom-containerDescriptorHandler</artifactId>
+    <version>1</version>
+  </parent>
+  
+  <artifactId>handler-def</artifactId>
+  
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.maven.plugins</groupId>
+      <artifactId>maven-assembly-plugin</artifactId>
+      <version>testing</version>
+      <scope>provided</scope>
+    </dependency>
+  </dependencies>
+</project>

Propchange: maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/handler-def/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/handler-def/pom.xml
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/handler-def/src/main/resources/META-INF/plexus/components.xml
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/handler-def/src/main/resources/META-INF/plexus/components.xml?view=auto&rev=556728
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/handler-def/src/main/resources/META-INF/plexus/components.xml (added)
+++ maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/handler-def/src/main/resources/META-INF/plexus/components.xml Mon Jul 16 13:40:11 2007
@@ -0,0 +1,14 @@
+<component-set>
+  <components>
+    <component>
+      <role>org.apache.maven.plugin.assembly.filter.ContainerDescriptorHandler</role>
+      <role-hint>file.txt</role-hint>
+      <implementation>org.apache.maven.plugin.assembly.filter.SimpleAggregatingDescriptorHandler</implementation>
+      <configuration>
+        <filePattern>.*/file.txt</filePattern>
+        <outputPath>file.txt</outputPath>
+        <commentChars>#</commentChars>
+      </configuration>
+    </component>
+  </components>
+</component-set>
\ No newline at end of file

Propchange: maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/handler-def/src/main/resources/META-INF/plexus/components.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/handler-def/src/main/resources/META-INF/plexus/components.xml
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/pom.xml
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/pom.xml?view=auto&rev=556728
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/pom.xml (added)
+++ maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/pom.xml Mon Jul 16 13:40:11 2007
@@ -0,0 +1,14 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.test</groupId>
+  <artifactId>custom-containerDescriptorHandler</artifactId>
+  <packaging>pom</packaging>
+  <version>1</version>
+  <name>custom-containerDescriptorHandler</name>
+  
+  <modules>
+    <module>handler-def</module>
+    <module>assembly</module>
+  </modules>
+</project>

Propchange: maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/pom.xml
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/verify.bsh
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/verify.bsh?view=auto&rev=556728
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/verify.bsh (added)
+++ maven/plugins/trunk/maven-assembly-plugin/src/it/container-descriptors/custom-containerDescriptorHandler/verify.bsh Mon Jul 16 13:40:11 2007
@@ -0,0 +1,54 @@
+import java.io.*;
+
+boolean result = true;
+
+try
+{
+    File a = new File( basedir, "assembly/target/assembly-1-bin.dir/file.txt");
+    File b = new File( basedir, "assembly/target/assembly-1-bin.dir/b/file.txt");
+    
+    if(result && !a.exists() ) {
+        System.out.println( "File: " + a + " should have been generated, but was not." );
+        result = false;
+    }
+    
+    if(result) {
+        BufferedReader r = new BufferedReader(new FileReader(a));
+        String s = null;
+        
+        boolean foundA = false;
+        boolean foundB = false;
+        while( ( s = r.readLine() ) != null )
+        {
+            if ( s.equals( "file A" ) ) {
+                foundA = true;
+            }
+            else if ( s.equals( "file B" ) ) {
+                foundB = true;
+            }
+            
+            if ( foundA && foundB )
+            {
+                result = true;
+                break;
+            }
+        }
+        
+        if ( !result )
+        {
+            System.out.println( "File: " + a + " should contain lines:\nfile A\nfile B\n\n ...but didn't." );
+        }
+    }
+    
+    if(result && b.exists() ) {
+        System.out.println( "File: " + b + " should not exist, but does." );
+        result = false;
+    }
+}
+catch( IOException e )
+{
+    e.printStackTrace();
+    result = false;
+}
+
+return result;

Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/DefaultAssemblyArchiver.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/DefaultAssemblyArchiver.java?view=diff&rev=556728&r1=556727&r2=556728
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/DefaultAssemblyArchiver.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/archive/DefaultAssemblyArchiver.java Mon Jul 16 13:40:11 2007
@@ -11,10 +11,6 @@
 import org.apache.maven.plugin.assembly.model.ContainerDescriptorHandlerConfig;
 import org.apache.maven.plugin.assembly.utils.AssemblyFileUtils;
 import org.apache.maven.plugin.assembly.utils.AssemblyFormatUtils;
-import org.codehaus.plexus.DefaultPlexusContainer;
-import org.codehaus.plexus.PlexusConstants;
-import org.codehaus.plexus.PlexusContainer;
-import org.codehaus.plexus.PlexusContainerException;
 import org.codehaus.plexus.archiver.Archiver;
 import org.codehaus.plexus.archiver.ArchiverException;
 import org.codehaus.plexus.archiver.filters.JarSecurityFileSelector;
@@ -24,16 +20,13 @@
 import org.codehaus.plexus.archiver.tar.TarArchiver;
 import org.codehaus.plexus.archiver.tar.TarLongFileMode;
 import org.codehaus.plexus.archiver.war.WarArchiver;
+import org.codehaus.plexus.collections.ActiveCollectionManager;
+import org.codehaus.plexus.collections.ActiveMap;
 import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
-import org.codehaus.plexus.configuration.PlexusConfigurationResourceException;
-import org.codehaus.plexus.context.Context;
-import org.codehaus.plexus.context.ContextException;
 import org.codehaus.plexus.logging.AbstractLogEnabled;
-import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable;
 
 import java.io.File;
 import java.io.IOException;
-import java.io.StringReader;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Iterator;
@@ -44,7 +37,7 @@
  */
 public class DefaultAssemblyArchiver
     extends AbstractLogEnabled
-    implements AssemblyArchiver, Contextualizable
+    implements AssemblyArchiver
 {
 
     /**
@@ -57,7 +50,10 @@
      */
     private List assemblyPhases;
 
-    private PlexusContainer container;
+    /**
+     * @plexus.requirement
+     */
+    private ActiveCollectionManager collectionManager;
 
     public DefaultAssemblyArchiver()
     {
@@ -65,10 +61,10 @@
     }
 
     // introduced for testing.
-    public DefaultAssemblyArchiver( ArchiverManager archiverManager, PlexusContainer container, List assemblyPhases )
+    public DefaultAssemblyArchiver( ArchiverManager archiverManager, ActiveCollectionManager collectionManager, List assemblyPhases )
     {
         this.archiverManager = archiverManager;
-        this.container = container;
+        this.collectionManager = collectionManager;
         this.assemblyPhases = assemblyPhases;
     }
 
@@ -140,52 +136,32 @@
         List handlers = new ArrayList();
         boolean foundPlexus = false;
 
-        for ( Iterator it = containerDescriptorHandlers.iterator(); it.hasNext(); )
+        if ( ( containerDescriptorHandlers != null ) && !containerDescriptorHandlers.isEmpty() )
         {
-            ContainerDescriptorHandlerConfig config = (ContainerDescriptorHandlerConfig) it.next();
+            ActiveMap handlerMap = collectionManager.getActiveMap( ContainerDescriptorHandler.class );
 
-            String hint = config.getHandlerName();
-            ContainerDescriptorHandler handler;
-
-            // TODO: There MUST BE a better way that this, but I kept running into
-            // incompatible ClassRealm class definitions...so, I give up.
-            DefaultPlexusContainer handlerContainer = new DefaultPlexusContainer();
-            handlerContainer.setParentPlexusContainer( container );
-
-            Object conf = config.getConfiguration();
-            if ( conf != null )
+            for ( Iterator it = containerDescriptorHandlers.iterator(); it.hasNext(); )
             {
-                StringReader reader = new StringReader( String.valueOf( conf ) );
+                ContainerDescriptorHandlerConfig config = (ContainerDescriptorHandlerConfig) it.next();
+
+                String hint = config.getHandlerName();
+                ContainerDescriptorHandler handler;
 
                 try
                 {
-                    handlerContainer.setConfigurationResource( reader );
-                    handlerContainer.initialize();
+                    handler = (ContainerDescriptorHandler) handlerMap.checkedGet( hint );
                 }
-                catch ( PlexusConfigurationResourceException e )
+                catch ( ComponentLookupException e )
                 {
                     throw new InvalidAssemblerConfigurationException( "containerDescriptorHandler: " + hint + " could not be loaded.", e );
                 }
-                catch ( PlexusContainerException e )
-                {
-                    throw new InvalidAssemblerConfigurationException( "containerDescriptorHandler: " + hint + " could not be loaded.", e );
-                }
-            }
 
-            try
-            {
-                handler = (ContainerDescriptorHandler) handlerContainer.lookup( ContainerDescriptorHandler.class.getName(), hint );
-            }
-            catch ( ComponentLookupException e )
-            {
-                throw new InvalidAssemblerConfigurationException( "containerDescriptorHandler: " + hint + " could not be loaded.", e );
-            }
+                handlers.add( handler );
 
-            handlers.add( handler );
-
-            if ( "plexus".equals( hint ) )
-            {
-                foundPlexus = true;
+                if ( "plexus".equals( hint ) )
+                {
+                    foundPlexus = true;
+                }
             }
         }
 
@@ -299,12 +275,6 @@
         tarArchiver.setLongfile( tarFileMode );
 
         return tarArchiver;
-    }
-
-    public void contextualize( Context context )
-        throws ContextException
-    {
-        container = (PlexusContainer) context.get( PlexusConstants.PLEXUS_KEY );
     }
 
 }

Added: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/filter/SimpleAggregatingDescriptorHandler.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/filter/SimpleAggregatingDescriptorHandler.java?view=auto&rev=556728
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/filter/SimpleAggregatingDescriptorHandler.java (added)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/filter/SimpleAggregatingDescriptorHandler.java Mon Jul 16 13:40:11 2007
@@ -0,0 +1,201 @@
+package org.apache.maven.plugin.assembly.filter;
+
+import org.codehaus.plexus.archiver.Archiver;
+import org.codehaus.plexus.archiver.ArchiverException;
+import org.codehaus.plexus.archiver.UnArchiver;
+import org.codehaus.plexus.components.io.fileselectors.FileInfo;
+import org.codehaus.plexus.logging.LogEnabled;
+import org.codehaus.plexus.logging.Logger;
+import org.codehaus.plexus.logging.console.ConsoleLogger;
+import org.codehaus.plexus.util.IOUtil;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.io.StringWriter;
+import java.io.Writer;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.List;
+
+public class SimpleAggregatingDescriptorHandler
+    implements ContainerDescriptorHandler, LogEnabled
+{
+
+    // component configuration.
+
+    private String filePattern;
+
+    private String outputPath;
+
+    private String commentChars = "#";
+
+    // calculated, temporary values.
+
+    private boolean overrideFilterAction;
+
+    private StringWriter aggregateWriter = new StringWriter();
+
+    private List filenames = new ArrayList();
+
+    // injected by the container.
+
+    private Logger logger;
+
+    public void finalizeArchiveCreation( Archiver archiver )
+        throws ArchiverException
+    {
+        if ( outputPath.endsWith( "/" ) )
+        {
+            throw new ArchiverException(
+                                         "Cannot write aggregated properties to a directory. You must specify a file name in the outputPath configuration for this handler. (handler: "
+                                                         + getClass().getName() );
+        }
+
+        if ( outputPath.startsWith( "/" ) )
+        {
+            outputPath = outputPath.substring( 1 );
+        }
+
+        File temp = writePropertiesFile();
+
+        overrideFilterAction = true;
+
+        archiver.addFile( temp, outputPath );
+
+        overrideFilterAction = false;
+    }
+
+    private File writePropertiesFile()
+        throws ArchiverException
+    {
+        File f;
+
+        Writer writer = null;
+        try
+        {
+            f = File.createTempFile( "maven-assembly-plugin", "tmp" );
+            f.deleteOnExit();
+
+            writer = new FileWriter( f );
+
+            writer.write( commentChars + " Aggregated on " + new Date() + " from: " );
+
+            for ( Iterator it = filenames.iterator(); it.hasNext(); )
+            {
+                String filename = (String) it.next();
+
+                writer.write( "\n" + commentChars + " " + filename );
+            }
+
+            writer.write( "\n\n" );
+
+            writer.write( aggregateWriter.toString() );
+        }
+        catch ( IOException e )
+        {
+            throw new ArchiverException( "Error adding aggregated properties to finalize archive creation. Reason: "
+                                         + e.getMessage(), e );
+        }
+        finally
+        {
+            IOUtil.close( writer );
+        }
+
+        return f;
+    }
+
+    public void finalizeArchiveExtraction( UnArchiver unarchiver )
+        throws ArchiverException
+    {
+    }
+
+    public List getVirtualFiles()
+    {
+        return Collections.singletonList( outputPath );
+    }
+
+    public boolean isSelected( FileInfo fileInfo )
+        throws IOException
+    {
+        System.out.println( "\n\nChecking isSelected(..) for file with name: " + fileInfo.getName() + "\nin: " + getClass().getName() + "\n\n" );
+        if ( overrideFilterAction )
+        {
+            return true;
+        }
+
+        String name = fileInfo.getName();
+
+        if ( fileInfo.isFile() && name.matches( filePattern ) )
+        {
+            readProperties( fileInfo );
+            filenames.add( name );
+
+            return false;
+        }
+
+        return true;
+    }
+
+    private void readProperties( FileInfo fileInfo )
+        throws IOException
+    {
+        StringWriter writer = new StringWriter();
+        Reader reader = null;
+        try
+        {
+            reader = new InputStreamReader( fileInfo.getContents() );
+
+            IOUtil.copy( reader, writer );
+        }
+        finally
+        {
+            IOUtil.close( reader );
+        }
+
+        String content = writer.toString();
+
+        aggregateWriter.write( "\n" );
+        aggregateWriter.write( content );
+    }
+
+    protected final Logger getLogger()
+    {
+        if ( logger == null )
+        {
+            logger = new ConsoleLogger( Logger.LEVEL_INFO, "" );
+        }
+
+        return logger;
+    }
+
+    public void enableLogging( Logger logger )
+    {
+        this.logger = logger;
+    }
+
+    public String getPropertiesPattern()
+    {
+        return filePattern;
+    }
+
+    public void setPropertiesPattern( String propertiesPattern )
+    {
+        filePattern = propertiesPattern;
+    }
+
+    public String getOutputPath()
+    {
+        return outputPath;
+    }
+
+    public void setOutputPath( String outputPath )
+    {
+        this.outputPath = outputPath;
+    }
+
+}

Propchange: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/filter/SimpleAggregatingDescriptorHandler.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/plugins/trunk/maven-assembly-plugin/src/main/java/org/apache/maven/plugin/assembly/filter/SimpleAggregatingDescriptorHandler.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Modified: maven/plugins/trunk/maven-assembly-plugin/src/main/mdo/descriptor.mdo
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/main/mdo/descriptor.mdo?view=diff&rev=556728&r1=556727&r2=556728
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/main/mdo/descriptor.mdo (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/main/mdo/descriptor.mdo Mon Jul 16 13:40:11 2007
@@ -956,6 +956,7 @@
           <type>String</type>
           <required>true</required>
         </field>
+        <!-- Commented out until it can be implemented and tested...
         <field>
           <name>configuration</name>
           <version>1.1.0</version>
@@ -964,6 +965,7 @@
           </description>
           <type>DOM</type>
         </field>
+         -->
       </fields>
     </class>
   </classes>

Modified: maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/DefaultAssemblyArchiverTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/DefaultAssemblyArchiverTest.java?view=diff&rev=556728&r1=556727&r2=556728
==============================================================================
--- maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/DefaultAssemblyArchiverTest.java (original)
+++ maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/archive/DefaultAssemblyArchiverTest.java Mon Jul 16 13:40:11 2007
@@ -7,7 +7,6 @@
 import org.apache.maven.plugin.assembly.model.Assembly;
 import org.apache.maven.plugin.assembly.testutils.MockManager;
 import org.apache.maven.plugin.assembly.testutils.TestFileManager;
-import org.codehaus.plexus.PlexusContainer;
 import org.codehaus.plexus.archiver.ArchiveFinalizer;
 import org.codehaus.plexus.archiver.Archiver;
 import org.codehaus.plexus.archiver.ArchiverException;
@@ -18,6 +17,7 @@
 import org.codehaus.plexus.archiver.tar.TarLongFileMode;
 import org.codehaus.plexus.archiver.war.WarArchiver;
 import org.codehaus.plexus.archiver.zip.ZipArchiver;
+import org.codehaus.plexus.collections.ActiveCollectionManager;
 import org.codehaus.plexus.logging.Logger;
 import org.codehaus.plexus.util.FileUtils;
 import org.easymock.ArgumentsMatcher;
@@ -409,7 +409,7 @@
 
     private DefaultAssemblyArchiver createSubject( MockAndControlForAssemblyArchiver macMgr, List phases, Logger logger )
     {
-        DefaultAssemblyArchiver subject = new DefaultAssemblyArchiver( macMgr.archiverManager, macMgr.container, phases );
+        DefaultAssemblyArchiver subject = new DefaultAssemblyArchiver( macMgr.archiverManager, macMgr.collectionManager, phases );
 
         if ( logger != null )
         {
@@ -429,9 +429,9 @@
 
         Archiver archiver;
 
-        MockControl containerControl;
+        MockControl collectionManagerControl;
 
-        PlexusContainer container;
+        ActiveCollectionManager collectionManager;
 
         private final MockManager mm;
 
@@ -443,10 +443,10 @@
 
             archiverManager = ( ArchiverManager ) control.getMock();
 
-            containerControl = MockControl.createControl( PlexusContainer.class );
-            mm.add( containerControl );
+            collectionManagerControl = MockControl.createControl( ActiveCollectionManager.class );
+            mm.add( collectionManagerControl );
 
-            container = (PlexusContainer) containerControl.getMock();
+            collectionManager = (ActiveCollectionManager) collectionManagerControl.getMock();
         }
 
         void createArchiver( Class archiverClass )