Author: hboutemy Date: Sun Aug 21 00:40:25 2011 New Revision: 1159928 URL: http://svn.apache.org/viewvc?rev=1159928&view=rev Log: simplified code
Modified: maven/archetype/trunk/archetype-common/src/main/java/org/apache/maven/archetype/generator/DefaultFilesetArchetypeGenerator.java Modified: maven/archetype/trunk/archetype-common/src/main/java/org/apache/maven/archetype/generator/DefaultFilesetArchetypeGenerator.java URL: http://svn.apache.org/viewvc/maven/archetype/trunk/archetype-common/src/main/java/org/apache/maven/archetype/generator/DefaultFilesetArchetypeGenerator.java?rev=1159928&r1=1159927&r2=1159928&view=diff ============================================================================== --- maven/archetype/trunk/archetype-common/src/main/java/org/apache/maven/archetype/generator/DefaultFilesetArchetypeGenerator.java (original) +++ maven/archetype/trunk/archetype-common/src/main/java/org/apache/maven/archetype/generator/DefaultFilesetArchetypeGenerator.java Sun Aug 21 00:40:25 2011 @@ -348,57 +348,54 @@ public class DefaultFilesetArchetypeGene * @param filePath the file name and path to be interpolated * @param context contains the available properties */ - private String replaceFilenameTokens( String filePath, Context context ) + private String replaceFilenameTokens( final String filePath, final Context context ) { String interpolatedResult = filePath; - String propertyToken = null; - String contextPropertyValue = null; int start = 0; - int end = 0; - int skipUndefinedPropertyIndex = 0; - int maxAttempts = StringUtils.countMatches( interpolatedResult, DELIMITER ) / 2; - - for ( int x = 0; x < maxAttempts && start != -1; x++ ) + while ( true ) { - start = interpolatedResult.indexOf( DELIMITER, skipUndefinedPropertyIndex ); + start = interpolatedResult.indexOf( DELIMITER, start ); - if ( start != -1 ) + if ( start == -1 ) { - end = interpolatedResult.indexOf( DELIMITER, start + DELIMITER.length() ); + break; + } - if ( end != -1 ) - { - propertyToken = interpolatedResult.substring( start + DELIMITER.length(), end ); - } + int end = interpolatedResult.indexOf( DELIMITER, start + DELIMITER.length() ); - contextPropertyValue = (String) context.get( propertyToken ); + if ( end == -1 ) + { + break; + } - if ( contextPropertyValue != null && contextPropertyValue.trim().length() > 0 ) - { - if ( getLogger().isDebugEnabled() ) - { - getLogger().debug( - "Replacing '" + DELIMITER + propertyToken + DELIMITER + "' in file path '" - + interpolatedResult + "' with value '" + contextPropertyValue + "'." ); - } - - interpolatedResult = - StringUtils.replace( interpolatedResult, DELIMITER + propertyToken + DELIMITER, - contextPropertyValue ); + String propertyToken = interpolatedResult.substring( start + DELIMITER.length(), end ); - } - else - { - // Need to skip the undefined property - skipUndefinedPropertyIndex = end + DELIMITER.length() + 1; + String contextPropertyValue = (String) context.get( propertyToken ); - getLogger().warn( - "Property '" + propertyToken + "' was not specified, so the token in '" - + interpolatedResult + "' is not being replaced." ); + if ( contextPropertyValue != null && contextPropertyValue.trim().length() > 0 ) + { + String search = DELIMITER + propertyToken + DELIMITER; + + if ( getLogger().isDebugEnabled() ) + { + getLogger().debug( "Replacing '" + search + "' in file path '" + interpolatedResult + + "' with value '" + contextPropertyValue + "'." ); } + + interpolatedResult = StringUtils.replace( interpolatedResult, search, contextPropertyValue ); + + end = end + contextPropertyValue.length() - search.length(); } + else + { + // Need to skip the undefined property + getLogger().warn( "Property '" + propertyToken + "' was not specified, so the token in '" + + interpolatedResult + "' is not being replaced." ); + } + + start = end + DELIMITER.length() + 1; } if ( getLogger().isDebugEnabled() )