Repository: ant Updated Branches: refs/heads/master f20b41c9b -> 98e4b51aa
bz-62086 Fix NPE in ChainedMapper. This closes #59 pull request at github/apache/ant repo This NPE happens whenever any of the sub mappers returns `null`, which may happen eg. with `GlobPatternMapper`. Project: http://git-wip-us.apache.org/repos/asf/ant/repo Commit: http://git-wip-us.apache.org/repos/asf/ant/commit/98e4b51a Tree: http://git-wip-us.apache.org/repos/asf/ant/tree/98e4b51a Diff: http://git-wip-us.apache.org/repos/asf/ant/diff/98e4b51a Branch: refs/heads/master Commit: 98e4b51aa88be2de4e74172a0f4aec153da1ebd7 Parents: f20b41c Author: Adrien Grand <jpou...@gmail.com> Authored: Thu Feb 8 15:22:02 2018 +0100 Committer: Jaikiran Pai <jaiki...@apache.org> Committed: Thu Feb 8 20:16:42 2018 +0530 ---------------------------------------------------------------------- src/main/org/apache/tools/ant/util/ChainedMapper.java | 3 ++- src/tests/junit/org/apache/tools/ant/types/MapperTest.java | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ant/blob/98e4b51a/src/main/org/apache/tools/ant/util/ChainedMapper.java ---------------------------------------------------------------------- diff --git a/src/main/org/apache/tools/ant/util/ChainedMapper.java b/src/main/org/apache/tools/ant/util/ChainedMapper.java index e47043a..8b3e32f 100644 --- a/src/main/org/apache/tools/ant/util/ChainedMapper.java +++ b/src/main/org/apache/tools/ant/util/ChainedMapper.java @@ -18,6 +18,7 @@ package org.apache.tools.ant.util; +import java.util.Objects; import java.util.stream.Stream; /** @@ -33,7 +34,7 @@ public class ChainedMapper extends ContainerMapper { public String[] mapFileName(String sourceFileName) { String[] result = getMappers().stream() .reduce(new String[] { sourceFileName }, (i, m) -> Stream.of(i) - .map(m::mapFileName).flatMap(Stream::of).toArray(String[]::new), + .map(m::mapFileName).filter(Objects::nonNull).flatMap(Stream::of).toArray(String[]::new), (i, o) -> o); return result == null || result.length == 0 ? null : result; } http://git-wip-us.apache.org/repos/asf/ant/blob/98e4b51a/src/tests/junit/org/apache/tools/ant/types/MapperTest.java ---------------------------------------------------------------------- diff --git a/src/tests/junit/org/apache/tools/ant/types/MapperTest.java b/src/tests/junit/org/apache/tools/ant/types/MapperTest.java index 980f5cc..77c1811 100644 --- a/src/tests/junit/org/apache/tools/ant/types/MapperTest.java +++ b/src/tests/junit/org/apache/tools/ant/types/MapperTest.java @@ -35,6 +35,7 @@ import org.junit.Test; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; @@ -224,6 +225,9 @@ public class MapperTest { List list = Arrays.asList(targets); assertTrue("cannot find expected target \"def\"", list.contains("def")); assertTrue("cannot find expected target \"ghi\"", list.contains("ghi")); + + targets = fileNameMapper.mapFileName("z"); + assertNull(targets); } @Test