PrimitiveArrayRuleCache.java

package io.github.pojotools.flat2pojo.core.engine;

import io.github.pojotools.flat2pojo.core.config.MappingConfig;
import java.util.HashMap;
import java.util.Map;

/**
 * Caches primitive list rules for fast path lookup. Single Responsibility: Rule caching and lookup.
 */
final class PrimitiveArrayRuleCache {
  private final Map<String, MappingConfig.PrimitiveListRule> rulesByPath;

  PrimitiveArrayRuleCache(final MappingConfig config) {
    this.rulesByPath = buildCache(config);
  }

  private static Map<String, MappingConfig.PrimitiveListRule> buildCache(
      final MappingConfig config) {
    final Map<String, MappingConfig.PrimitiveListRule> cache = new HashMap<>();
    for (final MappingConfig.PrimitiveListRule rule : config.primitiveLists()) {
      cache.put(rule.path(), rule);
    }
    return cache;
  }

  boolean isPrimitiveListPath(final String path) {
    return rulesByPath.containsKey(path);
  }

  MappingConfig.PrimitiveListRule getRuleFor(final String path) {
    return rulesByPath.get(path);
  }
}