[
https://issues.apache.org/jira/browse/FLINK-2077?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14704613#comment-14704613
]
ASF GitHub Bot commented on FLINK-2077:
---------------------------------------
Github user tillrohrmann commented on a diff in the pull request:
https://github.com/apache/flink/pull/1035#discussion_r37512972
--- Diff: flink-core/src/main/java/org/apache/flink/core/fs/Path.java ---
@@ -430,40 +296,127 @@ public int depth() {
}
/**
- * Returns a qualified path object.
- *
- * @param fs
- * the FileSystem that should be used to obtain the current
working directory
- * @return the qualified path object
+ * Checks if the provided path string is either null or has zero length
and throws
+ * a {@link IllegalArgumentException} if any of the two conditions
apply.
+ * In addition, leading and tailing whitespaces are removed.
+ *
+ * @param path
+ * the path string to be checked
+ * @return The checked and trimmed path.
+ */
+ private String checkAndTrimPathArg(String path) {
+ // disallow construction of a Path from an empty string
+ if (path == null) {
+ throw new IllegalArgumentException("Can not create a
Path from a null string");
+ }
+ path = path.trim();
+ if (path.length() == 0) {
+ throw new IllegalArgumentException("Can not create a
Path from an empty string");
+ }
+ return path;
+ }
+
+ /**
+ * Initializes a path object given the scheme, authority and path
string.
+ *
+ * @param scheme
+ * the scheme string.
+ * @param authority
+ * the authority string.
+ * @param path
+ * the path string.
*/
- public Path makeQualified(FileSystem fs) {
- Path path = this;
- if (!isAbsolute()) {
- path = new Path(fs.getWorkingDirectory(), this);
+ private void initialize(String scheme, String authority, String path) {
+ try {
+ this.uri = new URI(scheme, authority,
normalizePath(path), null, null).normalize();
+ } catch (URISyntaxException e) {
+ throw new IllegalArgumentException(e);
}
+ }
- final URI pathUri = path.toUri();
- final URI fsUri = fs.getUri();
+ /**
+ * Normalizes a path string.
+ *
+ * @param path
+ * the path string to normalize
+ * @return the normalized path string
+ */
+ private String normalizePath(String path) {
- String scheme = pathUri.getScheme();
- String authority = pathUri.getAuthority();
+ // remove leading and tailing whitespaces
+ path = path.trim();
- if (scheme != null && (authority != null ||
fsUri.getAuthority() == null)) {
- return path;
+ // remove consecutive slashes & backslashes
+ path = path.replace("\\", "/");
+ path = path.replaceAll("/+", "/");
--- End diff --
Doesn't this also replaces a single `/` with a `/`. Maybe the regex should
be `//+`.
> Rework Path class and add extend support for Windows paths
> ----------------------------------------------------------
>
> Key: FLINK-2077
> URL: https://issues.apache.org/jira/browse/FLINK-2077
> Project: Flink
> Issue Type: Improvement
> Components: Core
> Affects Versions: 0.9
> Reporter: Fabian Hueske
> Assignee: GaoLun
> Priority: Minor
> Labels: starter
>
> The class {{org.apache.flink.core.fs.Path}} handles paths for Flink's
> {{FileInputFormat}} and {{FileOutputFormat}}. Over time, this class has
> become quite hard to read and modify.
> It would benefit from some cleaning and refactoring. Along with the
> refactoring, support for Windows paths like {{//host/dir1/dir2}} could be
> added.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)