This is an automated email from the ASF dual-hosted git repository. boyuanz pushed a commit to branch release-2.19.0 in repository https://gitbox.apache.org/repos/asf/beam.git
The following commit(s) were added to refs/heads/release-2.19.0 by this push: new 5ab8ead [BEAM-9123] HadoopResourceId returns wrong directoryName bugfix new 526158c Merge pull request #10626 from dmvk/BEAM-9123-backport-2.19 5ab8ead is described below commit 5ab8ead726dea577205056cc03a417c3753a65f2 Author: marek.simunek <marek.simu...@firma.seznam.cz> AuthorDate: Wed Jan 15 16:42:18 2020 +0100 [BEAM-9123] HadoopResourceId returns wrong directoryName bugfix --- .../org/apache/beam/sdk/io/hdfs/HadoopResourceId.java | 4 ++++ .../org/apache/beam/sdk/io/hdfs/HadoopResourceIdTest.java | 15 +++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/sdks/java/io/hadoop-file-system/src/main/java/org/apache/beam/sdk/io/hdfs/HadoopResourceId.java b/sdks/java/io/hadoop-file-system/src/main/java/org/apache/beam/sdk/io/hdfs/HadoopResourceId.java index 4e5f6e2..b68839b 100644 --- a/sdks/java/io/hadoop-file-system/src/main/java/org/apache/beam/sdk/io/hdfs/HadoopResourceId.java +++ b/sdks/java/io/hadoop-file-system/src/main/java/org/apache/beam/sdk/io/hdfs/HadoopResourceId.java @@ -65,6 +65,10 @@ class HadoopResourceId implements ResourceId { @Override public String getFilename() { + if (isDirectory()) { + Path parentPath = new Path(uri).getParent(); + return parentPath == null ? null : parentPath.getName(); + } return new Path(uri).getName(); } diff --git a/sdks/java/io/hadoop-file-system/src/test/java/org/apache/beam/sdk/io/hdfs/HadoopResourceIdTest.java b/sdks/java/io/hadoop-file-system/src/test/java/org/apache/beam/sdk/io/hdfs/HadoopResourceIdTest.java index 4d7fb8d..1726a3e 100644 --- a/sdks/java/io/hadoop-file-system/src/test/java/org/apache/beam/sdk/io/hdfs/HadoopResourceIdTest.java +++ b/sdks/java/io/hadoop-file-system/src/test/java/org/apache/beam/sdk/io/hdfs/HadoopResourceIdTest.java @@ -17,6 +17,9 @@ */ package org.apache.beam.sdk.io.hdfs; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; + import java.net.URI; import java.util.Collections; import org.apache.beam.sdk.io.FileSystems; @@ -65,4 +68,16 @@ public class HadoopResourceIdTest { "hdfs://" + hdfsClusterBaseUri.getPath(), true /* isDirectory */); ResourceIdTester.runResourceIdBattery(baseDirectory); } + + @Test + public void testGetFilename() { + assertNull(toResourceIdentifier("").getFilename()); + assertEquals("abc", toResourceIdentifier("/dirA/abc").getFilename()); + assertEquals("abc", toResourceIdentifier("/dirA/abc/").getFilename()); + assertEquals("xyz.txt", toResourceIdentifier("/dirA/abc/xyz.txt").getFilename()); + } + + private ResourceId toResourceIdentifier(String path) { + return new HadoopResourceId(hdfsClusterBaseUri.resolve(path)); + } }