Provider class
Пакет: com.hypixel.hytale.procedurallib.file
Файл: com/hypixel/hytale/procedurallib/file/FileIOSystem.java
Поля (5)
| Модификаторы | Тип | Имя |
|---|---|---|
|
private static final FileIOSystem.Provider.DefaultIOFileSystem |
DEFAULT |
|
private static final Path |
DEFAULT_ROOT |
|
private static final ThreadLocal<FileIOSystem> |
HOLDER |
|
private Path |
base |
|
private FileIOSystem.PathArray |
roots |
Методы (8)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
private |
DefaultIOFileSystemprivate DefaultIOFileSystem() |
|
public synchronized Path |
baseRootpublic synchronized Path baseRoot() |
|
static FileIOSystem |
getstatic FileIOSystem get() |
|
public synchronized FileIOSystem.PathArray |
rootspublic synchronized FileIOSystem.PathArray roots() |
|
static void |
setstatic void set(@Nonnull FileIOSystem var0) |
|
public synchronized void |
setBasepublic synchronized void setBase(Path var1) |
|
static void |
setRootstatic void setRoot(@Nonnull Path var0) |
|
static void |
unsetstatic void unset() |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.procedurallib.file;
class="kw">import java.io.FileNotFoundException;
class="kw">import java.io.IOException;
class="kw">import java.io.InputStream;
class="kw">import java.nio.file.Files;
class="kw">import java.nio.file.Path;
class="kw">import java.nio.file.Paths;
class="kw">import javax.annotation.Nonnull;
class="kw">public class="kw">interface FileIOSystem class="kw">extends AutoCloseable {
@Nonnull
Path baseRoot();
@Nonnull
FileIOSystem.PathArray roots();
@Nonnull
class="kw">default AssetPath resolve(@Nonnull Path var1) {
Path var2 = FileIO.relativize(var1, this.baseRoot());
for (Path var6 : this.roots().paths) {
AssetPath var7 = AssetPath.fromRelative(var6, var2);
if (FileIO.exists(var7)) {
class="kw">return var7;
}
}
class="kw">return AssetPath.fromRelative(this.baseRoot(), var2);
}
@Nonnull
class="kw">default <T> T load(@Nonnull AssetPath var1, @Nonnull AssetLoader<T> var2) class="kw">throws IOException {
if (!Files.exists(var1.filepath())) {
throw new FileNotFoundException("Unable to find file: " + var1);
}
try (InputStream var3 = Files.newInputStream(var1.filepath())) {
class="kw">return var2.load(var3);
}
}
@Override
class="kw">default void close() {
}
class="kw">final class PathArray {
class="kw">final Path[] paths;
class="kw">public PathArray(Path... var1) {
this.paths = var1;
}
class="kw">public int size() {
class="kw">return this.paths.length;
}
class="kw">public Path get(int var1) {
class="kw">return this.paths[var1];
}
}
class="kw">final class Provider {
class="kw">private class="kw">static class="kw">final FileIOSystem.Provider.DefaultIOFileSystem DEFAULT = new FileIOSystem.Provider.DefaultIOFileSystem();
class="kw">private class="kw">static class="kw">final ThreadLocal<FileIOSystem> HOLDER = ThreadLocal.withInitial(() -> DEFAULT);
class="kw">public Provider() {
}
class="kw">static FileIOSystem get() {
class="kw">return HOLDER.get();
}
class="kw">static void set(@Nonnull FileIOSystem var0) {
HOLDER.set(var0);
}
class="kw">static void unset() {
HOLDER.set(DEFAULT);
}
class="kw">static void setRoot(@Nonnull Path var0) {
DEFAULT.setBase(var0);
}
class="kw">private class="kw">static class="kw">final class DefaultIOFileSystem class="kw">implements FileIOSystem {
class="kw">private class="kw">static class="kw">final Path DEFAULT_ROOT = Paths.get(".").toAbsolutePath();
class="kw">private Path base = DEFAULT_ROOT;
class="kw">private FileIOSystem.PathArray roots = new FileIOSystem.PathArray(DEFAULT_ROOT);
class="kw">private DefaultIOFileSystem() {
}
class="kw">public class="kw">synchronized void setBase(Path var1) {
this.base = var1;
this.roots = new FileIOSystem.PathArray(var1);
}
@Nonnull
@Override
class="kw">public class="kw">synchronized Path baseRoot() {
class="kw">return this.base;
}
@Nonnull
@Override
class="kw">public class="kw">synchronized FileIOSystem.PathArray roots() {
class="kw">return this.roots;
}
}
}
}