Package org.confng.sources
Class JsonSource
- java.lang.Object
-
- org.confng.sources.AbstractFileConfigSource<JsonObject>
-
- org.confng.sources.JsonSource
-
- All Implemented Interfaces:
ConfigSource
public class JsonSource extends AbstractFileConfigSource<JsonObject>
Configuration source that reads from JSON files.This source loads configuration from JSON files using Gson for parsing. Supports both primitive values and nested objects.
Supports environment-specific configuration sections. When an environment is specified, only configuration from that section is loaded. For example:
{ "uat": { "database.host": "uat-db.example.com", "api.url": "https://uat-api.example.com" }, "prod": { "database.host": "prod-db.example.com", "api.url": "https://prod-api.example.com" } }- Since:
- 1.0
- Author:
- Bharat Kumar Malviya, GitHub: github.com/imBharatMalviya
- See Also:
ConfigSource,AbstractFileConfigSource
-
-
Field Summary
-
Fields inherited from class org.confng.sources.AbstractFileConfigSource
environment, root, sourceName
-
-
Constructor Summary
Constructors Constructor Description JsonSource(String filePath)Creates a new JsonSource from the given file path (supports both filesystem and classpath).JsonSource(String filePath, String environment)Creates a new JsonSource from the given file path for a specific environment (supports both filesystem and classpath).JsonSource(Path file)Creates a new JsonSource from the given file.JsonSource(Path file, String environment)Creates a new JsonSource from the given file for a specific environment.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected JsonObjectextractEnvironmentSection(JsonObject content, String environment, String filePath)Extracts the environment-specific section from the parsed configuration.protected StringgetSourceTypePrefix()Returns the source type prefix for the source name (e.g., "Json", "Yaml", "Toml").protected StringgetValueFromRoot(String key)Gets a value from the parsed configuration using the given key.protected JsonObjectparseContent(Reader reader)Parses the configuration content from a Reader.-
Methods inherited from class org.confng.sources.AbstractFileConfigSource
get, getName, getPriority
-
-
-
-
Constructor Detail
-
JsonSource
public JsonSource(String filePath)
Creates a new JsonSource from the given file path (supports both filesystem and classpath). Loads all top-level keys (not nested in environment sections).- Parameters:
filePath- path to the JSON file (filesystem or classpath)- Throws:
IllegalStateException- if the file cannot be loaded
-
JsonSource
public JsonSource(String filePath, String environment)
Creates a new JsonSource from the given file path for a specific environment (supports both filesystem and classpath). When an environment is specified, only configuration from that section is loaded.- Parameters:
filePath- path to the JSON file (filesystem or classpath)environment- the environment section to load (e.g., "uat", "prod"), or null for all top-level keys- Throws:
IllegalStateException- if the file cannot be loaded or the environment section doesn't exist
-
JsonSource
public JsonSource(Path file)
Creates a new JsonSource from the given file. Loads all top-level keys (not nested in environment sections).- Parameters:
file- path to the JSON file- Throws:
IllegalStateException- if the file cannot be loaded
-
JsonSource
public JsonSource(Path file, String environment)
Creates a new JsonSource from the given file for a specific environment. When an environment is specified, only configuration from that section is loaded.- Parameters:
file- path to the JSON fileenvironment- the environment section to load (e.g., "env1", "env2"), or null for all top-level keys- Throws:
IllegalStateException- if the file cannot be loaded or the environment section doesn't exist
-
-
Method Detail
-
getSourceTypePrefix
protected String getSourceTypePrefix()
Description copied from class:AbstractFileConfigSourceReturns the source type prefix for the source name (e.g., "Json", "Yaml", "Toml").- Specified by:
getSourceTypePrefixin classAbstractFileConfigSource<JsonObject>- Returns:
- the source type prefix
-
parseContent
protected JsonObject parseContent(Reader reader) throws IOException
Description copied from class:AbstractFileConfigSourceParses the configuration content from a Reader.- Specified by:
parseContentin classAbstractFileConfigSource<JsonObject>- Parameters:
reader- the reader to parse from- Returns:
- the parsed configuration object
- Throws:
IOException- if parsing fails
-
extractEnvironmentSection
protected JsonObject extractEnvironmentSection(JsonObject content, String environment, String filePath)
Description copied from class:AbstractFileConfigSourceExtracts the environment-specific section from the parsed configuration.- Specified by:
extractEnvironmentSectionin classAbstractFileConfigSource<JsonObject>- Parameters:
content- the full parsed configurationenvironment- the environment section to extractfilePath- the file path for error messages- Returns:
- the environment-specific configuration section
-
getValueFromRoot
protected String getValueFromRoot(String key)
Description copied from class:AbstractFileConfigSourceGets a value from the parsed configuration using the given key. Supports dot notation for nested keys (e.g., "app.name").- Specified by:
getValueFromRootin classAbstractFileConfigSource<JsonObject>- Parameters:
key- the configuration key- Returns:
- the value as a string, or null if not found
-
-