Author: olamy
Date: Mon Oct 17 19:58:35 2011
New Revision: 1185343

URL: http://svn.apache.org/viewvc?rev=1185343&view=rev
Log:
[MTOMCAT-102] fix creation of war when adding META-INF/context.xml

Modified:
    
tomcat/maven-plugin/trunk/tomcat7-maven-plugin/src/main/java/org/apache/tomcat/maven/plugin/tomcat7/run/AbstractExecWarMojo.java

Modified: 
tomcat/maven-plugin/trunk/tomcat7-maven-plugin/src/main/java/org/apache/tomcat/maven/plugin/tomcat7/run/AbstractExecWarMojo.java
URL: 
http://svn.apache.org/viewvc/tomcat/maven-plugin/trunk/tomcat7-maven-plugin/src/main/java/org/apache/tomcat/maven/plugin/tomcat7/run/AbstractExecWarMojo.java?rev=1185343&r1=1185342&r2=1185343&view=diff
==============================================================================
--- 
tomcat/maven-plugin/trunk/tomcat7-maven-plugin/src/main/java/org/apache/tomcat/maven/plugin/tomcat7/run/AbstractExecWarMojo.java
 (original)
+++ 
tomcat/maven-plugin/trunk/tomcat7-maven-plugin/src/main/java/org/apache/tomcat/maven/plugin/tomcat7/run/AbstractExecWarMojo.java
 Mon Oct 17 19:58:35 2011
@@ -304,12 +304,13 @@ public abstract class AbstractExecWarMoj
 
                         artifactResolver.resolve( artifact, this.remoteRepos, 
this.local );
                         File warFile = new File( buildDirectory, 
artifact.getFile().getName() );
+                        String warFileName = artifact.getFile().getName();
                         FileUtils.copyFile( artifact.getFile(), warFile );
                         if ( warRunDependency.contextXml != null )
                         {
-                            addContextXmlToWar( warRunDependency.contextXml, 
warFile );
+                            warFile = addContextXmlToWar( 
warRunDependency.contextXml, warFile );
                         }
-                        os.putArchiveEntry( new JarArchiveEntry( 
warFile.getName() ) );
+                        os.putArchiveEntry( new JarArchiveEntry( warFileName ) 
);
                         IOUtils.copy( new FileInputStream( warFile ), os );
                         os.closeArchiveEntry();
                         String propertyWarValue = properties.getProperty( 
Tomcat7Runner.WARS_KEY );
@@ -453,23 +454,41 @@ public abstract class AbstractExecWarMoj
     }
 
 
-    private void addContextXmlToWar( File contextXmlFile, File warFile )
+    /**
+     * return file can be deleted
+     */
+    private File addContextXmlToWar( File contextXmlFile, File warFile )
         throws IOException, ArchiveException
     {
         ArchiveOutputStream os = null;
         OutputStream warOutputStream = null;
+        File tmpWar = File.createTempFile( "tomcat", "war-exec" );
+        tmpWar.deleteOnExit();
+
         try
         {
-            warOutputStream = new FileOutputStream( warFile );
+            warOutputStream = new FileOutputStream( tmpWar );
             os = new ArchiveStreamFactory().createArchiveOutputStream( 
ArchiveStreamFactory.JAR, warOutputStream );
             os.putArchiveEntry( new JarArchiveEntry( "META-INF/context.xml" ) 
);
             IOUtils.copy( new FileInputStream( contextXmlFile ), os );
             os.closeArchiveEntry();
+
+            JarFile jarFile = new JarFile( warFile );
+            Enumeration<JarEntry> jarEntries = jarFile.entries();
+            while ( jarEntries.hasMoreElements() )
+            {
+                JarEntry jarEntry = jarEntries.nextElement();
+                os.putArchiveEntry( new JarArchiveEntry( jarEntry.getName() ) 
);
+                IOUtils.copy( jarFile.getInputStream( jarEntry ), os );
+                os.closeArchiveEntry();
+            }
+            os.flush();
         }
         finally
         {
             IOUtils.closeQuietly( os );
             IOUtils.closeQuietly( warOutputStream );
         }
+        return tmpWar;
     }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to