Flat2PojoFactory.java

package io.github.pojotools.flat2pojo.jackson;

import com.fasterxml.jackson.databind.ObjectMapper;
import io.github.pojotools.flat2pojo.core.api.Flat2Pojo;
import io.github.pojotools.flat2pojo.core.impl.Flat2PojoCore;

/**
 * Factory for creating {@link Flat2Pojo} instances with Jackson integration.
 *
 * <p>This factory provides the main entry point for obtaining converter instances that work with
 * Jackson {@link ObjectMapper} for POJO serialization and deserialization.
 */
public final class Flat2PojoFactory {
  private Flat2PojoFactory() {}

  /**
   * Creates a new {@link Flat2Pojo} converter using the provided Jackson ObjectMapper.
   *
   * <p>The ObjectMapper should be configured with appropriate modules and settings for your use
   * case. Consider using {@link JacksonAdapter#defaultObjectMapper()} for a pre-configured mapper
   * with sensible defaults.
   *
   * @param om the Jackson ObjectMapper to use for POJO conversion
   * @return a new Flat2Pojo converter instance
   */
  public static Flat2Pojo defaultMapper(final ObjectMapper om) {
    return new Flat2PojoCore(om);
  }

  /**
   * Creates a new {@link Flat2Pojo} converter using the default Jackson configuration.
   *
   * @return a new Flat2Pojo converter with optimized Jackson settings
   */
  public static Flat2Pojo create() {
    return new Flat2PojoCore(JacksonAdapter.defaultObjectMapper());
  }
}