3
0
Mirror von https://github.com/PaperMC/Velocity.git synchronisiert 2024-11-16 21:10:30 +01:00

Actually fix loading locales from paths with spaces in them

Dieser Commit ist enthalten in:
Andrew Steinborn 2021-04-19 08:48:42 -04:00
Ursprung 1bd691f91b
Commit 688babb4da

Datei anzeigen

@ -18,7 +18,6 @@
package com.velocitypowered.proxy.util;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.io.File;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
@ -31,6 +30,7 @@ import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.function.Consumer;
public class FileSystemUtils {
@ -48,11 +48,18 @@ public class FileSystemUtils {
public static boolean visitResources(Class<?> target, Consumer<Path> consumer,
String firstPathComponent, String... remainingPathComponents)
throws IOException {
final File file = new File(target
.getProtectionDomain().getCodeSource().getLocation().getPath());
final URL knownResource = FileSystemUtils.class.getClassLoader()
.getResource("default-velocity.toml");
if (knownResource == null) {
throw new IllegalStateException(
"default-velocity.toml does not exist, don't know where we are");
}
if (knownResource.getProtocol().equals("jar")) {
// Running from a JAR
String jarPathRaw = knownResource.toString().split("!")[0];
URI path = URI.create(jarPathRaw + "!/");
if (file.isFile()) { // jar
try (FileSystem fileSystem = FileSystems.newFileSystem(file.toPath(), (ClassLoader) null)) {
try (FileSystem fileSystem = FileSystems.newFileSystem(path, Map.of("create", "true"))) {
Path toVisit = fileSystem.getPath(firstPathComponent, remainingPathComponents);
if (Files.exists(toVisit)) {
consumer.accept(toVisit);
@ -61,6 +68,7 @@ public class FileSystemUtils {
return false;
}
} else {
// Running from the file system
URI uri;
List<String> componentList = new ArrayList<>();
componentList.add(firstPathComponent);