or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

access.mdexceptions.mdindex.mdloading.mdoptions.mdresolution.mdvalues.md
tile.json

tessl/maven-com-typesafe--config

Configuration library for JVM languages using HOCON files

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
mavenpkg:maven/com.typesafe/config@1.4.x

To install, run

npx @tessl/cli install tessl/maven-com-typesafe--config@1.4.0

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);
}