|
@@ -273,7 +273,7 @@ abstract class InodeTree<T> {
|
|
|
* is changed later it is then ignored (a dir with null entries)
|
|
|
*/
|
|
|
public static class INodeLink<T> extends INode<T> {
|
|
|
- final URI[] targetDirLinkList;
|
|
|
+ final String[] targetDirLinkList;
|
|
|
private T targetFileSystem; // file system object created from the link.
|
|
|
// Function to initialize file system. Only applicable for simple links
|
|
|
private Function<URI, T> fileSystemInitMethod;
|
|
@@ -283,7 +283,7 @@ abstract class InodeTree<T> {
|
|
|
* Construct a mergeLink or nfly.
|
|
|
*/
|
|
|
INodeLink(final String pathToNode, final UserGroupInformation aUgi,
|
|
|
- final T targetMergeFs, final URI[] aTargetDirLinkList) {
|
|
|
+ final T targetMergeFs, final String[] aTargetDirLinkList) {
|
|
|
super(pathToNode, aUgi);
|
|
|
targetFileSystem = targetMergeFs;
|
|
|
targetDirLinkList = aTargetDirLinkList;
|
|
@@ -294,11 +294,11 @@ abstract class InodeTree<T> {
|
|
|
*/
|
|
|
INodeLink(final String pathToNode, final UserGroupInformation aUgi,
|
|
|
Function<URI, T> createFileSystemMethod,
|
|
|
- final URI aTargetDirLink) {
|
|
|
+ final String aTargetDirLink) throws URISyntaxException {
|
|
|
super(pathToNode, aUgi);
|
|
|
targetFileSystem = null;
|
|
|
- targetDirLinkList = new URI[1];
|
|
|
- targetDirLinkList[0] = aTargetDirLink;
|
|
|
+ targetDirLinkList = new String[1];
|
|
|
+ targetDirLinkList[0] = new URI(aTargetDirLink).toString();
|
|
|
this.fileSystemInitMethod = createFileSystemMethod;
|
|
|
}
|
|
|
|
|
@@ -336,7 +336,8 @@ abstract class InodeTree<T> {
|
|
|
if (targetFileSystem != null) {
|
|
|
return targetFileSystem;
|
|
|
}
|
|
|
- targetFileSystem = fileSystemInitMethod.apply(targetDirLinkList[0]);
|
|
|
+ targetFileSystem =
|
|
|
+ fileSystemInitMethod.apply(URI.create(targetDirLinkList[0]));
|
|
|
if (targetFileSystem == null) {
|
|
|
throw new IOException(
|
|
|
"Could not initialize target File System for URI : " +
|
|
@@ -404,7 +405,7 @@ abstract class InodeTree<T> {
|
|
|
switch (linkType) {
|
|
|
case SINGLE:
|
|
|
newLink = new INodeLink<T>(fullPath, aUgi,
|
|
|
- initAndGetTargetFs(), new URI(target));
|
|
|
+ initAndGetTargetFs(), target);
|
|
|
break;
|
|
|
case SINGLE_FALLBACK:
|
|
|
case MERGE_SLASH:
|
|
@@ -413,10 +414,10 @@ abstract class InodeTree<T> {
|
|
|
throw new IllegalArgumentException("Unexpected linkType: " + linkType);
|
|
|
case MERGE:
|
|
|
case NFLY:
|
|
|
- final URI[] targetUris = StringUtils.stringToURI(
|
|
|
- StringUtils.getStrings(target));
|
|
|
+ final String[] targetUris = StringUtils.getStrings(target);
|
|
|
newLink = new INodeLink<T>(fullPath, aUgi,
|
|
|
- getTargetFileSystem(settings, targetUris), targetUris);
|
|
|
+ getTargetFileSystem(settings, StringUtils.stringToURI(targetUris)),
|
|
|
+ targetUris);
|
|
|
break;
|
|
|
default:
|
|
|
throw new IllegalArgumentException(linkType + ": Infeasible linkType");
|
|
@@ -633,8 +634,7 @@ abstract class InodeTree<T> {
|
|
|
if (isMergeSlashConfigured) {
|
|
|
Preconditions.checkNotNull(mergeSlashTarget);
|
|
|
root = new INodeLink<T>(mountTableName, ugi,
|
|
|
- initAndGetTargetFs(),
|
|
|
- new URI(mergeSlashTarget));
|
|
|
+ initAndGetTargetFs(), mergeSlashTarget);
|
|
|
mountPoints.add(new MountPoint<T>("/", (INodeLink<T>) root));
|
|
|
rootFallbackLink = null;
|
|
|
} else {
|
|
@@ -652,7 +652,7 @@ abstract class InodeTree<T> {
|
|
|
+ "not allowed.");
|
|
|
}
|
|
|
fallbackLink = new INodeLink<T>(mountTableName, ugi,
|
|
|
- initAndGetTargetFs(), new URI(le.getTarget()));
|
|
|
+ initAndGetTargetFs(), le.getTarget());
|
|
|
continue;
|
|
|
case REGEX:
|
|
|
addRegexMountEntry(le);
|
|
@@ -678,7 +678,7 @@ abstract class InodeTree<T> {
|
|
|
.append(" and considering itself as a linkFallback.");
|
|
|
FileSystem.LOG.info(msg.toString());
|
|
|
rootFallbackLink = new INodeLink<T>(mountTableName, ugi,
|
|
|
- initAndGetTargetFs(), theUri);
|
|
|
+ initAndGetTargetFs(), theUri.toString());
|
|
|
getRootDir().addFallbackLink(rootFallbackLink);
|
|
|
}
|
|
|
}
|