You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ant.apache.org by ja...@apache.org on 2018/02/09 07:15:20 UTC
[2/3] ant git commit: bz-62076 Make IdentityMapper follow the
"mapFileName" API contract to avoid NPE when it deals with a non-matching
source file name
bz-62076 Make IdentityMapper follow the "mapFileName" API contract to avoid NPE when it deals with a non-matching source file name
Project: http://git-wip-us.apache.org/repos/asf/ant/repo
Commit: http://git-wip-us.apache.org/repos/asf/ant/commit/e3f52509
Tree: http://git-wip-us.apache.org/repos/asf/ant/tree/e3f52509
Diff: http://git-wip-us.apache.org/repos/asf/ant/diff/e3f52509
Branch: refs/heads/master
Commit: e3f5250916dc0d9493b45b2d8fc6efe3a0fd9fda
Parents: a6429c6
Author: Jaikiran Pai <ja...@apache.org>
Authored: Fri Feb 9 12:36:54 2018 +0530
Committer: Jaikiran Pai <ja...@apache.org>
Committed: Fri Feb 9 12:36:54 2018 +0530
----------------------------------------------------------------------
WHATSNEW | 7 +++++++
src/etc/testcases/taskdefs/pathconvert.xml | 18 ++++++++++++++++++
.../org/apache/tools/ant/util/IdentityMapper.java | 11 ++++++++++-
.../tools/ant/taskdefs/PathConvertTest.java | 11 +++++++++++
4 files changed, 46 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ant/blob/e3f52509/WHATSNEW
----------------------------------------------------------------------
diff --git a/WHATSNEW b/WHATSNEW
index 17e68ca..2d4b6f1 100644
--- a/WHATSNEW
+++ b/WHATSNEW
@@ -1,6 +1,13 @@
Changes from Ant 1.9.10 TO Ant 1.9.11
=====================================
+Fixed bugs:
+-----------
+
+ * Fixed NullPointerException when a mappedresource is used in pathconvert
+ Bugzilla Report 62076
+
+
Changes from Ant 1.9.9 TO Ant 1.9.10
====================================
http://git-wip-us.apache.org/repos/asf/ant/blob/e3f52509/src/etc/testcases/taskdefs/pathconvert.xml
----------------------------------------------------------------------
diff --git a/src/etc/testcases/taskdefs/pathconvert.xml b/src/etc/testcases/taskdefs/pathconvert.xml
index 1cdcc8c..5a1cdf7 100644
--- a/src/etc/testcases/taskdefs/pathconvert.xml
+++ b/src/etc/testcases/taskdefs/pathconvert.xml
@@ -17,6 +17,8 @@
-->
<project name="pathconvert">
+ <import file="../buildfiletest-base.xml"/>
+
<path id="testpath">
<pathelement path="${ant.file}" />
</path>
@@ -39,4 +41,20 @@
<pathconvert property="result" refid="testpath" />
</target>
+ <target name="test-nonmatching-mapper" description="test for bug fix bz-62076">
+ <mkdir dir="${output}/mapper-source-dir"/>
+ <!-- create 2 files, one of which will be matched/included by the globmapper
+ later in this target -->
+ <touch file="${output}/mapper-source-dir/file1.txt"/>
+ <touch file="${output}/mapper-source-dir/file2.log"/>
+
+ <pathconvert property="pc">
+ <mappedresources>
+ <fileset dir="${output}/mapper-source-dir"/>
+ <!-- we intentionally exclude one of the files -->
+ <globmapper from="*.log" to="*.txt"/>
+ </mappedresources>
+ </pathconvert>
+ </target>
+
</project>
http://git-wip-us.apache.org/repos/asf/ant/blob/e3f52509/src/main/org/apache/tools/ant/util/IdentityMapper.java
----------------------------------------------------------------------
diff --git a/src/main/org/apache/tools/ant/util/IdentityMapper.java b/src/main/org/apache/tools/ant/util/IdentityMapper.java
index 22c6c7e..18a31e5 100644
--- a/src/main/org/apache/tools/ant/util/IdentityMapper.java
+++ b/src/main/org/apache/tools/ant/util/IdentityMapper.java
@@ -46,7 +46,16 @@ public class IdentityMapper implements FileNameMapper {
* @param sourceFileName the name to map.
* @return the source filename in a one-element array.
*/
- public String[] mapFileName(String sourceFileName) {
+ @Override
+ public String[] mapFileName(final String sourceFileName) {
+ if (sourceFileName == null) {
+ // The FileNameMapper#mapFileName contract states that:
+ // "if the given rule doesn't apply to the source file,
+ // implementation must return null"
+ // we consider a null source file name as non-matching and
+ // hence return null
+ return null;
+ }
return new String[] {sourceFileName};
}
}
http://git-wip-us.apache.org/repos/asf/ant/blob/e3f52509/src/tests/junit/org/apache/tools/ant/taskdefs/PathConvertTest.java
----------------------------------------------------------------------
diff --git a/src/tests/junit/org/apache/tools/ant/taskdefs/PathConvertTest.java b/src/tests/junit/org/apache/tools/ant/taskdefs/PathConvertTest.java
index 41096b6..f29dc12 100644
--- a/src/tests/junit/org/apache/tools/ant/taskdefs/PathConvertTest.java
+++ b/src/tests/junit/org/apache/tools/ant/taskdefs/PathConvertTest.java
@@ -57,6 +57,17 @@ public class PathConvertTest {
buildRule.executeTarget("testnotargetos");
}
+ /**
+ * Tests that if a {@code mappedresource}, that excludes certain resources, is used in a {@code pathconvert},
+ * then it doesn't lead to a {@link NullPointerException}.
+ *
+ * @see <a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=62076">bz-62076</a> for more details
+ */
+ @Test
+ public void testNonMatchingMapper() {
+ buildRule.executeTarget("test-nonmatching-mapper");
+ }
+
private void test(String target) {
buildRule.executeTarget(target);
assertEquals("test#" + BUILD_FILENAME, buildRule.getProject().getProperty("result"));