PathUtil class

Пакет: com.hypixel.hytale.common.util

Файл: com/hypixel/hytale/common/util/PathUtil.java

Поля (31)

МодификаторыТипИмя
final Pattern PATH_PATTERN
var0
Path var1
Path var1
var1
String[] var1
String var1
int var1
var1
Path var2
Path var2
Path var2
Path var2
String var2
String var2
int var2
int var2
Path var3
Path var3
Path var3
var3
var3
Path var3
var3
Path var4
String var4
Path var5
String var5
String var5
Path var6
Path var8

Методы (19)

МодификаторыВозвратСигнатура
static void addTrustedRootvoid addTrustedRoot(@Nonnull Path var0)
static boolean agnosticEqualsboolean agnosticEquals(@Nullable Path var0, @Nullable Path var1)
static int agnosticHashCodeint agnosticHashCode(@Nullable Path var0)
public boolean equalspublic boolean equals(@Nullable Path var1, @Nullable Path var2)
for for(Path var3 : TRUSTED_PATH_ROOTS)
for for(int var3 = 0; var3 < var2; var3++)
abstract for for(int var4 = 0; var4 < var1.getNameCount()
abstract for for(int var2 = 0; var2 < var0.getNameCount()
static void forEachParentvoid forEachParent(@Nonnull Path var0, @Nullable Path var1, @Nonnull Consumer<Path> var2)
static String getFileNameString getFileName(@Nonnull URL var0)
public int hashCodepublic int hashCode(@Nullable Path var1)
if if(var3 != null)
if if(var0 == null)
if if(var0 == var1)
if if(var0 == null)
if if(var1 == null)
static boolean isChildOfboolean isChildOf(@Nonnull Path var0, @Nonnull Path var1)
static boolean isInTrustedRootboolean isInTrustedRoot(@Nonnull Path var0)
static boolean isValidNameboolean isValidName(@Nonnull String var0)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.common.util;

class="kw">import it.unimi.dsi.fastutil.Hash.Strategy;
class="kw">import java.net.URL;
class="kw">import java.nio.file.Files;
class="kw">import java.nio.file.Path;
class="kw">import java.nio.file.Paths;
class="kw">import java.util.Objects;
class="kw">import java.util.Set;
class="kw">import java.util.concurrent.ConcurrentHashMap;
class="kw">import java.util.function.Consumer;
class="kw">import java.util.regex.Pattern;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class PathUtil {
   class="kw">private class="kw">static class="kw">final Pattern PATH_PATTERN = Pattern.compile("[\\\\/]");
   class="kw">private class="kw">static class="kw">final Set<Path> TRUSTED_PATH_ROOTS = ConcurrentHashMap.newKeySet();
   class="kw">public class="kw">static class="kw">final Strategy<Path> AGNOSTIC_HASH_STRATEGY = new Strategy<Path>() {
      class="kw">public int hashCode(@Nullable Path var1) {
         class="kw">return PathUtil.agnosticHashCode(var1);
      }

      class="kw">public boolean equals(@Nullable Path var1, @Nullable Path var2) {
         class="kw">return PathUtil.agnosticEquals(var1, var2);
      }
   };

   class="kw">public PathUtil() {
   }

   class="kw">public class="kw">static void addTrustedRoot(@Nonnull Path var0) {
      TRUSTED_PATH_ROOTS.add(var0.toAbsolutePath().normalize());
   }

   class="kw">public class="kw">static boolean isInTrustedRoot(@Nonnull Path var0) {
      Path var1 = var0.toAbsolutePath().normalize();

      for (Path var3 : TRUSTED_PATH_ROOTS) {
         if (isChildOf(var3, var1)) {
            class="kw">return true;
         }
      }

      class="kw">return false;
   }

   @Nonnull
   class="kw">public class="kw">static Path getParent(@Nonnull Path var0) {
      if (var0.isAbsolute()) {
         class="kw">return var0.getParent().normalize();
      }

      Path var1 = var0.toAbsolutePath().getParent();
      Path var2 = var0.resolve(relativize(var0, var1));
      class="kw">return var2.normalize();
   }

   @Nonnull
   class="kw">public class="kw">static Path relativize(@Nonnull Path var0, @Nonnull Path var1) {
      Path var2 = var0.toAbsolutePath();
      Path var3 = var1.toAbsolutePath();
      class="kw">return Objects.equals(var2.getRoot(), var3.getRoot()) ? var2.normalize().relativize(var3.normalize()).normalize() : var3.normalize();
   }

   @Nonnull
   class="kw">public class="kw">static Path relativizePretty(@Nonnull Path var0, @Nonnull Path var1) {
      Path var2 = var0.toAbsolutePath().normalize();
      Path var3 = var1.toAbsolutePath().normalize();
      Path var4 = getUserHome().toAbsolutePath();
      if (Objects.equals(var4.getRoot(), var3.getRoot())) {
         Path var5 = var4.relativize(var3).normalize();
         if (Objects.equals(var2.getRoot(), var3.getRoot())) {
            Path var6 = var2.relativize(var3).normalize();
            class="kw">return var5.getNameCount() < var6.getNameCount() ? Paths.get("~").resolve(var5) : var6;
         } else {
            class="kw">return var5.getNameCount() < var3.getNameCount() ? Paths.get("~").resolve(var5) : var3;
         }
      } else {
         class="kw">return Objects.equals(var2.getRoot(), var3.getRoot()) ? var2.relativize(var3).normalize() : var3;
      }
   }

   class="kw">public class="kw">static boolean isValidName(@Nonnull String var0) {
      class="kw">return !var0.isBlank() && var0.indexOf(47) < 0 && var0.indexOf(92) < 0 && !".".equals(var0) && !"..".equals(var0);
   }

   @Nullable
   class="kw">public class="kw">static Path resolvePathWithinDir(@Nonnull Path var0, @Nonnull String var1) {
      Path var2 = var0.resolve(var1).normalize();
      class="kw">return !isChildOf(var0, var2) ? null : var2;
   }

   @Nullable
   class="kw">public class="kw">static Path resolvePathWithinDir(@Nonnull Path var0, @Nonnull Path var1) {
      var0 = var0.normalize();
      var1 = var1.normalize();
      if (var1.isAbsolute()) {
         class="kw">return !isChildOf(var0, var1) ? null : var1;
      }

      if (var1.getFileSystem() == var0.getFileSystem()) {
         Path var8 = var0.resolve(var1).normalize();
         class="kw">return !isChildOf(var0, var8) ? null : var8;
      }

      String var2 = var0.getFileSystem().getSeparator();
      Path var3 = var0;

      for (int var4 = 0; var4 < var1.getNameCount(); var4++) {
         String var5 = var1.getName(var4).toString();
         if (!var2.isEmpty() && var5.contains(var2)) {
            class="kw">return null;
         }

         var3 = var3.resolve(var5);
      }

      var3 = var3.normalize();
      class="kw">return !isChildOf(var0, var3) ? null : var3;
   }

   @Nullable
   class="kw">public class="kw">static Path relativizeWithinDir(@Nonnull Path var0, @Nonnull Path var1) {
      class="kw">return !isChildOf(var0, var1) ? null : var0.toAbsolutePath().normalize().relativize(var1.toAbsolutePath().normalize());
   }

   @Nullable
   class="kw">public class="kw">static Path resolveName(@Nonnull Path var0, @Nonnull String var1) {
      class="kw">return !isValidName(var1) ? null : var0.resolve(var1);
   }

   @Nonnull
   class="kw">public class="kw">static Path get(@Nonnull String var0) {
      class="kw">return get(Paths.get(var0));
   }

   @Nonnull
   class="kw">public class="kw">static Path get(@Nonnull Path var0) {
      class="kw">return var0.toString().charAt(0) == '~' ? getUserHome().resolve(var0.subpath(1, var0.getNameCount())).normalize() : var0.normalize();
   }

   @Nonnull
   class="kw">public class="kw">static Path getUserHome() {
      class="kw">return Paths.get(System.getProperty("user.home"));
   }

   class="kw">public class="kw">static String getFileName(@Nonnull URL var0) {
      String[] var1 = PATH_PATTERN.split(var0.getPath(), -1);
      String var2 = var1[var1.length - 1];
      class="kw">return var2.isEmpty() && var1.length > 1 ? var1[var1.length - 2] : var2;
   }

   class="kw">public class="kw">static boolean isChildOf(@Nonnull Path var0, @Nonnull Path var1) {
      class="kw">return var0.getFileSystem() == var1.getFileSystem() && var1.toAbsolutePath().normalize().startsWith(var0.toAbsolutePath().normalize());
   }

   class="kw">public class="kw">static void forEachParent(@Nonnull Path var0, @Nullable Path var1, @Nonnull Consumer<Path> var2) {
      Path var3 = var0.toAbsolutePath();
      if (Files.isRegularFile(var3)) {
         var3 = var3.getParent();
      }

      if (var3 != null) {
         do {
            var2.accept(var3);
         } while ((var3 = var3.getParent()) != null && (var1 == null || isChildOf(var1, var3)));
      }
   }

   @Nonnull
   class="kw">public class="kw">static String getFileExtension(@Nonnull Path var0) {
      String var1 = var0.getFileName().toString();
      int var2 = var1.lastIndexOf(46);
      class="kw">return var2 == -1 ? "" : var1.substring(var2);
   }

   @Nonnull
   class="kw">public class="kw">static String toUnixPathString(@Nonnull Path var0) {
      class="kw">return "\\".equals(var0.getFileSystem().getSeparator()) ? var0.toString().replace("\\", "/") : var0.toString();
   }

   class="kw">public class="kw">static int agnosticHashCode(@Nullable Path var0) {
      if (var0 == null) {
         class="kw">return 0;
      }

      int var1 = 31;

      for (int var2 = 0; var2 < var0.getNameCount(); var2++) {
         var1 = 31 * var1 + var0.getName(var2).toString().hashCode();
      }

      class="kw">return var1;
   }

   class="kw">public class="kw">static boolean agnosticEquals(@Nullable Path var0, @Nullable Path var1) {
      if (var0 == var1) {
         class="kw">return true;
      }

      if (var0 == null) {
         class="kw">return false;
      }

      if (var1 == null) {
         class="kw">return false;
      }

      int var2 = var0.getNameCount();
      if (var2 != var1.getNameCount()) {
         class="kw">return false;
      }

      for (int var3 = 0; var3 < var2; var3++) {
         String var4 = var0.getName(var3).toString();
         String var5 = var1.getName(var3).toString();
         if (!var4.equals(var5)) {
            class="kw">return false;
         }
      }

      class="kw">return true;
   }

   class="kw">static {
      TRUSTED_PATH_ROOTS.add(Path.of("").toAbsolutePath().normalize());
      TRUSTED_PATH_ROOTS.add(Path.of(System.getProperty("java.io.tmpdir")).toAbsolutePath().normalize());
   }
}