Browse Source

BZ-62147 Fix the Java 8 refactoring regression which resulted in property value replacement for StringResource within a Token

master
Jaikiran Pai 7 years ago
parent
commit
5d167c2f47
2 changed files with 22 additions and 1 deletions
  1. +6
    -1
      src/main/org/apache/tools/ant/types/resources/Tokens.java
  2. +16
    -0
      src/tests/antunit/types/resources/tokens-test.xml

+ 6
- 1
src/main/org/apache/tools/ant/types/resources/Tokens.java View File

@@ -65,7 +65,12 @@ public class Tokens extends BaseResourceCollectionWrapper {
List<Resource> result = new ArrayList<>();
for (String s = tokenizer.getToken(rdr); s != null; s =
tokenizer.getToken(rdr)) {
StringResource resource = new StringResource(getProject(), s);
// do not send the Project to the constructor of StringResource, since
// the semantics of that constructor clearly state that property value
// replacement takes place on the passed string value. We don't want
// that to happen.
final StringResource resource = new StringResource(s);
resource.setProject(getProject());
result.add(resource);
}
return result;


+ 16
- 0
src/tests/antunit/types/resources/tokens-test.xml View File

@@ -44,6 +44,22 @@
</au:assertTrue>
</target>

<target name="testPropReplacement" description="bz-62147 - tests that string resource tokens aren't replaced with property values">
<property name="bz-62147-four" value="four"/>
<au:assertTrue>
<resourcecount count="0">
<difference>
<tokens>
<string>one two three $${bz-62147-four} $${bz-62417-nonexistent-prop}</string>
</tokens>
<resources>
<string value="one two three $${bz-62147-four} $${bz-62417-nonexistent-prop}" />
</resources>
</difference>
</resourcecount>
</au:assertTrue>
</target>

<target name="testExplicitLines">
<au:assertTrue>
<resourcecount count="0">


Loading…
Cancel
Save