Class PlaceholderResolver

java.lang.Object
cloud.opencode.base.config.placeholder.PlaceholderResolver

public class PlaceholderResolver extends Object
Placeholder Resolver 占位符解析器

Resolves placeholders in configuration values with support for nested placeholders and default values.

解析配置值中的占位符,支持嵌套占位符和默认值。

Features | 主要功能:

  • Placeholder syntax: ${key} - 占位符语法: ${key}
  • Default values: ${key:default} - 默认值: ${key:default}
  • Nested placeholders - 嵌套占位符
  • Recursion depth limit - 递归深度限制

Usage Examples | 使用示例:

Map<String, String> props = Map.of(
    "base.url", "http://localhost",
    "api.url", "${base.url}/api",
    "db.host", "${DB_HOST:localhost}"
);

PlaceholderResolver resolver = new PlaceholderResolver(props::get);

resolver.resolve("${api.url}");           // -> "http://localhost/api"
resolver.resolve("${db.host}");           // -> "localhost" (using default)
resolver.resolve("${base.url}/v1");       // -> "http://localhost/v1"
resolver.resolve("${${env}.database}");   // -> nested resolution

Supported Syntax | 支持的语法:

${key}              - Simple placeholder
${key:default}      - With default value
${${nested}}        - Nested placeholder
prefix${key}suffix  - Embedded placeholder

Performance | 性能特性:

  • Time complexity: O(n*d) where d is recursion depth - 时间复杂度: O(n*d)
  • Max recursion depth: 10 (configurable) - 最大递归深度: 10

Security | 安全性:

  • Thread-safe: Yes - 线程安全: 是
  • Recursion protection - 递归保护
Since:
JDK 25, opencode-base-config V1.0.0
Author:
Leon Soo www.LeonSoo.com
See Also:
  • Constructor Details

    • PlaceholderResolver

      public PlaceholderResolver(Function<String,String> propertyResolver)
      Create placeholder resolver with default depth limit 创建默认深度限制的占位符解析器
      Parameters:
      propertyResolver - property lookup function | 属性查找函数
    • PlaceholderResolver

      public PlaceholderResolver(Function<String,String> propertyResolver, int maxRecursionDepth)
      Create placeholder resolver with custom depth limit 创建自定义深度限制的占位符解析器
      Parameters:
      propertyResolver - property lookup function | 属性查找函数
      maxRecursionDepth - maximum recursion depth | 最大递归深度
  • Method Details

    • resolve

      public String resolve(String value)
      Resolve placeholders in value 解析值中的占位符

      Examples | 示例:

      resolve("${key}")              -> value of "key"
      resolve("${key:default}")      -> value of "key" or "default"
      resolve("prefix${key}suffix")  -> "prefix" + value + "suffix"
      resolve("no placeholders")     -> "no placeholders"
      
      Parameters:
      value - value to resolve | 要解析的值
      Returns:
      resolved value | 解析后的值
      Throws:
      OpenConfigException - if placeholder cannot be resolved | 如果占位符无法解析