2012/4/29 <ol...@apache.org>: > Author: olamy > Date: Sat Apr 28 21:11:01 2012 > New Revision: 1331833 > > URL: http://svn.apache.org/viewvc?rev=1331833&view=rev > Log: > for exec war extraction mode, generate a file containing the archive > timestamp creation to force reextract when users regenerate it and miss to > reset extract folder. > > Modified: > > tomcat/maven-plugin/trunk/tomcat7-maven-plugin/src/main/java/org/apache/tomcat/maven/plugin/tomcat7/run/AbstractExecWarMojo.java > > tomcat/maven-plugin/trunk/tomcat7-war-runner/src/main/java/org/apache/tomcat/maven/runner/Tomcat7Runner.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=1331833&r1=1331832&r2=1331833&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 > Sat Apr 28 21:11:01 2012 > @@ -51,6 +51,7 @@ import java.io.InputStream; > import java.io.OutputStream; > import java.io.PrintWriter; > import java.util.ArrayList; > +import java.util.Date; > import java.util.Enumeration; > import java.util.Iterator; > import java.util.List; > @@ -293,6 +294,7 @@ public abstract class AbstractExecWarMoj > > Properties properties = new Properties(); > > + properties.put( Tomcat7Runner.ARCHIVE_GENERATION_TIMESTAMP_KEY, > Long.toString( new Date().getTime() ) );
The above "new Date().getTime()" call produces the same result as calling System.currentTimeMillis() directly, but creates an unneeded Date object. > properties.put( Tomcat7Runner.ENABLE_NAMING_KEY, > Boolean.toString( enableNaming ) ); > properties.put( Tomcat7Runner.ACCESS_LOG_VALVE_FORMAT_KEY, > accessLogValveFormat ); > properties.put( Tomcat7Runner.HTTP_PROTOCOL_KEY, > connectorHttpProtocol ); > @@ -369,7 +371,6 @@ public abstract class AbstractExecWarMoj > IOUtils.copy( getClass().getResourceAsStream( "/conf/web.xml" ), > os ); > os.closeArchiveEntry(); > > - > properties.store( tmpPropertiesFileOutputStream, "created by > Apache Tomcat Maven plugin" ); > > tmpPropertiesFileOutputStream.flush(); > > 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=1331833&r1=1331832&r2=1331833&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 > Sat Apr 28 21:11:01 2012 > @@ -33,6 +33,8 @@ import java.io.BufferedOutputStream; > import java.io.File; > import java.io.FileNotFoundException; > import java.io.FileOutputStream; > +import java.io.FileReader; > +import java.io.FileWriter; > import java.io.IOException; > import java.io.InputStream; > import java.lang.reflect.InvocationTargetException; > @@ -58,6 +60,8 @@ public class Tomcat7Runner > // contains war name wars=foo.war,bar.war > public static final String WARS_KEY = "wars"; > > + public static final String ARCHIVE_GENERATION_TIMESTAMP_KEY = > "generationTimestamp"; > + > public static final String ENABLE_NAMING_KEY = "enableNaming"; > > public static final String ACCESS_LOG_VALVE_FORMAT_KEY = > "accessLogValveFormat"; > @@ -125,15 +129,48 @@ public class Tomcat7Runner > > debugMessage( "use extractDirectory:" + > extractDirectoryFile.getPath() ); > > - // do we have to extract content > - if ( !extractDirectoryFile.exists() || resetExtract ) > + boolean archiveTimestampChanged = false; > + > + // compare timestamp stored during previous run if exists > + File timestampFile = new File( extractDirectoryFile, > ".tomcat_executable_archive.timestamp" ); > + > + Properties timestampProps = new Properties(); > + > + if ( timestampFile.exists() ) > { > - extract(); > + timestampProps.load( new FileReader( timestampFile ) ); The above is bad coding. You should use FileInputStream to load a Properties file. Properties file uses ISO-8859-1, not system default encoding, and there are methods that use InputStream/OutputStream in the Properties class to deal with that. > + String timestampValue = timestampProps.getProperty( > Tomcat7Runner.ARCHIVE_GENERATION_TIMESTAMP_KEY ); > + if ( timestampValue != null ) > + { > + long timestamp = Long.parseLong( timestampValue ); > + archiveTimestampChanged = > + Long.parseLong( runtimeProperties.getProperty( > Tomcat7Runner.ARCHIVE_GENERATION_TIMESTAMP_KEY ) ) > + > timestamp; > + > + debugMessage( "read timestamp from file " + timestampValue + > ", archiveTimestampChanged: " > + + archiveTimestampChanged ); > + } > + > } > - else > + > + // do we have to extract content > { > - String wars = runtimeProperties.getProperty( WARS_KEY ); > - populateWebAppWarPerContext( wars ); > + if ( !extractDirectoryFile.exists() || resetExtract ) > + { > + extract(); > + // first run so create timestamp file > + if ( !timestampFile.exists() ) I do not get why you use the above exists() check. Shouldn't it be unconditional? With your followup fix in http://svn.apache.org/viewvc?diff_format=h&view=revision&revision=1331839 you do perform extract() call if (archiveTimestampChanged) is true, but I do not see how the timestamp file is updated. I have not looked into it, but does extract() call delete the file? That would be the reason to remove the above exists() check. > + { > + timestampProps.put( > Tomcat7Runner.ARCHIVE_GENERATION_TIMESTAMP_KEY, runtimeProperties.getProperty( > + Tomcat7Runner.ARCHIVE_GENERATION_TIMESTAMP_KEY ) ); > + timestampProps.store( new FileWriter( timestampFile ), > "Timestamp file for executable war/jar" ); It needs FileOutputStream above. > + } > + } > + else > + { > + String wars = runtimeProperties.getProperty( WARS_KEY ); > + populateWebAppWarPerContext( wars ); > + } > } > > // create tomcat various paths > Best regards, Konstantin Kolinko --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org