Class JsonProviderFactory

java.lang.Object
cloud.opencode.base.json.spi.JsonProviderFactory

public final class JsonProviderFactory extends Object
JSON Provider Factory - Factory for Creating and Managing JSON Providers JSON 提供者工厂 - 用于创建和管理 JSON 提供者的工厂

This factory discovers and manages JsonProvider implementations via ServiceLoader mechanism. It supports auto-detection of available providers and allows explicit provider selection.

此工厂通过 ServiceLoader 机制发现和管理 JsonProvider 实现。 它支持自动检测可用提供者并允许显式选择提供者。

Example | 示例:

// Get default provider (auto-detect)
JsonProvider provider = JsonProviderFactory.getProvider();

// Get specific provider by name
JsonProvider jackson = JsonProviderFactory.getProvider("jackson");

// List available providers
List<String> providers = JsonProviderFactory.getAvailableProviders();

Features | 主要功能:

  • ServiceLoader-based provider discovery - 基于ServiceLoader的提供者发现
  • Priority-based default provider selection - 基于优先级的默认提供者选择
  • Thread-safe provider registration and lookup - 线程安全的提供者注册和查找

Security | 安全性:

  • Thread-safe: Yes (immutable record) - 线程安全: 是(不可变记录)
  • Null-safe: Partial (validates inputs) - 空值安全: 部分(验证输入)
Since:
JDK 25, opencode-base-json V1.0.0
Author:
Leon Soo www.LeonSoo.com
See Also:
  • Method Details

    • getProvider

      public static JsonProvider getProvider()
      Returns the default JSON provider. 返回默认的 JSON 提供者。

      Provider selection priority:

      1. Explicitly set default provider - 显式设置的默认提供者
      2. Provider with highest priority from ServiceLoader - ServiceLoader 中优先级最高的提供者
      3. First available provider - 第一个可用的提供者
      Returns:
      the default provider - 默认提供者
      Throws:
      OpenJsonProcessingException - if no provider is available - 如果没有可用的提供者
    • getProvider

      public static JsonProvider getProvider(String name)
      Returns a provider by name. 按名称返回提供者。
      Parameters:
      name - the provider name (e.g., "jackson", "gson") - 提供者名称
      Returns:
      the provider - 提供者
      Throws:
      OpenJsonProcessingException - if provider not found - 如果找不到提供者
    • getProvider

      public static JsonProvider getProvider(JsonConfig config)
      Returns a configured provider instance. 返回配置的提供者实例。
      Parameters:
      config - the configuration - 配置
      Returns:
      a configured provider - 配置后的提供者
    • getProvider

      public static JsonProvider getProvider(String name, JsonConfig config)
      Returns a configured provider instance by name. 按名称返回配置的提供者实例。
      Parameters:
      name - the provider name - 提供者名称
      config - the configuration - 配置
      Returns:
      a configured provider - 配置后的提供者
    • getAvailableProviders

      public static List<String> getAvailableProviders()
      Returns a list of available provider names. 返回可用提供者名称列表。
      Returns:
      list of provider names - 提供者名称列表
    • getAllProviders

      public static Collection<JsonProvider> getAllProviders()
      Returns all registered providers. 返回所有注册的提供者。
      Returns:
      unmodifiable collection of providers - 不可变的提供者集合
    • hasProvider

      public static boolean hasProvider(String name)
      Checks if a provider is available by name. 检查指定名称的提供者是否可用。
      Parameters:
      name - the provider name - 提供者名称
      Returns:
      true if available - 如果可用则返回 true
    • hasAnyProvider

      public static boolean hasAnyProvider()
      Checks if any provider is available. 检查是否有任何提供者可用。
      Returns:
      true if at least one provider is available - 如果至少有一个提供者可用则返回 true
    • setDefaultProvider

      public static void setDefaultProvider(JsonProvider provider)
      Sets the default provider. 设置默认提供者。

      This explicitly sets the default provider, bypassing priority-based selection. The provider will remain the default until another explicit call to setDefaultProvider.

      这会显式设置默认提供者,绕过基于优先级的选择。 该提供者将保持为默认,直到另一个显式调用 setDefaultProvider。

      Parameters:
      provider - the provider to set as default - 要设置为默认的提供者
      Throws:
      NullPointerException - if provider is null - 如果提供者为 null
    • setDefaultProvider

      public static void setDefaultProvider(String name)
      Sets the default provider by name. 按名称设置默认提供者。
      Parameters:
      name - the provider name - 提供者名称
      Throws:
      OpenJsonProcessingException - if provider not found - 如果找不到提供者
    • registerProvider

      public static void registerProvider(JsonProvider provider)
      Registers a provider. 注册提供者。
      Parameters:
      provider - the provider to register - 要注册的提供者
    • unregisterProvider

      public static JsonProvider unregisterProvider(String name)
      Unregisters a provider by name. 按名称注销提供者。
      Parameters:
      name - the provider name - 提供者名称
      Returns:
      the removed provider, or null if not found - 移除的提供者,如果未找到则返回 null
    • reload

      public static void reload()
      Reloads providers from ServiceLoader. 从 ServiceLoader 重新加载提供者。
    • getProviderInfo

      public static List<JsonProviderFactory.ProviderInfo> getProviderInfo()
      Returns information about all registered providers. 返回所有注册提供者的信息。
      Returns:
      list of provider info - 提供者信息列表