CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/maven-com-typesafe--config

Configuration library for JVM languages using HOCON files

Pending
Quality

Pending

Does it follow best practices?

Impact

Pending

No eval scenarios have been run

SecuritybySnyk

Pending

The risk profile of this skill

Overview
Eval results
Files

index.mddocs/

Typesafe Config

Typesafe Config is a comprehensive configuration management library for JVM applications that provides a thread-safe, immutable API for loading, parsing, and accessing configuration data. It supports HOCON (Human-Optimized Config Object Notation), JSON, and Java Properties formats with advanced features including variable substitution, configuration merging, type conversion, and validation.

Package Information

  • Package Name: com.typesafe:config
  • Package Type: Maven
  • Language: Java
  • Installation: <dependency><groupId>com.typesafe</groupId><artifactId>config</artifactId><version>1.4.3</version></dependency>

Core Imports

import com.typesafe.config.Config;
import com.typesafe.config.ConfigFactory;
import com.typesafe.config.ConfigValue;
import com.typesafe.config.ConfigObject;

Basic Usage

import com.typesafe.config.Config;
import com.typesafe.config.ConfigFactory;

// Load default application configuration
Config config = ConfigFactory.load();

// Access configuration values
String dbUrl = config.getString("database.url");
int port = config.getInt("server.port");
boolean enableDebug = config.getBoolean("app.debug");

// Work with nested configuration
Config dbConfig = config.getConfig("database");
String username = dbConfig.getString("username");

Architecture

Typesafe Config is built around several key components:

  • Config Interface: Main API for accessing configuration values using dot-separated paths
  • ConfigValue Hierarchy: Type-safe value objects (ConfigObject, ConfigList) with automatic conversion
  • Factory Pattern: ConfigFactory for loading and parsing, ConfigValueFactory for creating values
  • Immutable Design: All configuration objects are immutable and thread-safe
  • Resolution System: Variable substitution with ${path} syntax and environment variable support
  • Merge Semantics: Configuration layering with fallback chains and override capabilities
  • Multi-format Support: HOCON, JSON, and Properties parsing with consistent API

Capabilities

Configuration Loading and Parsing

Primary factory methods for loading configurations from various sources including classpath resources, files, URLs, and in-memory structures.

public static Config load();
public static Config load(String resourceBasename);
public static Config parseString(String hoconString);
public static Config parseFile(File file);
public static Config parseURL(URL url);

Configuration Loading

Configuration Access and Type Conversion

Core API for accessing configuration values with automatic type conversion and path-based navigation through configuration trees.

public interface Config extends ConfigMergeable {
    boolean getBoolean(String path);
    int getInt(String path);
    long getLong(String path);
    double getDouble(String path);
    String getString(String path);
    Duration getDuration(String path);
    ConfigObject getObject(String path);
    Config getConfig(String path);
}

Configuration Access

Configuration Values and Objects

Value system providing type-safe access to configuration data with support for objects, lists, and primitive types.

public interface ConfigValue extends ConfigMergeable {
    ConfigValueType valueType();
    Object unwrapped();
    String render();
    ConfigOrigin origin();
}

public interface ConfigObject extends ConfigValue, Map<String, ConfigValue> {
    Config toConfig();
    ConfigObject withValue(String key, ConfigValue value);
}

Configuration Values

Resolution and Substitution

Variable substitution system supporting ${path} syntax, environment variables, and custom resolvers for dynamic configuration values.

public Config resolve();
public Config resolve(ConfigResolveOptions options);
public Config resolveWith(Config source);
public boolean isResolved();

Resolution and Substitution

Configuration Options and Customization

Comprehensive options system for controlling parsing, resolution, and rendering behavior with support for custom includers and resolvers.

public final class ConfigParseOptions {
    public static ConfigParseOptions defaults();
    public ConfigParseOptions setSyntax(ConfigSyntax syntax);
    public ConfigParseOptions setIncluder(ConfigIncluder includer);
}

public final class ConfigResolveOptions {
    public static ConfigResolveOptions defaults();
    public ConfigResolveOptions setUseSystemEnvironment(boolean value);
    public ConfigResolveOptions appendResolver(ConfigResolver resolver);
}

Options and Customization

Exception Handling

Comprehensive exception hierarchy for handling configuration errors with specific exception types for different error conditions.

public abstract class ConfigException extends RuntimeException {
    public static class Missing extends ConfigException { }
    public static class WrongType extends ConfigException { }
    public static class Parse extends ConfigException { }
    public static class UnresolvedSubstitution extends ConfigException { }
}

Exception Handling

JavaBean Integration

Automatic JavaBean creation from configuration objects with validation and type conversion.

public class ConfigBeanFactory {
    public static <T> T create(Config config, Class<T> clazz);
}

Common Types

import java.net.URL;
import java.util.List;
public enum ConfigValueType {
    OBJECT, LIST, NUMBER, BOOLEAN, NULL, STRING
}

public enum ConfigSyntax {
    JSON,        // Strict JSON format
    CONF,        // HOCON format (default)  
    PROPERTIES   // Java Properties format
}

public interface ConfigOrigin {
    String description();
    String filename();
    URL url();
    String resource();  
    int lineNumber();
    List<String> comments();
    ConfigOrigin withComments(List<String> comments);
    ConfigOrigin withLineNumber(int lineNumber);
}

public final class ConfigMemorySize {
    public static ConfigMemorySize ofBytes(long bytes);
    public long toBytes();
}

public final class ConfigUtil {
    public static String quoteString(String s);
    public static String joinPath(String... elements);
    public static String joinPath(List<String> elements);
    public static List<String> splitPath(String path);
}

docs

access.md

exceptions.md

index.md

loading.md

options.md

resolution.md

values.md

tile.json