String.replace() used in an inconsistent (and unnecessary) way --------------------------------------------------------------
Key: ARCHETYPE-361 URL: http://jira.codehaus.org/browse/ARCHETYPE-361 Project: Maven Archetype Issue Type: Bug Components: Generator Affects Versions: 2.0 Reporter: Marc Wirth Priority: Minor Attachments: unnecessary_stringreplace.patch See attached patch. Sorry, no specific test case, but the existing testcases do not complain if this change is applied. First one: {code} processFilesetProject( archetypeDescriptor, StringUtils.replace( artifactId, "${rootArtifactId}", rootArtifactId ), archetypeResources, pom, archetypeZipFile, moduleOffset, context, packageName, outputDirectoryFile, basedirPom ); {code} replaced with: {code} processFilesetProject( archetypeDescriptor, artifactId, archetypeResources, pom, archetypeZipFile, moduleOffset, context, packageName, outputDirectoryFile, basedirPom ); {code} On the first call to the method the artifactId is the id from the request, so it cannot really contain "$\{rootArtifactId\}" unless somebody typed that on the console. If there are modules and the method recurses the parameter is replaced with {{StringUtils.replace( project.getDir(), "__rootArtifactId__", rootArtifactId )}} and the ModuleDescriptor dir uses the underscores for escaping, not the dollar and the braces, so I assume this replacement is not necessary at all. (None of the existing tests breaks). Second one: {code} processFilesetModule( rootArtifactId, StringUtils.replace( project.getDir(), "__rootArtifactId__", rootArtifactId ), archetypeResources, new File( moduleOutputDirectoryFile, Constants.ARCHETYPE_POM ), archetypeZipFile, ( StringUtils.isEmpty( moduleOffset ) ? "" : ( moduleOffset + "/" ) ) + StringUtils.replace( project.getDir(), "${rootArtifactId}", rootArtifactId ), pom, moduleOutputDirectoryFile, packageName, project, context ); {code} replaced with: {code} processFilesetModule( rootArtifactId, StringUtils.replace( project.getDir(), "__rootArtifactId__", rootArtifactId ), archetypeResources, new File( moduleOutputDirectoryFile, Constants.ARCHETYPE_POM ), archetypeZipFile, ( StringUtils.isEmpty( moduleOffset ) ? "" : ( moduleOffset + "/" ) ) + project.getDir(), pom, moduleOutputDirectoryFile, packageName, project, context ); {code} The dir of the Module descriptor uses underscores, not dollar plus braces for escaping. At least that's the way it is also created in org.apache.maven.archetype.creator.FilesetArchetypeCreator#createModule. Thus replacing a {{"$\{...\}"}} expression in ModuleDescriptor#getDir() should never actually do anything. Is that analysis correct? -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira