Class ConfigDeserializer

java.lang.Object
org.apache.tika.config.ConfigDeserializer

public class ConfigDeserializer extends Object
Utility for deserializing JSON configuration without compile-time dependency on Jackson.

This class uses reflection to call Jackson's ObjectMapper when available on the classpath. If tika-serialization is available, it uses the configured ObjectMapper from TikaObjectMapperFactory to ensure consistent behavior with ParseContext serialization. Otherwise, it falls back to a plain ObjectMapper.

If Jackson is not available and JSON deserialization is attempted, it throws a clear error message.

Usage pattern in parsers, detectors, and other Tika components:

 public class MyParser implements Parser {
     public static class Config {
         public int timeout = 30;
         public boolean verbose = false;
     }

     public MyParser() {
         // Default constructor for SPI
     }

     public MyParser(Config config) {
         // Constructor with explicit config object
         this.timeout = config.timeout;
         this.verbose = config.verbose;
     }

     public MyParser(JsonConfig jsonConfig) {
         this(ConfigDeserializer.buildConfig(jsonConfig, Config.class));
     }
 }
 
Since:
Apache Tika 4.0
  • Constructor Details

    • ConfigDeserializer

      public ConfigDeserializer()
  • Method Details

    • buildConfig

      public static <T> T buildConfig(JsonConfig jsonConfig, Class<T> configClass)
      Deserializes a JSON configuration to a configuration object. Requires Jackson on the classpath.
      Type Parameters:
      T - the configuration type
      Parameters:
      jsonConfig - the JSON configuration
      configClass - the configuration class
      Returns:
      the deserialized configuration object
      Throws:
      RuntimeException - if Jackson is not on the classpath or deserialization fails
    • isJacksonAvailable

      public static boolean isJacksonAvailable()
      Checks if Jackson ObjectMapper is available on the classpath.
      Returns:
      true if Jackson is available for JSON deserialization