Class McpSettings

java.lang.Object
ru.bitel.bgbilling.plugins.mcp.server.bean.McpSettings

public final class McpSettings extends Object
Чтение настроек плагина MCP: значение из конфигурации плагина, а при его отсутствии — значение по умолчанию из McpSetupKeys.

Первое поведение класса: у незарегистрированного или выключенного плагина getPlugin() даёт null, и читать нечего, поэтому отдаются дефолты. У mcp.enable дефолт — false, то есть выключенный плагин отвечает 503, а не падает с NullPointerException.

Сам класс ничего не кэширует: значение спрашивается у плагина на каждый вызов. Но Preferences держит сам BGPluginServer, и он обновляется только когда конфигурацию сохраняют через сервер (админка, программный вызов) — тогда следующий запрос видит новое значение без перезапуска. Правка таблицы plugin_config напрямую в обход сервера не видна до перезапуска, и это проверено на стенде 06.10.2026: после UPDATE plugin_config SET config=... значения оставались дефолтными, пока сервер не перезапустили. Своё ошибочное прочтение этого места стоило одной неверной проверки, поэтому утверждение зафиксировано здесь явно.

Откуда берётся плагин, решает поле pluginSource: в сервере это менеджер плагинов. Подмена нужна потому, что BGPluginManagerServer при первом обращении требует EventProcessor, а его в юнит-тестах нет: без шва проверять поведение настроек было бы нечем, а проверять надо обе ветки — «плагина нет» и «плагин есть, значения из конфигурации».

  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final int
    uid плагина, когда плагин не зарегистрирован.
  • Method Summary

    Modifier and Type
    Method
    Description
    static boolean
    Значение настройки как признак; нераспознанная строка — false.
    static int
    Значение настройки как целое; нераспознанная строка — 0.
    static long
    Значение настройки как длинное целое; нераспознанная строка — 0.
    static int
    Идентификатор установленного модуля плагина — тот самый $mid, который раньше шифровался в именах таблиц, а теперь нужен только для установок самого плагина и для журнала.
    static String
    Значение настройки текстом; null, если нет ни значения, ни дефолта.
    static List<String>
    Значение настройки как список строк через запятую — так задаётся mcp.origin.allowed.
    static boolean
    Включён ли MCP общей настройкой mcp.enable.
    static boolean
    Зарегистрирован ли плагин в менеджере плагинов.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • NO_PLUGIN_UID

      public static final int NO_PLUGIN_UID
      uid плагина, когда плагин не зарегистрирован.
      See Also:
  • Method Details

    • isPluginRegistered

      public static boolean isPluginRegistered()
      Зарегистрирован ли плагин в менеджере плагинов.
    • getPluginUid

      public static int getPluginUid()
      Идентификатор установленного модуля плагина — тот самый $mid, который раньше шифровался в именах таблиц, а теперь нужен только для установок самого плагина и для журнала. Ноль здесь означал бы чужие данные, поэтому при незарегистрированном плагине отдаётся NO_PLUGIN_UID.
    • isEnabled

      public static boolean isEnabled()
      Включён ли MCP общей настройкой mcp.enable.
    • getString

      public static String getString(McpSetupKeys key)
      Значение настройки текстом; null, если нет ни значения, ни дефолта.
      Parameters:
      key - настройка; null не допускается и даёт null
    • getBoolean

      public static boolean getBoolean(McpSetupKeys key)
      Значение настройки как признак; нераспознанная строка — false.
    • getInt

      public static int getInt(McpSetupKeys key)
      Значение настройки как целое; нераспознанная строка — 0.
    • getLong

      public static long getLong(McpSetupKeys key)
      Значение настройки как длинное целое; нераспознанная строка — 0.
    • getStringList

      public static List<String> getStringList(McpSetupKeys key)
      Значение настройки как список строк через запятую — так задаётся mcp.origin.allowed. Пустые элементы пропускаются, а настроек нет вовсе — возвращается пустой список, а не null.