@ Override public boolean isModified ( ) { if ( _isDigestModified ) { if ( log . isLoggable ( Level . FINE ) ) log . fine ( _source . getNativePath ( ) + " digest is modified." ) ; return true ; } long sourceLastModified = _source . getLastModified ( ) ; long sourceLength = _source . length ( ) ; // if the source was deleted and we need the source if ( ! _requireSource && sourceLastModified == 0 ) { return false ; } // if the length changed else if ( sourceLength != _length ) { if ( log . isLoggable ( Level . FINE ) ) { log . fine ( _source . getNativePath ( ) + " length is modified (" + _length + " -> " + sourceLength + ")" ) ; } return true ; } // if the source is newer than the old value else if ( sourceLastModified != _lastModified ) { if ( log . isLoggable ( Level . FINE ) ) log . fine ( _source . getNativePath ( ) + " time is modified." ) ; return true ; } else return false ; }
If the source modified date changes at all treat it as a modification . This protects against the case where multiple computers have misaligned dates and a < comparison may fail .