Class JsonProviderFactory
java.lang.Object
cloud.opencode.base.json.spi.JsonProviderFactory
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:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final recordProvider information record. -
Method Summary
Modifier and TypeMethodDescriptionstatic Collection<JsonProvider> Returns all registered providers.Returns a list of available provider names.static JsonProviderReturns the default JSON provider.static JsonProvidergetProvider(JsonConfig config) Returns a configured provider instance.static JsonProvidergetProvider(String name) Returns a provider by name.static JsonProvidergetProvider(String name, JsonConfig config) Returns a configured provider instance by name.static List<JsonProviderFactory.ProviderInfo> Returns information about all registered providers.static booleanChecks if any provider is available.static booleanhasProvider(String name) Checks if a provider is available by name.static voidregisterProvider(JsonProvider provider) Registers a provider.static voidreload()Reloads providers from ServiceLoader.static voidsetDefaultProvider(JsonProvider provider) Sets the default provider.static voidsetDefaultProvider(String name) Sets the default provider by name.static JsonProviderunregisterProvider(String name) Unregisters a provider by name.
-
Method Details
-
getProvider
Returns the default JSON provider. 返回默认的 JSON 提供者。Provider selection priority:
- Explicitly set default provider - 显式设置的默认提供者
- Provider with highest priority from ServiceLoader - ServiceLoader 中优先级最高的提供者
- First available provider - 第一个可用的提供者
- Returns:
- the default provider - 默认提供者
- Throws:
OpenJsonProcessingException- if no provider is available - 如果没有可用的提供者
-
getProvider
Returns a provider by name. 按名称返回提供者。- Parameters:
name- the provider name (e.g., "jackson", "gson") - 提供者名称- Returns:
- the provider - 提供者
- Throws:
OpenJsonProcessingException- if provider not found - 如果找不到提供者
-
getProvider
Returns a configured provider instance. 返回配置的提供者实例。- Parameters:
config- the configuration - 配置- Returns:
- a configured provider - 配置后的提供者
-
getProvider
Returns a configured provider instance by name. 按名称返回配置的提供者实例。- Parameters:
name- the provider name - 提供者名称config- the configuration - 配置- Returns:
- a configured provider - 配置后的提供者
-
getAvailableProviders
-
getAllProviders
Returns all registered providers. 返回所有注册的提供者。- Returns:
- unmodifiable collection of providers - 不可变的提供者集合
-
hasProvider
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
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
Sets the default provider by name. 按名称设置默认提供者。- Parameters:
name- the provider name - 提供者名称- Throws:
OpenJsonProcessingException- if provider not found - 如果找不到提供者
-
registerProvider
Registers a provider. 注册提供者。- Parameters:
provider- the provider to register - 要注册的提供者
-
unregisterProvider
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
Returns information about all registered providers. 返回所有注册提供者的信息。- Returns:
- list of provider info - 提供者信息列表
-