< prev index next >
src/java.base/share/classes/jdk/internal/jrtfs/JrtExplodedFileSystem.java
Print this page
*** 291,360 ****
private JrtExplodedPath toJrtExplodedPath(byte[] path) {
return new JrtExplodedPath(this, path);
}
@Override
! boolean isSameFile(AbstractJrtPath p1, AbstractJrtPath p2) throws IOException {
! Node n1 = checkNode(p1.getName());
! Node n2 = checkNode(p2.getName());
return n1 == n2;
}
@Override
boolean isLink(AbstractJrtPath jrtPath) throws IOException {
! return checkNode(jrtPath.getName()).isLink();
}
@Override
AbstractJrtPath resolveLink(AbstractJrtPath jrtPath) throws IOException {
! String name = checkNode(jrtPath.getName()).resolveLink().getName();
return toJrtExplodedPath(name);
}
@Override
! AbstractJrtFileAttributes getFileAttributes(byte[] path, LinkOption... options) throws IOException {
! Node node = checkNode(path);
if (node.isLink() && followLinks(options)) {
node = node.resolveLink(true);
}
return new JrtExplodedFileAttributes(node);
}
@Override
! boolean exists(byte[] path) throws IOException {
try {
! checkNode(path);
return true;
} catch (NoSuchFileException nsfe) {
return false;
}
}
@Override
! boolean isDirectory(byte[] path, boolean resolveLinks) throws IOException {
! Node node = checkNode(path);
return resolveLinks && node.isLink()
? node.resolveLink(true).isDirectory()
: node.isDirectory();
}
@Override
! Iterator<Path> iteratorOf(byte[] path, String childPrefix) throws IOException {
! Node node = checkNode(path).resolveLink(true);
if (!node.isDirectory()) {
! throw new NotDirectoryException(getString(path));
}
! Function<Node, Path> f = childPrefix == null
! ? child -> toJrtExplodedPath(child.getName())
! : child -> toJrtExplodedPath(childPrefix + child.getName().substring(1));
! return node.getChildren().stream().map(f).collect(toList()).iterator();
}
@Override
! byte[] getFileContent(byte[] path) throws IOException {
! return checkNode(path).getContent();
}
private Node checkNode(byte[] path) throws IOException {
ensureOpen();
return findNode(path);
--- 291,368 ----
private JrtExplodedPath toJrtExplodedPath(byte[] path) {
return new JrtExplodedPath(this, path);
}
@Override
! boolean isSameFile(AbstractJrtPath jrtPath1, AbstractJrtPath jrtPath2) throws IOException {
! Node n1 = checkNode(jrtPath1);
! Node n2 = checkNode(jrtPath2);
return n1 == n2;
}
@Override
boolean isLink(AbstractJrtPath jrtPath) throws IOException {
! return checkNode(jrtPath).isLink();
}
@Override
AbstractJrtPath resolveLink(AbstractJrtPath jrtPath) throws IOException {
! String name = checkNode(jrtPath).resolveLink().getName();
return toJrtExplodedPath(name);
}
@Override
! AbstractJrtFileAttributes getFileAttributes(AbstractJrtPath jrtPath, LinkOption... options) throws IOException {
! Node node = checkNode(jrtPath);
if (node.isLink() && followLinks(options)) {
node = node.resolveLink(true);
}
return new JrtExplodedFileAttributes(node);
}
@Override
! boolean exists(AbstractJrtPath jrtPath) throws IOException {
try {
! checkNode(jrtPath);
return true;
} catch (NoSuchFileException nsfe) {
return false;
}
}
@Override
! boolean isDirectory(AbstractJrtPath jrtPath, boolean resolveLinks) throws IOException {
! Node node = checkNode(jrtPath);
return resolveLinks && node.isLink()
? node.resolveLink(true).isDirectory()
: node.isDirectory();
}
@Override
! Iterator<Path> iteratorOf(AbstractJrtPath dir) throws IOException {
! Node node = checkNode(dir).resolveLink(true);
if (!node.isDirectory()) {
! throw new NotDirectoryException(getString(dir.getName()));
}
! Function<Node, Path> nodeToPath =
! child -> dir.resolve(
! toJrtExplodedPath(child.getName()).
! getFileName());
!
! return node.getChildren().stream().
! map(nodeToPath).collect(toList()).
! iterator();
}
@Override
! byte[] getFileContent(AbstractJrtPath jrtPath) throws IOException {
! return checkNode(jrtPath).getContent();
! }
!
! private Node checkNode(AbstractJrtPath jrtPath) throws IOException {
! return checkNode(jrtPath.getResolvedPath());
}
private Node checkNode(byte[] path) throws IOException {
ensureOpen();
return findNode(path);
< prev index next >