2013/11/6  <ol...@apache.org>:
> Author: olamy
> Date: Wed Nov  6 01:31:25 2013
> New Revision: 1539209
>
> URL: http://svn.apache.org/r1539209
> Log:
> [MTOMCAT-211] The .war file is not extracted from executable war
>
> Modified:
>     
> tomcat/maven-plugin/trunk/tomcat7-war-runner/src/main/java/org/apache/tomcat/maven/runner/Tomcat7Runner.java
>
> Modified: 
> tomcat/maven-plugin/trunk/tomcat7-war-runner/src/main/java/org/apache/tomcat/maven/runner/Tomcat7Runner.java
> URL: 
> http://svn.apache.org/viewvc/tomcat/maven-plugin/trunk/tomcat7-war-runner/src/main/java/org/apache/tomcat/maven/runner/Tomcat7Runner.java?rev=1539209&r1=1539208&r2=1539209&view=diff
> ==============================================================================
> --- 
> tomcat/maven-plugin/trunk/tomcat7-war-runner/src/main/java/org/apache/tomcat/maven/runner/Tomcat7Runner.java
>  (original)
> +++ 
> tomcat/maven-plugin/trunk/tomcat7-war-runner/src/main/java/org/apache/tomcat/maven/runner/Tomcat7Runner.java
>  Wed Nov  6 01:31:25 2013
> @@ -560,28 +560,35 @@ public class Tomcat7Runner
>              InputStream inputStream = null;
>              try
>              {
> +                File expandFile = null;
>                  inputStream = 
> Thread.currentThread().getContextClassLoader().getResourceAsStream( 
> entry.getValue() );
>                  if ( !useServerXml() )
>                  {
>                      if ( entry.getKey().equals( "/" ) )
>                      {
> -                        File expandFile = new File( extractDirectory, 
> "webapps/ROOT.war" );
> -                        debugMessage( "expand to file:" + 
> expandFile.getPath() );
> -                        expand( inputStream, expandFile );
> +                        expandFile = new File( extractDirectory, 
> "webapps/ROOT.war" );
>                      }
>                      else
>                      {
> -                        File expandFile = new File( extractDirectory, 
> "webapps/" + entry.getValue() );
> -                        debugMessage( "expand to file:" + 
> expandFile.getPath() );
> -                        expand( inputStream, expandFile );
> +                        expandFile = new File( extractDirectory, "webapps/" 
> + entry.getValue() );
>                      }
>                  }
>                  else
>                  {
> -                    File expandFile = new File( extractDirectory, "webapps/" 
> + entry.getValue() );
> -                    debugMessage( "expand to file:" + expandFile.getPath() );
> -                    expand( inputStream, new File( extractDirectory, 
> "webapps/" + entry.getValue() ) );
> +                    expandFile = new File( extractDirectory, "webapps/" + 
> entry.getValue() );
>                  }
> +
> +                debugMessage( "expand to file:" + expandFile.getPath() );
> +
> +                // MTOMCAT-211 ensure parent directories created
> +
> +                if ( !expandFile.getParentFile().mkdirs() )
> +                {
> +                    throw new Exception( "FATAL: impossible to create 
> directories:" + expandFile.getParentFile() );
> +                }

The above mkdirs() call returns "false" if those directories already exist.

Can webappWarPerContext.entrySet() contain several wars? If so then I
expect the code to throw the above exception when processing the
second war.

In Tomcat such code is usually written like this:
quoting from o.a.c.core.StandardContext
[[[
        if (!dir.mkdirs() && !dir.isDirectory()) {
            log.warn(sm.getString("standardContext.workCreateFail", dir,
                    getName()));
        }
]]]

> +
> +                expand( inputStream, expandFile );
> +
>              }
>              finally
>              {
>

Best regards,
Konstantin Kolinko

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

Reply via email to