Class CachePathProvider

java.lang.Object
com.github._1c_syntax.bsl.languageserver.infrastructure.CachePathProvider

@Component public class CachePathProvider extends Object
Компонент для определения пути к персистентному кэшу ehcache.

Кэш размещается в каталоге пользователя в подкаталоге, имя которого вычисляется на основе MD5-хэша текущей рабочей директории. Это позволяет избежать конфликтов при работе с разными проектами и не захламлять git-репозитории.

  • Constructor Details

    • CachePathProvider

      public CachePathProvider()
  • Method Details

    • getCachePath

      public Path getCachePath(String basePath, String fullPath)
      Возвращает путь к каталогу персистентного кэша для текущей рабочей директории.

      Если fullPath не пустой, возвращает его напрямую. Иначе формирует путь по шаблону: ${basePath}/.bsl-language-server/cache/<md5-hash>/ где md5-hash - это MD5-хэш абсолютного пути текущей рабочей директории.

      Parameters:
      basePath - базовый путь к каталогу (обычно user.home)
      fullPath - полный путь к каталогу кэша (если задан, используется напрямую)
      Returns:
      путь к каталогу кэша
    • getCachePath

      public Path getCachePath(String basePath, @Nullable String fullPath, int instanceNumber)
      Возвращает путь к каталогу персистентного кэша для текущей рабочей директории с учётом номера экземпляра.

      Если fullPath не пустой, возвращает его напрямую (instanceNumber игнорируется). Иначе формирует путь по шаблону:

      • При instanceNumber = 0: ${basePath}/.bsl-language-server/cache/<md5-hash>/
      • При instanceNumber > 0: ${basePath}/.bsl-language-server/cache/<md5-hash>@<instanceNumber>/
      где md5-hash - это MD5-хэш абсолютного пути текущей рабочей директории.

      Суффикс с номером экземпляра позволяет нескольким экземплярам BSL LS работать в одной директории с отдельными персистентными кэшами.

      Parameters:
      basePath - базовый путь к каталогу (обычно user.home)
      fullPath - полный путь к каталогу кэша (если задан, используется напрямую)
      instanceNumber - номер экземпляра (0 для основного, 1+ для дополнительных)
      Returns:
      путь к каталогу кэша