Class StandardMetadataLimiterFactory

java.lang.Object
org.apache.tika.metadata.writelimiter.StandardMetadataLimiterFactory
All Implemented Interfaces:
MetadataWriteLimiterFactory

public class StandardMetadataLimiterFactory extends Object implements MetadataWriteLimiterFactory
Standard factory for creating StandardMetadataLimiter instances.

This factory holds configuration for metadata size limits and field prioritization. It creates limiter instances that enforce these limits when metadata is written.

Size limits prevent memory exhaustion from malicious/pathological files:

  • maxKeySize - maximum metadata key length in UTF-16 bytes
  • maxFieldSize - maximum value size per field in UTF-16 bytes
  • maxTotalEstimatedBytes - total metadata budget in UTF-16 bytes
  • maxValuesPerField - maximum number of values per multi-valued field

Prioritization fields reduce the likelihood of hitting limits:

  • includeFields - if non-empty, ONLY these fields are stored
  • excludeFields - these fields are never stored
  • includeEmpty - whether to store empty/null values

See StandardMetadataLimiter for details on how sizes are calculated.

Since:
Apache Tika 4.0 (renamed from StandardWriteFilterFactory)
  • Field Details

    • DEFAULT_MAX_KEY_SIZE

      public static final int DEFAULT_MAX_KEY_SIZE
      See Also:
    • DEFAULT_MAX_FIELD_SIZE

      public static final int DEFAULT_MAX_FIELD_SIZE
      See Also:
    • DEFAULT_MAX_TOTAL_BYTES

      public static final int DEFAULT_MAX_TOTAL_BYTES
      See Also:
    • DEFAULT_MAX_VALUES_PER_FIELD

      public static final int DEFAULT_MAX_VALUES_PER_FIELD
      See Also:
  • Constructor Details

    • StandardMetadataLimiterFactory

      public StandardMetadataLimiterFactory()
  • Method Details

    • newInstance

      public MetadataWriteLimiter newInstance()
      Description copied from interface: MetadataWriteLimiterFactory
      Creates a new limiter instance. Each call should return a fresh instance since limiters are stateful.
      Specified by:
      newInstance in interface MetadataWriteLimiterFactory
      Returns:
      a new MetadataWriteLimiter instance
    • setIncludeFields

      public void setIncludeFields(Set<String> includeFields)
    • setExcludeFields

      public void setExcludeFields(Set<String> excludeFields)
    • setMaxTotalBytes

      public void setMaxTotalBytes(int maxTotalBytes)
    • setMaxKeySize

      public void setMaxKeySize(int maxKeySize)
    • setMaxFieldSize

      public void setMaxFieldSize(int maxFieldSize)
    • setIncludeEmpty

      public void setIncludeEmpty(boolean includeEmpty)
    • setMaxValuesPerField

      public void setMaxValuesPerField(int maxValuesPerField)
    • getIncludeFields

      public Set<String> getIncludeFields()
    • getExcludeFields

      public Set<String> getExcludeFields()
    • getMaxKeySize

      public int getMaxKeySize()
    • getMaxFieldSize

      public int getMaxFieldSize()
    • getMaxTotalBytes

      public int getMaxTotalBytes()
    • getMaxValuesPerField

      public int getMaxValuesPerField()
    • isIncludeEmpty

      public boolean isIncludeEmpty()
    • toString

      public String toString()
      Overrides:
      toString in class Object