in tomcat7-maven-plugin/src/main/java/org/apache/tomcat/maven/plugin/tomcat7/run/RunMojo.java [175:257]
protected File getContextFile()
throws MojoExecutionException
{
File temporaryContextFile = null;
//----------------------------------------------------------------------------
// context attributes backgroundProcessorDelay reloadable cannot be modified at runtime.
// It looks only values from the file are used
// so here we create a temporary file with values modified
//----------------------------------------------------------------------------
FileReader fr = null;
FileWriter fw = null;
StringWriter sw = new StringWriter();
try
{
temporaryContextFile = File.createTempFile( "tomcat-maven-plugin", "temp-ctx-file" );
temporaryContextFile.deleteOnExit();
// format to modify/create <Context backgroundProcessorDelay="5" reloadable="false">
if ( contextFile != null && contextFile.exists() )
{
MavenFileFilterRequest mavenFileFilterRequest = new MavenFileFilterRequest();
mavenFileFilterRequest.setFrom( contextFile );
mavenFileFilterRequest.setTo( temporaryContextFile );
mavenFileFilterRequest.setMavenProject( project );
mavenFileFilterRequest.setMavenSession( session );
mavenFileFilterRequest.setFiltering( true );
mavenFileFilter.copyFile( mavenFileFilterRequest );
fr = new FileReader( temporaryContextFile );
Xpp3Dom xpp3Dom = Xpp3DomBuilder.build( fr );
xpp3Dom.setAttribute( "backgroundProcessorDelay", Integer.toString( backgroundProcessorDelay ) );
xpp3Dom.setAttribute( "reloadable", Boolean.toString( isContextReloadable() ) );
fw = new FileWriter( temporaryContextFile );
Xpp3DomWriter.write( fw, xpp3Dom );
Xpp3DomWriter.write( sw, xpp3Dom );
getLog().debug( " generated context file " + sw.toString() );
}
else
{
if ( contextReloadable )
{
// don't care about using a complicated xml api to create one xml line :-)
StringBuilder sb = new StringBuilder( "<Context " ).append( "backgroundProcessorDelay=\"" ).append(
Integer.toString( backgroundProcessorDelay ) ).append( "\"" ).append(
" reloadable=\"" + Boolean.toString( isContextReloadable() ) + "\"/>" );
getLog().debug( " generated context file " + sb.toString() );
fw = new FileWriter( temporaryContextFile );
fw.write( sb.toString() );
}
else
{
// no user context file and contextReloadable false so no need about creating a hack one
return null;
}
}
}
catch ( IOException e )
{
getLog().error( "error creating fake context.xml : " + e.getMessage(), e );
throw new MojoExecutionException( "error creating fake context.xml : " + e.getMessage(), e );
}
catch ( XmlPullParserException e )
{
getLog().error( "error creating fake context.xml : " + e.getMessage(), e );
throw new MojoExecutionException( "error creating fake context.xml : " + e.getMessage(), e );
}
catch ( MavenFilteringException e )
{
getLog().error( "error filtering context.xml : " + e.getMessage(), e );
throw new MojoExecutionException( "error filtering context.xml : " + e.getMessage(), e );
}
finally
{
IOUtil.close( fw );
IOUtil.close( fr );
IOUtil.close( sw );
}
return temporaryContextFile;
}