/**
* Copyright (c) 2000-present Liferay, Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; either version 2.1 of the License, or (at your option)
* any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
* details.
*/
package com.liferay.portal.kernel.nio;
import java.io.IOException;
import java.nio.file.FileStore;
import java.nio.file.FileSystem;
import java.nio.file.Path;
import java.nio.file.PathMatcher;
import java.nio.file.WatchService;
import java.nio.file.attribute.UserPrincipalLookupService;
import java.nio.file.spi.FileSystemProvider;
import java.util.Iterator;
import java.util.Set;
/**
* @author Shuyang Zhou
*/
public class FileSystemWrapper extends FileSystem {
public FileSystemWrapper(
FileSystem fileSystem, FileSystemProvider fileSystemProvider) {
_fileSystem = fileSystem;
_fileSystemProvider = fileSystemProvider;
}
@Override
public void close() throws IOException {
_fileSystem.close();
}
@Override
public Iterable<FileStore> getFileStores() {
return _fileSystem.getFileStores();
}
@Override
public Path getPath(String first, String... more) {
return new PathWrapper(_fileSystem.getPath(first, more), this);
}
@Override
public PathMatcher getPathMatcher(String syntaxAndPattern) {
return _fileSystem.getPathMatcher(syntaxAndPattern);
}
@Override
public Iterable<Path> getRootDirectories() {
Iterable<Path> iterable = _fileSystem.getRootDirectories();
final Iterator<Path> iterator = iterable.iterator();
return new Iterable<Path>() {
@Override
public Iterator<Path> iterator() {
return new Iterator<Path>() {
@Override
public boolean hasNext() {
return iterator.hasNext();
}
@Override
public Path next() {
return new PathWrapper(
iterator.next(), FileSystemWrapper.this);
}
@Override
public void remove() {
iterator.remove();
}
};
}
};
}
@Override
public String getSeparator() {
return _fileSystem.getSeparator();
}
@Override
public UserPrincipalLookupService getUserPrincipalLookupService() {
return _fileSystem.getUserPrincipalLookupService();
}
@Override
public boolean isOpen() {
return _fileSystem.isOpen();
}
@Override
public boolean isReadOnly() {
return _fileSystem.isReadOnly();
}
@Override
public WatchService newWatchService() throws IOException {
return _fileSystem.newWatchService();
}
@Override
public FileSystemProvider provider() {
return _fileSystemProvider;
}
@Override
public Set<String> supportedFileAttributeViews() {
return _fileSystem.supportedFileAttributeViews();
}
private final FileSystem _fileSystem;
private final FileSystemProvider _fileSystemProvider;
}